本帖最后由 云天 于 2021-5-25 21:24 编辑  
 
【Arduino Expansion Shield for Raspberry Pi B+ 扩展板】 
 
 
 
     DFRobot树莓派的扩展板。适应树莓派B+/2B/3B板,扩充更多的GPIO。      是一款具备Arduino 标准接口的 树梅派扩展板。他内部集成了 Arduino Leonardo主板,通过对这个Arduino Leonardo进行编程,可以实现一些树莓派不具备的功能,例如使用PWM来控制电机的速度、ADC来读取模拟量信号、外部中断口可以实时处理一些任务。 Arduino Expansion Shield for Raspberry Pi B+ 扩展板的USB口可以插在树莓派的USB HOST接口上这样我们就可以通过在树莓派系统里面安装Arduino IDE直接对扩展板进行编程。 然后通过USB接口,扩展板可以直接和树莓派进行通信协调工作。 https://wiki.dfrobot.com.cn/_SKU_DFR0327_Arduino_Expansion_Shield_for_Raspberry_Pi_B_2B_%E6%A0%91%E8%8E%93%E6%B4%BEB_2B%E6%89%A9%E5%B1%95%E6%9D%BF 【点灯】 首先在树莓派上安装 Arduino 
			
			
			- <font color="rgb(66,66,66)">root@raspberrypi:/home/pi# sudo apt-get update
 - root@raspberrypi:/home/pi# sudo apt-get install arduino</font>
 
  复制代码
  
 
安装完成,在打开Arduino IDE 之前 你需要确认 pi 用户拥有权限操作串口,我们将pi用户添加到tty和dialout: 
- root@raspberrypi:/home/pi# sudo usermod -a -G tty pi
 - root@raspberrypi:/home/pi# sudo usermod -a -G dialout pi
 
  复制代码
  
  通过VNC 登录树莓派界面,打开Arduino IDE (此时启动IDE可能要10多秒,需要等等,不要重复点击IDE图标),选择 Arduino Leonardo 板,此时看到串口为 /dev/ttyACM0 我们下载一个Blink测试一下是否可以下载程序到Arduino。 
 
 
 
 
 
 
 
 
【实现Arduino和树莓派通信】 
 
接下来我们安装Python-serial模块 
 
 
 
-   root@raspberrypi:/home/pi# apt-get install python-serial python3-serial
 
  复制代码
  
 
声音传感器连接到Arduino Expansion Shield for Raspberry Pi B+扩展板上的A0端口。 
 
 
在Arduino Expansion Shield for Raspberry Pi B+ 扩展板上编写一个读取LM35模拟电压输出的温度值,然后通过USB串口发到树莓派上面。 
- // to the pins used:
 - const int analogInPin = A0;  // 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);
 - }
 
  复制代码
  
  
在树莓派建立一个 SoundPrint.py 的文件 Arduino 采集声音响度。 
- 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))
 -     time.sleep(0.01)
 
  复制代码
  
 
 
 |