0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino的OLED温度计湿度计的制作教程

454398 来源:工程师吴畏 2019-08-01 10:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在这个项目中,我们将制作Arduino OLED温度计和湿度计。我们将从DHT22传感器读取温度和湿度,然后我们将在OLED屏幕上显示数据。

OLED代表有机发光二极管,它们有多种不同尺寸可供选择。我们要使用的尺寸是128X64(1.3英寸)。 OLED通过SPI和I2C通信与Arduino配合使用,但在我们的项目中,我们将使用SPI通信。

电路图

首先,我们将OLED与Arduino连接起来。 OLED可以连接到I2C中的Arduino以及SPI。以I2C方式连接OLED的连接更容易,但SPI通信比I2C更快。因此,我们将使用SPI将OLED与Arduino连接起来。按照以下方式将OLED与Arduino连接:

将OLED上的CS引脚连接到Arduino上的引脚10

将OLED上的DC引脚连接到Arduino上的引脚9

将OLED上的RST引脚连接到Arduino上的引脚8

将OLED上的D1或CLK引脚连接到Arduino上的引脚11

将OLED上的D0或DIN引脚连接到引脚13在Arduino

我们已将OLED连接到引脚13,11,10,9和8,因为这些引脚用于SPI通信。接下来,将DHT22与Arduino连接。 DHT22传感器与Arduino的连接如下:

将DHT22上的VCC连接到Arduino上的5V引脚

将DHT22上的GND连接到Arduino上的GND

将DHT22的数据引脚连接到Arduino上的引脚7

Arduino代码

#include #include“DHT.h “#define DHTPIN 7 #define DHTTYPE DHT22 DHT传感器(DHTPIN,DHTTYPE); U8GLIB_SH1106_128X64 oled(13,11,10,9,8); void setup(){sensor.begin(); oled.firstPage(); do {oled.setFont(u8g_font_fur14);//设置字体大小//在OLED上打印数据oled.drawStr(20,15,“欢迎”); oled.drawStr(40,40,“To”); oled.drawStr(5,60,“DIYHACKING “); } while(oled.nextPage()); delay(5000);} void loop(){float h = sensor.readHumidity();//读取湿度值float t = sensor.readTemperature();//读取温度值float fah = sensor.readTemperature(true);//读取Fahrenheitif中的温度(isnan(h)|| isnan(t)|| isnan(fah)){//检查我们是否收到值或notSerial.println(“无法读取DHT传感器!”); return;} float heat_index = sensor.computeHeatIndex(fah,h);//计算Fahrenheitfloat中的热指数heat_indexC = sensor.convertFtoC(heat_index);//在Celsiusoled.firstPage()中计算热量指数; do {oled.setFont(u8g_font_fub11);//设置字体大小//在OLBled.drawStr上打印数据(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//设置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//设置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//设置尺寸以打印热量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }

代码说明

首先,我们包括DHT22传感器和OLED的库。 ‘ U8glib ’库适用于OLED,它使代码非常简单。我们将使用“ U8glib ”库的功能显示OLED上的数据。

#include #include“DHT.h”接下来,我们定义了连接DHT22传感器数据引脚的引脚,然后定义了DHT传感器的类型。市场上还有一些其他类型的DHT传感器。之后,我们初始化了连接OLED的引脚。

#define DHTPIN 7 #define DHTTYPE DHT22 DHT传感器(DHTPIN,DHTTYPE); U8GLIB_SH1106_128X64 oled(13 ,11,10,9,8); 在设置功能中,我们给出命令以开始从DHT22传感器接收值。然后我们设置字体并在OLED上打印“欢迎DIYHACKING”5秒钟。如果您不喜欢,可以更改字体大小。你可以在这里找到不同的字体大小。

sensor.begin(); oled.firstPage(); do {oled.setFont(u8g_font_fur14);//设置字体大小//在OLED上打印数据oled.drawStr(20,15,“欢迎”); oled.drawStr(40,40,“To”); oled.drawStr(5,60,“DIYHACKING “); } while(oled.nextPage()); delay(5000);} 在循环函数中,我们从DHT22传感器读取湿度和温度值,然后我们使用温度计算热量指数湿度。

float h = sensor.readHumidity();//读取湿度值float t = sensor.readTemperature();//读取温度值float fah = sensor.readTemperature(true);//读取Fahrenheitif中的温度(isnan(h)|| isnan(t)|| isnan(fah)){//检查我们是否收到值或notSerial.println(“无法读取DHT传感器!”); return; float heat_index = sensor.computeHeatIndex(fah,h);//计算Fahrenheitfloat中的热指数heat_indexC = sensor.convertFtoC(heat_index);//以摄氏度计算热指数最后,我们再次设置字体大小并在OLED上打印温度,湿度和热指数。您可以按照上面讨论的链接更改字体大小,也可以在不同的维度设置数据。

oled.firstPage(); do {oled.setFont(u8g_font_fub11);//设置字体大小//在OLBED.drawStr上打印数据(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//设置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//设置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//设置尺寸以打印热量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    121

    文章

    6331

    浏览量

    232531
  • 湿度计
    +关注

    关注

    0

    文章

    17

    浏览量

    11174
  • 温度计
    +关注

    关注

    6

    文章

    407

    浏览量

    79642
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195969
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用于智能温度计的MG127蓝牙芯片方案

    智能温度计是可以在无感情况下感知人体或物体的温度。这一应用广泛被应用在人体健康数据的采集,养殖畜牧业,和物流/冷链行业。蓝牙芯片作为实现设备无线通信的核心部件,对温度计的性能和成本有着直接影响。
    的头像 发表于 11-14 16:31 823次阅读

    多方面了解万向型双金属温度计

    温度计
    华泰天科
    发布于 :2025年10月23日 16:28:09

    如何用超级电容取代钛酸锂电池,破解蓝牙温度计欧盟出口认证与寿命难题?

    引言各位工程师朋友,你是否正在为智能蓝牙温度计(尤其是烤肉探针这类产品)的电源方案苦恼?目标市场是欧洲,但欧盟新电池法规像一座大山:钛酸锂电池(LTO)的认证成本高、周期长,且其循环寿命(约1000
    的头像 发表于 10-23 08:40 170次阅读
    如何用超级电容取代钛酸锂电池,破解蓝牙<b class='flag-5'>温度计</b>欧盟出口认证与寿命难题?

    原来双金属温度计有这些安装方式!

    温度计
    jzyb
    发布于 :2025年09月29日 16:23:57

    蓝牙温度计的理想储能解决方案:永铭超级电容

    Supercapacitor永铭超级电容助力蓝牙温度计理想储能超级电容助力蓝牙温度计发展随着蓝牙温度计向智能化和无线化方向发展,设备的便捷性和功能性显著提升,但传统电池在续航能力、瞬时电流输出和体积
    的头像 发表于 09-01 10:01 362次阅读
    蓝牙<b class='flag-5'>温度计</b>的理想储能解决方案:永铭超级电容

    带远传双金属温度计的应用竟这么多

    温度计
    华泰天科
    发布于 :2025年08月19日 13:54:07

    功耗创新低!涂鸦产品级Zigbee 3.0温湿度计开发包,开箱即用、完全开源

    湿度计作为智能家居环境感知的核心组件,通过实时检测温湿度信息,可主动联动暖通、加湿器等设备,帮助提升居住舒适度、降低能源消耗。这类产品通常是由电池供电,对低功耗的要求较高。而Zigbee天然支持
    的头像 发表于 07-31 19:13 576次阅读
    功耗创新低!涂鸦产品级Zigbee 3.0温<b class='flag-5'>湿度计</b>开发包,开箱即用、完全开源

    带远传双金属温度计接线要知道什么?

    温度计
    jzyb
    发布于 :2025年06月26日 20:14:53

    用树莓派RP2350 DIY 桌面动态温湿度计

    桌面动态温湿度计本文介绍了DFrobotBeetleRP2350开发板结合DHT11模块、锂电池模块、随机眨眼动画,实现OLED显示的桌面动态温湿度计的项目设计。一、项目介绍本项目包括工作原理:ADC电压采集与电量转换工程调试:
    的头像 发表于 05-27 08:05 674次阅读
    用树莓派RP2350 DIY 桌面动态温<b class='flag-5'>湿度计</b>

    树莓派RP2350 - 桌面动态温湿度计

    树莓派RP2350 - 桌面动态温湿度计 本文介绍了 DFRobot Beetle RP2350 开发板结合 DHT11 模块、锂电池模块、随机眨眼动画,实现 OLED 显示的桌面动态温湿度计的项目
    发表于 05-26 02:02

    双金属温度计的作用有哪些?

    温度计
    华泰天科
    发布于 :2025年04月09日 17:04:43

    温度计使用注意事项 温度计湿度计的区别

    一、温度计使用注意事项 温度计是一种用于测量物体温度的仪器,广泛应用于日常生活、工业生产、科学研究等领域。在使用温度计时,为了确保测量结果的准确性和安全性,需要注意以下事项: 选择合适
    的头像 发表于 02-01 17:13 2409次阅读

    什么是热电偶温度计?

    确定接合点的温度。 顺便提一下,接触或接近想要测温处的接合点叫做热触点(或测温触点),另一个接合点叫做基准触点。 热电偶温度计一般由感应温度的传感器部和对其发出指示的检测器主体部构成。 为了用热电偶
    发表于 01-13 10:25

    一起学习双金属温度计该怎么读数?

    温度计
    jzyb
    发布于 :2025年01月09日 14:30:13

    关于远传双金属温度计你真的了解吗?

    温度计
    jzyb
    发布于 :2024年12月13日 09:58:38