本篇属于番外篇,在前面的篇章已经完成手势传感器的制作和使用了,本篇更侧重的是一些软件知识,属于较通用的知识,而不仅限于本传感器。
相信到这里你已经清楚,这个手势传感器的通信协议是I²C,所以既可以直接连接单片机,在嵌入式的应用场景使用(下位机);也可以接上USB转I²C模块,在电脑/手机(上位机)上使用。
嵌入式场景
本篇以Arduino IDE为例,介绍如何在嵌入式设备中使用。Arduino IDE是一个开发环境,并不只限于开发Arduino的板子,还可以开发像是ESP32、ESP8266、STM32等不同芯片的板子。
Arduino IDE下载地址:https://www.arduino.cc/en/software
我用的是ESP32-S3开发板,所以在Arduino IDE —— File —— Preferences —— Additional boards manager URLs中添加ESP32的链接:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
打开开源仓库目录下的Arduino文件夹中的其中任意一个示例,例如 position.ino
在ESP32-S3中,默认的I2C引脚(SDA、SCL)分别是 8 和 9 ,另外两个引脚DPin和MCLRPin是分别做传输状态信号、复位信号用的
单片机参考连接,IO定义可在软件上修改:
position.ino 这个示例的作用就是实时输出检测到手的3D空间XYZ坐标,输出到ESP32-S3的虚拟串口上,所以需要在Tools —— USB CDC on Boot 该成 Enable 再点Arduino界面的第二个大按钮(Upload),打开Tools —— Serial Monitor 才能看到串口打印。
上传程序前请在按钮旁的下拉框选择你对应的开发板,不同开发板的配置选项不同,大多数是能直接用的,少部分如我的ESP32-S3开发板没有串口芯片,而是USB直连ESP32-S3作虚拟串口的,才需要修改上述的CDC配置。
更多创意的玩法,可以任由各位发挥了,Arduino IDE也有不少教程,属于比较好上手的了。
电脑端/手机端场景
我开源的DEMO软件中可以看到,它们都是用串口获取数据的,而不是直接用USB转I²C模块用I²C的通讯格式进行通讯。
因为前面我已经在Arduino中完成通讯了,所以我开源的Python代码中,实际上手势传感器与电脑的桥梁是ESP32-S3这种单片机,而不是官方或第三方的USB转I²C模块。
如果各位想要用I²C通讯的方式开发,可以参考芯片说明页下方的SDK、通讯协议之类的说明,或者可以参考我在Arduino中使用的库DFRobot_MGC3130的代码。
我是有研究过通讯协议的格式的,总的来说不是很复杂
例如这个文档就介绍了此模块的I²C数据格式
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/UserGuides/40001718E.pdf
如果只是想简单跑一下我的Python示例,那么就需要像上面那样先在Arduino中给单片机上传我的Example程序,如用手写字的程序,就需要上传实时输出XYZ坐标的程序 position.ino
上传好后,打开开源目录下的PC_Tools文件夹,找到 handWriting.py
如果你的电脑没有安装Python,请先安装Python
修改handWriting.py,将里面的端口号 COMXX 改成 实际的号码
在该目录下打开cmd命令行,执行 python handWriting.py 即可,如果报错,请按照提示用 pip install XXX 安装依赖库
谢谢各位支持,我们以后的开源项目中见啦~
暂无评论内容