摘要:使用實現(xiàn)連網(wǎng)實現(xiàn)巴法云物聯(lián)網(wǎng)使用硬件程序思路基于正點原子的測試程序在巴法云物聯(lián)網(wǎng)創(chuàng)建的主題初始化代碼比較簡陋主函數(shù)代碼如果想用串口助手調(diào)試,接線方法如下使用硬件我這里使用的是正點原子家的開發(fā)板精英版和模塊。
我這里使用的是正點原子家的STM32開發(fā)板(精英版)和ESP8266模塊。剛開始準(zhǔn)備做一個LORA網(wǎng)關(guān)的,但是后面因為比賽的原因就沒有搞了,就搞了LORA的通信和WIFI上云(巴法云物聯(lián)網(wǎng))的代碼:
正點原子家的STM32開發(fā)板(精英版)
ESP8266模塊
第一步:stm32單片機配置兩個串口,(USART1和USART3), USART1主要用來單片機向電腦的串口發(fā)送數(shù)據(jù),方便我們調(diào)試。USART3主要用來連接WIFi模塊,和它通信。
第二步:通過USART3串口配置ESP8266模塊。
第三步:接收云平臺的信息和發(fā)送心跳包
單片機訂閱云平臺的主題:cmd=1&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi單片機把消息推送到云平臺:cmd=2&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi&msg=RELAY1_OPEN單片機的心跳包(60s之內(nèi)必須發(fā)一次,否則單片機會掉線):cmd=0&msg=ping
#include "esp8266.h"#include "common.h"#include "stdlib.h"#include "led.h" u8 atk_8266_apsta_test(void){ atk_8266_send_cmd("AT","OK",50); atk_8266_send_cmd("AT+CWMODE=3","OK",50); atk_8266_send_cmd("AT+CWJAP=/"zhouyong/",/"23456789/"","WIFI GOT IP",1000); delay_ms(1000);//這里的延時是等待模塊重啟,具體延時多久是看模塊的重啟時間 delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); delay_ms(1000); atk_8266_send_cmd("AT+CIPMODE=1","OK",200); atk_8266_send_cmd("AT+CIPSTART=/"TCP/",/"bemfa.com/",8340","OK",200); atk_8266_send_cmd("AT+CIPSEND","OK",200); atk_8266_send_cmd("cmd=1&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi","cmd=1&res=1",200); atk_8266_send_cmd("cmd=0&msg=ping","cmd=0&res=1",200);//atk_8266_send_cmd函數(shù)的第一個參數(shù)是要發(fā)送的消息 //第二個參數(shù)是返回的消息 //第三個參數(shù)是等待的時間 }
atk_8266_send_cmd函數(shù)的代碼
//向ATK-ESP8266發(fā)送命令//cmd:發(fā)送的命令字符串//ack:期待的應(yīng)答結(jié)果,如果為空,則表示不需要等待應(yīng)答//waittime:等待時間(單位:10ms)//返回值:0,發(fā)送成功(得到了期待的應(yīng)答結(jié)果)// 1,發(fā)送失敗u8 atk_8266_send_cmd(u8 *cmd,u8 *ack,u16 time){ u8 res=0; USART3_RX_STA=0; u3_printf("%s/r/n",cmd); //發(fā)送命令 if(ack&&time) //需要等待應(yīng)答 { while(--time) //等待倒計時 { delay_ms(10); if(USART3_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果 { if(atk_8266_check_cmd(ack)) { printf("ack:%s/r/n",(u8*)ack); break;//得到有效數(shù)據(jù) } USART3_RX_STA=0; } } if(waittime==0)res=1; } return res;}
#include "stm32f10x.h"#include "sys.h"#include "delay.h"#include "usart.h" #include "led.h" #include "esp8266.h"#include "key.h" #include "string.h"#include "usart3.h"#include "common.h" int main(void) { u16 rlen=0;//保存接收到的數(shù)據(jù)長度 char data_tiqu[100];//將接收到的數(shù)據(jù)保存到該數(shù)組 char data[10];//最終提取的數(shù)據(jù) int k=0,s=0;//保存cmd2開頭的數(shù)據(jù)的下標(biāo) int i=0,j=0; char cmd[]="msg"; int flag=1;//收到正確數(shù)據(jù)標(biāo)志位,默認(rèn)為1, u8 timex=0;//每200發(fā)送1次心跳包的標(biāo)志位 delay_init(); //延時函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 uart_init(115200); //串口初始化為115200 usart3_init(115200); LED_Init(); relay_Init();//繼電器端口初始化 KEY_Init(); atk_8266_apsta_test();//esp8266初始化 atk_8266_send_cmd("cmd=0&msg=ping","cmd=0&res=1",200); while(1) { timex++; //atk_8266_send_cmd("cmd=0&msg=ping",NULL,200);//心跳包 //u3_printf("%s/r/n","cmd=2&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi&msg=RELAY1_OPEN");//推送消息到云平臺 //atk_8266_at_response(1); if(USART3_RX_STA&0X8000) //接收到一次數(shù)據(jù)了 { //USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0; rlen=USART3_RX_STA&0X7FFF; //得到本次接收到的數(shù)據(jù)長度 USART3_RX_BUF[rlen]=0; //添加結(jié)束符 printf("%s",USART3_RX_BUF); //發(fā)送到串口 數(shù)據(jù)提取 if(strncmp(USART3_RX_BUF,"cmd=2",5)==0) { for(i=0;i<strlen(USART3_RX_BUF)+1;i++) { data_tiqu[s]=USART3_RX_BUF[i]; s++; } printf("%s",data_tiqu); for(i=0;i<strlen(data_tiqu);i++) { if(data_tiqu[i]==cmd[0]) { k=i; k++; for(j=1;j<strlen(cmd);j++) { if(data_tiqu[k]==cmd[j]) { k++; flag=1; } else { flag=0; } } } } s=0; 數(shù)據(jù)提取結(jié)束 if(flag==1) { for(i=k+1;i<strlen(data_tiqu)+1;i++) { data[s]=data_tiqu[i]; s++; } printf("%s",data); if(data[0]=="R"&&data[1]=="1") { GPIO_ResetBits(GPIOE,GPIO_Pin_1);//開繼電器1 } if(data[0]=="R"&&data[1]=="0") { GPIO_SetBits(GPIOE,GPIO_Pin_1);//關(guān)繼電器1 } if(data[2]=="R"&&data[3]=="1") { GPIO_ResetBits(GPIOE,GPIO_Pin_2);//開繼電器2 } if(data[2]=="R"&&data[3]=="0") { GPIO_SetBits(GPIOE,GPIO_Pin_2);//關(guān)繼電器2 } if(data[4]=="R"&&data[5]=="1") { GPIO_ResetBits(GPIOE,GPIO_Pin_3);//開繼電器3 } if(data[4]=="R"&&data[5]=="0") { GPIO_SetBits(GPIOE,GPIO_Pin_3);//關(guān)繼電器1 } if(data[6]=="R"&&data[7]=="1") { GPIO_ResetBits(GPIOE,GPIO_Pin_4);//開繼電器4 } if(data[6]=="R"&&data[7]=="0") { GPIO_SetBits(GPIOE,GPIO_Pin_4);//關(guān)繼電器4 } } } if(strncmp(USART3_RX_BUF,"cmd=0&res=1",11)==0) { printf("%s",USART3_RX_BUF); } USART3_RX_STA=0; } if((timex%200)==0) { u3_printf("cmd=0&msg=ping");//心跳包 timex=0; } } }
串口助手 | esp8266 |
---|---|
GND | GND |
VCC | VCC |
RX | TX |
TX | RX |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/119228.html
大家好,我們每天全網(wǎng)搜集各行各業(yè)的研究報告,了解一個行業(yè)從閱讀這個行業(yè)的研報開始,今日分享目錄如下: 20211006分享目錄: 2021抖音電商商家經(jīng)營方法論白皮書-34頁.pdf 2021中國數(shù)據(jù)智能產(chǎn)業(yè)發(fā)展研究報告-50頁.pdf 2021公益數(shù)字化轉(zhuǎn)型-56頁.pdf 2021年中國一線城市出行平臺調(diào)研報告-77頁.pdf 2021年中國內(nèi)容機構(gòu)(MCN)行業(yè)發(fā)展研究報告-66頁.pd...
大家好,我們每天全網(wǎng)搜集各行各業(yè)的研究報告,了解一個行業(yè)從閱讀這個行業(yè)的研報開始,今日分享目錄如下: 20210928分享目錄: 休閑娛樂行業(yè)主題研究:本地出行,眾彩紛呈-35頁.pdf 休閑服務(wù)行業(yè)海南折扣觀察第一期:SKU較少的GDF折扣小幅加大,其他公司相對穩(wěn)定-14頁.pdf 傳媒行業(yè)2021年中期策略報告:從流量到留量,抓住年輕人、擁抱視頻化、提升專業(yè)化-30頁.pdf 傳媒行業(yè)深度...
摘要:參一江湖只作為內(nèi)容整理方,僅供學(xué)習(xí)使用。更多相關(guān)報告請查看參一江湖星球。 大家好,我們每天全網(wǎng)搜集各行各業(yè)的研究報告,了解一個行業(yè)從閱讀這個行業(yè)的研報開始,今日分享目錄如下: 20210906分享目錄: 2021中國車險科技創(chuàng)新服務(wù)研究報告-45頁.pdf 2021年中國家裝行業(yè)數(shù)字化研...
摘要:論壇下載由于庫是不帶中值濾波器的,需要自己實現(xiàn),所以花了點時間制作了一個章節(jié)。紅色線是波形高斯白噪聲均勻白噪聲。第版教程發(fā)布中文顯示章節(jié)論壇下載可以直接運行界面效果,也可以使用可以直接編譯運行。上位機已經(jīng)整合主機,下一版發(fā)布 往期周報匯總地址:http://www.armbbs.cn/for...
閱讀 2828·2021-11-18 10:02
閱讀 3693·2021-11-15 17:59
閱讀 2322·2021-09-06 15:00
閱讀 3357·2019-08-29 16:58
閱讀 1071·2019-08-26 10:34
閱讀 1589·2019-08-26 10:15
閱讀 1298·2019-08-26 10:11
閱讀 2731·2019-08-23 18:33