昨天,去參觀了AWE(中國(guó)家電及消費(fèi)電子博覽會(huì)),智能家居,智能插座、智能LED燈、智能攝像頭、智能櫥柜等等,大開(kāi)眼界,原來(lái)這些別的公司的產(chǎn)品都正式投產(chǎn)了。還順便打聽(tīng)了幾家提供云服務(wù)的公司,他們一聽(tīng)MQTT就說(shuō)支持MQTT的協(xié)議,2家開(kāi)發(fā)通信模組的公司甚至直接可以提供支持MQTT的固件??磥?lái)我要加快了。
##開(kāi)發(fā)環(huán)境:
stm32f103 + esp6288(固件中支持自動(dòng)連接服務(wù)器) 裸機(jī)開(kāi)發(fā)
##步驟
* 首先在 https://github.com/eclipse/paho.mqtt.embedded-c 下載源碼
MQTTPacket 文件全部添加到keil工程當(dāng)中,參考samples提供的例子,刪除不需要的頭文件。
MQTTPacket/samples/transport.c和transport.h也要添加到工程中去,這是我們要改寫(xiě)的接口。
* 因?yàn)镸QTT使用JSON打包封裝的數(shù)據(jù)處理會(huì)很簡(jiǎn)單,因此還要下載一個(gè)基于c 的文件用于格式轉(zhuǎn)換。
https://github.com/DaveGamble/cJSON 拷貝cJSON.c和cJSON.h到工程中。
* 改寫(xiě)串口中斷接收函數(shù),其中socket連接服務(wù)器是在串口轉(zhuǎn)wifi模塊中設(shè)置好服務(wù)器的ip和port,這樣移植到gprs模塊時(shí)會(huì)很方便。在每次串口中斷中清定時(shí)器的計(jì)數(shù)值,同時(shí)接收長(zhǎng)度變量加1,并約定在50ms內(nèi)收不到數(shù)據(jù),認(rèn)為接收完成,完成標(biāo)志位置1。
*transport.c中修改里面的四個(gè)接口:

open/close函數(shù)暫時(shí)用不到,里面初始化相應(yīng)的AT命令。
transport_sendPacketBuffer();發(fā)送消息改成串口發(fā)送姐可以了
transport_getdata();要進(jìn)行改寫(xiě)里面的recv()函數(shù),因?yàn)橐邮胀瓿珊蟛拍芴幚恚驗(yàn)楣俜皆创a構(gòu)架比較嚴(yán)謹(jǐn),而且相當(dāng)有水準(zhǔn)。因此等待接收完成,放在MQTTRead_package();外面去做。
###最后
當(dāng)設(shè)置好這些,就可以訂閱和發(fā)布了。完成相應(yīng)的初始化和參數(shù)設(shè)置后主函數(shù)中while(1)執(zhí)行等待讀消息,timer3定時(shí)器中斷中發(fā)送采集到的傳感器數(shù)值,timer4定時(shí)器中斷中發(fā)送ping報(bào),不然服務(wù)器會(huì)認(rèn)為超時(shí)而斷開(kāi)連接。
詳細(xì)的步驟下篇繼續(xù),目前程序尚未完善暫不獻(xiàn)丑。
######說(shuō)明:在sectong公司期間的周末休息時(shí)間所整理。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。