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

相关视频