找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9062|回复: 13
打印 上一主题 下一主题
收起左侧

OneNET平台下的STM32单片机MQTT协议数据传输源码

  [复制链接]
跳转到指定楼层
楼主
ID:183436 发表于 2018-11-3 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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

单片机源程序如下:
  1. /**
  2.         ************************************************************
  3.         ************************************************************
  4.         ************************************************************
  5.         *        文件名:         main.c
  6.         *
  7.         *        作者:                 张继瑞
  8.         *
  9.         *        版本:                 V1.0
  10.         *
  11.         *        说明:                 接入onenet,上传数据和命令控制
  12.         *
  13.         *        修改记录:       
  14.         ************************************************************
  15.         ************************************************************
  16.         ************************************************************
  17. **/

  18. //单片机头文件
  19. #include "stm32f10x.h"

  20. //网络协议层
  21. #include "onenet.h"

  22. //网络设备
  23. #include "esp8266.h"

  24. //硬件驱动
  25. #include "delay.h"
  26. #include "led.h"
  27. #include "beep.h"
  28. #include "key.h"
  29. #include "usart.h"

  30. //C库
  31. #include <string.h>


  32. /*
  33. ************************************************************
  34. *        函数名称:        Hardware_Init
  35. *
  36. *        函数功能:        硬件初始化
  37. *
  38. *        入口参数:        无
  39. *
  40. *        返回参数:        无
  41. *
  42. *        说明:                初始化单片机功能以及外接设备
  43. ************************************************************
  44. */
  45. void Hardware_Init(void)
  46. {
  47.        
  48.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //中断控制器分组设置

  49.         Delay_Init();                                                                        //systick初始化
  50.        
  51.         Usart1_Init(115200);                                                        //串口1,打印信息用
  52.        
  53.         Usart3_Init(115200);                                                        //串口2,驱动ESP8266用
  54.        
  55.         Led_Init();                                                                                //LED初始化
  56.        
  57.         Beep_Init();                                                                        //蜂鸣器初始化
  58.        
  59.         Key_Init();                                                                                //按键初始化
  60.        
  61.         UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
  62.        
  63. }

  64. /*
  65. ************************************************************
  66. *        函数名称:        main
  67. *
  68. *        函数功能:       
  69. *
  70. *        入口参数:        无
  71. *
  72. *        返回参数:        0
  73. *
  74. *        说明:               
  75. ************************************************************
  76. */
  77. int main(void)
  78. {
  79.        
  80.         unsigned short timeCount = 0;        //发送间隔变量
  81.        
  82.         unsigned char *dataPtr = NULL;
  83.        
  84.         Hardware_Init();                                //初始化外围硬件
  85.        
  86.         ESP8266_Init();                                        //初始化ESP8266
  87.        
  88.         while(OneNet_DevLink())                        //接入OneNET
  89.                 DelayXms(500);
  90.        
  91.         Beep_Set(BEEP_ON);                                //鸣叫提示接入成功
  92.         DelayXms(250);
  93.         Beep_Set(BEEP_OFF);
  94.        
  95.         while(1)
  96.         {
  97.                
  98.                 switch(Keyboard())
  99.                 {
  100.                         case KEY0DOWN:
  101.                                
  102.                                 if(led_status.Led4Sta == LED_OFF)
  103.                                         Led4_Set(LED_ON);
  104.                                 else
  105.                                         Led4_Set(LED_OFF);
  106.                                
  107.                         break;
  108.                        
  109.                         case KEY2DOWN:
  110.                                
  111.                                 if(led_status.Led5Sta == LED_OFF)
  112.                                         Led5_Set(LED_ON);
  113.                                 else
  114.                                         Led5_Set(LED_OFF);
  115.                                
  116.                         break;
  117.                        
  118.                         case KEY3DOWN:
  119.                                
  120.                                 if(led_status.Led6Sta == LED_OFF)
  121.                                         Led6_Set(LED_ON);
  122.                                 else
  123.                                         Led6_Set(LED_OFF);
  124.                                
  125.                         break;
  126.                        
  127.                         case KEY1DOWN:
  128.                                
  129.                                 if(led_status.Led7Sta == LED_OFF)
  130.                                         Led7_Set(LED_ON);
  131.                                 else
  132.                                         Led7_Set(LED_OFF);
  133.                                
  134.                         break;
  135.                        
  136.                         default:
  137.                         break;
  138.                 }
  139.                
  140.                 if(++timeCount >= 500)                                                                        //发送间隔5s
  141.                 {
  142.                         UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
  143.                         OneNet_SendData();                                                                        //发送数据
  144.                        
  145.                         timeCount = 0;
  146.                         ESP8266_Clear();
  147.                 }
  148.                
  149.                 dataPtr = ESP8266_GetIPD(0);
  150.                 if(dataPtr != NULL)
  151.                         OneNet_RevPro(dataPtr);
  152.                
  153.                 DelayXms(10);
  154.        
  155.         }

  156. }
复制代码

所有资料51hei提供下载:
ESP8266-MQTT_test.zip (345.62 KB, 下载次数: 390)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:127977 发表于 2019-1-8 15:20 | 只看该作者
学习了,非常感谢了。。。。
回复

使用道具 举报

板凳
ID:164373 发表于 2019-3-21 10:16 | 只看该作者
非常感谢楼主的分享,学习中
回复

使用道具 举报

地板
ID:164373 发表于 2019-3-21 10:17 | 只看该作者
感谢分享!
回复

使用道具 举报

5#
ID:115047 发表于 2019-4-1 17:02 | 只看该作者
谢谢楼主分享!
回复

使用道具 举报

6#
ID:150905 发表于 2019-5-2 10:35 | 只看该作者
#在这里快速回复#谢谢楼主分享!
回复

使用道具 举报

7#
ID:585455 发表于 2019-8-19 22:18 | 只看该作者
感謝分享
回复

使用道具 举报

8#
ID:227208 发表于 2019-9-25 16:29 | 只看该作者
多谢分享~~
回复

使用道具 举报

9#
ID:350783 发表于 2019-12-5 14:00 | 只看该作者
厉害厉害~感谢分享
回复

使用道具 举报

10#
ID:643968 发表于 2020-2-25 09:34 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
ID:431278 发表于 2020-4-29 11:46 | 只看该作者
感谢分享
回复

使用道具 举报

12#
ID:503387 发表于 2020-6-11 08:08 | 只看该作者
学习到了 ,感谢
回复

使用道具 举报

13#
ID:711985 发表于 2020-7-7 06:18 | 只看该作者
刚学会了指令下发到单片机,可以控制开关量,正在学习如何上传数据流到ONENET平台,下载程序学习学习,非常感谢
回复

使用道具 举报

14#
ID:493412 发表于 2022-1-14 14:06 | 只看该作者
感谢提供代码,已经修改测试,正常连接热点,连接平台成功,就是没有保持在线状态的心跳包啊,我再找找其他人的看看,再次感谢拉;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表