0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于SIM800C和STM32 MQTT協(xié)議實(shí)現(xiàn)的程序設(shè)計(jì)

電子設(shè)計(jì) ? 作者:工程師飛燕 ? 2018-10-17 08:03 ? 次閱讀

一、本教程中說明的內(nèi)容

先說說本文化的適用范圍吧:

一、使用的芯片STM32F103C8T6,但是并沒有任何與平臺(tái)相關(guān)的代碼,應(yīng)該在所有STM32芯片中都是可以用的。

二、本文使用的是SIM800C模塊,驅(qū)動(dòng)是用C++實(shí)現(xiàn)的,基于ARM mbed平臺(tái)寫的。但是從原理上來講,C和C++差別不大,本文的代碼經(jīng)過修改也可以直接用于其他平臺(tái)的使用。

三、本文數(shù)據(jù)傳輸使用的是“透?jìng)髂J健?,?duì)于所有的透?jìng)髂K,本文都有很大的參考意義。

二、MQTT的使用

首先,推薦一個(gè)MQTT的庫:Paho,這個(gè)庫支持非常多的平臺(tái),當(dāng)然也包括了嵌入式平臺(tái):GitHub – paho.mqtt.embedded-c。將該庫中的MQTTPacket文件夾下載下來,MQTTPacket文件夾下面主要有三個(gè)文件夾,我們使用的文件主要集中在src文件夾和samples文件夾中。

src文件夾中存放著MQTT核心功能的代碼,而samples中存放著三個(gè)例子:pub00sub1、pub0sub1_nc、qos0pub和網(wǎng)絡(luò)驅(qū)動(dòng)(transport.c和transport.h)。

由于三個(gè)驅(qū)動(dòng)都有一個(gè)main函數(shù),所以無法同時(shí)存在,本文中只使用了pub0sub,所以將此文件夾內(nèi)容精減到只有pub0sub1.c、transport.c、transport.h三個(gè)文件。

當(dāng)然,在實(shí)現(xiàn)使用時(shí)可能會(huì)改變目錄結(jié)構(gòu),使目錄結(jié)構(gòu)更加清楚,可以根據(jù)自己的喜好來進(jìn)行更改,并不影響使用。

將transport.h的內(nèi)容精減到以下內(nèi)容:

主要的工作有:

1、為了方便表示,刪除了版權(quán)信息,有實(shí)際使用時(shí)請(qǐng)保留。

2、沒有使用pub0sub1_nc這個(gè)例子,所以將transport_getdatanb方法去除。

3、透?jìng)髂K中使用不到socket,所以將與socket相關(guān)的參數(shù)去掉。

這些方法實(shí)現(xiàn)的主要功能是:

1、transport_open的作用是初始化模塊連網(wǎng)的信息、transport_close作用是關(guān)閉鏈接。

2、transport_sendPacketBuffer用于發(fā)送數(shù)據(jù)、transport_getdata用于接收數(shù)據(jù)。

然后用transport.c來實(shí)現(xiàn)transport.h中聲明的4個(gè)函數(shù)。

三、在ARM mbed中使用MQTT

首先說句題外話,自我感覺mbed是一個(gè)非常不錯(cuò)的平臺(tái),很大程度上提高了代碼的可重用性。但也有一個(gè)問題,就是其支持是以開發(fā)板為單位的,所以并不是對(duì)每一種芯片的支持都很好。

首先介紹一個(gè)例子,HelloMQTT – a mercurial repository | mbed。但這個(gè)例子其中有很多不完善的地方,而且該例子使用的網(wǎng)絡(luò)驅(qū)動(dòng)也不是GPRS模塊。

如果要用不同的連網(wǎng)方式,那么就寫一個(gè)驅(qū)動(dòng),驅(qū)動(dòng)中至少要包含以下兩個(gè)方法:

這兩個(gè)方法會(huì)在MQTTClient中自動(dòng)調(diào)用,timeout表示毫秒。返回值為讀或?qū)懙淖止?jié)數(shù)。

對(duì)此,我寫了驅(qū)動(dòng)程序:MQTTGRPSEthernet.h


MQTTGRPSEthernet.cpp

主程序

lient的yield函數(shù)中用調(diào)用messageArrived函數(shù),之前的示例給出的是100,可能是由于間太短的緣故,總是調(diào)用不了回調(diào)函數(shù),所以我將其改的非常大,便于調(diào)試。實(shí)際使用時(shí)可以使用1000。

四、總結(jié)

其實(shí)paho embeded-c用起來還是挺方便的,但是代碼的重要性不高,所以移植起來往往會(huì)讓人無從下手。但深放研究就會(huì)發(fā)現(xiàn)其實(shí)使用起來是非常簡(jiǎn)單的。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354395
  • GPRS
    +關(guān)注

    關(guān)注

    21

    文章

    983

    瀏覽量

    129309
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    648

    瀏覽量

    22393
  • sim800c
    +關(guān)注

    關(guān)注

    1

    文章

    7

    瀏覽量

    6848
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)教SIM800C+STM32的電路 設(shè)置遠(yuǎn)程鏈接IP在SIM800C 還是在STM32芯片程序里?

    如題。請(qǐng)教SIM800C+STM32的電路 設(shè)置遠(yuǎn)程鏈接IP在SIM800C 還是在STM32芯片程序里?有沒有序列號(hào)+ip地址單獨(dú)設(shè)置的情況 ,芯片
    發(fā)表于 08-25 15:46

    sim800c總是自動(dòng)關(guān)機(jī)

    單片機(jī)控制sim800c上網(wǎng)模塊,插上物聯(lián)卡和GSM天線,激活開機(jī)后,5-8秒之后 sim800c就會(huì)關(guān)機(jī)。測(cè)試了電源的電壓是3.74V,關(guān)機(jī)的時(shí)候串口也沒有返回?cái)?shù)據(jù)。在sim800c開機(jī)的狀態(tài)下
    發(fā)表于 09-26 16:15

    sim800c

    求大神指點(diǎn)sim800c實(shí)現(xiàn)物聯(lián)網(wǎng)通信的使用方法,看了一部分資料,不是很理解
    發(fā)表于 10-20 08:06

    SIM800C的透?jìng)髂J降膯栴}

    什么CIPSEND。 不過這一步我已經(jīng)實(shí)現(xiàn)了。 那服務(wù)器如何給SIM800C發(fā)數(shù)據(jù),也要發(fā)CIPSEND嗎? 我可以把數(shù)據(jù)發(fā)到網(wǎng)絡(luò)調(diào)試助手,可是從網(wǎng)絡(luò)助手往SIM800C發(fā)不知道怎么操作。 點(diǎn)擊發(fā)送按鈕,單片機(jī)收不到數(shù)據(jù)。 高手
    發(fā)表于 10-24 18:14

    sim800c例程不能實(shí)現(xiàn)觸摸效果

    );實(shí)現(xiàn)了撥號(hào)功能,用的是f1戰(zhàn)艦,但是對(duì)于短信的發(fā)送卻沒有辦法實(shí)現(xiàn),sim800c串口測(cè)試一切正常,求解答,多謝。
    發(fā)表于 04-11 22:50

    sim800c例程不能實(shí)現(xiàn)觸摸效果

    );實(shí)現(xiàn)了撥號(hào)功能,用的是f1戰(zhàn)艦,但是對(duì)于短信的發(fā)送卻沒有辦法實(shí)現(xiàn),sim800c串口測(cè)試一切正常,求解答,多謝。
    發(fā)表于 04-23 06:36

    sim800c使用MQTT時(shí)數(shù)據(jù)長(zhǎng)度有什么限制?

    sim800c 使用MQTT時(shí),數(shù)據(jù)長(zhǎng)度的限制問題?問題:最近在使用STM32F1+SIM800C實(shí)現(xiàn)MQTT的時(shí)候,遇到一個(gè)問題。就是在發(fā)
    發(fā)表于 05-22 04:36

    STM8單片機(jī)給SIM800C發(fā)送AT指令,請(qǐng)問SIM800C串口怎么連接?

    通過STM8單片機(jī)給SIM800C發(fā)送AT指令,SIM800C串口怎么連接
    發(fā)表于 10-22 00:16

    SIM800C硬件手冊(cè)

    板載SIM800C,電路圖參考正點(diǎn)原子,出現(xiàn)問題:AT+CGATT=1 總返回err。網(wǎng)絡(luò)指示燈總是顯示無網(wǎng)絡(luò)連接查閱SIM800C硬件手冊(cè),發(fā)現(xiàn)電源引腳如下描述:模塊提供2個(gè)VBAT 電源引腳
    發(fā)表于 10-29 06:37

    sim800c模塊應(yīng)用實(shí)例分析

    ,可以低功耗實(shí)現(xiàn)語音、SMS和數(shù)據(jù)信息的傳輸。SIM800C尺寸為17.6*15.7*2.3mm,能適用于各種緊湊型產(chǎn)品設(shè)計(jì)需求。
    發(fā)表于 11-22 10:18 ?10.3w次閱讀
    <b class='flag-5'>sim800c</b>模塊應(yīng)用實(shí)例分析

    SIM800C實(shí)現(xiàn)溫濕度數(shù)據(jù)上傳平臺(tái)(MQTT協(xié)議

    SIM800C_ONENET_MQTT_接入文檔 一、實(shí)現(xiàn)的功能:用SIM800C模塊實(shí)現(xiàn)DHT11采集的溫濕度數(shù)據(jù)上傳ONENET平臺(tái)(MQTT
    發(fā)表于 12-04 14:56 ?48次下載
    <b class='flag-5'>SIM800C</b><b class='flag-5'>實(shí)現(xiàn)</b>溫濕度數(shù)據(jù)上傳平臺(tái)(<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>)

    STM32 + SIM800C 實(shí)現(xiàn)MQTT協(xié)議資料下載

    電子發(fā)燒友網(wǎng)為你提供STM32 + SIM800C 實(shí)現(xiàn)MQTT協(xié)議資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料
    發(fā)表于 04-19 08:53 ?43次下載
    <b class='flag-5'>STM32</b> + <b class='flag-5'>SIM800C</b> <b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>資料下載

    SIM800C調(diào)試

    板載SIM800C,電路圖參考正點(diǎn)原子,出現(xiàn)問題:AT+CGATT=1 總返回err。網(wǎng)絡(luò)指示燈總是顯示無網(wǎng)絡(luò)連接查閱SIM800C硬件手冊(cè),發(fā)現(xiàn)電源引腳如下描述:模塊提供2個(gè)VBAT 電源引腳
    發(fā)表于 10-22 14:36 ?13次下載
    <b class='flag-5'>SIM800C</b>調(diào)試

    STM32SIM800連接百度物接入MQTT服務(wù)器教程

    前言:??本文介紹如何運(yùn)用STM32F103與SIM800C組成的設(shè)備端連接百度物接入的教程,文章中主要以介紹連接方法為主,代碼部分后續(xù)考慮發(fā)布(一般情況下通過本文的參考即可完成與百度物接入的連接
    發(fā)表于 11-23 17:51 ?40次下載
    <b class='flag-5'>STM32</b>與<b class='flag-5'>SIM800</b>連接百度物接入<b class='flag-5'>MQTT</b>服務(wù)器教程

    SIM800C開發(fā)板用戶手冊(cè)

    SIM800C模塊用戶手冊(cè),用實(shí)驗(yàn)例子交你學(xué)會(huì)使用SIM模塊。
    發(fā)表于 04-07 11:31 ?105次下載