【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/