查看: 7158|回复: 0

[入门教程] 《边学边用树莓派-8》使用Firmata协议和Arduino进行通信

[复制链接]
Firmata是一个PC与MCU通讯的一个常用协议。我们可以直接在咱们的Raspberry Pi Meet Arduino 扩展板上下载一个StandardFirmata代码,然后通过在树莓派上编写串口软件可以直接访问并控制Raspberry Pi Meet Arduino 扩展板上Arduino的GPIO、PWM、ADC等资源。Firmata的具体介绍可以 百度文库这个资料《Firmata详解》

在Firmata官网你也可以找到相关信息 http://www.firmata.org/wiki/Download

有两个项目可以基于python测试
  • pyduino for Python
  • pyFirmata for Python. Supports the recent hardware Abstraction version of Firmata.


在这里我们使用pyfirmata进行测试,首先安装pyfirmata模块,然后进入python交互界面导入模块看看是否报错,如果报错说明没有安装好
  1. root@raspberrypi:/home/pi# pip install pyfirmata
复制代码

然后看看你的Raspberry Pi Meet Arduino 扩展板 USB串口是什么号码,当前的USB串口是 ttyACM1
  1. root@raspberrypi:/home/pi# ls -l /dev/tty*
  2. crw------- 1 root root      4,  8 Jan  1  1970 /dev/tty8
  3. crw------- 1 root root      4,  9 Jan  1  1970 /dev/tty9
  4. crw-rw---T 1 root dialout 166,  1 Jun 22 12:56 /dev/ttyACM1
  5. crw-rw---- 1 root tty     204, 64 Jun 22 12:17 /dev/ttyAMA0
  6. crw-rw---T 1 root dialout   5,  3 Jan  1  1970 /dev/ttyprintk
复制代码

进入python命令界面   输入命令测试下通信是否正确 ,这里的串口是ttyACM1
下面测试了使板上D13口的LED闪烁,然后又测试了模拟口上LM35温度传感器输入的电压,0.0567是电压值
  1. root@raspberrypi:/home/pi# python
  2. <pre>>>>from pyfirmata import Arduino, util
  3. >>> board = Arduino('/dev/ttyACM1')
  4. >>> board.digital[13].write(1)
  5. >>> board.digital[13].write(0)
  6. >>> it = util.Iterator(board)
  7. >>> it.start()
  8. >>> board.analog[0].enable_reporting()
  9. >>> board.analog[0].read()
  10. 0.0567
复制代码

至此说明Firmata运行起来了,你可以看看相关《Firmata详解》  和  pyFirmata  的操作格式,即可通过串口连接Raspberry Pi Meet Arduino 扩展板,从而使树莓派增加多个GPIO、PWM、ADC等功能。

在测试中我发现速度并没有简单协议快,我觉得如果是固定功能,制定一个小巧的私有协议是更方便快捷的,可以看看咱们前面测试的 ADC采集通信例子
《边学边用树莓派-7》树莓派上安装Arduino IDE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail