Skip to content

Commit c3ff7ad

Browse files
committed
add wiring engine
1 parent 19bc88f commit c3ff7ad

9 files changed

+179
-3
lines changed

kittenblock/Onlineandoffline.md

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# 在线模式和离线模式
2+
3+
## 什么是在线模式
4+
5+
6+
- 顾名思义,在线模式就是需要kittenblock或者kblock app需要保持和机器人之间的实时通讯。通信方式包括串口、wifi或者蓝牙。
7+
8+
- 机器人上需要预先烧录在线模式的固件。
9+
10+
- kittenblock通过发送指令给机器人,机器人执行对应指令。
11+
12+
13+
## 什么是离线模式
14+
15+
- 离线模式不需要保持和kittenblock或者app之间的通信。
16+
17+
- 离线模式只能执行固化烧录的程序,更换程序需要重新执行烧录。
18+
19+
- 一般情况下将图形化代码专为C++或者python固化到目标主板上。
20+
21+
## 目标硬件支持情况
22+
23+
### Rosbot和MiniLFR:
24+
25+
支持在线模式和离线模式,通过Kittenblock将图形化代码翻译成Arduino C++代码并烧录到主板上。
26+
27+
### Microbit:
28+
29+
支持在线模式和离线模式,在线模式需要烧录一个空固件到microbit上,具体参看python部分教程。
30+
31+
### Arduino电子体系:
32+
33+
目前离线模式基本完善了,支持市面上大部分传感器模块。在线模式需要自定义生成通信固件,目前正在完善中。
34+
35+
36+
## 在线模式指令集
37+
38+
在线模式指令设计本身参考的是工业上应用相当广泛的CNC指令系统,也就是G代码或者M代码。每一条指令以G或者M打头,后面跟着指令序号,之后是空格分隔开的参数。指令最后以回车换行符结束。
39+
40+
每个指令参数具体含义请参考下面的说明。
41+
42+
### Rosbot
43+
44+
- M0:打印固件版本号
45+
- M1 PIN MODE:设置IO模式,相当于pinMode
46+
- M2 PIN LEVEL:设置数字电平,相当于digitalWrite
47+
- M3 PIN:读取数字电平,相当于digitalRead
48+
- M4 PIN PWM: 模拟输出PWM,相当于analogWrite
49+
- M5 PIN:读模拟信号,相当于analogRead
50+
- M6 PIN frequency duration:蜂鸣器发声,相当于Tone函数
51+
- M7 PIN degree:舵机角度设置(已经取消,请参考后面舵机阵列指令)
52+
- M8:读取外部电源电压
53+
- M9 PIN PIX Red Green Blue:RGB灯显示,参数为引脚、像素位置(0为选中全部像素)、红、绿、蓝
54+
- M10 PIN:按键模块读取,按下返回1
55+
- M11 Brightness:设置RGB灯亮度
56+
- M20 String:点阵屏滚动显示字符串
57+
- M21 Matrix:点阵屏显示阵列16制编码像素,每个位一个像素,共计128个像素(一共16个字节)
58+
- M30 Level1 Level2 Duration:双IO电平设置,主要给MP3模块使用
59+
- M31 Pin1 Pin2 Duration:双IO引脚设置,主要给MP3模块使用
60+
- M100 Index degree speed: 单个步进电机运动控制
61+
- M101 distance: 步进电机小车直线运动,距离单位厘米
62+
- M102 degree: 步进电机小车原地转向,单位度
63+
- M103 diameter degree: 步进电机小车弧线运动,参数为直径和角度
64+
- M104 PPm:设置步进电机小车PPM(pulse per meter,每米脉冲个数,默认15141)
65+
- M105 basewidth:设置步进电机小车轮距
66+
- M200 index speed:设置直流电机速度,index从0到3分别对应M1A到M2B
67+
- M203:停止所有直流电机
68+
- M204 m1 m2 duration:双直流电机速度设置,带延时。(主要用于直流电机小车模式)
69+
- M205 m1 m2 m3 m4:四个直流电机速度设置
70+
- M209 vspeed hspeed rspeed:万向轮小车速度设置,参数分别为:垂直速度、横向速度和转动速度(已经内置了速度映射计算)
71+
- M212 index degree speed:舵机阵列设置。index值0~10对应rosbot主板上4~A3扩展引脚序号
72+
- M220:初始化PS2手柄,手柄接线如下:
73+
```
74+
PS2_DAT A3
75+
PS2_CMD A2
76+
PS2_SEL A1
77+
PS2_CLK A0
78+
```
79+
- M221 axis:读取PS2手柄遥杆值
80+
- M222 button:读取PS2手柄按键值
81+
- M250 trig echo:超声波测距
82+
83+
### MiniLFR
84+
85+
- M0:打印固件版本号
86+
- M1:读取巡线传感器值(校准后的值输出)
87+
- M2:去取当前PID参数设置
88+
- M3 P10.0 I0.015 D1500:设置pid参数,可以只设置某一个具体值,参数前要带上大写参数符号。
89+
- M4 index:读取巡线传感器阈值
90+
- M5 index threshold:设置巡线传感器阈值(由自动校准设置)
91+
- M6 Left Right:设置车头灯亮灭(1位亮,0为灭)
92+
- M7:读取超声波距离,需要插上超声波传感器不然只会返回999
93+
- M8:读取电池电压
94+
- M9 index:读取当前按键状态(1为左键,2为右键)
95+
- M11:读取红外解码值
96+
- M12 code:红外发射编码 (红外解码和发送都是16进制,最长4个字节)
97+
- M13 index red green blue:底部RGB灯颜色设置,参数index(0为全部灯,1为左灯,2位右灯)
98+
- M14 brightness: RGB灯亮度设置
99+
- M15 LCDstring:LCD显示字符串
100+
- M16 index red green blue:猫耳朵超声波RGB灯控制,参数index(0为全部灯,1为左灯,2位右灯)
101+
- M17 notes:蜂鸣器音乐,具体音调定义参考[microbit定义](http://microbit-micropython.readthedocs.io/en/latest/music.html)
102+
- M18 freq duration: 蜂鸣器产生频率,相当于Tone函数
103+
- M19 note: 蜂鸣器播放某一个音符,60位C4,音符序号参考[wiki](https://en.wikipedia.org/wiki/Scientific_pitch_notation#Table_of_note_frequencies)
104+
- M20 String:点阵屏滚动显示字符串
105+
- M21 Matrix:点阵屏显示阵列16制编码像素,每个位一个像素,共计128个像素(一共16个字节)
106+
- M22 index red green blue:RGB灯环控制,参数index(0为全部灯,其余为对应像素位置)
107+
- M30 Level1 Level2 Duration:双IO电平设置,主要给MP3模块使用
108+
- M200 speedleft speedright:左右车轮速度
109+
- M201 x y:遥杆模式下x,y坐标设置(内置映射为左右轮速度)
110+
- M202 speedleft speedright duration:左右车轮速度,带延时
111+
- M209 difference:设置左右轮差速(出厂已经校准过了)
112+
- M210:读取左右轮差速
113+
- M300:左右轮速度校准,需要在i2c口插上陀螺仪模块
114+
- M301:巡线传感器校准,需要放在已经贴好的巡线地图上。
115+
- M999:软复位
116+
117+
指令大体上就这些了,具体可以参考固件源代码,也可在kittenblock点击对应模块后在arduino面板查看具体发送的指令格式。

kittenblock/images/we_00.png

39.5 KB
Loading

kittenblock/images/we_01.png

26.3 KB
Loading

kittenblock/images/we_02.png

132 KB
Loading

kittenblock/images/we_03.png

46.3 KB
Loading

kittenblock/images/we_04.png

26.9 KB
Loading

kittenblock/images/we_05.png

30.9 KB
Loading

kittenblock/index.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ Kittenblock 教程
1616
05Kittenblock编程工作区.md
1717
06Kittenblock舞台展示区.md
1818
07Kittenblock角色与舞台参数编辑区.md
19-
08Kittenblock的python与帮助区.md
19+
08Kittenblock的python与帮助区.md
20+
Onlineandoffline.md
21+
连线引擎简介和使用.md

kittenblock/连线引擎简介和使用.md

+59-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,63 @@
22

33
小喵家早期的天使用户可能知道在kittenblock 1.4x版本有一个连线引擎的功能,但是因为后面1.5x开始框架大改导致前后不兼容所以删掉了。但是随着现在软件慢慢稳定下来,我们在1.73迭代花了3天将连线引擎完完全全重写了一遍。
44

5-
## 连线引擎介绍
5+
![](./images/we_00.png)
66

7-
Kittenblock是一个专注于硬件编程的平台,但是硬件编程少不了连线的步骤,Kittenblock内的连线引擎设计
7+
## 连线引擎基本使用介绍
8+
9+
Kittenblock是一个专注于硬件编程的平台,但是硬件编程少不了连线的步骤,Kittenblock内的连线引擎设计的初衷就是多少简化这个步骤,给用户更加直观的电路连接的概念。
10+
11+
更新了1.73版本的Kittenblock后大家应该可以看到Tab栏多了一个连线的部分:
12+
13+
![](./images/we_01.png)
14+
15+
点击打开后可以看到一张空的画布,在最左下角有一个"+"图标。这个是用于导入电路板或电子模块图片的,目前只支持png格式,导入的图片将以1:1的形式绘制在画布上。在Kittenblock安装目录下的wiring目录有一些我们已经画好的主板和电子模块图片,大家可以自由使用。
16+
17+
使用上述方法我们导入一个rosbot主板和一个sr04超声波模块:
18+
19+
![](./images/we_02.png)
20+
21+
之后我们来模拟一下连线过程,步骤基本如下:
22+
23+
1. 在电子模块针脚处双击鼠标,可以生成一个线路引脚。
24+
2. 按着引脚点可以拖动一条导线出来。
25+
3. 在另一个引脚释放鼠标可以将两个点用导线连接起来。
26+
27+
![](./images/we_03.png)
28+
29+
### 改变颜色
30+
31+
当两个引脚连接上后即使我们拖动电子模块也会自动跟随更新新的位置。目前引脚和导线可以更换颜色,具体操作是先点击导线或者引脚,在右上角弹出来了一个颜色选择框点击对应颜色就可以了~
32+
33+
![](./images/we_04.png)
34+
35+
### 曲线设置
36+
我们也可以给导线添加拐点,将连接从直线变成曲线:
37+
38+
- 双击某一条导线,大家应该可以看到会新增一个控制点
39+
- 拖动控制点就可以弯曲导线了
40+
41+
![](./images/we_05.png)
42+
43+
## 连线结果保存和打开
44+
45+
目前保存项目为sb3的时候自动将连线引擎的内容打包到sb3内,所有电子模块的图片也会自动打包进去。当打开这个sb3的时候,连线内容会自动重新加载进来。
46+
47+
由于电子模块图片是打包在sb3文件内的,即使你把文件给其他小伙伴,他们电脑中没有这个电子模块的图片也能正常打开。
48+
49+
目前连线引擎还处于比较雏形的阶段,有什么新的功能和需求请尽管提出来吧,就看大家脑洞有多大了 ~
50+
51+
52+
53+
54+
55+
56+
57+
58+
59+
60+
61+
62+
63+
64+

0 commit comments

Comments
 (0)