ESP8266 鼓捣记 - 从零制作一个温湿度计
一.前言
经过上一篇文章 《ESP8266 鼓捣记 - 入门(环境搭建) 》搭建好环境后,肯定不会满足于 Hello World ,想快速做一个实际有用的东西出来,我认为温湿度计就非常合适,简单易做,需要的材料也不多。
二.材料的准备
除了 ESP8266 开发板以外,还需要一个 DHT11 温湿度传感器模块,这个直接在某宝搜索即可,几块钱一个。

因为我是直接买的物联网开发套餐,包含了DHT11模块的,板子也是定制的学习板子,包含了很多针脚,只需要用杜邦线连接起来就行了,不需要锡焊,如果你是买的普通板子,可能要考虑买个电烙铁来焊接模块。
三.连接电路

这个图片是我买的套餐里,卖家提供的资料,把 DHT11的针脚连接到 ESP8266 板子上。完成后如下图:

四.编码
编码是基于点灯科技提供的 Blinker 物联网开发平台,它提供了丰富的示例代码,对于温湿度计来说,有现成的代码。
首选需要安装 DHT11 库

然后是编码
#define BLINKER_WIFI
#include <Blinker.h>
//blinker 提供的key
char auth[] = "";
//你的wifi名字
char ssid[] = "";
//你的wifi密码
char pswd[] = "";
//发送到 blinker 的湿度数据key
BlinkerNumber HUMI("humi");
//发送到 blinker 的温度数据key
BlinkerNumber TEMP("temp");
//引入 DHT 库
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
uint32_t read_time = 0;
float humi_read, temp_read;
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void heartbeat()
{
HUMI.print(humi_read);
TEMP.print(temp_read);
}
void dataStorage() {
//添加数据存储 以便于图标数据展示
Blinker.dataStorage("humi", humi_read);
//添加数据存储 以便于图标数据展示
Blinker.dataStorage("temp", temp_read);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Blinker.attachHeartbeat(heartbeat);
Blinker.attachDataStorage(dataStorage);
dht.begin();
}
void loop()
{
Blinker.run();
if (read_time == 0 || (millis() - read_time) >= 2000)
{
read_time = millis();
//读取湿度
float h = dht.readHumidity();
//读取温度
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
BLINKER_LOG("Failed to read from DHT sensor!");
return;
}
float hic = dht.computeHeatIndex(t, h, false);
humi_read = h;
temp_read = t;
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
BLINKER_LOG("Heat index: ", hic, " *C");
}
}
代码我就不一一讲解了,加了部分注释,复制这段代码,设置 Blinker 的 key,然后wifi名字和密码,写入esp8266即可完成,非常简单。
五.设置UI
因为我们是基于 Blinker 平台的,所以可以直接使用 Blinker APP 来连接我们的开发板,该APP提供了非常强大的UI编辑功能。
这是我设计好的UI,标注了各个控件的类型。

数据控件的配置

几乎所有控件都是根据数据 key 来读取并展示数据的,数据的详细信息我们也可以在 debug 控件里看到。

我的界面配置导出
{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨晓晨温湿度计¨¨t1¨¨文本2¨¨bg¨É¨ico¨´´¨cols¨Í¨rows¨Ê¨key¨¨tex-272¨´x´É´y´É¨speech¨|÷¨lstyle¨Ê¨clr¨¨#00A90C¨}{ßA¨num¨ßC¨湿度¨ßH¨fad fa-smile¨ßO¨#389BEE¨¨min¨É¨max¨¢1c¨uni¨´%´ßGÉßIÍßJËßK¨humi¨´x´É´y´ÊßM|÷ßNÊ}{ßA¨deb¨¨mode¨ÉßGÉßIÑßJÍßK¨debug¨´x´É´y´¤AßM|÷ßNÊ}{ßAßQßC¨温度¨ßH¨fad fa-thermometer-three-quarters¨ßOßTßUÉßVº0ßW´℃´ßGÉßIÍßJËßK¨temp¨´x´Í´y´ÊßM|÷ßNÊ}{ßA¨cha¨ßGɨsty¨¨line¨ßOßP¨sty1¨ßg¨clr1¨¨#EA0909¨¨sty2¨ßg¨clr2¨ßTßIÑßJÍßKßd´x´É´y´ÌßM|÷ßC¨温度曲线¨¨key1¨´´ßE´´ßNÊ}{ßAßeßGÉßfßgßOßTßhßgßißTßkßgßlßTßIÑßJÌßKßX´x´É´y´ÐßM|÷ßC¨湿度曲线¨}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡¨on¨¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ßr¨source_zh¨¨开关状态¨¨state¨|ßtßv÷¨state_zh¨|´打开´´关闭´÷}÷}
六.展示
完成后的样子

对于小米温度计2

七.结束
这个温度计做起来还是非常简单,很多东西都有现成的示例。基于现在的还可以使用3d打印机,打印一个漂亮的壳子,再加一个 LED 显示屏,就可以做成一个媲美现在淘宝上卖的某些温湿度计了。这个的话我暂时只能想想了,这一块是我从没接触过的领域,还需要时间去学习。生命不息,学习不止!
ESP8266 鼓捣记 - 从零制作一个温湿度计的更多相关文章
- ESP8266 鼓捣记 - 入门(环境搭建)
一.前言 以前没怎么接触过硬件开发,ESP8266 这个名字还是从朋友处得知,用它做了许多好玩的东西,便想着自己也来玩一玩.定了一个小目标,做一个温度计.本文介绍从0到 "Hello Wor ...
- 1个小时!从零制作一个! AI图片识别WEB应用!
0 前言 近些年来,所谓的人工智能也就是AI. 在媒体的炒作下,变得神乎其神,但实际上,类似于图片识别的AI,其原理只不过是数学的应用. 线性代数,概率论,微积分(著名的反向传播算法). 大家觉得这些 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- 使用ESP8266制作一个微型气象站
本文主要介绍如何制作一个微型气象站. 这个想法和大部分代码来自Daniel Eichhorn在这个网址上的博客,可以去看看,这里面有一些很酷的东西! http://blog.squix.ch/2015 ...
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- 怎样制作一个横版格斗过关游戏 Cocos2d-x 2.0.4
本文实践自 Allen Tan 的文章<How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Coco ...
- 手把手教你从零写一个简单的 VUE
本系列是一个教程,下面贴下目录~1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 今天给大家带来的是实现一个简单的类似 VUE 一样的前端框架,VUE 框架现在应 ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...
随机推荐
- 什么是C和C++标准——小白必看
本文简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的. 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了 ...
- Java Map转成xml标签字符串
一个简单的java实现,供参考: package com.trilogy.session.data; import java.lang.reflect.Field; import java.util. ...
- CentOS8 安装
CentOS8 1911 下载 https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso Step ...
- C++20 多线程 std::jthread
在C++20中新加了jthread类,jthread是对thread的一种封装 std::jthread 构造函数 (1)jthread() noexcept; (2)jthread( jthread ...
- MVC查询
前言 最近没什么好写的,所以写个查询来巩固一下知识 HTML @{ Layout = null; } <!DOCTYPE html> <html> <head> & ...
- 渗透测试之GoogleHack
GoogleHack 1,介绍: 使用google等搜索引擎对某些特定的网络主机漏洞(一般是服务器上的脚本漏洞)进行搜索,都能达到快速找到1漏洞的目的,然而,google相对百度讲,没有广告,搜索引擎 ...
- python打印水仙花数的个人总结
面试过程中,提到python,面试最多的就是让你现场写代码实现水仙花.冒泡.九九乘法表,这些面试方法旨在校验面试者的python基础和思维逻辑. 先从水仙花说起,水仙花是指一个n位正整数(n>= ...
- Tarjan缩点入门
缩点 顾名思义,缩点就是把一个强连通分量缩成一个点 Tarjan 在dfs的过程中记录时间戳,若能够通过某个点返回已遍历的点,则可以缩点 inline void Tarjan(int x)// st栈 ...
- python实现类的多态
多态 关注公众号"轻松学编程"了解更多. 1.多态使用 一种事物的多种体现形式,举例:动物有很多种 注意: 继承是多态的前提 函数重写就是多态的体现形式 演示:重写Animal类 ...
- xshell连接windows10子系统ubuntu
修改端口 cd /etc/ssh#备份sudo cp sshd_config sshd_config.baksudo vim sshd_config修改sshd_config Port 2233 #修 ...