【SAM E51 Curiosity Nano 开发板】温湿度计
本文介绍了 SAM E51 Curiosity Nano 开发板使用 Arduino IDE 编程并驱动 OLED 显示屏和 DHT11 温湿度传感器,实现环境温湿度的采集和实时显示的温湿度计的项目设计。
项目介绍
准备工作:安装 arduino-lib-oled 库;
硬件连接:OLED 的 SDA 和 SCL 引脚分别与 PA12 和 PA13 对应;DHT11 信号引脚与 PA16 对应;
工程代码:包括流程图与说明;
效果演示:OLED 显示实时温湿度数据。
硬件连接


OLED连接方式
| OLED | SAM E51 |
| SDA | PA12 |
| SCL | PA13 |
| VCC | VTG |
| GND | GND |
DHT11连接方式
| DHT11 | SAM E51 |
| Signal | PA16 |
| VCC | VTG |
| GND | GND |
流程图


代码
新建 Arduino 工程并添加如下代码
/*********
* https://docs.arduino.cc/libraries/oled-ssd1306---sh1106/
* https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621
**********/
#define Serial Serial1
#include <avr/dtostrf.h>
#include <dht11.h>
#include <oled.h>
#define DHT11PIN 5 // DHT11 data pin
#define OLED_SDA 21 // OLED SDA pin
#define OLED_SCL 22 // OLED SCL pin
dht11 DHT11;
OLED oled(OLED_SDA, OLED_SCL, 16, OLED::W_128, OLED::H_64, OLED::CTRL_SSD1306, 0x3C);
void setup() {
Serial.begin(9600);
oled.begin();
// 显示启动画面
oled.clear();
oled.draw_string_P(0, 0, "DHT11 Monitor", OLED::DOUBLE_SIZE);
oled.draw_string_P(0, 25, "Initializing...");
oled.display();
delay(2000);
}
void loop() {
DHT11.read(DHT11PIN); // 读取传感器数据
// 准备显示
oled.clear();
// 显示温度
oled.draw_string(0, 5, "Temp:", OLED::DOUBLE_SIZE);
char tempStr[10];
dtostrf((float)DHT11.temperature, 4, 1, tempStr);
oled.draw_string(60, 5, tempStr, OLED::DOUBLE_SIZE);
oled.draw_string(110, 5, "C", OLED::DOUBLE_SIZE);
// 显示湿度
oled.draw_string(0, 30, "Humi:", OLED::DOUBLE_SIZE);
char humStr[10];
dtostrf((float)DHT11.humidity, 4, 1, humStr);
oled.draw_string(60, 30, humStr, OLED::DOUBLE_SIZE);
oled.draw_string(110, 30, "%", OLED::DOUBLE_SIZE);
// 底部状态栏
oled.draw_rectangle(0, 55, 127, 63, OLED::SOLID, OLED::WHITE);
oled.draw_string(10, 56, "Updated:", OLED::NORMAL_SIZE, OLED::BLACK);
char timeStr[10];
snprintf(timeStr, sizeof(timeStr), "%02d:%02d", millis()/60000, (millis()/1000)%60);
oled.draw_string(70, 56, timeStr, OLED::NORMAL_SIZE, OLED::BLACK);
oled.display();
// 串口输出
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (C): ");
Serial.println((float)DHT11.temperature, 2);
delay(2000);
}保存代码,开发板选择 SAM E51 ;
编译工程,将生成的 HEX 固件通过 MPLAB X IDE 上传至开发板。
具体操作参考:SAM E51 Curiosity Nano Kit - Microchip .
库函数参考:SAM E51 Curiosity Nano Kit - Microchip .
效果
OLED显示实时温湿度数据


动态效果


同时串口打印采集的温湿度数据


总结
本文介绍了 SAM E51 Curiosity Nano 开发板使用 Arduino IDE 编程并驱动 OLED 显示屏和 DHT11 温湿度传感器,实现环境温湿度的采集和实时显示的温湿度计的项目设计,包括项目介绍、开发环境搭建、流程图、代码、工程编译、固件上传和效果展示等,为该设备的物联网相关开发和应用提供了参考。
成果视频详见:SAM E51 Curiosity Nano Kit - Microchip .
链接:https://www.bilibili.com/video/BV1nkgzzWE7Y/
我要赚赏金
