開發(fā)環(huán)境
開發(fā)工具
arduino
1.先安裝好ArduinoIDE(如果已安裝撰豺,直接跳到第二步)
https://www.arduino.cc/en/Main/Software
2.下載社區(qū)打包的esp32安裝包,直接運(yùn)行并解壓即可权烧。
我的百度云---arduino開發(fā)---esp32
如果安裝過其他版本的esp32 sdk,請(qǐng)先刪除肢扯,再使用本安裝包
解壓完成后,再打開Arduino IDE担锤,即可在 菜單欄>工具>開發(fā)板 中找到你使用的esp32開發(fā)板
配置信息
配置.png
功能
藍(lán)牙配網(wǎng)
藍(lán)牙分包接送避免蘋果手機(jī)各種錯(cuò)誤
寫配置存FLASH
wifi連接網(wǎng)絡(luò)
網(wǎng)絡(luò)掉線自動(dòng)重新連接
有網(wǎng)絡(luò)自動(dòng)連接mqtt
mqtt掉線重新連接
mqtt控制所有io口
mqtt控制開關(guān)藍(lán)牙
藍(lán)牙設(shè)置wifi信息mqtt信息
固件到qq群214161428下載
消息功能
- 藍(lán)牙消息
功能
配置wifi
配置mqtt
藍(lán)牙發(fā)送配置信息
//第一包
11111數(shù)據(jù)長(zhǎng)度
//數(shù)據(jù)包
{"device_name":"設(shè)備名QQ547176052","mqtt_id":"","mqtt_Server":"qq547176052.mqtt.iot.gz.baidubce.com","mqtt_Port":1883,"mqtt_User":"qq547176052/u_1552915000950","mqtt_Password":"mqtt密碼","mqtt_topic_device":"u_1552915000950","wifi_ssid":"FAST_C9E0","wifi_password":"ab13417665005ab"}
//最后一包
22222
//必須先發(fā)第一包 再發(fā)數(shù)據(jù)包 最后再發(fā)22222
//每包長(zhǎng)度 設(shè)備沒有限制 但是有些手機(jī)最長(zhǎng)只能發(fā)20個(gè)字節(jié)
//接收消息格式正確判斷 除 mqtt_id mqtt_Port wifi_ssid 外 每個(gè)參數(shù)長(zhǎng)度大于2則判斷為參數(shù)正確
//如果 mqtt_id 為空則自動(dòng)隨機(jī)生成一個(gè)長(zhǎng)度為 10 的 mqtt_id
//wifi_ssid 這個(gè)參數(shù)沒判斷
//收到數(shù)據(jù)后會(huì)存入 esp32_FLASH 連接wifi 連接mqtt 訂閱 mqtt_topic_device 發(fā)送一條消息 "Hello 我是 ESP32"
錯(cuò)誤返回
json數(shù)據(jù)錯(cuò)誤
正確返回
json數(shù)據(jù)正確
- mqtt消息
功能
控制開關(guān)藍(lán)牙
控制全部io口高低電平
刪除ini配置
返回各種消息
//寫io
//收
{"my_topic":"s_1553067131819","ml":"xio","io":[{"pin":2,"v":0}]}
//返回
{'Message':'ok','ml':'xio'}
//讀io狀態(tài)
//收
{"my_topic":"s_1553067131819","ml":"dio","io":[{"pin":2}]}
//返回
{"my_topic":"s_1553067131819","ml":"dio","io":[{"pin":2,"v":0}]}
//關(guān)閉藍(lán)牙
//設(shè)備收
{"my_topic":"s_1553067131819","ml":"qbly","qbly":false}
//設(shè)備回
{'Message':'ok','ml':'qbly',"qbly":false}
//打開藍(lán)牙
//設(shè)備收
{"my_topic":"s_1553067131819","ml":"qbly","qbly":true}
//設(shè)備回
{'Message':'ok','ml':'qbly',"qbly":true}
(還沒測(cè)試)
如果 mqtt_topic_device my_topic 一樣則置空 my_topic
my_topic為空 不回復(fù)
if(strcmp(mqtt_topic_device,(const char*)myArray["my_topic"]) == 0){
Serial.println("設(shè)備topic == my_topic my_topic置空");
myArray["my_topic"] = "";
}
- 刪除ini配置
{"my_topic":"","ml":"delete_ini"}
//刪除配置后esp32重啟