一、硬件准备

USB转ESP8266两块、DHT11温度湿度传感器、ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别

USB转ESP8266 说明:为什么要买两块

二、软件准备

Arduino、EMQX(这是mqtt服务器可以部署在本地也可以放在远程服务器上)、MQTTBox(mqtt客户端程序)、如果是Window系统的话 安装相关USB驱动程序。

三、安装EMQX 下面介绍的方法是部署在远程服务器上。

MQTT服务器配置方法

四、安装Arduino IDE

到官网下载安装

五、配置Arduino IDE  的 ESP8266开发环境

参考地址

六、把ESP-01与DHT11连接

连接方法

七、打开Arduino IDE 编写代码

注意修改 Wi-Fi名和 Wi-Fi密码,如果是本地mqtt服务器的话地址填 127.0.0.1

#include <SimpleDHT.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h> int pinDHT11 = 2; // GPIO2 of ESP8266
const char* ssid = "XXXXX";//手机Wi-Fi热点
const char* password = "XXXX";//手机Wi-Fi密码
const char* mqtt_server = "XXXXXXX";//服务器网址或者IP地址 //const String macAddress = WiFi.macAddress();
//const char* clientID = macAddress.c_str(); //MAC地址
const char* clientID = "ESP8266_01_A"; //连接mqtt用户名 WiFiClient espClient;
PubSubClient client(espClient);
SimpleDHT11 dht11(pinDHT11); long lastMsg = 0;
char msg[50];
int value = 0; void setup() {
//pinMode(BUILTIN_LED, OUTPUT); // 将BUILTIN_LED引脚初始化为输出
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
} void setup_wifi() { delay(10);
WiFi.begin(ssid, password); // 我们从连接到WiFi网络开始
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("WiFi connected");
} ///接收反馈
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
} } void reconnect() {
// 循环,直到我们重新连接
while (!client.connected()) { if (client.connect(clientID)) { //connected
Serial.print("MQTT连接成功"); // 连接mqtt成功
// client.publish("ESP_01主题", "hello world"); // 一旦连接,发布公告…
client.subscribe("ESP_01主题"); // 一旦连接,发布主题
} else {
delay(5000); // 等待5秒再重试
}
}
}
void loop() { if (!client.connected()) {
reconnect();
}
client.loop(); ////////温度湿度
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
return;
}
String tmp = "温度:"; //字符串拼接
tmp += String(temperature);
tmp += String(" 湿度:");
tmp += String(humidity); Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
client.publish("ESP_01主题", tmp.c_str());//发送主题
delay(2000);
////////温度湿度
}

八、烧录程序

用改装过的 USB转ESP8266 连接ESP-01连接电脑,准备烧录。

点击IDE左上角的箭头开始烧录。

九、测试程序

把烧录好的ESP8266,取下来,装到 USB转ESP8266 没改装的转换器上,插入电脑,打开IDE右上角的图标,即可看到运行状态。

十、打开MQTTBox 订阅ESP_01主题

Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器的更多相关文章

  1. ios开发-将false和true,当做字典的值,并将字典转成字符串,上传到服务器

    今天遇到一个需求,将false和true,当做字典的值,并将字典转成字符串,上传到服务器. 可能这个需求大家遇到过,大部分原因是安卓的同事已经按这样的需求开发完了.我们只能跟随安卓的脚步了. (一)处 ...

  2. ESP8266 ESP-01制作B站粉丝计数器 | Arduino IDE开发ESP8266 | ESP8266存储读取用户数据

    1.实物图 2.原理图 3.Arduino程序 在程序中修改自己的B站UID和自己家的WiFi名称及密码即可. /*B站粉丝计数器*/ /******************************* ...

  3. Arduino IDE开发ESP8266-01S连接MQTT服务器 控制继电器点亮LED

    准备条件: 1.Arduino IDE 2.ESP-01S模块 2.MQTT服务器 3.手机热点或路由器热点 Wi-Fi芯片 默认订阅的主题是  "开关控制" 当你发送主题  &q ...

  4. iOS 开发之路(WKWebView内嵌HTML5之图片上传) 五

    HTML5页面的图片上传功能在iOS端的实现. 首先,页面上用的是plupload组件,在wkwebview上存在两个坑需要修复才能正常使用. 问题:在webview上点击选择照片/相机拍摄,就会出现 ...

  5. C#开发BIMFACE系列8 服务端API之获取文件上传状态信息

    系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE控制台上传文件,上传过程及结束后它会自动告诉你文件的上传状态,目前有三种状态:uploading,success,failure ...

  6. 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理

    在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...

  7. java Web开发实现手机拍照上传到服务器

    第一步: 搭环境,基本jdk 1.6+apache tomcat6.0+myeclipse2014 1.我们要清楚自己的jdk版本.因为我们Apache Tomcat配置的成功的前提是版本相对应. 安 ...

  8. Arduino IDE 开发ESP-01/ESP8266-01读取DHT11温度湿度传感器

    引脚接线: DHT11---ESP8266-01 Singnal--IO2, GND----GND, VCC----VCC DHT11引脚说明: ESP8266-01/ESP8266-01S引脚说明: ...

  9. python+树莓派实现IoT(物联网)数据上传到服务器

    环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 1.树莓派设备,需要在野外也能拥有独立联网能力,那必不可少的需要使用物联网模块. 这里使用的是微雪的SIM868通讯模 ...

随机推荐

  1. 【NOIP2012模拟8.7】JZOJ2020年8月8日提高组T1 奶牛编号

    [NOIP2012模拟8.7]JZOJ2020年8月8日提高组T1 奶牛编号 题目 作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛. 然而,他有点迷信,标识奶牛用的二进制数字 ...

  2. 2019 ACM/ICPC North America Qualifier G.Research Productivity Index(概率期望dp)

    https://open.kattis.com/problems/researchproductivityindex 这道题是考场上没写出来的一道题,今年看看感觉简单到不像话,当时自己对于dp没有什么 ...

  3. java ipv6发邮件需要注意的点

    和ipv4发邮件一样,毕竟ip只是用来找地址的,v4 v6使用上基本没区别. 但有一点得注意:java ipv6采用发送RST包来通知邮件服务器断开连接,这样会导致客户端抛 MessagingExce ...

  4. Python中repr(变量)和str(变量)的返回值有什么区别和联系

    Python中repr(变量)和str(变量)都返回一个描述对象的字符串,二者有关联又有不同.由于Python3.0后都是新式类,我们的分析也是基于新式类进行的.基于object派生的新式类中二者之间 ...

  5. PyQt(Python+Qt)学习随笔: QAbstractItemView的dragDropMode属性

    老猿Python博文目录 老猿Python博客地址 一.概述 dragDropMode属性用于控制视图拖放事件的处理方式,其类型为枚举类型DragDropMode. 二.枚举类型DragDropMod ...

  6. UOJ80 二分图最大权匹配

    草,学了一下午假板子,sb博客害人 题目大意: 一个教室有\(n\)个男生和\(m\)个女生,某些男女之间愿意早恋(雾),其早恋好感度为\(w_i\),问怎样让男女配对使得班里好感度之和最大 \(n\ ...

  7. 【题解】「P1504」积木城堡

    这题是01背包(\(DP\)) 如何判断要拆走那个积木,首先定义一个\(ans\)数组,来存放这对积木能拼成多高的,然后如果\(ans_i = n\)那么就说明这个高度的积木可以. 话不多说,上代码! ...

  8. 题解 P5401 [CTS2019]珍珠

    蒟蒻语 这题太玄学了,蒟蒻写篇题解来让之后复习 = = 蒟蒻解 假设第 \(i\) 个颜色有 \(cnt_i\) 个珍珠. \(\sum\limits_{i=1}^{n} \left\lfloor\f ...

  9. Java中CAS原理分析(volatile和synchronized浅析)

    CAS是什么? CAS英文解释是比较和交换,是cpu底层的源语,是解决共享变量原子性实现方案,它定义了三个变量,内存地址值对应V,期待值E和要修改的值U,如下图所示,这些变量都是在高速缓存中的,如果两 ...

  10. Redis数据持久化(RDB、AOF)

    1. 简介   Redis作为内存型数据库,数据都保存在内存中,如果重启或意外宕机后,数据会全部丢失.因此,Redis提供了完善的持久化机制,将内存中的数据持久化到磁盘上,避免了完整性和安全性的问题, ...