一直以來,物聯(lián)網(wǎng)的控制一直都是電子界發(fā)展的一個熱點(diǎn)操漠,但是物聯(lián)網(wǎng)的開發(fā)卻不是一個簡單的工程烹笔,而對于只是熟悉單片機(jī)這樣的硬件開發(fā)者來說確實(shí)一件很難的事情,原因是除了掌握單片機(jī)的開發(fā)外澄耍,還的掌握互聯(lián)網(wǎng)服務(wù)器的開發(fā)噪珊、手機(jī)端等開發(fā)等等晌缘,導(dǎo)致難度一再上升,為此我們在sHMICtrl的基礎(chǔ)上痢站,連接ESP-12S磷箕,完成了這個六路控制器,可由外網(wǎng)服務(wù)器直接透傳內(nèi)網(wǎng)控制sHMIctrl上的六路擴(kuò)展IO的電平阵难,同時屏幕上也可以直接控制這六路IO岳枷;
大家知道,作為一個物聯(lián)網(wǎng)控制設(shè)備呜叫,需要聯(lián)網(wǎng)空繁,而聯(lián)網(wǎng)就需要有UI界面輸入wifi密碼,這個就一下難住了大多數(shù)的單片機(jī)開發(fā)者朱庆,常規(guī)的方案是借助手機(jī)來跨接盛泡,但這樣又需要單片機(jī)開發(fā)人員會手機(jī)開發(fā),這豈不是天方夜譚(如果作為商品開發(fā)娱颊,甚至還需要開發(fā)android和IOS兩個版本)饭于,而使用sHMIctrl的方案,只需要單片機(jī)開發(fā)人員即可完成维蒙;用戶也很簡單掰吕,直接在屏幕上選擇wifi熱點(diǎn)后輸入wifi密碼即可;
硬件連接:
只需要4根線颅痊,就可以把屏幕和ESP-12S連接在一起殖熟,為了方便用戶,我們特意使用了安信可的原始AT指令固件斑响,因此無需再對ESP-12S進(jìn)行編程菱属;
通信有兩種方式,一種是最簡單的同步通信方式舰罚,也就是說發(fā)送數(shù)據(jù)后纽门,系統(tǒng)一直在等待數(shù)據(jù)的到來,這樣通信非常好理解营罢,但是由于CPU一直等待數(shù)據(jù)赏陵,導(dǎo)致效率很低,當(dāng)然對于常規(guī)單片機(jī)來說饲漾,是沒有問題的蝙搔;但是在有界面體系的單片機(jī)上,是肯定不行的考传,因?yàn)檠h(huán)等待數(shù)據(jù)肯定會導(dǎo)致界面無法響應(yīng)吃型;
另外一種通信方式就是異步的,一般帶有界面的系統(tǒng)都會啟用異步方案僚楞,所謂異步方案勤晚,就是指發(fā)送數(shù)據(jù)后程序繼續(xù)執(zhí)行枉层,當(dāng)收到合適的數(shù)據(jù)后,自動啟動預(yù)先設(shè)置好的處理代碼來完成數(shù)據(jù)處理赐写;這種方式效率高返干,但是對于C語言來說實(shí)現(xiàn)不好實(shí)現(xiàn)(JS、lua血淌、python等比較容易實(shí)現(xiàn))矩欠;而對于嵌入式系統(tǒng)來說,一般通用的做法是利用線程把異步代碼改成同步的代碼悠夯,但是需要考慮線程的并發(fā)性癌淮,對于只熟悉單片機(jī)C代碼用戶的開發(fā)者都不是優(yōu)選;
為了更好的利用C語言完成異步加載沦补,我們通過研究乳蓄,提出了“狀態(tài)機(jī)隊(duì)列”這個體系,通過狀態(tài)機(jī)隊(duì)列將異步的通信變成了好理解的偽同步代碼
這樣就很容易的把ESP-12S帶的各種AT指令集給控制下來了
具體詳細(xì)操作請下載源代碼和工程文件查看夕膀;
上電后虚倒,系統(tǒng)會自動檢測是否有ESP-12S模塊,并且檢測是否有已經(jīng)記憶的熱點(diǎn)产舞,第一次使用的時候魂奥,需要點(diǎn)擊“進(jìn)入”來設(shè)置wifi熱點(diǎn)
這兩個界面可以點(diǎn)擊控制IO的變化,同時如果外網(wǎng)頁面有動作易猫,頁面開關(guān)也會自動變化
相關(guān)資料下載:
原理圖與PCB :https://lceda.cn/apachectl/shmictrl-28-wifi
sHMIctrl工程文件:http://shmictrl.com/download/shmictrl-wifictrl.sz
控制頁面的PHP代碼:http://shmictrl.com/download/shmictrl_wifi_php.zip
說明文檔:http://shmictrl.com/shmidoc/
資料下載:https://weidian.com/item.html?itemID=2209655941&spider_token=d72d