二十五块DIY 带屏幕可远程的温湿度传感器
时间:2022-07-24
本文章向大家介绍二十五块DIY 带屏幕可远程的温湿度传感器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
小米的温湿度传感器坏了,不带屏幕。就一个硬币大小,还得配合小米网关使用。。买不起我就自己做一个。。 打开神奇的拼多多,买一个神器开发板可以连接wifi的Nodemcu,再加一块2寸屏幕,二十块包邮。。 再来一个DH11 温湿度传感器五块包邮。。
DH11采集温湿度传感器,显示到屏幕上。然后通过wifi 发送数据到 免费的Blynk 服务器上。。 再手机安装 Blynk App就可以远程查看温湿度了。。。
#define BLYNK_PRINT Serial // 开启串口监视
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <Wire.h> // Only needed for Arduino 1.6.5 and earlier
#include "SSD1306Wire.h" // legacy: #include "SSD1306.h"
char auth[] = "xxxxxxxxxxxxxxxxxxxxxx";//授权码
char ssid[] = "wifiname";//wifi名称
char pass[] = "wifipassword";//wifi密码
#define DHTPIN 2//传感器连接管脚
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
SSD1306Wire display(0x3c, SDA, SCL);
int ci = 0;
//该函数将会每秒钟发送数据给V5,V6,
//在app端,组件的读取频率应该设为PUSH。
void sendSensor()
{
display.clear();
ci++;
float h = dht.readHumidity();
float t = dht.readTemperature(); //摄氏度
//float t = dht.readTemperature(true); //华氏度
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V5, h);///给V5
Blynk.virtualWrite(V6, t);//将湿度发送给V6
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_16);
display.drawString(0, 0, (String)ci);
display.drawString(0, 16, "Temp:"+(String)t+"°C");
display.drawString(0, 32, "Humi:"+(String)h+"%");
display.display();
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);//官方服务器
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080);//自建服务器域名模式
//Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 158), 8080);//自建服务器ip模式
dht.begin();
timer.setInterval(1000L, sendSensor);
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void loop()
{
Blynk.run();
timer.run();
}
https://github.com/zifeiniu/NodeMcu_Temperature
- 微信扫码支付+Asp.Net MVC
- Linq中连接主要有组连接、内连接、左外连接、交叉连接四种
- 深入源码理解YYCache 、SDWebImage、AFNetworking、NSCache 缓存方式与对比
- Linq Like的操作
- iOS网络——AFNetworking AFURLSessionManager源码解析
- 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)
- 1620: [Usaco2008 Nov]Time Management 时间管理
- 手把手教你树莓派linux内核如何编译
- js处理异常try{}catch(e){}
- 1634: [Usaco2007 Jan]Protecting the Flowers 护花
- C#用链式方法表达循环嵌套1
- C#用链式方法表达循环嵌套2
- 【开源】1句代码搞定图片批量上传,无需什么代码功底【无语言界限】
- C#异步调用的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C#观察者模式实例
- xml序列化和反序列化(二)
- xml序列化和反序列化(一)
- js this问题和es6箭头函数this问题
- 元素淡入淡出效果实现
- Asp.Net Mvc表单提交(批量提交)
- Vue 基本指令和html常用标签结合使用综合案例(含代码)
- ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除
- EF 多种查询方式
- (mysql)找不到请求的 .Net Framework Data Provider。可能没有安装
- Vue 中的 v-cloak 解读
- ef和mysql使用(一)
- 浏览器工作原理
- ef oracle参数化问题
- 动态We API(ABP官方文档翻译)