Arduino读取DHT11的温湿度显示在基于I2C的1602上

2023-05-16

背景摘要

又到了周末,B站的番还未更新。闲来无事,搞搞吃灰已久的Arduino。

南方的冬天真冷啊,测测屋子里的温湿度怎么样!为了测量屋子里的温湿度,就用简单大方的Arduino,STM32继续吃灰去。

Arduino的开发流程

开发流程,无外乎是 硬件 与 软件 啦(废话2333)

一、硬件的搭建:

1.Arduino 板子的选择:

本人吃土啃老大学生一枚,专业是最不赚钱的机械自动化,所以手上的板子只有国产Arduino UNO 和 ESPduino。我一开始想用ESPduino作为开发板,想着以后能把温湿度上传到云,便一开始用ESPduino结果做到一半发现DAC口只有一个,根本不能实现用LiquidCrystal_I2C库(这个库最低要两个DAC口),Arduino yun买不起,就只有用UNO了。(下面是ESPduino)

2.其他配件

杜邦线就不用说了,还有DHT11和接有PCF8572AT的LCD1602啦。为什么LCD1602要接PCF8572AT?因为省线,只要4根线,电源两根、I2C通讯两根。而且还有配套的库,方便实惠。(下面是I2C通讯1602图)

3.接线

LCD1602 i2c模块                         Ardunio Uno

GND                           <------>        GND接地线

VCC                           <------>         3.3V 接电源

SDA                            <------>         A4

SCL                            <------>         A5

 

DHT11模块                                Arduino UNO

GND                           <------>        GND接地线

VCC                           <------>         3.3V 接电源

DATA                         <------>          PIN 2

接好后如下所示,so easy啦

 

二、开始编程

1.开发环境

开发环境我选择最有逼格的VS

纳尼!!!VS能开发Arduino???眼见为实:

很方便有木有?按下Tab自动补充,避免打错和忘记方法,简直神奇,Arduino IDE弱爆了。怎么搞?下一个Visual Micro,查一查CSDN别人写的博客就OK啦,反正我是搞了很久才破解好的。想要高逼格就要下功夫。

2.程序写入

// Visual Micro is in vMicro>General>Tutorial Mode
// 
/*
Name:       DHT11.ino
Created:	2020/1/3 16:52:45
Author:     DESKTOP-TGBP3JC\LENOVO
*/

// Define User Types below here or use a .h file
//


// Define Function Prototypes that use User Types below here or use a .h file
//


// Define Functions below here or use other .ino or cpp files
//

// The setup() function runs once each time the micro-controller starts
//定义头文件:总线通讯/1602显示屏的I2C通讯/DHT11的头文件
#include <dht11.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define uint unsigned int
#define ulong unsigned long

#define DHT11PIN 2

float humi, temp;
//设置LCD1602设备地址,我这里是PCF8572AT,地址是0x3F,一般是0x20,或者0x27具体看模块手册
LiquidCrystal_I2C lcd(0x3F, 16, 2);
dht11 DHT11;

void setup()
{
	//1602初始化
	lcd.init();
	lcd.backlight();
	//重启时可以让1602黑一下,更有逼格
	delay(500);
}

// Add the main program code into the continuous loop() function
void loop()
{
	//读取DHT11
	int chk = DHT11.read(DHT11PIN);
	//LCD设置光标
	lcd.setCursor(0, 0);
	//打印湿度
	lcd.print("Humi(%):");
	lcd.print((float)DHT11.humidity, 2);
	//LCD设置光标
	lcd.setCursor(0, 1);
	//打印温度
	lcd.print("Temp(oC):");
	lcd.print((float)DHT11.temperature, 2);
	//延时一段时间
	delay(3000);
}

说明一下,PCF8572AT是有地址的。地址不对啥都显示不出来,寻找这些地址的程序和原理自己谷歌百度都行。

这些库要自己装啊,否则报错的说。DTH11的库大家应该都有,LCD1602 I2C的库,下载地址是 https://github.com/marcoschwartz/LiquidCrystal_I2C

把下载的库放到Arduino的库里,文件夹是D:\Arduino IDE\Arduino\libraries,打开可以看到里面有很多的内置库文件,可以自己写库玩玩。

在VS micro下可以自动加载未下载的库,十分方便。

实验效果:

室内15°C的温度71%的湿度,湿冷湿冷的,在大连的朋友说室内穿短袖,要不停的喝水否则口干舌燥的,羡慕ing

 

展望

想以后能把数据传到网上,树莓派啊,Micro Python啊都用上,做一个智能家居系统。可是我啥也不会啊。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino读取DHT11的温湿度显示在基于I2C的1602上 的相关文章

  • arduino安装DHT11库

    步骤操作如下 打开Arduino IDE 在菜单栏中选择 项目 gt 加载库 gt 管理库 在库管理器的搜索框中 输入 DHT sensor library 找到 DHT sensor library by Adafruit 点击 安装 安
  • 使用 Arduino 将serial.read()转换为可用的字符串

    我正在使用两个 Arduino 来相互发送纯文本字符串新软系列 https docs arduino cc learn built in libraries software serial and an RF http en wikiped
  • 如何使用 PHP 读取串口 [重复]

    这个问题在这里已经有答案了 如何使用 php 从连接到我的服务器 运行 kali linux 的旧笔记本电脑 上的 COM 端口的 arduino 读取串行数据 以便我可以在网页上显示数据 我读过有关同一问题的其他问题 所有这些问题要么超级
  • 使用 pySerial 等待 Arduino 自动重置

    我正在尝试在 Linux 上使用非常简单的代码 为了展示问题 从 Arduino 板上读取行 Python代码 arduino py import serial arduino serial Serial dev ttyACM0 with
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • 如何通过蓝牙在Raspberry Pi 4和Arduino Nano BLE之间进行读写?

    我能够通过 Rpi4 的 bluepy 和 Arduino Nano BLE 的 ArduinoBLE h 连接 Raspberry Pi 4 和 Arduino Nano BLE 不幸的是 当我尝试从 Rpi4 写入 Arduino Na
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • sim800L GPRS 发布请求

    我一直在研究 LoNet 迷你 GSM 模块 SIM800L 并将其与 Arduino 连接 我已插入 SIM 移动卡并且可以连接互联网 通过串行监视器 我可以毫无问题地与它通信 但是当向网络服务器页面发出 GET 或 POST 请求时 它
  • 静态 uint8_t 数组的输入过程和类型

    我目前正在尝试将 Arduino IDE 中的整数变量转换为静态 uint8 t 数组的值 我在用 include
  • C-如何使用PROGMEM存储和读取char数组

    我有三个字符数组 我不希望 Arduino 将它们存储在SRAM http en wikipedia org wiki Static random access memory 所以我想使用PROGMEM来存储和读入flash http en
  • C++:将成员函数作为普通函数指针传递的闭包

    我正在尝试调用外部库的成员函数 该函数接受函数指针作为参数 Timer every unsigned long period void callback void 但不幸的是我想传递的参数是一个成员函数 void MyClass the m
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • 使用 SPIFFS 加载文件时出现问题 (ERR_CONTENT_LENGTH_MISMATCH)

    好吧 这两天我一直在研究这个问题 但我仍然觉得我一无所获 我最近开始使用SPIFFS 文件系统 for Arduino开发于呼扎 ESP8266像FSBrowser ino例如 虽然它在分离代码方面非常出色 但随着我的代码不断增长 它在稳定
  • 如何使用GSM模块SIM800和Arduino Uno发送短信?

    我正在尝试通过 SIM800 GSM 模块从 Arduino 发送短信 消息到达给定号码 但格式不正确 它显示 消息格式不支持 我在这里添加了我的代码 非常感谢您的快速回复 include
  • 通过iPhone音频插孔读取数据

    我正在寻找一种方法来读取通过 iPhone 的音频插孔从 Arduino 发送的原始数据 我搜索了很多并发现this https github com sanjibahmad Is Headphone Plugged In tree mas
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • Arduino C++ 代码:可以使用虚函数和异常吗?

    跟进这条评论 https stackoverflow com questions 452139 writing firmware assembly or high level 452401从问题中编写固件 汇编还是高级 https stac
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些

随机推荐

  • Apollo专项课——第一讲:交通灯检测

    1 问题引入与本节课重点学习打卡内容 2 Apollo决策功能的设计与实现 交规决策 xff1a 根据路径与红绿灯状态来决定是否生成虚拟墙 路径决策 路径边界 速度决策 planning模块运行流程 场景分类的例子 xff1a 车道跟随 x
  • Apollo最新升级后的感知框架介绍

    Apollo感知框架 1 Apollo视觉感知算法模块流程2 感知框架升级的内容 1 Apollo视觉感知算法模块流程 预处理 神经网络模型的训练 后处理 2 感知框架升级的内容 主要包括三方面 xff0c 如下所示 xff1a xff08
  • 采用u版的pytorchyolo3源码训练自己的数据集

    采用u版的pytorchyolo3源码训练自己的数据集 1 说明 最近一直在研究目标检测这一块的内容 在导师的建议下学习了yolov3目标检测算法 xff0c 想着既然学完了就要跑一边看看是啥样子的说干就干 本文采用的源码为https gi
  • 进程概念初始

    进程初识 进程 xff1a 进程对于用户来说进程就是一个运行中的程序 xff0c 就是一个编译好的二进制文件 站在我们程序员的角度上来看 xff0c 进程就是一些列指令运行的过程 xff0c 站到操作系统上来看 xff0c 就是分配系统资源
  • 常用的linux操作指令

    关机 系统的关机 重启以及登出 shutdown h now 关闭系统 init 0 关闭系统 telinit 0 关闭系统 shutdown h hours minutes amp 按预定时间关闭系统 shutdown c 取消按预定时间
  • TX2安装ROS系统成功记录

    TX2安装ROS系统成功记录 前言一 确认安装的ROS版本二 安装步骤1 设置sources list2 设置密钥3 安装4 环境配置4 安装构建功能包的依赖 三 测试总结 前言 因导师项目 xff0c 需要将在电脑上开发的算法移植到TX2
  • 实现js程序在vscode控制台输出的方法(看完方便多了)

    当我们想要写一段js代码时 xff0c 我们可能会在vscode中新建一个html文件 xff0c 然后再script标签下去编写js代码 xff0c 完了之后我们想要看看js打印输出的效果 xff0c 还会通过浏览器的 F12 去查看输出
  • 总结C++中取成员函数地址的几种方法

    总结C 43 43 中取成员函数地址的几种方法 这里 我整理了4种C 43 43 中取成员函数地址的方法 第1 2 4种整理于网上的方法 第3种cdecl cast是我自己想到的 其中 第4种 汇编 的方法不能在VC6上编译通过 推荐使用第
  • 移动程序后出现Cannot resolve symbol AppCompatActivity等错误

    移动android studio 程序包到不同电脑后 xff0c 出现Cannot resolve symbol AppCompatActivity等错误 xff0c 网上有说没有包含lib包 import android support
  • Gradle sync failed: Could not GET gradle-3.0.0-beta4.pom

    在不电脑间移动android工程项目时出现Gradle sync fail Could not resolve com android tools build gradle 3 0 0 beta4 以为是android studio版本的问
  • undefined reference to `dlopen' 等dlfcn.h类问题的另一种错误解决

    linux下或者android下编程经常遇到dlopen dlclose等未定义函数 xff0c 其实 只要我们链接上dl库就可以解决这个问题 xff0c 在makefile 加上 ldl选项 xff0c 便可以解决这个问题 很多文章都讲
  • openwrt交叉编译libffi zlib libiconv gettext glib gstreamer

    libffi 如果你是直接从git托管源构建libffi xff0c 那么configure还不存在 首先运行 autogen sh 这将要求您安装autoconf xff0c automake和libtool 您可能想要告诉configu
  • Python中链表、栈、队列、二叉树的封装

    Python中链表 栈 队列 二叉树的封装 1 链表的封装2 栈的封装3 队列4 二叉树的封装 1 链表的封装 链表是一种物理存储单元上非连续 非顺序的存储结构 xff0c 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表由一系列结
  • 进程中产生僵尸和孤儿

    孤儿进程 父进程先于子进程结束 xff0c 则子进程成为孤儿进程 xff0c 子进程的父进程成为init进程 xff0c 称为init进程领养孤儿进程 孤儿进程其实对于操作系统来说是没有太大的危害 xff0c 在孤儿进程中父进程结束了之后
  • C++Primer Plus第6版&C Primer Plus第6版 中文版免费分享啦

    最近在学习C 43 43 xff0c 用的资料是师兄分享的经典书籍 C 43 43 Primer Plus第6版中文版 的PDF xff0c 自带书签 xff0c 使用很方便 但师兄说这个是他在网上花了积分才下载下来的 xff0c 这让我很
  • www服务器是什么

    WWW是一种服务 我们在浏览器的地址栏里输入的网站地址叫做URL Uniform Resource Locator xff0c 统一资源定位符 就像每家每户都有一个门牌地址一样 xff0c 每个网页也都有一个Internet地址 当你在浏览
  • 快速配置VSCode(Visual Studio Code) C/C++开发环境

    简介 VSCode只是一个纯文本编辑器 editor xff0c 不是IDE 集成开发环境 xff0c 不含编译器 compiler 和许多其他功能 xff0c 所以需要自己先搭建环境 但是对小白朋友来说 xff0c 面对一堆的环境变量操作
  • c++:如何定义一个头文件来使用类

    定义自己的头文件 定义类为了方便起见 xff0c 一般不在某个函数内部去定义 要在不同文件中使用同一个类 xff0c 类的定义就必须保持一致 因此考虑拆分一个类 xff0c 在头文件内声明类和其中的成员函数 xff0c 在源文件中写该类的实
  • Ubuntu can口状态检查

    1 配置can0 设置比特率 sudo ip link set can0 type can bitrate 250000 2 打开can0 sudo ip link set can0 up 3 查看 信息 ip details link s
  • Arduino读取DHT11的温湿度显示在基于I2C的1602上

    背景摘要 又到了周末 xff0c B站的番还未更新 闲来无事 xff0c 搞搞吃灰已久的Arduino 南方的冬天真冷啊 xff0c 测测屋子里的温湿度怎么样 xff01 为了测量屋子里的温湿度 xff0c 就用简单大方的Arduino x