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

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

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

STM32 + ESP8266 + MQTT協(xié)議連接OneNet

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-02-28 13:22 ? 次閱讀

一、環(huán)境介紹

單片機(jī)采用:STM32F103C8T6

上網(wǎng)方式:采用ESP8266,也可以使用其他設(shè)備代替,只要支持TCP協(xié)議即可。比如:GSM模塊、有線網(wǎng)卡等。

開發(fā)軟件:keil5

硬件連接功能:ESP8266接在STM32的串口3上。通過AT指令與ESP8266進(jìn)行通信。

注意:本篇文章沒有貼ESP8266的底層編程代碼,如果不會(huì)ESP8266底層編程,請(qǐng)看這里:

https://blog.csdn.net/xiaolong1126626497/article/details/107379554

如果需要了解ESP8266+MQTT協(xié)議連接阿里云物聯(lián)網(wǎng)服務(wù)器請(qǐng)看這里:https://blog.csdn.net/xiaolong1126626497/article/details/107311897

二、功能介紹

2.1 功能說明

通過OneNet物聯(lián)網(wǎng)服務(wù)器實(shí)現(xiàn)設(shè)備數(shù)據(jù)遠(yuǎn)程上傳、下發(fā),實(shí)現(xiàn)數(shù)據(jù)交互(不清楚OneNet物聯(lián)網(wǎng)服務(wù)器功能的可以百度一下進(jìn)入官網(wǎng)看簡介)。之前的OneNet服務(wù)器不支持標(biāo)準(zhǔn)MQTT協(xié)議登錄的,現(xiàn)在官網(wǎng)更新之后支持標(biāo)準(zhǔn)的MQTT協(xié)議,本篇文章介紹使用STM32+ESP8266使用標(biāo)準(zhǔn)MQTT協(xié)議登錄Onenet服務(wù)器,實(shí)現(xiàn)數(shù)據(jù)交互。實(shí)現(xiàn)步驟OneNet官方提供了很詳細(xì)的文檔,可以參考一下。

文檔地址:OneNET-中國移動(dòng)物聯(lián)網(wǎng)開放平臺(tái)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

2.2 硬件資源

在當(dāng)前使用的開發(fā)板上有4盞LED燈、一個(gè)蜂鳴器、4個(gè)按鍵,ESP8266型號(hào)是ESP-12F,STM32型號(hào)是:STM32F103C8T6。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

三、OneNet支持的MQTT協(xié)議版本

目前OneNet服務(wù)器支持MQTT 3.1.1版本,MQTT協(xié)議官網(wǎng):MQTT - The Standard for IoT Messaging

報(bào)文支持情況: 支持connect、subscribe、publish、ping、unsubscribe、disconnect等報(bào)文,不支持pubrec、pubrel、pubcomp報(bào)文。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

四、登錄OneNet服務(wù)器創(chuàng)建物聯(lián)網(wǎng)產(chǎn)品

沒有注冊賬號(hào)的,需要提前登錄官網(wǎng)注冊賬號(hào),再進(jìn)入下面步驟:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

這里根據(jù)自己產(chǎn)品情況填寫。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

產(chǎn)品創(chuàng)建成功之后,點(diǎn)擊產(chǎn)品名稱,跳轉(zhuǎn)頁面,繼續(xù)添加設(shè)備。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

下面選擇儀表盤的數(shù)據(jù)來源,根據(jù)自己創(chuàng)建的數(shù)據(jù)點(diǎn)選擇。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

創(chuàng)建一個(gè)文本控件,顯示數(shù)據(jù)點(diǎn)更新的時(shí)間,方便調(diào)試。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

OneNte手機(jī)版本的APP,登錄之后也可以看到該頁面。

下載地址:https://open.iot.10086.cn/doc/book/device-develop/multpro/sdk-doc-tool/APP.html

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

下面是手機(jī)上登錄APP看到的界面效果:

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

五、OneNet服務(wù)器MQTT登錄地址與訂閱主題相關(guān)格式介紹

官網(wǎng)介紹文檔地址:設(shè)備連接_開發(fā)者文檔_OneNET

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

5.1 MQTT服務(wù)器登錄地址

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

目前MQTT協(xié)議支持兩個(gè)IP地址和端口號(hào),一個(gè)需要加密、一個(gè)不需要加密。

注意:單片機(jī)上移植加密算法很麻煩,這里采用不需要加密的端口。(IP地址: 183.230.40.96 端口: 1883)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

5.2 MQTT登錄的:設(shè)備ID、用戶名稱、密碼 格式參數(shù)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

上面圖片里說明了,OneNet的設(shè)備參數(shù)與標(biāo)準(zhǔn)MQTT協(xié)議的登錄參數(shù)對(duì)應(yīng)關(guān)系。 OneNet的設(shè)備參數(shù),在設(shè)備頁面可以去查看。

登錄密碼生成看下面步驟:

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

?

注意:該工具在win10系統(tǒng)運(yùn)行可能會(huì)提示非信任程序,點(diǎn)擊任要運(yùn)行即可。

下面是生成MQTT登錄密匙的工具使用示例。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

注意:工具中填的參數(shù)說明請(qǐng)看文檔介紹。

res選項(xiàng)參數(shù)的格式:products/{產(chǎn)品ID}/devices/{設(shè)備名稱}

et是設(shè)置token過期時(shí)間:算出1970-1-1到你想要設(shè)置的到期時(shí)間,單位是秒,填入即可。

比如: 超時(shí)時(shí)間設(shè)置為2020-07-20 ,那么,這里填入的秒就是:1970-1-1到2020-07-20之間的秒單位時(shí)間。

Linux下代碼:

#include 
#include 
 #include 

int main()
{
    time_t time_sec;
    time_sec=time(NULL);  //當(dāng)前的秒單位時(shí)間--UTC時(shí)間
	printf("當(dāng)前時(shí)間(秒):%ldn",time_sec);
	printf("加30天的時(shí)間(秒):%ldn",time_sec+30*24*60*60);
	return 0;
}
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

key的參數(shù)格式: 就是設(shè)備創(chuàng)建之后,在設(shè)備詳情頁的key

工具生成的結(jié)果值,直接當(dāng)做MQTT登錄的密碼。

5.3 主題訂閱格式

文檔地址:協(xié)議規(guī)范_開發(fā)者文檔_OneNET

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

5.4 設(shè)備保活時(shí)間

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

?

5.5 向服務(wù)器傳數(shù)據(jù)點(diǎn)

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

六、核心代碼

6.1 matt.c代碼

#include "mqtt.h"

u8 *mqtt_rxbuf;
u8 *mqtt_txbuf;
u16 mqtt_rxlen;
u16 mqtt_txlen;
u8 _mqtt_txbuf[256];//發(fā)送數(shù)據(jù)緩存區(qū)
u8 _mqtt_rxbuf[256];//接收數(shù)據(jù)緩存區(qū)

typedef enum
{
	//名字 	    值 			報(bào)文流動(dòng)方向 	描述
	M_RESERVED1	=0	,	//	禁止	保留
	M_CONNECT		,	//	客戶端到服務(wù)端	客戶端請(qǐng)求連接服務(wù)端
	M_CONNACK		,	//	服務(wù)端到客戶端	連接報(bào)文確認(rèn)
	M_PUBLISH		,	//	兩個(gè)方向都允許	發(fā)布消息
	M_PUBACK		,	//	兩個(gè)方向都允許	QoS 1消息發(fā)布收到確認(rèn)
	M_PUBREC		,	//	兩個(gè)方向都允許	發(fā)布收到(保證交付第一步)
	M_PUBREL		,	//	兩個(gè)方向都允許	發(fā)布釋放(保證交付第二步)
	M_PUBCOMP		,	//	兩個(gè)方向都允許	QoS 2消息發(fā)布完成(保證交互第三步)
	M_SUBSCRIBE		,	//	客戶端到服務(wù)端	客戶端訂閱請(qǐng)求
	M_SUBACK		,	//	服務(wù)端到客戶端	訂閱請(qǐng)求報(bào)文確認(rèn)
	M_UNSUBSCRIBE	,	//	客戶端到服務(wù)端	客戶端取消訂閱請(qǐng)求
	M_UNSUBACK		,	//	服務(wù)端到客戶端	取消訂閱報(bào)文確認(rèn)
	M_PINGREQ		,	//	客戶端到服務(wù)端	心跳請(qǐng)求
	M_PINGRESP		,	//	服務(wù)端到客戶端	心跳響應(yīng)
	M_DISCONNECT	,	//	客戶端到服務(wù)端	客戶端斷開連接
	M_RESERVED2		,	//	禁止	保留
}_typdef_mqtt_message;

//連接成功服務(wù)器回應(yīng) 20 02 00 00
//客戶端主動(dòng)斷開連接 e0 00
const u8 parket_connetAck[] = {0x20,0x02,0x00,0x00};
const u8 parket_disconnet[] = {0xe0,0x00};
const u8 parket_heart[] = {0xc0,0x00};
const u8 parket_heart_reply[] = {0xc0,0x00};
const u8 parket_subAck[] = {0x90,0x03};

void MQTT_Init(void)
{
    //緩沖區(qū)賦值
	mqtt_rxbuf = _mqtt_rxbuf;
    mqtt_rxlen = sizeof(_mqtt_rxbuf);
	mqtt_txbuf = _mqtt_txbuf;
    mqtt_txlen = sizeof(_mqtt_txbuf);
	memset(mqtt_rxbuf,0,mqtt_rxlen);
	memset(mqtt_txbuf,0,mqtt_txlen);
	
	//無條件先主動(dòng)斷開
	MQTT_Disconnect();
    delay_ms(100);
	MQTT_Disconnect();
    delay_ms(100);
}

/*
函數(shù)功能: 登錄服務(wù)器
函數(shù)返回值: 0表示成功 1表示失敗
*/
u8 MQTT_Connect(char *ClientID,char *Username,char *Password)
{
    u8 i,j;
    int ClientIDLen = strlen(ClientID);
    int UsernameLen = strlen(Username);
    int PasswordLen = strlen(Password);
    int DataLen;
	mqtt_txlen=0;
	//可變報(bào)頭+Payload  每個(gè)字段包含兩個(gè)字節(jié)的長度標(biāo)識(shí)
    DataLen = 10 + (ClientIDLen+2) + (UsernameLen+2) + (PasswordLen+2);
	
	//固定報(bào)頭
	//控制報(bào)文類型
    mqtt_txbuf[mqtt_txlen++] = 0x10;		//MQTT Message Type CONNECT
	//剩余長度(不包括固定頭部)
	do
	{
		u8 encodedByte = DataLen % 128;
		DataLen = DataLen / 128;
		// if there are more data to encode, set the top bit of this byte
		if ( DataLen > 0 )
			encodedByte = encodedByte | 128;
		mqtt_txbuf[mqtt_txlen++] = encodedByte;
	}while ( DataLen > 0 );
    	
	//可變報(bào)頭
	//協(xié)議名
    mqtt_txbuf[mqtt_txlen++] = 0;        	// Protocol Name Length MSB    
    mqtt_txbuf[mqtt_txlen++] = 4;           // Protocol Name Length LSB    
    mqtt_txbuf[mqtt_txlen++] = 'M';        	// ASCII Code for M    
    mqtt_txbuf[mqtt_txlen++] = 'Q';        	// ASCII Code for Q    
    mqtt_txbuf[mqtt_txlen++] = 'T';        	// ASCII Code for T    
    mqtt_txbuf[mqtt_txlen++] = 'T';        	// ASCII Code for T    
	//協(xié)議級(jí)別
    mqtt_txbuf[mqtt_txlen++] = 4;        		// MQTT Protocol version = 4   對(duì)于 3.1.1 版協(xié)議,協(xié)議級(jí)別字段的值是 4(0x04)   
	//連接標(biāo)志
    mqtt_txbuf[mqtt_txlen++] = 0xc2;        	// conn flags 
    mqtt_txbuf[mqtt_txlen++] = 0;        		// Keep-alive Time Length MSB    
    mqtt_txbuf[mqtt_txlen++] = 100;        	// Keep-alive Time Length LSB  100S心跳包    保活時(shí)間
	
    mqtt_txbuf[mqtt_txlen++] = BYTE1(ClientIDLen);// Client ID length MSB    
    mqtt_txbuf[mqtt_txlen++] = BYTE0(ClientIDLen);// Client ID length LSB  	
	memcpy(&mqtt_txbuf[mqtt_txlen],ClientID,ClientIDLen);
    mqtt_txlen += ClientIDLen;
    
    if(UsernameLen > 0)
    {   
        mqtt_txbuf[mqtt_txlen++] = BYTE1(UsernameLen);		//username length MSB    
        mqtt_txbuf[mqtt_txlen++] = BYTE0(UsernameLen);    	//username length LSB    
		memcpy(&mqtt_txbuf[mqtt_txlen],Username,UsernameLen);
        mqtt_txlen += UsernameLen;
    }
    
    if(PasswordLen > 0)
    {    
        mqtt_txbuf[mqtt_txlen++] = BYTE1(PasswordLen);		//password length MSB    
        mqtt_txbuf[mqtt_txlen++] = BYTE0(PasswordLen);    	//password length LSB  
		memcpy(&mqtt_txbuf[mqtt_txlen],Password,PasswordLen);
        mqtt_txlen += PasswordLen; 
    }    
	
  
    memset(mqtt_rxbuf,0,mqtt_rxlen);
    MQTT_SendBuf(mqtt_txbuf,mqtt_txlen);
    for(j=0;j<10;j++)
    {
        delay_ms(50);
        if(USART3_RX_FLAG)
        {
            memcpy((char *)mqtt_rxbuf,USART3_RX_BUFFER,USART3_RX_CNT);
            
            //memcpy
           
             for(i=0;i;i++)usart1_printf("%#x>
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

6.2 mqtt.h代碼

#ifndef __FY_MQTT_H_
#define __FY_MQTT_H_

#include "stm32f10x.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "stdarg.h"
#include "delay.h"
#include "usart.h"

#define BYTE0(dwTemp)       (*( char *)(&dwTemp))
#define BYTE1(dwTemp)       (*((char *)(&dwTemp) + 1))
#define BYTE2(dwTemp)       (*((char *)(&dwTemp) + 2))
#define BYTE3(dwTemp)       (*((char *)(&dwTemp) + 3))
    
//用戶名初始化
void OneNet_LoginInit(char *ProductKey,char *DeviceName,char *DeviceSecret);
//MQTT協(xié)議相關(guān)函數(shù)聲明
u8 MQTT_PublishData(char *topic, char *message, u8 qos);
u8 MQTT_SubscribeTopic(char *topic,u8 qos,u8 whether);
void MQTT_Init(void);
u8 MQTT_Connect(char *ClientID,char *Username,char *Password);
void MQTT_SentHeart(void);
void MQTT_Disconnect(void);
void MQTT_SendBuf(u8 *buf,u16 len);
#endif
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

6.3 main.c 主函數(shù)代碼

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include 
#include "timer.h"
#include "esp8266.h"
#include "mqtt.h"

/*
序號(hào)	符號(hào)	編碼
1	+	%2B
2	空格%20
3	/	%2F
4	?	%3F
5	%	%25
6	#	%23
7	&	%26
8	=	%3D
*/

//OneNet物聯(lián)網(wǎng)服務(wù)器的設(shè)備信息
#define MQTT_ClientID "mq2"
#define MQTT_UserName "361594"

#define MQTT_PassWord "version=2018-10-31&res=products%2F361594%2Fdevices%2Fmq2&et=1597492895&method=sha1&sign=uqvA0KkjXw0FlN01aT6fWrGBLGw%3D"

//訂閱與發(fā)布的主題
//格式:$sys/{產(chǎn)品ID}/{設(shè)備名稱}/#
#define SET_TOPIC  "$sys/361594/mq2/#"  //訂閱設(shè)備所有信息

//格式: $sys/{產(chǎn)品ID}/{設(shè)備名稱}/dp/post/json
#define POST_TOPIC "$sys/361594/mq2/dp/post/json"  //發(fā)布

char mqtt_message[200];//上報(bào)數(shù)據(jù)緩存區(qū)

int main()
{
   u32 time_cnt=0;
   u32 i;
   u8 key;
   LED_Init();
   BEEP_Init();
   KEY_Init();
   USART1_Init(115200);
   TIMER1_Init(72,20000); //超時(shí)時(shí)間20ms
   USART3_Init(115200);//串口-WIFI
   TIMER3_Init(72,20000); //超時(shí)時(shí)間20ms
   USART1_Printf("正在初始化WIFI請(qǐng)稍等.n");
   if(ESP8266_Init())
   {
      USART1_Printf("ESP8266硬件檢測錯(cuò)誤.n");  
   }
   else
   {
      //加密端口
      //USART1_Printf("WIFI:%dn",ESP8266_STA_TCP_Client_Mode("OnePlus5T","1126626497","183.230.40.16",8883,1));
      
      //非加密端口
      USART1_Printf("WIFI:%dn",ESP8266_STA_TCP_Client_Mode("OnePlus5T","1126626497","183.230.40.96",1883,1));
  
   }
   
    //2. MQTT協(xié)議初始化	
    MQTT_Init(); 
    //3. 連接OneNet服務(wù)器        
    while(MQTT_Connect(MQTT_ClientID,MQTT_UserName,MQTT_PassWord))
    {
        USART1_Printf("OneNet服務(wù)器連接失敗,正在重試...n");
        delay_ms(500);
    }
    USART1_Printf("OneNet服務(wù)器連接成功.n");
    
    //3. 訂閱主題
    if(MQTT_SubscribeTopic(SET_TOPIC,0,1))
    {
        USART1_Printf("主題訂閱失敗.n");
    }
    else
    {
        USART1_Printf("主題訂閱成功.n");
    }        
    
    while(1)
    {    
        key=KEY_Scan(0);
        if(key==2)
        {
            time_cnt=0;
            sprintf(mqtt_message,"{"id":1,"dp":{"mq2":[{"v":50}]}}");
            MQTT_PublishData(POST_TOPIC,mqtt_message,0);
            USART1_Printf("發(fā)送狀態(tài)1rn");
        }
        else if(key==3)
        {
            time_cnt=0;
            sprintf(mqtt_message,"{"id":1,"dp":{"mq2":[{"v":80}]}}");
            MQTT_PublishData(POST_TOPIC,mqtt_message,0);
            USART1_Printf("發(fā)送狀態(tài)0rn");
        }  

        if(USART3_RX_FLAG)
        {
            USART3_RX_BUFFER[USART3_RX_CNT]='?';
            for(i=0;i;i++)>
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

七、設(shè)備登錄運(yùn)行效果

登錄成功之后,網(wǎng)頁會(huì)顯示在線狀態(tài)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

按下開發(fā)按鍵上傳煙霧數(shù)據(jù)到服務(wù)器效果:

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

工程完整源碼下載:https://download.csdn.net/download/xiaolong1126626497/15803518

審核編輯:符乾江

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

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355980
  • OneNET
    +關(guān)注

    關(guān)注

    1

    文章

    51

    瀏覽量

    12803
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    esp8266連接阿里云平臺(tái)時(shí)mqtt連接超時(shí)

    esp8266nodemcu在使用arduino.ide連接阿里云平臺(tái)的時(shí)候,wifi配置正常但連接不上mqtt,顯示報(bào)錯(cuò)如下: Attempting
    發(fā)表于 10-26 21:39

    ESP8266 太空人動(dòng)畫的 OLED 顯示

    ESP8266 太空人動(dòng)畫的 OLED 顯示
    的頭像 發(fā)表于 10-08 15:06 ?278次閱讀
    <b class='flag-5'>ESP8266</b> 太空人動(dòng)畫的 OLED 顯示

    ESP8266 通過 MQTT 協(xié)議實(shí)現(xiàn) LED 的遠(yuǎn)程控制

    本文簡要介紹了搭建 EMQX 服務(wù)器實(shí)現(xiàn)基于 MQTT 協(xié)議遠(yuǎn)程控制 NodeMCU ESP8266 板載 LED 的解決方案。
    的頭像 發(fā)表于 09-25 09:11 ?2006次閱讀
    <b class='flag-5'>ESP8266</b> 通過 <b class='flag-5'>MQTT</b> <b class='flag-5'>協(xié)議</b>實(shí)現(xiàn) LED 的遠(yuǎn)程控制

    STM32 ESP8266阿里云鏈接源碼

    stm32F103C8T6 ESP8266 物聯(lián)網(wǎng)電表 登錄阿里云
    發(fā)表于 08-29 14:21 ?6次下載

    esp32和esp8266代碼共用嗎

    本文將介紹ESP32和ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的智能設(shè)備開始進(jìn)入我們的生活。其中,ESP32和ESP82
    的頭像 發(fā)表于 08-19 18:23 ?1152次閱讀

    esp8266esp32區(qū)別是什么

    以下是關(guān)于ESP8266ESP32的主要區(qū)別: 處理器和架構(gòu) : ESP8266 :使用一個(gè)Tensilica L106 80MHz的處理器,屬于Xtensa架構(gòu)。 ESP32 :使
    的頭像 發(fā)表于 08-19 18:16 ?5400次閱讀

    esp8266不燒錄可以使用嗎

    ,可以方便地與其他硬件設(shè)備進(jìn)行連接。 2. ESP8266的硬件特性 處理器 :Tensilica L106,最高頻率160MHz 內(nèi)存 :64KB SRAM,1MB Flash Wi-Fi :支持802.11 b/g/n協(xié)議,
    的頭像 發(fā)表于 08-19 17:28 ?806次閱讀

    esp8266wifi模塊怎么連接手機(jī)

    ESP8266 WiFi模塊連接手機(jī)主要可以通過兩種方式實(shí)現(xiàn): 通過路由器連接(STA模式)和直接作為熱點(diǎn)連接(AP模式) 。以下是兩種連接
    的頭像 發(fā)表于 08-19 17:27 ?2812次閱讀

    ESP8266作Client建立TCP連接出現(xiàn)報(bào)錯(cuò)?

    請(qǐng)教下,ESP8266作Client建立TCP連接,出現(xiàn)錯(cuò)誤 是按照《4B-ESP8266__AT Command Examples__CN_v1.3》文檔上操作的 AT+CIPSTART
    發(fā)表于 07-17 07:16

    是否可以通過WPS連接ESP8266 AP?

    是否可以通過 WPS 連接ESP8266 AP(而不是通過 ESP8266 連接到具有 WPS 的路由器)? 我只找到了一種解決方案,可以將ES
    發(fā)表于 07-10 06:09

    esp8266無法收到usb-ttl發(fā)過來的串口數(shù)據(jù)如何解決?

    usb-ttl和esp8266都通過usb連接到同一電腦的usb口。用sscom測試 兩邊的波特率115200 AT固件:安信可的出廠固件,mqtt固件都試過了.測試AT指令正常。 實(shí)驗(yàn)?zāi)康模候?yàn)證
    發(fā)表于 07-09 06:43

    求助,請(qǐng)問如何在RTOS SDK 1.5的PlatformIO IDE ESP8266實(shí)現(xiàn)MQTT?

    ESP8266設(shè)備連接mqtt 代理。但 PlatformIO IDE 內(nèi)置的 RTOS SDK 1.5 版本不支持 mqtt。此 SDK 沒有
    發(fā)表于 07-08 06:22

    國產(chǎn)低成本W(wǎng)i-Fi SoC解決方案芯片ESP8266ESP8285對(duì)比差異

    ESP8266ESP8285對(duì)比差異 ESP8285相當(dāng)于在ESP8266基礎(chǔ)上多加了1/2MB Flash, ESP8285與
    的頭像 發(fā)表于 05-17 11:44 ?1338次閱讀
    國產(chǎn)低成本W(wǎng)i-Fi SoC解決方案芯片<b class='flag-5'>ESP8266</b>與<b class='flag-5'>ESP</b>8285對(duì)比差異

    使用Wi-Fi ESP8266方案模組接入云平臺(tái)

    ESP8266的模塊芯片是基于無線通信協(xié)議的UARTWi-Fi透傳模塊芯片,支持802.11b/g/n的無線標(biāo)準(zhǔn),并帶有三種可選擇的工作模式。ESP8266模塊的控制是通過AT指令的形式控制,例如
    的頭像 發(fā)表于 05-10 08:20 ?1853次閱讀
    使用Wi-Fi <b class='flag-5'>ESP8266</b>方案模組接入云平臺(tái)

    STM32、ESP8266MQTT連接阿里云物聯(lián)網(wǎng)的串口通信異常解析

    STM32ESP8266MQTT協(xié)議連接阿里云物聯(lián)網(wǎng)平臺(tái)時(shí)常見的串口通信異常介紹 在構(gòu)建物聯(lián)網(wǎng)應(yīng)用時(shí),
    的頭像 發(fā)表于 04-19 17:19 ?1453次閱讀