bobo | NPC | 创造力: | 帖子: | 发消息 | 串个门 | 加好友 | 打招呼
2014-6-27 21:07:35 [显示全部楼层]
14821浏览
查看: 14821|回复: 0

[教程] 《边学边用树莓派-7》树莓派上安装Arduino IDE

[复制链接]
树莓派 如果用作电子项目开发,它的GPIO接口欠缺ADC输入无法读取到模拟量,它也没有PWM接口可以用来控制电机的转速。
我们可以使用 DFRobot 出品的 Raspberry Pi Meet Arduino 扩展板 ,这个扩展板不仅将树莓派的所有GPIO和通信接口都引出来并做了电平转换和端口保护。
在 Raspberry Pi Meet Arduino 扩展板上还集成了Arduino leonardo 。通过Raspberry Pi Meet Arduino 扩展板 的USB口连接树莓派主板,即可实现通过安装在树莓派上的Arduino IDE
来对Raspberry Pi Meet Arduino 扩展板进行编程,同时通过USB口转出的串口进行通信。下面我们一步一步来实现 通过 Raspberry Pi Meet Arduino 扩展板的ADC接口读取一个LM35温度传感器,并将温度显示到树莓派终端的功能。

首先在树莓派上安装 Arduino
  1. root@raspberrypi:/home/pi# ap-get update
  2. root@raspberrypi:/home/pi# ap-get install arduino
复制代码

安装完成,在打开Arduino IDE 之前 你需要确认 pi 用户拥有权限操作串口,我们将pi用户添加到tty和dialout:
  1. root@raspberrypi:/home/pi# usermod -a -G tty pi
  2. root@raspberrypi:/home/pi# usermod -a -G dialout pi
复制代码

通过VNC 登录树莓派界面,打开Arduino IDE (此时启动IDE可能要10多秒,需要等等,不要重复点击IDE图标),选择 Arduino Leonardo 板,此时看到串口为 /dev/ttyACM0
我们下载一个Blink测试一下是否可以下载程序到Arduino
《边学边用树莓派-7》树莓派上安装Arduino IDE图1

接下来我们安装Python-serial模块

  1.     root@raspberrypi:/home/pi# apt-get install python-serial python3-serial
复制代码

将LM35温度传感器连接到Raspberry Pi Meet Arduino 扩展板上的A1端口


《边学边用树莓派-7》树莓派上安装Arduino IDE图2


我们在Raspberry Pi Meet Arduino 扩展板上编写一个读取LM35模拟电压输出的温度值,然后通过USB串口发到树莓派上面
  1. // to the pins used:
  2. const int analogInPin = A1;  // Analog input pin that the potentiometer is attached to
  3. int sensorValue = 0;        // value read from the pot
  4. void setup()
  5. {
  6.   // initialize serial communications at 9600 bps:
  7.   Serial.begin(9600);
  8. }
  9. void loop()
  10. {
  11.   sensorValue = analogRead(analogInPin);
  12.   Serial.println(sensorValue,DEC);   
  13.   delay(200);                     
  14. }
复制代码

在树莓派建立一个 LM35Print.py 的文件
Arduino 采集板10比特的ADC参考电压是5V,LM35温度传感器输出电压每0.01V代表1摄氏度,那么温度计算公式为: (ADC采集数值*5/1024) /0.01
  1. import serial
  2. import time
  3. port = "/dev/ttyACM0"
  4. serialFromArduino = serial.Serial(port,9600)
  5. serialFromArduino.flushInput()
  6. while True:
  7.     if(serialFromArduino.inWaiting() > 0):
  8.             input = serialFromArduino.readline()
  9.             inputAsInterger = int(input)
  10.             print("Temperature: " + str(inputAsInterger*5/10.24))
  11.     time.sleep(0.01)
复制代码

运行 LM35Print.py  得到温度数据
  1. root@raspberrypi:/home/pi# python LM35Print.py
  2. Temperature: 28.3203125
  3. Temperature: 28.3203125
  4. Temperature: 28.3203125
  5. Temperature: 28.80859375
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

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

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

mail