本来不想对拿到手的树莓派RP2350进行焊接,结果发现上了面包板之后不行,只好花了些时间将以前的电烙铁翻出来,将排针与树莓派RP2350正常焊接在一起。
本项目意图展示如何使用Arduino IDE环境实现数字口读写、模拟口读写及额外添加库的处理办法。需要涉及的RP2350引脚如下图所示:

一、模拟角度传感器模拟信号读取示例
ADC(模数转换器即 A/D 转换器),是指将模拟信号转变成数字信号。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。Beetle RP2350的ADC是10位的,最大输出值为 1023。
模拟角度传感器如下图所示,由于要读取该传感器旋转角度对应模拟信号的值,所以该传感器信号引脚应该接至A0,对应的程序代码也应该使用A0。其他则地对地、VCC对VCC进行连接。

const int analogInPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
Serial.println(sensorValue);
delay(200);
}
通过串口监视器可以看到旋转模拟角度传感器采集到的数据。Beetle RP2350的ADC是10位的,最大输出值为 1023,所以串口监视器上看到的数值只能是0~1024之间的值。

二、模拟角度传感器控制发光模块的明暗程度
在串口监视器能够看到采集到的模拟数据前提下,我们尝试控制发光模块的敏感程度。
代码如下所示,可以看出发光模块发光需要用到数字口5号引脚,由于需要采用PWM的方式对模拟电路进行有效控制且该PWM的值的范围是0~255之间,所以需要使用map函数将采集模拟角度传感器的值从0~1023范围转换至0~255之间。
正常连线,编写程序代码并烧录之后旋转模拟角度传感器,可以发现被控制的发光模块能够根据旋转角度的不同产生明暗程度的变化。
const int analogInPin = A0;
int sensorValue = 0;
int ledPin = 5; // 定义LED灯引脚
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
sensorValue = analogRead(analogInPin);
Serial.print("sensor = ");
Serial.println(sensorValue);
analogWrite(ledPin, map(sensorValue, 0, 1023, 0, 255));
delay(50);
}
三、DHT11传感器采集温湿度
DHT11温湿度传感器采用的是单总线通信协议。这种协议通过一根数据线完成与主控制器(如Arduino、Raspberry Pi等)之间的数据传输。通信过程由主机发起,首先发送启动信号,随后DHT11响应并传输温湿度数据。单总线协议的优点是接线简单,仅需少量引脚即可实现数据交互,但其传输速率较低,适合短距离、低速应用场景。需要注意的是,由于DHT11对时序要求较高,开发者在编写驱动程序时必须严格遵循其通信时序图,否则可能导致数据读取失败或错误。此外,单总线通信容易受噪声干扰,建议使用适当的信号拉电阻和短线距连接以保证稳定性。
对于非常规的传感器需要额外使用相关库来取得相应的采集数据。Auidno IDE通过库管理器实现对这些非常规传感器的管理。该库管理器可以通过菜单【工具】找到并调用。根据你使用的传感器品牌及类型正确选择并安装。如图所示,可以看出我使用的传感器是DFRobot_DHT11。

安装完成之后,如下图所示,通过菜单 “文件”-> “示例”->“第三方库示例”->DFRobotDHT11查看相关使用代码。从代码可以看出关键的数据引脚是使用了树莓派RP2350的4号引脚。

/*!
* @file readDHT11.ino
* @brief DHT11 is used to read the temperature and humidity of the current environment.
*
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [Wuxiao](xiao.wu@dfrobot.com)
* @version V1.0
* @date 2018-09-14
* @url https://github.com/DFRobot/DFRobot_DHT11
*/
#include <DFRobot_DHT11.h>
DFRobot_DHT11 DHT;
#define DHT11_PIN 4
void setup(){
Serial.begin(115200);
}
void loop(){
DHT.read(DHT11_PIN);
Serial.print("temp:");
Serial.print(DHT.temperature);
Serial.print(" humi:");
Serial.println(DHT.humidity);
delay(1000);
}
树莓派RP2350与DHT11对应引脚一一连接完毕以后,烧录运行,通过串口监视器观察取得的温度与湿度数据,请猜测一下,目前处于什么环境?

四、温度报警
当实验进行到此环节时,电脑蓝屏了。不过,有了前面的基础,我觉得在上面这段程序代码的基础之上再增加一个判断就可以搞定温度报警环节了,留给感兴趣的同仁……
最后实物连线图如下:

评论