摘要:添加設備名和鑒權信息。記錄如下數據二引腳連接和接電源接地和連接至配置的串口三代碼編寫串口配置單片機需配置兩個串口,串口打印至串口助手,顯示連接狀態。串口用來發送信息至串口配置代碼如下系列配置和系列配置不同點在于口上拉和推挽配置略有不同。
1.注冊onenet平臺
2.esp8266引腳連接
3.stm32373代碼移植編寫
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。
注冊進入onenet平臺
點擊右上方控制臺
再點擊進入多協議接入,進入產品創建界面。
//鏈接: link.
點擊進入添加產品
創建按心情填寫,但接入協議選MQTT(舊版)!!!
接著在產品下創建設備。
進入產品后,左上方點擊設備列表之后,開始添加設備。
添加設備名和鑒權信息。
記錄如下數據
3v3和EN接電源3.3V
GND接地
RX和TX連接至stm32373配置的串口
單片機需配置兩個串口,串口1打印至串口助手,顯示連接狀態。串口2用來發送信息至esp8266.
串口1配置代碼如下:
373系列配置和103系列配置不同點在于I/O口上拉和推挽配置略有不同。
//USART1_TX GPIOA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用推挽輸出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9 //USART1_RX GPIOA.10初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
串口1打印代碼如下:
void UsartPrintf(USART_TypeDef *USARTx, char *fmt,...) //串口打印,相當于printf{ unsigned char UsartPrintfBuf[296]; va_list ap; unsigned char *pStr = UsartPrintfBuf; va_start(ap, fmt); vsnprintf((char *)UsartPrintfBuf, sizeof(UsartPrintfBuf), fmt, ap); //格式化 va_end(ap); while(*pStr != 0) { USART_SendData(USARTx, *pStr++); while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET); }}
串口2配置代碼如下:
//USART3_TX PD8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PD8 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用推挽輸出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化PD8 //USART3_RX PB9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//浮空輸入 GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB9
串口2發送代碼如下:
_Bool ESP8266_SendCmd(char *cmd, char *res){ unsigned char timeOut = 200; Usart_SendString(USART3, (unsigned char *)cmd, strlen((const char *)cmd)); while(timeOut--) { if(ESP8266_WaitRecive() == REV_OK) //如果收到數據 { if(strstr((const char *)esp8266_buf, res) != NULL) //如果檢索到關鍵詞 { ESP8266_Clear(); //清空緩存 return 0; } } delay_ms(10); } return 1;}
從onenet官方網站上下載物聯網程序,
移植出
esp8266.c
onenet.c
MqttKit.c文件
更改esp8266.c中的串口發送函數
代碼如下:
void ESP8266_Init(void){ ESP8266_Clear(); UsartPrintf(USART1, "0. AT/r/n"); while(ESP8266_SendCmd("AT/r/n", "OK")) delay_ms(500); UsartPrintf(USART1, "1. RST/r/n"); ESP8266_SendCmd("AT+RST/r/n", ""); delay_ms(500); ESP8266_SendCmd("AT+CIPCLOSE/r/n", ""); delay_ms(500); UsartPrintf(USART1, "2. CWMODE/r/n"); while(ESP8266_SendCmd("AT+CWMODE=1/r/n", "OK")) delay_ms(500); UsartPrintf(USART1, "3. AT+CWDHCP/r/n"); while(ESP8266_SendCmd("AT+CWDHCP=1,1/r/n", "OK")) delay_ms(500); UsartPrintf(USART1, "4. CWJAP/r/n"); while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP")) delay_ms(500); UsartPrintf(USART1, "5. CIPSTART/r/n"); while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT")) delay_ms(500); UsartPrintf(USART1, "6. ESP8266 Init OK/r/n");}
更改esp8266.c中的wifi賬號密碼、ip、端口號
代碼如下:
#define ESP8266_WIFI_INFO "AT+CWJAP=/"wifi名/",/"密碼/"/r/n"#define ESP8266_ONENET_INFO "AT+CIPSTART=/"TCP/",/"183.230.40.39/",6002/r/n"
更改onenet.c中的產品ID 、鑒權信息、設備ID
代碼如下:
#define PROID "77247"#define AUTH_INFO "test"#define DEVID "5616839"
代碼如下:
int main(void){ const char *devSubTopic[] = {"/mysmarthome/sub"}; const char devPubTopic[]="/mysmarthome/pub"; unsigned short timeCount = 0; //發送間隔變量 unsigned char *dataPtr = NULL; delay_init(); //延時函數初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級 uart_init(115200); //串口初始化為115200 UsartPrintf(USART1,"/n/rbegin /n/r"); usart3_init(115200); //串口初始化為115200 ESP8266_Init(); while(OneNet_DevLink()) //接入OneNET delay_ms(500); while (1) { if(++timeCount >= 500) //發送間隔5s { UsartPrintf(USART1, "OneNet_Publish/r/n"); OneNet_Publish(devPubTopic, "MQTT Publish Test"); timeCount = 0; ESP8266_Clear(); } dataPtr = ESP8266_GetIPD(3); if(dataPtr != NULL) OneNet_RevPro(dataPtr); delay_ms(10); }}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123009.html
摘要:基于的與通信連接,實現溫濕度數據互傳,控制第一步,在實現將傳感器數據采集之后,并且完成配網步驟,可以正常通過模塊正常將數據發送到云平臺之后進行以下閱讀,上述內容可以跳轉到以下鏈接進行查看具體操作。 ...
摘要:帶中文字庫的是一種具有位位并行線或線串行多種接口方式,內部含有國標一級二級簡體中文字庫的點陣圖形液晶顯示模塊其顯示分辨率為。貼片按鍵模塊支持標準的協議,完整的協議棧。以最低成本提供最大實用性,為功能嵌入其他系統提供無限可能。 項目簡介 開發環境: Keil5.14,CubeMX6.0.1,主...
摘要:實踐證明,加上穩定可靠的外圍電路和抗干擾電源,以為核心的產品能成功應用于苛刻的工業環境,使開源硬件和開發平臺得到更廣泛的應用,產品多樣性遠遠高于官方開發板,是學習的首選。 說到MicroPython,也許有人會感到陌生。而說到和它密切相關的Python,是否會恍然大悟呢?Python屬于解釋型語言,1989年才開發完成的Python顯然非常年輕。然而經過數十年的磨礪,如今Python已...
摘要:使用實現連網實現巴法云物聯網使用硬件程序思路基于正點原子的測試程序在巴法云物聯網創建的主題初始化代碼比較簡陋主函數代碼如果想用串口助手調試,接線方法如下使用硬件我這里使用的是正點原子家的開發板精英版和模塊。 ...
閱讀 2137·2021-11-22 15:22
閱讀 1286·2021-11-11 16:54
閱讀 1807·2021-09-23 11:32
閱讀 3007·2021-09-22 10:02
閱讀 1770·2019-08-30 12:59
閱讀 1085·2019-08-29 16:27
閱讀 621·2019-08-29 13:21
閱讀 2463·2019-08-28 17:57