# esp8266_iot_bin **Repository Path**: caisiyu/esp8266_iot_bin ## Basic Information - **Project Name**: esp8266_iot_bin - **Description**: 使esp8266包含tcp、mqtt、等物联网协议 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 4 - **Created**: 2021-08-23 - **Last Updated**: 2024-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: esp8266, 物联网协议, TCP, mqtt, Http ## README # 介绍 ​ 本固件将**HTTP、TCP、UDP、MQTT**这四种物联网协议集成在**esp8266**模块上,并提供了配置接口API,可以任意选择不同的协议和远程服务器通信,使esp8266模块充当远程服务器与MCU数据交换的桥梁,省去MCU使用AT指令去配置esp8266的步骤。 ​ **MCU**通过串口和**esp8266**模块通信,**MCU**只需把协议名称、远程服务器的IP地址,端口、发送的信息封装成一个数据包,通过串口发送给**esp8266**模块,**esp8266**模块将数据包解析完成后,将自动上报数据。当esp8266模块收到远程服务器的信息时,便将数据反馈给MCU。 ​ 这样就可以实现MCU向远程服务器上报数据,以及远程服务器下发数据给MCU的过程! ------ # 烧写固件 > **工具:FLASH_DOWNLOAD_TOOLS_V3.6.4** > > **固件:WiFiClient.ino.nodemcu.bin** ------ ## 工具下载 > FLASH_DOWNLOAD_TOOLS_V3.6.4 下载链接:https://www.espressif.com/sites/default/files/tools/flash_download_tool_v3.8.8.zip 主界面: ![image-20210908195209722](esp8266_bin.assets/image-20210908195209722.png) 每一项的配置说明: ![image-20210908195137515](esp8266_bin.assets/image-20210908195137515.png) ESP8266型号图: ![image-20210908200348620](esp8266_bin.assets/image-20210908200348620.png) ![image-20210908200357161](esp8266_bin.assets/image-20210908200357161.png) ------ ## 1. ESP8266-12E、12F、12S型号 (1) 打开FLASH_DOWNLOAD_TOOLS_V3.6.4 ![image-20210908194442067](esp8266_bin.assets/image-20210908194442067.png) (2)选择型号为ESP8266,develop版 ![image-20210908194511707](esp8266_bin.assets/image-20210908194511707.png) (3)依次选中配置项 。**Note: 波特率可以调到一点 ,无所谓** ​ 烧写位置:0x00000000 image-20210908195032560 (4) 开始烧写 > 1. esp8266 EN与VCC接3.3V且保证供电充足,最好独立供电,但要与usbttl共地 > > 2. GPIO0要接GND才可以进入烧写模式 > > 3. 选择好文件路径与烧写位置以后,配置好各项参数,先清除flash即点击ERASE按钮,此时会显示“正在等待上电重启”,此时将ESP01模组的VCC拔掉再插上即可进入擦除状态。 > > 4. 擦除成功以后,点击START按钮进入烧写模式,重复上一步中的—-此时会显示“正在等待上电重启”,此时将ESP01模组的VCC拔掉再插上即可进入烧写状态。 > > 5. 等进入条完成,拔掉GPIO0的GND线,令其悬空即可进入工作模式。 (5)下载结束 , 复位一下 8266模块 ------ ## 2. ESP-01、ESP-01S型号 配置项Flash size 选择8Mbit,其余步骤同上: image-20210908200147522 ------ # 固件使用 **模块上电后: 首先开始配网操作;配网完成后,接着连接服务器;服务器连接后,可以进行数据传输。** **自动掉线重连功能:1. wifi网络断开,开始重连; 2. 服务器掉线,开始重连** ## **LED指示灯功能** > 500ms闪烁 -- 模块通过eeprom中读到的WiFi信息,连接网络 > > 100ms闪烁 -- 模块正在等待微信配网 > > 1000ms闪烁 -- 模块已经完成配网,正在等待连接服务器 > > 2000ms闪烁 -- 模块已经连接到远程服务器,连接没有问题 ## 微信配网 **Notes:** 1. wifi必须为2.4GHz的频道,如果是5GHz,配置会没反应。 2. 测试时,wifi为路由器的网络。如果是手机或电脑开的移动热点,有时可能出现没有反应的问题。 模组配网时,首先从eeprom中读到的WiFi信息,如果这个信息不能正确连接到网络,10s后模块会自动进入微信配网模式,LED灯快闪! | 找到公众号:安信可科技 | 开始配置 | 输入WIFI密码,点击连接 | | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | image-20210909164354299 | image-20210909164450383 | image-20210909164532165 | 等待几秒后,即可。 ## MQTT协议配置指令 > 订阅主题: > > {"type":"mqtt","url":"www.caisiyu.top","port":"1883","m_type":"0","topic":"/hum","id":"esp","name":"caisiyu","pwd":"123"} > > 发布主题: > > {"type":"mqtt","url":"www.caisiyu.top","port":"1883","m_type":"1","topic":"/hum","msg":"25","id":"esp","name":"caisiyu","pwd":"123"} | 键名 | 键值 | 说明 | | ------ | --------------- | ------------------------------- | | type | mqtt | 协议名称 | | url | www.caisiyu.top | 服务器地址 | | port | 1883 | 端口 | | m_type | 0 | 0:表示订阅主题、1:表示发布主题 | | topic | /hum | 主题名称 | | msg | 25 | 数据包内容 | | id | esp | 客户端名称 | | name | caisiyu | 用户名 | | pwd | 123 | 密码 | 1. 指令发送完成后,如果参数正确,模组返回 > Ok image-20210909161136958 2. 如果参数不正确,模组返回 > error-parameter image-20210909161240816 3. 当收到消息后,会收到 > receive > > <>中包含着消息体 > > /hum-25 : **/hum是收到的主题名**,**25为消息** image-20210909161351379 ## HTTP协议配置指令 ### POST方式 > {"type":"post","url":"www.caisiyu.top:1880","page":"postplain","msg":"{\"msg\":\"hello\"}"} | 键名 | 键值 | 说明 | | ---- | -------------------- | ---------- | | type | post | 协议名称 | | url | www.caisiyu.top:1880 | 服务器地址 | | page | postplain | 资源路径 | | msg | {\"msg\":\"hello\"} | 数据包内容 | 1. 指令发出后,模组返回Ok > Ok image-20210909162536165 2. 当收到消息后,会收到 > receive< {"caiiyu":"post"} > > > <>中包含着消息体 > > **"caiiyu":"post" ,为收到的数据** ### GET方式 > {"type":"get","url":"www.caisiyu.top:1880","page":"postplain"} | 键名 | 键值 | 说明 | | ---- | -------------------- | ---------- | | type | get | 协议名称 | | url | www.caisiyu.top:1880 | 服务器地址 | | page | postplain | 资源路径 | 1. 指令发出后,模组返回Ok > Ok image-20210909162817833 2. 当收到消息后,会收到 > receive< {"caiiyu":"get"} > > > <>中包含着消息体 > > **"caiiyu":"get" ,为收到的数据** ## TCP协议配置指令 > {"type":"tcp","ip":"192.168.31.145","port":"12345","msg":" {\"msg\":\"hello\"}"} | 键名 | 键值 | 说明 | | ---- | ------------------- | ---------------- | | type | tcp | 协议名称 | | ip | 192.168.31.145 | 服务器IP地址 | | port | 12345 | 服务器IP地址端口 | | msg | {\"msg\":\"hello\"} | 数据包内容 | 1. 指令发送完成后,正常连接服务器后,模组返回 > Ok image-20210909161136958 2. 如果参数不正确,模组返回 > error-parameter image-20210909163048304 3. 当收到消息后,会收到 > receive > > <>中包含着消息体 image-20210909163107489 ## UDP协议配置指令 > {"type":"udp","ip":"255.255.255.255","l_port":"12346","r_port":"12345","msg":"caisiyu"} | 键名 | 键值 | 说明 | | ------ | ------------------- | ------------ | | type | udp | 协议名称 | | ip | 255.255.255.255 | ip地址 | | l_port | 12346 | 设置本地端口 | | r_port | 12345 | 设置远程端口 | | msg | {\"msg\":\"hello\"} | 数据包内容 | 1. 指令发送完成后,模组返回 > Ok image-20210909161136958 ## 查询设备状态 > {"query":""} | 键名 | 键值 | 说明 | | ----- | ---- | ---- | | query | "" | 空 | > \#define NO_Connect_Wifi 0 没有连接wifi -status<0> > > \#define Connected_Wifi 1 连接wifi -status<1> > > \#define NO_Connect_Server 2 未连接服务器 -status<2> > > \#define Connected_Server 3 连接到服务器 -status<3> 1. 如果模组已经连接服务器,指令发送完成后,模组返回 > status<3> image-20210909163416065 ## 设置密钥 > {"key":"qisc8rr0dz"} | 键名 | 键值 | 说明 | | ---- | ---------- | ---- | | key | qisc8rr0dz | 密钥 | 1. 如果密钥正确,指令发送完成后,模组返回 > Ok image-20210909163909228 2. 如果秘钥不正确,模组会返回: > error-secret image-20210909165552876