摘要:添加設(shè)備名和鑒權(quán)信息。記錄如下數(shù)據(jù)二引腳連接和接電源接地和連接至配置的串口三代碼編寫(xiě)串口配置單片機(jī)需配置兩個(gè)串口,串口打印至串口助手,顯示連接狀態(tài)。串口用來(lái)發(fā)送信息至串口配置代碼如下系列配置和系列配置不同點(diǎn)在于口上拉和推挽配置略有不同。
1.注冊(cè)onenet平臺(tái)
2.esp8266引腳連接
3.stm32373代碼移植編寫(xiě)
提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。
注冊(cè)進(jìn)入onenet平臺(tái)
點(diǎn)擊右上方控制臺(tái)
再點(diǎn)擊進(jìn)入多協(xié)議接入,進(jìn)入產(chǎn)品創(chuàng)建界面。
//鏈接: link.
點(diǎn)擊進(jìn)入添加產(chǎn)品
創(chuàng)建按心情填寫(xiě),但接入?yún)f(xié)議選MQTT(舊版)!!!
接著在產(chǎn)品下創(chuàng)建設(shè)備。
進(jìn)入產(chǎn)品后,左上方點(diǎn)擊設(shè)備列表之后,開(kāi)始添加設(shè)備。
添加設(shè)備名和鑒權(quán)信息。
記錄如下數(shù)據(jù)
3v3和EN接電源3.3V
GND接地
RX和TX連接至stm32373配置的串口
單片機(jī)需配置兩個(gè)串口,串口1打印至串口助手,顯示連接狀態(tài)。串口2用來(lái)發(fā)送信息至esp8266.
串口1配置代碼如下:
373系列配置和103系列配置不同點(diǎn)在于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; //復(fù)用推挽輸出 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,...) //串口打印,相當(dāng)于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; //復(fù)用推挽輸出 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發(fā)送代碼如下:
_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) //如果收到數(shù)據(jù) { if(strstr((const char *)esp8266_buf, res) != NULL) //如果檢索到關(guān)鍵詞 { ESP8266_Clear(); //清空緩存 return 0; } } delay_ms(10); } return 1;}
從onenet官方網(wǎng)站上下載物聯(lián)網(wǎng)程序,
移植出
esp8266.c
onenet.c
MqttKit.c文件
更改esp8266.c中的串口發(fā)送函數(shù)
代碼如下:
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賬號(hào)密碼、ip、端口號(hào)
代碼如下:
#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中的產(chǎn)品ID 、鑒權(quán)信息、設(shè)備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; //發(fā)送間隔變量 unsigned char *dataPtr = NULL; delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí) 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) //發(fā)送間隔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); }}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/123009.html
摘要:基于的與通信連接,實(shí)現(xiàn)溫濕度數(shù)據(jù)互傳,控制第一步,在實(shí)現(xiàn)將傳感器數(shù)據(jù)采集之后,并且完成配網(wǎng)步驟,可以正常通過(guò)模塊正常將數(shù)據(jù)發(fā)送到云平臺(tái)之后進(jìn)行以下閱讀,上述內(nèi)容可以跳轉(zhuǎn)到以下鏈接進(jìn)行查看具體操作。 ...
摘要:帶中文字庫(kù)的是一種具有位位并行線或線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊其顯示分辨率為。貼片按鍵模塊支持標(biāo)準(zhǔn)的協(xié)議,完整的協(xié)議棧。以最低成本提供最大實(shí)用性,為功能嵌入其他系統(tǒng)提供無(wú)限可能。 項(xiàng)目簡(jiǎn)介 開(kāi)發(fā)環(huán)境: Keil5.14,CubeMX6.0.1,主...
摘要:實(shí)踐證明,加上穩(wěn)定可靠的外圍電路和抗干擾電源,以為核心的產(chǎn)品能成功應(yīng)用于苛刻的工業(yè)環(huán)境,使開(kāi)源硬件和開(kāi)發(fā)平臺(tái)得到更廣泛的應(yīng)用,產(chǎn)品多樣性遠(yuǎn)遠(yuǎn)高于官方開(kāi)發(fā)板,是學(xué)習(xí)的首選。 說(shuō)到MicroPython,也許有人會(huì)感到陌生。而說(shuō)到和它密切相關(guān)的Python,是否會(huì)恍然大悟呢?Python屬于解釋型語(yǔ)言,1989年才開(kāi)發(fā)完成的Python顯然非常年輕。然而經(jīng)過(guò)數(shù)十年的磨礪,如今Python已...
摘要:使用實(shí)現(xiàn)連網(wǎng)實(shí)現(xiàn)巴法云物聯(lián)網(wǎng)使用硬件程序思路基于正點(diǎn)原子的測(cè)試程序在巴法云物聯(lián)網(wǎng)創(chuàng)建的主題初始化代碼比較簡(jiǎn)陋主函數(shù)代碼如果想用串口助手調(diào)試,接線方法如下使用硬件我這里使用的是正點(diǎn)原子家的開(kāi)發(fā)板精英版和模塊。 ...
摘要:宿舍智能門(mén)鎖設(shè)計(jì)采用作為主控芯片,作為與攝像監(jiān)控,液晶顯示屏作為顯示,指紋識(shí)別模塊繼電器模塊具有三種解鎖方式指紋解鎖密碼解鎖解鎖解鎖時(shí)密碼或者指紋錯(cuò)誤液晶顯示屏?xí)崾境鲥e(cuò),次錯(cuò)誤就會(huì)鎖定,需要等待分鐘才會(huì)解鎖。 ...
閱讀 2150·2021-11-22 15:22
閱讀 1298·2021-11-11 16:54
閱讀 1826·2021-09-23 11:32
閱讀 3016·2021-09-22 10:02
閱讀 1779·2019-08-30 12:59
閱讀 1094·2019-08-29 16:27
閱讀 628·2019-08-29 13:21
閱讀 2467·2019-08-28 17:57