《边学边用树莓派-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
root@raspberrypi:/home/pi# ap-get update
root@raspberrypi:/home/pi# ap-get install arduino
安装完成,在打开Arduino IDE 之前 你需要确认 pi 用户拥有权限操作串口,我们将pi用户添加到tty和dialout:
root@raspberrypi:/home/pi# usermod -a -G tty pi
root@raspberrypi:/home/pi# usermod -a -G dialout pi
通过VNC 登录树莓派界面,打开Arduino IDE (此时启动IDE可能要10多秒,需要等等,不要重复点击IDE图标),选择 Arduino Leonardo 板,此时看到串口为 /dev/ttyACM0
我们下载一个Blink测试一下是否可以下载程序到Arduino
接下来我们安装Python-serial模块
root@raspberrypi:/home/pi# apt-get install python-serial python3-serial
将LM35温度传感器连接到Raspberry Pi Meet Arduino 扩展板上的A1端口
我们在Raspberry Pi Meet Arduino 扩展板上编写一个读取LM35模拟电压输出的温度值,然后通过USB串口发到树莓派上面
// to the pins used:
const int analogInPin = A1;// Analog input pin that the potentiometer is attached to
int sensorValue = 0; // value read from the pot
void setup()
{
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
Serial.println(sensorValue,DEC);
delay(200);
}
在树莓派建立一个 LM35Print.py 的文件
Arduino 采集板10比特的ADC参考电压是5V,LM35温度传感器输出电压每0.01V代表1摄氏度,那么温度计算公式为: (ADC采集数值*5/1024) /0.01
import serial
import time
port = "/dev/ttyACM0"
serialFromArduino = serial.Serial(port,9600)
serialFromArduino.flushInput()
while True:
if(serialFromArduino.inWaiting() > 0):
input = serialFromArduino.readline()
inputAsInterger = int(input)
print("Temperature: " + str(inputAsInterger*5/10.24))
time.sleep(0.01)
运行 LM35Print.py得到温度数据
root@raspberrypi:/home/pi# python LM35Print.py
Temperature: 28.3203125
Temperature: 28.3203125
Temperature: 28.3203125
Temperature: 28.80859375
页:
[1]