使用arduino IDE开发ESP8266NodeMCU连接DHT11实现温湿度检测并上传onenet官网

您所在的位置:网站首页 arduinoIDE开发esp8266-01s 使用arduino IDE开发ESP8266NodeMCU连接DHT11实现温湿度检测并上传onenet官网

使用arduino IDE开发ESP8266NodeMCU连接DHT11实现温湿度检测并上传onenet官网

2024-06-24 03:28| 来源: 网络整理| 查看: 265

前言:

        本篇博客记录一下以arduino IDE来开发一下ESP8266NodeMCU,实现用DHT11进行温湿度检测,并且上传新版的onenet官网;我在实现这个小项目的时候,发现网上资料有关onenet的资料都是旧版的,这就有点难受了,本着开源的精神,这篇博客就来弥补一下这方面资料的缺失。

前期准备工作: 硬件方面:

        1、ESP8266NodeMCU

         2、DHT11传感器

         3、一根USB转micoUSB线,杜邦线若干

在新版Onenet上创建一个设备

        1、首先我们要先注册一个onenet账号,这里我就不再给大家写具体步骤了。

        2、注册完之后,点击箭头所指,进入开发者中心

         3、继续点击费用中心

         4、接下来会弹出一个崭新的界面

        5、将鼠标悬停在左侧箭头所指区域,会展开以下界面 

        6、选择多协议接入

         7、我们点击添加产品

         8、根据箭头和方框提示来写一些必要的信息,这个是可以随便写的,只要我们确定联网方式是wifi、接入协议是MQTT(旧版)这几个即可。

         9、我们点击立刻添加设备

        10、点击添加设备

         11、会给我们弹出一个新的界面

         12、这里也是可以随便写的,写完必选的选项,点击添加。

         13、添加完成之后,我们就可以看到一个新的界面,在这个界面里,设备一开始离线的,这是正常的,此外,我们的设备ID需要记录一下,后续我们需要来根据设备ID来修改一下自己的代码。

         14、我们点击这个详情,可以看到我们总的一个设备情况

        15、进入新界面后,我们点击添加APIkey

         16、这个APIKey是可以由我们自己来设定,这里我就随便写写了,这个官网会给我们生成一个对应的APIKey码,我这里就是随便写的,只要凑够16个就可以。

         17、点击提交之后,就会给我们生成一个新的APIKey,这个也要记住,后续写代码也是要记住的。

         19、我们点击产品概况,来查看一下我们的产品ID,这个也要记录一下,因为后续写代码我们也要用到的。

         到这一步为止,我们的onenet设备就算是配置好了,接下来就是在arduinoIDE上添加一个ESP8266设备了。

arduinoIDE添加ESP8266

        如果一开始我们选择使用arduino IDE来编辑ESP8266是需要在编辑器上进行一些操作的

        1、打开菜单栏的文件->首选项,将下面的网址复制到指定位置

http://arduino.esp8266.com/stable/package_esp8266com_index.json

      

         2、然后再打开工具,将鼠标悬停在开发板那个位置,会出现开发板管理,如果没有出现的话,也只是说明arduino版本不同罢了,这一点没啥问题的,如图所示

         3、我们点击开发板管理,弹出以下界面,我们在箭头所指区域搜索ESP8266,然后找到一个合适的版本进行下载。

         4、开始下载。

         5、这过程很容易出错,出错了也不要紧,一旦报错,那就多下载几次,一定要保证网络的通畅,否则会下载不了。

        6、 下载完成后,我们需要重启一下我们的IDE才能在开发板的位置发现我们的下载下来的开发板,这里一定要选择我鼠标悬停的开发板,我们的ESP8266NodeMCU对应的开发板就是NodeMCU 1.0,这里千万不能选错,否则很容易出现一些错误。

 安装CP2102的驱动

       我们一开始将ESP8266NodeMCU与我们的电脑连接的话,是没办法识别到我们的串口的,也就是说,一开始烧录代码是烧录不进去的。大家如果插上ESP8266NodeMCU之后,电脑的设备管理器是会出现下面这个界面。

        这里我是之前安装过CP2102的驱动,一开始我看错了以为这个ESP8266NodeMCU板载的是CH340驱动呢,后来仔细看了一下不是,我们还需要安装一个CP2102的驱动,这里我也给大家找了一款合适的驱动,我放在了百度网盘里面CP2102驱动   提取码是:brqt

        下载下来之后,我们根据电脑的类型来选择对应的驱动。64位的话,我们就选择X64,如果是32位的话,我们选择X86。

         双击运行即可。直接点击下一步,傻瓜式安装。

         安装完之后,我们就可以发现串口被识别到了。

       至此,我们的前期准备工作算是完成了。

硬件引脚连接

        

DHT11管脚ESP8266NODEMCU管脚GNDGNDVCC3V3DATAD6 代码部分: #include #include #include #include #include #define WIFI_DEBUG 0 //1:使用一键配网,其它值则使用默认无线账号密码 #define DHT11PIN 12 //设置DHT引脚为Pin 12 #define ONENET_DISCONNECTED 1 //已经断开 #define ONENET_CONNECTED 2 //已经连接上 #define ONENET_RECONNECT 3 //重连成功 #define VER "ESP8266_MQTT_V1.0" //版本号 const char* ssid = "********";//你的wifi账号 const char* password = "********";//wifi密码 /*OneNet*/ PubSubClient mqttClient; const char* mqttServer = "183.230.40.39";//mqtt服务器 const uint16_t mqttPort = 6002; //端口号 #define onenet_productId "******" //产品ID #define onenet_deviceId "**********" //设备ID #define onenet_apiKey "******************" //API_KEY int state; Ticker delayTimer; WiFiClient espClient; dht11 DHT11; /* 延时N秒 */ void delayNs(uint8_t m){ for(uint8_t index = 0;index=10){ //只做10次连接到OneNet,连接不上重启8266 cnt = 0; delayRestart(1); } } return ONENET_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]); } Serial.println(); if ((char)payload[0] == '1') { digitalWrite(LED_BUILTIN, LOW); } else { digitalWrite(LED_BUILTIN, HIGH); } } /* 发布温度信息 */ void Temp_pubMQTTmsg(uint32_t data){ long lastMsg = 0; char msg[50]; char tmp[28]; char d[3]; snprintf(tmp,sizeof(tmp),"{\"Temp\":%d}",data); uint16_t streamLen= strlen(tmp); d[0]='\x03'; d[1] = (streamLen >> 8); d[2] = (streamLen & 0xFF); snprintf(msg,sizeof(msg),"%c%c%c%s",d[0],d[1],d[2],tmp); mqttClient.publish("$dp", (uint8_t*)msg,streamLen+3,false); } /* 发布湿度信息 */ void Humi_pubMQTTmsg(uint32_t data){ long lastMsg = 0; char msg[50]; char tmp[28]; char d[3]; snprintf(tmp,sizeof(tmp),"{\"Humi\":%d}",data); uint16_t streamLen= strlen(tmp); d[0]='\x03'; d[1] = (streamLen >> 8); d[2] = (streamLen & 0xFF); snprintf(msg,sizeof(msg),"%c%c%c%s",d[0],d[1],d[2],tmp); mqttClient.publish("$dp", (uint8_t*)msg,streamLen+3,false); } /* 初始化系统 */ void initSystem(){ int cnt = 0; Serial.begin (115200); Serial.println("\r\n\r\nStart ESP8266 MQTT"); Serial.print("Firmware Version:"); Serial.println(VER); Serial.print("SDK Version:"); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Serial.println(ESP.getSdkVersion()); ESP.wdtEnable(5000); if(WIFI_DEBUG==1)//开启一键配网模式 { if (!autoConfig()) { Serial.println("Start smartConfig"); smartConfig(); } } else { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); cnt++; Serial.print("."); if(cnt>=40){ cnt = 0; //重启系统 delayRestart(1); } } } Serial.print("WIFI Connect \r\n"); } /* 初始化ONENET通信 */ void initOneNetMqtt(){ mqttClient.setServer(mqttServer,mqttPort); mqttClient.setClient(espClient); mqttClient.setCallback(callback); } /* 初始化 */ void setup() { initSystem(); initOneNetMqtt(); } /* 主函数 */ void loop() { ESP.wdtFeed(); DHT11.read(DHT11PIN); state = connectToOneNetMqtt(); Serial.println(WiFi.status()); if(state == ONENET_RECONNECT){ mqttClient.loop(); } else if(state == ONENET_CONNECTED){ printf("temp:%d \r\n",DHT11.temperature); printf("humi:%d \r\n",DHT11.humidity); Temp_pubMQTTmsg(DHT11.temperature); Humi_pubMQTTmsg(DHT11.humidity); mqttClient.loop(); } delay(2000); }

         这里面大家需要修改的就是我上面给大家提醒要记录下来的产品ID,设备ID,APIkey,以及你自己的手机热点和密码。

        当然,如果大家进行编译的时候,一定要先将开发板选择为ESP8266NodeMCU。然后还是汇报

        而这些库都是可以在官网上找到的,我这里也给大家整理了一下如果没有这些库那该怎么办。

如果没有对应的库,该怎么办

        1、将下面的网址复制到浏览器里

https://www.arduino.cc/reference/en/libraries/

        2、进入如下界面

         3、在箭头所指的地方搜索缺少的库。

         4、这里我以PubSubClient.h为例,搜索之后,点击第一个

         5、进入以下界面,这里我是选择了最新的版本,点击之后就会自动下载了。

         6、进入Arduino IDE,点击项目->加载库->添加.zip库。选到刚下载的文件路径,指定文件后就可直接安装,在IDE命令窗中可以看到安装成功提示。

         7、其余几个库也是同样的道理。

进行编译:

        编译完之后是这样的,不是报错。

        在烧录之前,我们要先选择刚才我们在设备管理器里看到的那个串口,然后点击工具->端口->选择CP2102对应的那个串口,然后才能进行烧录。

        如果进行烧录操作,会出现下图所示的效果,就说明已经OK了。

         这时候,代码里加入了串口查看部分,我们可以在串口监视器里面看到现在的温度和湿度。我们可以打开串口显示器来查看一下效果。

         也可以进入onenet官网看一下效果。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3