《边学边用树莓派-8》使用Firmata协议和Arduino进行通信
Firmata是一个PC与MCU通讯的一个常用协议。我们可以直接在咱们的Raspberry Pi Meet Arduino 扩展板上下载一个StandardFirmata代码,然后通过在树莓派上编写串口软件可以直接访问并控制Raspberry Pi Meet Arduino 扩展板上Arduino的GPIO、PWM、ADC等资源。Firmata的具体介绍可以 百度文库这个资料《Firmata详解》在Firmata官网你也可以找到相关信息 https://www.firmata.org/wiki/Download
有两个项目可以基于python测试
[*] pyduino for Python
[*] pyFirmata for Python. Supports the recent hardware Abstraction version of Firmata.
在这里我们使用pyfirmata进行测试,首先安装pyfirmata模块,然后进入python交互界面导入模块看看是否报错,如果报错说明没有安装好
root@raspberrypi:/home/pi# pip install pyfirmata
然后看看你的Raspberry Pi Meet Arduino 扩展板 USB串口是什么号码,当前的USB串口是 ttyACM1
root@raspberrypi:/home/pi# ls -l /dev/tty*
crw------- 1 root root 4,8 Jan11970 /dev/tty8
crw------- 1 root root 4,9 Jan11970 /dev/tty9
crw-rw---T 1 root dialout 166,1 Jun 22 12:56 /dev/ttyACM1
crw-rw---- 1 root tty 204, 64 Jun 22 12:17 /dev/ttyAMA0
crw-rw---T 1 root dialout 5,3 Jan11970 /dev/ttyprintk
进入python命令界面 输入命令测试下通信是否正确 ,这里的串口是ttyACM1
下面测试了使板上D13口的LED闪烁,然后又测试了模拟口上LM35温度传感器输入的电压,0.0567是电压值
root@raspberrypi:/home/pi# python
<pre>>>>from pyfirmata import Arduino, util
>>> board = Arduino('/dev/ttyACM1')
>>> board.digital.write(1)
>>> board.digital.write(0)
>>> it = util.Iterator(board)
>>> it.start()
>>> board.analog.enable_reporting()
>>> board.analog.read()
0.0567
至此说明Firmata运行起来了,你可以看看相关《Firmata详解》和pyFirmata的操作格式,即可通过串口连接Raspberry Pi Meet Arduino 扩展板,从而使树莓派增加多个GPIO、PWM、ADC等功能。
在测试中我发现速度并没有简单协议快,我觉得如果是固定功能,制定一个小巧的私有协议是更方便快捷的,可以看看咱们前面测试的 ADC采集通信例子
《边学边用树莓派-7》树莓派上安装Arduino IDE
页:
[1]