ESP8266實現WIFI局域網連接手機APP監控


主要功能

  1. STM32采集溫濕度信息.
  2. 人體紅外感應模塊, 檢測到有人活動, LED3亮.
  3. 手機APP通過WIFI連接, 可查看溫濕度信息, 可控制LED1, LED2, 蜂鳴器.
  4. STM32與電腦上位機串口連接, 可查看調試信息.
  5. 手機APP可發送信息給電腦上位機.

物料清單

  1. 野火STM32F103指南者開發板(自帶ESP8266的WIFI模塊)
  2. DHT11溫濕度傳感器
  3. HC-SR501人體紅外感應傳感器
  4. 網絡調試助手(秉火物聯)

功能框圖

功能框圖


代碼分析

(源碼及相關文件隨后放在文末, 可根據源碼結合過程解讀理解)

基本上是以野火的ESP8266模塊的源碼為基礎, 在其上添加了串口調試信息顯示, 去掉了手機APP控制LED3的功能, 改為人體紅外感應模塊檢測控制LED3.

ESP8266與STM32通信過程解讀:
就是手機APP發送"一些命令"給ESP8266
ESP8266就發給STM32
sSTM32中斷接收"這些命令"放到strEsp8266_Fram_Record結構體里
接收完畢進入程序 失能中斷 看"這些命令"包含了什么
如果有開燈, 則開燈, 然后把結果放到cStr中
如果有開蜂鳴器, 則開蜂鳴器, 然后把結果放到cStr中
如果有接收數據, 則接收數據, 然后把結果放到cStr中
如果要發回APP, 則把cStr發回給APP
APP根據結果, 更改(溫濕度)信息

使用手機APP后總結:
所以可以自定義APP發送數據通過ESP8266到stm32上
但是不能顯示stm32通過ESP8266發回給APP的數據
因為這涉及到APP的源碼


過程中所遇到的問題

  1. 在用野火的AT指令測試調試的代碼時, ESP8266上電串口調試助手出現亂碼
      亂碼的部分是ESP8266發送給STM32的部分顯示亂碼, STM32發送給串口調試助手的部分顯示正常, 個人認為應該是波特率的問題, 隨后將STM32與ESP8266通信的波特率從115200改為74880, 顯示正常了.

  2. 上電后顯示正常, 但是發送AT指令后, ESP8266回復信息顯示亂碼
      個人認為還是波特率的問題, 又將波特率從74880改回115200, 雖然上電后顯示亂碼, 但是AT指令回復顯示正常了.

  3. 部分指令回復ERROR
      這個問題可能有2種情況, 第一種情況是可能指令格式不對, 不符合當前的模式. 比如如果你之前設置了多連接模式(CIPMUX=1), 接着發送數據沒有帶網絡連接ID號(AT+CIPSEND=<length>), 這時會返回ERROR; 第二種情況是查詢波特率(AT+UART_CUR?)之類的命令返回ERROR, 對於這種情況我暫時沒找到原因, 在此先挖一個坑, 有機會以后回來填一下, 當然如果有知道原因的朋友們可以說一下, 萬分感謝!

  4. ESP8266成功連上手機熱點, 但是不能識別到指定IP地址通信
      這種情況下, 我更改了網絡調試助手的IP地址, 改成了和ESP8266相同的網關, 這樣應該在同一局域網中, 結果成功了.


GitHub Gitee


SHOUT OUT TO
ESP2866常見問題,問題集錦,總有您想要的!
ESP8266作為客戶端通過路由器連接服務器的簡單實現
WiFi模塊調試問題:AT+CIPSTART="TCP","192.168.43.212",8080 ERROR CLOSED


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM