标题:
OneNET平台下的STM32单片机MQTT协议数据传输源码
[打印本页]
作者:
尾田大
时间:
2018-11-3 21:08
标题:
OneNET平台下的STM32单片机MQTT协议数据传输源码
OneNET平台下的基于ESP8266的STM32(MQTT协议)例程是适用于自身平台下的开发板,修改过系统配置文件,其外部晶振频率为12MHz。修改过的代码可以向OneNET平台发送LED灯当前状态,GPS位置数据信息和自定义消息。
1.修改esp8266.c下的wifi账号及密码
2.修改onenet.c下的proid、auth_info和devid
3.指令说明:
1.命令直接下发:
redled:1 打开红灯
greenled:1 打开绿灯
yellowled:1 打开黄灯
blueled:1 打开蓝灯
同理,1替换为0则是关闭
2.应用命令填写方式:
redled:{V}, 打开红灯;开关开值-1,开关关值-0
greenled:{V}, 打开绿灯;开关开值-1,开关关值-0
yellowled:{V}, 打开黄灯;开关开值-1,开关关值-0
blueled:{V}, 打开蓝灯;开关开值-1,开关关值-0
单片机源程序如下:
/**
************************************************************
************************************************************
************************************************************
* 文件名: main.c
*
* 作者: 张继瑞
*
* 版本: V1.0
*
* 说明: 接入onenet,上传数据和命令控制
*
* 修改记录:
************************************************************
************************************************************
************************************************************
**/
//单片机头文件
#include "stm32f10x.h"
//网络协议层
#include "onenet.h"
//网络设备
#include "esp8266.h"
//硬件驱动
#include "delay.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "usart.h"
//C库
#include <string.h>
/*
************************************************************
* 函数名称: Hardware_Init
*
* 函数功能: 硬件初始化
*
* 入口参数: 无
*
* 返回参数: 无
*
* 说明: 初始化单片机功能以及外接设备
************************************************************
*/
void Hardware_Init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断控制器分组设置
Delay_Init(); //systick初始化
Usart1_Init(115200); //串口1,打印信息用
Usart3_Init(115200); //串口2,驱动ESP8266用
Led_Init(); //LED初始化
Beep_Init(); //蜂鸣器初始化
Key_Init(); //按键初始化
UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
}
/*
************************************************************
* 函数名称: main
*
* 函数功能:
*
* 入口参数: 无
*
* 返回参数: 0
*
* 说明:
************************************************************
*/
int main(void)
{
unsigned short timeCount = 0; //发送间隔变量
unsigned char *dataPtr = NULL;
Hardware_Init(); //初始化外围硬件
ESP8266_Init(); //初始化ESP8266
while(OneNet_DevLink()) //接入OneNET
DelayXms(500);
Beep_Set(BEEP_ON); //鸣叫提示接入成功
DelayXms(250);
Beep_Set(BEEP_OFF);
while(1)
{
switch(Keyboard())
{
case KEY0DOWN:
if(led_status.Led4Sta == LED_OFF)
Led4_Set(LED_ON);
else
Led4_Set(LED_OFF);
break;
case KEY2DOWN:
if(led_status.Led5Sta == LED_OFF)
Led5_Set(LED_ON);
else
Led5_Set(LED_OFF);
break;
case KEY3DOWN:
if(led_status.Led6Sta == LED_OFF)
Led6_Set(LED_ON);
else
Led6_Set(LED_OFF);
break;
case KEY1DOWN:
if(led_status.Led7Sta == LED_OFF)
Led7_Set(LED_ON);
else
Led7_Set(LED_OFF);
break;
default:
break;
}
if(++timeCount >= 500) //发送间隔5s
{
UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
OneNet_SendData(); //发送数据
timeCount = 0;
ESP8266_Clear();
}
dataPtr = ESP8266_GetIPD(0);
if(dataPtr != NULL)
OneNet_RevPro(dataPtr);
DelayXms(10);
}
}
复制代码
所有资料51hei提供下载:
ESP8266-MQTT_test.zip
(345.62 KB, 下载次数: 391)
2018-11-3 21:08 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
jiangyimfs
时间:
2019-1-8 15:20
学习了,非常感谢了。。。。
作者:
lizs
时间:
2019-3-21 10:16
非常感谢楼主的分享,学习中
作者:
lizs
时间:
2019-3-21 10:17
感谢分享!
作者:
英特处理器
时间:
2019-4-1 17:02
谢谢楼主分享!
作者:
DSCX05
时间:
2019-5-2 10:35
#在这里快速回复#谢谢楼主分享!
作者:
jemery1030
时间:
2019-8-19 22:18
感謝分享
作者:
zh8538
时间:
2019-9-25 16:29
多谢分享~~
作者:
wilso6745
时间:
2019-12-5 14:00
厉害厉害~感谢分享
作者:
hlgchina
时间:
2020-2-25 09:34
谢谢分享
作者:
大呲花的小号
时间:
2020-4-29 11:46
感谢分享
作者:
zhangyg012345
时间:
2020-6-11 08:08
学习到了 ,感谢
作者:
bbcs852
时间:
2020-7-7 06:18
刚学会了指令下发到单片机,可以控制开关量,正在学习如何上传数据流到ONENET平台,下载程序学习学习,非常感谢
作者:
787384900
时间:
2022-1-14 14:06
感谢提供代码,已经修改测试,正常连接热点,连接平台成功,就是没有保持在线状态的心跳包啊,我再找找其他人的看看,再次感谢拉;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1