摘要:使用实现连网实现巴法云物联网使用硬件程序思路基于正点原子的测试程序在巴法云物联网创建的主题初始化代码比较简陋主函数代码如果想用串口助手调试,接线方法如下使用硬件我这里使用的是正点原子家的开发板精英版和模块。
我这里使用的是正点原子家的STM32开发板(精英版)和ESP8266模块。刚开始准备做一个LORA网关的,但是后面因为比赛的原因就没有搞了,就搞了LORA的通信和WIFI上云(巴法云物联网)的代码:
正点原子家的STM32开发板(精英版)
ESP8266模块
第一步:stm32单片机配置两个串口,(USART1和USART3), USART1主要用来单片机向电脑的串口发送数据,方便我们调试。USART3主要用来连接WIFi模块,和它通信。
第二步:通过USART3串口配置ESP8266模块。
第三步:接收云平台的信息和发送心跳包
</>复制代码
单片机订阅云平台的主题:cmd=1&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi单片机把消息推送到云平台:cmd=2&uid=005dd80adf61d7df35bb4e2cbbf1bf9f&topic=chishi&msg=RELAY1_OPEN单片机的心跳包(60s之内必须发一次,否则单片机会掉线):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函数的第一个参数是要发送的消息
//第二个参数是返回的消息
//第三个参数是等待的时间
}
atk_8266_send_cmd函数的代码
</>复制代码
//向ATK-ESP8266发送命令//cmd:发送的命令字符串//ack:期待的应答结果,如果为空,则表示不需要等待应答//waittime:等待时间(单位:10ms)//返回值:0,发送成功(得到了期待的应答结果)// 1,发送失败u8 atk_8266_send_cmd(u8 *cmd,u8 *ack,u16 time){
u8 res=0;
USART3_RX_STA=0;
u3_printf("%s/r/n",cmd);
//发送命令
if(ack&&time)
//需要等待应答
{
while(--time)
//等待倒计时
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//接收到期待的应答结果
{
if(atk_8266_check_cmd(ack))
{
printf("ack:%s/r/n",(u8*)ack);
break;//得到有效数据
}
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;//保存接收到的数据长度
char data_tiqu[100];//将接收到的数据保存到该数组
char data[10];//最终提取的数据
int k=0,s=0;//保存cmd2开头的数据的下标
int i=0,j=0;
char cmd[]="msg";
int flag=1;//收到正确数据标志位,默认为1,
u8 timex=0;//每200发送1次心跳包的标志位 delay_init();
//延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
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)
//接收到一次数据了
{
//USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;
rlen=USART3_RX_STA&0X7FFF;
//得到本次接收到的数据长度
USART3_RX_BUF[rlen]=0;
//添加结束符
printf("%s",USART3_RX_BUF);
//发送到串口
数据提取
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;
数据提取结束
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);//关继电器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);//关继电器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);//关继电器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);//关继电器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 |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119228.html
大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20211006分享目录: 2021抖音电商商家经营方法论白皮书-34页.pdf 2021中国数据智能产业发展研究报告-50页.pdf 2021公益数字化转型-56页.pdf 2021年中国一线城市出行平台调研报告-77页.pdf 2021年中国内容机构(MCN)行业发展研究报告-66页.pd...
大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20210928分享目录: 休闲娱乐行业主题研究:本地出行,众彩纷呈-35页.pdf 休闲服务行业海南折扣观察第一期:SKU较少的GDF折扣小幅加大,其他公司相对稳定-14页.pdf 传媒行业2021年中期策略报告:从流量到留量,抓住年轻人、拥抱视频化、提升专业化-30页.pdf 传媒行业深度...
摘要:参一江湖只作为内容整理方,仅供学习使用。更多相关报告请查看参一江湖星球。 大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20210906分享目录: 2021中国车险科技创新服务研究报告-45页.pdf 2021年中国家装行业数字化研...
摘要:论坛下载由于库是不带中值滤波器的,需要自己实现,所以花了点时间制作了一个章节。红色线是波形高斯白噪声均匀白噪声。第版教程发布中文显示章节论坛下载可以直接运行界面效果,也可以使用可以直接编译运行。上位机已经整合主机,下一版发布 往期周报汇总地址:http://www.armbbs.cn/for...
阅读 2917·2021-11-18 10:02
阅读 3817·2021-11-15 17:59
阅读 2409·2021-09-06 15:00
阅读 3428·2019-08-29 16:58
阅读 1145·2019-08-26 10:34
阅读 1674·2019-08-26 10:15
阅读 1379·2019-08-26 10:11
阅读 2810·2019-08-23 18:33