STC89c51利用esp8266給微信發消息,超閾值報警,消息提醒等
材料準備
- STC89c51/52 一塊
- ESP8266-01一塊
- 手機一塊
第一 下載STC89c51示例程序(keil 編程開發)
程序下載地址: 點擊下載
程序說明,波特率9600,晶振11.0592
由於ESP8266-01默認波特率是115200,需要先手動調節esp8266-01的波特率。
調整方法:ESP8266-01連接到usb轉ttl
五根線
esp8266---------UsbTTL
tx----------rx
rx----------tx
vcc-------3.3v
gnd--------gnd
en----------3.3v
打開串口調試助手,設置波特率115200,找到esp8266的com口並打開,發送
AT+UART=9600,8,1,0,0
末尾應該加上回車換行,串口會回覆ok
如果不回覆ok,可能固件不支持修改波特率,需要刷官方AT固件,可見我發的另一篇 刷官方固件
串口調試助手下載工具:https://www.lanzous.com/iax97ih 密碼:1234
用keil 打開程序,需要修改WIFI等信息。
#define Ssid "newhtc" //WIFI名稱,,修改爲自己路由器的WIFI名稱,好像不支持中文
#define PassWord "qq123456" //WIFI密碼,修改爲自己路由器的
#define Uid "4d9ec352e0376f2110a0c601a2857225" //巴法雲UID密鑰,控制檯獲取
#define Device "ewew00232" //設備名稱,自己隨意命名,字符串形式
用戶私鑰可以巴法雲控制檯點擊跳轉獲取,微信掃碼登陸後,即可在巴法創客雲控制檯點擊跳轉獲取。
郵箱註冊的用戶,需要在控制檯點擊“綁定微信”,進行綁定,不然沒法推送消息。
登陸完成後,可在控制檯看到自己的私鑰UID,如圖所示:
第二 關鍵程序講解
int dataLen;
uchar postData[150];
char strLen[3];
char Msg[] = "消息"; //消息體,自定義即可,字符串格式
char Msg2[] = "消息2,備註消息"; //附加消息,自定義即可,字符串格式
sprintf(postData,"uid=%s&type=1&time=0&device=%s&msg=%s&msg2=%s\r\n",Uid,Device,Msg,Msg2); //通過&符號整合需要post的數據
dataLen = strlen(postData); //計算數據長度
sprintf(strLen,"%d",dataLen); //int類型轉char
ESP8266_Set("AT+CIPMODE=1"); //開啓透明傳輸模式
ms_delay(1000);
ESP8266_Set("AT+CIPSTART=\"TCP\",\"api.bemfa.com\",80"); // 連接服務器和端口
ms_delay(1000);
ESP8266_Set("AT+CIPSEND"); //進入透傳模式,下面發的都會無條件傳輸
ms_delay(1000);
ESP8266_Set_Only("POST /api/wechat/v1/ HTTP/1.1\r\nHost: ai.bemfa.com\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection:close\r\nContent-Length:");//ţքdeviceۅ ţքsensorۅ
ESP8266_Set(strLen);//數據長度(postData數據長度),一定要準確
ESP8266_Set("");//回車(發完數據長度後,有回車,不懂的百度http post 格式)
ESP8266_Set(postData);//發送數據
ms_delay(2000);
ESP8266_Set("+++"); //
memset(strLen,'\0',3); //重置數組
memset(strLen,'\0',sizeof postData);//重置數組
利用HTTP POST形式,往微信端api進行消息推送,具體接口可參考:巴法雲官方文檔
第三 下載程序到STC89c51即可
下載工具STC-ISP:下載:https://www.lanzous.com/iaxa4fc 密碼:1234
STC89和ESP8266接線問題
c51 ----------8266
P30----------TX
P31----------RX
3.3v-----------3.3v
Gnd---------Gnd
3.3v-----------EN
試了8266直接接5v也工作,不過不建議使用。
第四 效果展示
第五 可能遇到的一些小問題