IO扩展模块
简介
IO扩展模块是DBD团队开发的一款超小型创客神器,尺寸只有50mm x 50mm x 9mm, 它采用ARM Cortex-M0内核的32位处理器, 主频80MHz, 小巧精致, 接口丰富, 拥有22个IO接口.分为数字量输入模块和数字量输出模块.
IO扩展模块采用极简的设计风格,同时保持结构紧凑小巧,全部接口采用SH1.0端子,特别适合一些体积有限制的场合使用。
IO扩展模块采用RS485通信接口,通信协议简单明了,提供通信协议说明及PythonSDK,提供技术支持。
IO扩展模块可配合USB485模块快速开发,适配Windows,Linux,Android,MacOS等操作系统。
资源特性
重量 | 40g |
工作电压 | DC12V/24V |
最大持续输出电流 | 3A |
输入IO | 22路(内部10K电阻上拉) |
输出IO | 22路 (开漏输出500mA) |
RS485总线 | 默认250Kbps |
运行温度 | -10 to +60摄氏度 |
产品细节(输入-输出)
机械尺寸
接口布局
调试软件
DBD Tuner for IO
开发者
Python SDK
SDK接口
Python SDK接口说明
SDK接口分为4类,参数设置set类,参数获取get类,等待信号wait类,功能操作类,下面将做详细介绍.
setOutputIO(id, value) | 设置IO输出.取值为32位整数.其中低22位每一位代表一个IO状态 |
getInputIO(id) | 获取输入IO的状态.返回值为32位整数,其中低22位每一位代表一个IO状态. |
getDeviceID(id) | 获取设备ID. |
scanDevices() | 扫描在线设备. |
saveParameters(id) | 保存参数. |
changeID(id, value) | 修改ID.ID范围0-31. |
如何使用Python SDK
准备工作
1.安装pyserial.用户可以通过pycharm的库管理下载添加, 或者通过命令行添加, 有问题请联系我们或者自行搜索解决.
2.桌面开发环境推荐使用PyCharm或VSCode进行程序编写.
3.终端开发环境,sudo python3 -m pip install pyserial
4.获取串口权限.Linux下的设备使用都需要使用sudo或root用户才能打开,为了能让普通用户也能使用串口,可以增加udev规则来实现,具体方法如下: sudo vim
/etc/udev/rules.d/70-ttyusb.rules 增加如下内容: KERNEL=="ttyUSB[0-9]*",MODE="0666"
保存,重新插入USB转串口,普通用户就能搞定了.
5.下载Python SDK.并拷贝到用户运行目录.
6.Git用户可以直接运行 git clone https://github.com/DBDynamics/Python.git
通信协议
Bee采用RS485总线接口进行通讯, 通信速率可根据需求调整, 最高支持10Mbps.通信模型
通信模型采用常规的主从模式,即所有的Bee都是从站,用户的控制器或者USB调试器为主站.总线上主站发送指令后, 所有从站接收并判断是否是自己的指令.如果是自己的指令,则立刻进行回复,如果不是自己的消息,则保持沉默.通信参数
波特率:默认250Kbps(客户定制的请自行调整)数据位:8位
停止位:1位
校验位:无
通信指令格式
一条指令由8个字节组成:功能码(1-byte),索引码(1-byte),主ID(1-byte),子ID(1-byte),数据值(4-byte)
其中:
功能码:
0x00 - 读参数指令
0x01 - 写参数指令
0x02 - 读成功
0x03 - 写成功
0x04 - 操作指令
0x05 - 操作成功
索引码:(共计32个)
0 - 主板类型(只读)(0x11代表Bee步进电机控制器)
1 - 设备ID(读/写)(可以读取该参数,通过遍历ID号,来判断该ID是否在线.写该参数可以用来改变设备ID,但需要随后发送新的ID号保存参数的指令,才能永久修改)
22 - 输入IO状态(只读)(0-低电平,1-高电平)
23 - 输出IO(读/写)(0-低电平,1-高电平)
主ID:
编码范围:0-31
子ID:(为了兼容Elephant 8in1控制器和其他多合一控制器,Bee控制器默认该参数为0即可)
编码范围:0-7
数据:
数据类型:int整数(32位)
低位在前,例如10进制数据:100 表示为 0x64 0x00 0x00 0x00
指令例子
1.读取ID=1d的IO输入状态值:0x0 0x16 0x01 0x00 0x00 0x00 0x00 0x00
返回值:
0x02 0x16 0x01 0x00 0x01 0x00 0x00 0x00 (代表ch0传感器触发)
0x02 0x16 0x01 0x00 0x02 0x00 0x00 0x00 (代表ch1传感器触发)
0x02 0x16 0x01 0x00 0x03 0x00 0x00 0x00 (代表ch0,ch1传感器触发)
2.设置ID=1的IO输出:
0x01 0x17 0x01 0x00 0x01 0x00 0x00 0x00(value=0x1,代表ch0输出)
0x01 0x17 0x01 0x00 0x02 0x00 0x00 0x00(value=(0x1<<1),代表ch1输出)
0x01 0x17 0x01 0x00 0x80 0x00 0x00 0x00(value=(0x1<<7),代表ch7输出)
0x01 0x17 0x01 0x00 0xff 0x00 0x00 0x00(value=0xff,代表ch0-ch7输出)
返回值:
0x03 0x17 0x01 0x00 0xXX 0xXX 0xXX 0xXX