这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【SAME51CuriosityNano开发板】温湿度计

共2条 1/1 1 跳转至

【SAME51CuriosityNano开发板】温湿度计

助工
2025-06-30 12:02:30     打赏

【SAM E51 Curiosity Nano 开发板】温湿度计

本文介绍了 SAM E51 Curiosity Nano 开发板使用 Arduino IDE 编程并驱动 OLED 显示屏和 DHT11 温湿度传感器,实现环境温湿度的采集和实时显示的温湿度计的项目设计。

项目介绍

准备工作:安装 arduino-lib-oled 库;

硬件连接:OLED 的 SDA 和 SCL 引脚分别与 PA12 和 PA13 对应;DHT11 信号引脚与 PA16 对应;

工程代码:包括流程图与说明;

效果演示:OLED 显示实时温湿度数据。


硬件连接

diagram_oled_dht11.jpg

OLED连接方式


OLEDSAM E51
SDAPA12
SCLPA13
VCCVTG
GNDGND


DHT11连接方式

DHT11SAM E51
SignalPA16
VCCVTG
GNDGND

流程图

flowchart_oled_dht11.jpg

代码

新建 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显示实时温湿度数据

oled_dht11.jpg

动态效果

oled_dht11.gif

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

oled_dht11_print.gif

总结

本文介绍了 SAM E51 Curiosity Nano 开发板使用 Arduino IDE 编程并驱动 OLED 显示屏和 DHT11 温湿度传感器,实现环境温湿度的采集和实时显示的温湿度计的项目设计,包括项目介绍、开发环境搭建、流程图、代码、工程编译、固件上传和效果展示等,为该设备的物联网相关开发和应用提供了参考。


成果视频详见:SAM E51 Curiosity Nano Kit - Microchip .

链接:https://www.bilibili.com/video/BV1nkgzzWE7Y/






关键词: Microchip     开发板     IDE     开发环境     Ar    

工程师
2025-07-01 07:03:43     打赏
2楼

大佬的画图工具是什么,能不能出一期待教程?


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]