資料介紹
一、本教程中說明的內容
先說說本文化的適用范圍吧:
一、使用的芯片是STM32F103C8T6,但是并沒有任何與平臺相關的代碼,應該在所有STM32芯片中都是可以用的。
二、本文使用的是SIM800C模塊,驅動是用C 實現的,基于ARM mbed平臺寫的。但是從原理上來講,C和C 差別不大,本文的代碼經過修改也可以直接用于其他平臺的使用。
三、本文數據傳輸使用的是“透傳模式”,對于所有的透傳模塊,本文都有很大的參考意義。
二、MQTT的使用
首先,推薦一個MQTT的庫:Paho,這個庫支持非常多的平臺,當然也包括了嵌入式平臺:GitHub – paho.mqtt.embedded-c。將該庫中的MQTTPacket文件夾下載下來,MQTTPacket文件夾下面主要有三個文件夾,我們使用的文件主要集中在src文件夾和samples文件夾中。
src文件夾中存放著MQTT核心功能的代碼,而samples中存放著三個例子:pub00sub1、pub0sub1_nc、qos0pub和網絡驅動(transport.c和transport.h)。
由于三個驅動都有一個main函數,所以無法同時存在,本文中只使用了pub0sub,所以將此文件夾內容精減到只有pub0sub1.c、transport.c、transport.h三個文件。
當然,在實現使用時可能會改變目錄結構,使目錄結構更加清楚,可以根據自己的喜好來進行更改,并不影響使用。
將transport.h的內容精減到以下內容:
主要的工作有:
1、為了方便表示,刪除了版權信息,有實際使用時請保留。
2、沒有使用pub0sub1_nc這個例子,所以將transport_getdatanb方法去除。
3、透傳模塊中使用不到socket,所以將與socket相關的參數去掉。
這些方法實現的主要功能是:
1、transport_open的作用是初始化模塊連網的信息、transport_close作用是關閉鏈接。
2、transport_sendPacketBuffer用于發送數據、transport_getdata用于接收數據。
然后用transport.c來實現transport.h中聲明的4個函數。
三、在ARM mbed中使用MQTT
首先說句題外話,自我感覺mbed是一個非常不錯的平臺,很大程度上提高了代碼的可重用性。但也有一個問題,就是其支持是以開發板為單位的,所以并不是對每一種芯片的支持都很好。
首先介紹一個例子,HelloMQTT – a mercurial repository | mbed。但這個例子其中有很多不完善的地方,而且該例子使用的網絡驅動也不是GPRS模塊。
如果要用不同的連網方式,那么就寫一個驅動,驅動中至少要包含以下兩個方法:
這兩個方法會在MQTTClient中自動調用,timeout表示毫秒。返回值為讀或寫的字節數。
對此,我寫了驅動程序:
MQTTGRPSEthernet.h
#pragma once
#if !defined(MQTTGPRSETHERNET_H)
#define MQTTGPRSETHERNET_H
#define DEFAULT_GPRS_TIMEOUT 6000000 //6s
#define SERIAL_BUFFER_SIZE 256
#include "mbed.h"
class MQTTGPRSEthernet
{
public:
MQTTGPRSEthernet(PinName tx, PinName rx, int baudrate = 115200);
~MQTTGPRSEthernet();
bool initNet(const char* apn, const char* userName = "", const char* passWord = "", int timeout = DEFAULT_GPRS_TIMEOUT, bool isReconnect = false);
bool connect(char* hostname, int port, int timeout = DEFAULT_GPRS_TIMEOUT);
int read_line(char* buffer, int timeout = DEFAULT_GPRS_TIMEOUT);
int read(unsigned char* buffer, int len, int timeout = DEFAULT_GPRS_TIMEOUT);
int write(unsigned char* buffer, int len, int timeout = DEFAULT_GPRS_TIMEOUT);
bool disconnect();
private:
bool initNet();
Serial eth;
bool command(const char* cmd, const char* ack = "");
bool connected = false;
bool initialized = false;
char* localIP;
const char *_apn;
const char *_passWord;
const char *_userName;
};
#endif
MQTTGRPSEthernet.cpp
主程序
lient的yield函數中用調用messageArrived函數,之前的示例給出的是100,可能是由于間太短的緣故,總是調用不了回調函數,所以我將其改的非常大,便于調試。實際使用時可以使用1000。
四、總結
其實paho embeded-c用起來還是挺方便的,但是代碼的重要性不高,所以移植起來往往會讓人無從下手。但深放研究就會發現其實使用起來是非常簡單的。
轉載自TsonTec:測量解決方案提供者
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- SIM800C開發板資料 7次下載
- STM32 SIM800L繼電器控制板
- SIM800C開發板用戶手冊 105次下載
- STM32與SIM800連接百度物接入MQTT服務器教程
- SIM800C使用STC89C52單片機讀寫短信
- SIM800C調試
- 基于TFTP協議實現STM32的IAP資料下載
- 使用STC單片機和AIR208實現MQTT連接的教程說明
- ATK-SIM800C GSM模塊的17個常見問題資料匯總免費下載 34次下載
- SIM800 MINI板GPRS模塊資料包合集免費下載 75次下載
- SIM800C GPRS模塊的電路原理圖免費下載 69次下載
- SIM800C開發板的電路原理圖免費下載 0次下載
- 手機藍牙和SIM800C中的藍牙通訊軟件免費下載 17次下載
- STM32和MQTT及SIM800使用AT指令實現的詳細資料合集免費下載 155次下載
- SIM800C實現溫濕度數據上傳平臺(MQTT協議) 48次下載
- 【教程】設備通過MQTT協議接入OneNET平臺,建立可視化界面 1024次閱讀
- MQTT和Modbus協議的區別 3110次閱讀
- MQTT通信協議和工具包簡介 1750次閱讀
- paho-mqtt模塊實戰 1365次閱讀
- MQTT協議的概念和主要特性 MQTT協議于物聯網有何好處 2555次閱讀
- 深入淺出地學習MQTT協議 1208次閱讀
- MQTT協議簡介及協議原理 7131次閱讀
- 【產品應用】GLCOM-NET網關一分鐘實現LoRa轉MQTT(高階版) 2260次閱讀
- 小凌派RK2206開發板:實現基于OpenHarmony的本地MQTT協議 4964次閱讀
- HTTP及MQTT比較分析 5880次閱讀
- 如何移植MQTT物聯網通信協議 4470次閱讀
- SIM800C模塊和SIM900A模塊對比 2.5w次閱讀
- MQTT工業級無線路由器的特點 1747次閱讀
- 根據WebSocket協議完全使用C++實現函數 4944次閱讀
- 基于Android智能終端的虛擬SIM卡軟件實現 2.7w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多