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

 
					
				
 
			
			
			
						
			 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

