999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于ESP8266與USART HMI的通用WIFI物聯網接入方式

2018-01-07 11:02:02盧光鈺
科學與技術 2018年6期

盧光鈺

摘要:本文在USART HMI串口觸摸屏、正點原子MINI STM32F103RCT6單片機開發板、正點原子WIFI模塊ATK-ESP8266的硬件基礎上,通過C語言malloc函數動態分配內存存儲WIFI賬號密碼的基本方法,解決了8266靈活動態輸入WIFI賬號密碼問題,從而提高了以8266模塊為核心的物聯網客戶端設備的實用性。

關鍵詞: ESP8266;WIFI;malloc;USART HMI

物聯網作為進行信息交換和通信的新型平臺,其基礎技術在于客體(信息、物體、數據等)與互聯網的連接。ESP8266 系列模組是安信可(Ai-thinker)公司采用樂鑫ESP8266芯片開發的一系列WIFI模組模塊,專為移動設備、可穿戴電子產品和物聯應用設計。ESP8266(以下簡稱8266)在TCP client透傳模式,即客戶端模式下,可以通過單片機串口輸入一系列AT指令進行操作,連接WIFI網絡與遠端服務器相互通訊,從而完成數據上傳的功能。基本步驟為:

1.單片機向8266輸入AT+CWMODE=1;(設置8266為STA模式)

2.輸入AT+RST;(8266重啟)

3.輸入AT+CWJAP=”SSID”,”11111111”;(輸入WIFI賬號密碼)

4.輸入AT+CIPSTART=”TCP”,"183.230.40.33",80;(輸入遠端服務器IP與端口號,此處為中移動ONEnet物聯網平臺IP與端口號)

5.輸入AT+CIPMODE=1;(開啟透傳模式)

6.輸入AT+CIPSEND;(開始透傳)

7.輸入網絡報文信息。

在步驟3中,WIFI的賬號密碼要事先在單片機程序中確定,當8266連接到其他WIFI網絡時,需要在源程序中更改賬號密碼,再燒入單片機中,在很大程度上影響了8266設備的通用性與便利性。

本文在USART HMI串口觸摸屏、正點原子MINI STM32F103RCT6單片機開發板、正點原子WIFI模塊ATK-ESP8266的硬件基礎上,通過C語言malloc函數動態分配內存存儲WIFI賬號密碼的基本方法,解決了8266靈活動態輸入WIFI賬號密碼問題,從而提高了以8266模塊為核心的物聯網客戶端設備的實用性,具體方法如下文所示。

1 USART HMI觸摸屏功能設計

USART HMI觸摸屏是一款以STM32F030CRT6為核心的可編程LCD電容式觸摸屏,用戶可以通過USART HMI上位軟件對其進行編程,運用按鈕、進度條、切圖、文本等組件,實現對下位單片機的控制、采樣、顯示等功能,觸摸屏與單片機之間通過RXTX串口進行通信。本文中的USART HMI有兩大基本功能:1,將外置傳感器的參數顯示在主界面上;2,點擊主界面右下角“WIFI”按鈕時,進入WIFI登錄界面,輸入賬號密碼,點擊”OK”,USART HMI將賬號密碼信息通過串口3上傳給單片機并切回到主界面。如圖1、2所示:

USART HMI在上電時,因為電壓不穩定,可能會發送幾幀亂碼,影響單片機識別,所以設置觸摸屏初始化事件為“printh 0d 0a”,即發送兩幀結束符使單片機能夠接收完亂碼,不讓亂碼摻雜在正常數據代碼之中,后期在正常數據碼前端設置標志幀使單片機能夠正確分辨。

主界面的傳感器數據通過文本控件顯示,設置為n0,設置傳感器數據變量名稱為k,則單片機輸入的命令為printf("n0.val=%d\xff\xff\xff",k),三個0xff為結束符,否則USART HMI不能識別。設置右下方圖片控件p0為WIFI圖標,彈起事件為“page 1”,即轉換到WIFI登陸界面。

如圖3所示, WIFI登錄界面由SSID賬號輸入欄、PAS密碼輸入欄、0-9全數字鍵盤、A-Z全字母鍵盤、下劃線、中折線、CAP大小寫切換按鍵、BS刪除鍵、OK發送鍵組成,能夠滿足一般WIFI賬號密碼輸入要求。SSID賬號與PAS密碼使用文本控件,用ASCII碼發送。設置一個切換變量va0,SSID按鈕與PAS按鈕改變va0的值,當全鍵盤上的字母與數字鍵按下時,判斷va0的值,決定按下的文本出現在SSID欄或者PAS欄中。另外設置一個變量va1,通過按鈕CAP鍵改變變量va1的值,設置一個黃色CAP鍵與一個紅色CAP鍵上下疊加,分別對應一個不同的變量va1的值,一個CAP鍵按下時,自身就通過vis命令隱藏,顯露出另一個CAP鍵,以實現CAP鍵切換以及字母大小寫切換,字母按鈕按下時,根據va1的值,來決定輸出字符的大小寫。

OK鍵按下時,完成對賬號密碼信息的發送,按下事件中的代碼為:

printh 4c 47 59/prints t0.txt,0/printh 22 2c 22/prints t1.txt,0/printh 22/printh 0d 0a

page main

例如當SSID為123,PAS為111時,發送的ASCII碼為:

4c 47 59 31 32 33 22 2c 22 31 31 31 22 0d 0a

即為LGY123”,”111”,LGY為標志位,代表此幀數據為正常數據而非亂碼。

2 單片機C程序設計

在stm32單片機中,AT指令是通過數組的形式發送的。在純C語言編程中,在定義數組的時候,必須同時定義數組的大小,因為C語言本身沒有提供動態數組這種數據結構。但是不同用戶的SSID賬號與密碼長度并不一致,如果定義一個比較長的數組AT3[],將USART HMI傳來的信息強行賦值,會在數組尾部產生空位,使AT指令無效。

因此,使用malloc函數解決此問題,malloc函數是一種分配長度為num_bytes字節的內存塊的函數,可以向系統申請分配指定size個字節的內存空間。malloc的全稱是memory allocation,中文叫動態內存分配,當無法知道內存具體位置的時候,想要綁定真正的內存空間,就需要用到動態的分配內存。

具體方法為:1,首先添加頭文件#include "stdlib.h",malloc函數在此頭文件中定義;2,定義指向數組AT3的指針char *AT3;定義整型變量WW,作為數組AT3的動態長度數值,在正點原子的串口例程中,定義串口3接收標志變量USART3_RX_STA為u8型,前5位為串口3接收到的數組長度,長度可以通過length = USART3_RX_STA&0x3f;語句得到,而如前文所示,輸入賬號密碼的AT指令的前10位字段AT+CWJAP=”是固定不變的,然后再扣除3位標志位”LGY”,可知AT3的長度值WW=length+7。

3,通過語句AT3=(char*)malloc(sizeof(int)*WW);即可完成定義動態數組,相當于定義char AT3[WW]。

4,將AT+CWJAP=”依次賦值到AT3[0]到AT3[9],如AT3[0]=0x41;AT3[1]=0x54...直至AT3[9]=0x22; 最后通過雙循環賦值語句:

for(i=10,j=3;i<7+length,j

{

AT3[i]=USART3_RX_BUF[j]; /*對數組進行賦值操作*/

}

完成對AT3[WW]的定義賦值操作。

最后說明整個main函數的基本流程與單片機-ESP8266通訊的基本方法。當單片機向ESP8266發送AT指令時,ESP8266都會產生相應的響應,如發送AT1:AT+CWMODE=1;(設置8266為STA模式)時,8266會返回字符數組“OK”,如果單片機檢測到“OK”,說明8266成功完成了AT1操作,單片機可以繼續發送AT2指令,以此類推。當最后開始透傳指令AT7[]={"AT+CIPSEND\r\n"};響應成功之后,發送網絡報文:

char postT[]={

"POST /devices/39163308/datapoints?type=3 HTTP/1.1 \r\n"

"api-key:E6uOnPTftKQX=KwIfO8BHnL63mg=\r\n"

"Host:api.heclouds.com\r\n"

"Content-Length:50\r\n"

"\r\n"

"{\"001\":50.5,\"002\":50.6,\"003\":506}\r\n"

即可將傳感器數據發送至設備ID為39163308,

api-key為E6uOnPTftKQX=KwIfO8BHnL63mg=的ONENET物聯網平臺應用的數據流001、002、003中,此處數據固定為50.5、50.6和506.傳感器數據需要重新賦值到網絡報文數組相應位中。id與api-key可在onenet平臺自由申請,具體方法不贅述,最后需要注意設備供電應該穩定充足,否則8266不能正常工作。

通過串口助手連接8266的TX端,監控8266返回給單片機的響應信息,如圖4、5所示,可見8266成功識別所有AT指令,并且成功與上位服務器連接,發送網絡報文。

如圖6所示,ONENET物聯網平臺成功接收到了8266傳來的數據信息,實現了遠程監控功能。

使用本文提出的方法,可以方便實現8266的WIFI連接,用戶不需要改寫各戶端設備的源程序,自行在觸摸屏輸入SSID賬號與密碼即可,提高了8266設備的實用性。設備可以方便接入各種傳感器接口,采集溫濕度、甲醛含量、用電量等等,有很強通用性,工程技術人員可以參考使用。

作者簡介:夏云鑫,1994年2月18日,女,漢族,云南曲靖,云南藝術學院環境藝術設計全日制在讀研究生

主站蜘蛛池模板: 欧美另类视频一区二区三区| 又大又硬又爽免费视频| 国产一级毛片网站| 尤物在线观看乱码| 国产尤物在线播放| 白丝美女办公室高潮喷水视频 | 97超碰精品成人国产| 欧美va亚洲va香蕉在线| 久久亚洲美女精品国产精品| 国产亚洲精品在天天在线麻豆 | 99久久精品视香蕉蕉| 亚洲天堂视频在线观看免费| 亚洲精品视频免费| 亚洲精品少妇熟女| 国产网站一区二区三区| 日本AⅤ精品一区二区三区日| 免费一级成人毛片| 亚洲视频四区| 热久久这里是精品6免费观看| 国产乱子伦视频三区| 亚洲中文字幕久久精品无码一区| 亚洲无线视频| h网站在线播放| 2019年国产精品自拍不卡| 欧美午夜理伦三级在线观看| 丰满人妻中出白浆| 国产91丝袜在线播放动漫| 久久国产精品波多野结衣| 日韩小视频在线观看| 日韩成人免费网站| 日韩经典精品无码一区二区| 99久久99视频| 国外欧美一区另类中文字幕| 亚洲国产成人综合精品2020 | 在线永久免费观看的毛片| 欧美日韩国产在线人| 免费福利视频网站| 国产成人8x视频一区二区| 亚洲三级影院| 免费女人18毛片a级毛片视频| 妇女自拍偷自拍亚洲精品| 伊人久久大香线蕉影院| 久久综合色天堂av| 免费一极毛片| 天天综合网亚洲网站| 伊在人亚洲香蕉精品播放| 精品久久国产综合精麻豆| 2021无码专区人妻系列日韩| 午夜日b视频| 国产丝袜91| 欧美天堂久久| 国产一级毛片网站| 国产欧美亚洲精品第3页在线| 国产精品毛片在线直播完整版 | 综合五月天网| 日韩国产综合精选| 18黑白丝水手服自慰喷水网站| 99ri精品视频在线观看播放| 毛片视频网址| 色悠久久久久久久综合网伊人| 情侣午夜国产在线一区无码| 成人日韩欧美| 国产国产人成免费视频77777 | 中国成人在线视频| 99re在线观看视频| 亚洲AV无码乱码在线观看裸奔| 国产1区2区在线观看| 国产精品福利导航| 久热中文字幕在线| 一区二区午夜| 午夜国产理论| 亚洲综合片| 爱色欧美亚洲综合图区| 青草免费在线观看| 亚洲视频在线青青| 亚洲第一黄片大全| 久久久久无码国产精品不卡| 99在线国产| 中文字幕调教一区二区视频| 99视频精品全国免费品| 无码免费的亚洲视频| 亚洲成年网站在线观看|