STM32+ESP8266接入云(2)

STM32部分

 1.新建工程

 打开串口1的异步通讯,作为打印的数据串口。

  打开串口2的异步通讯,作为ESP8266通讯的串口。

 将频率修改为72M

 LCD配置:神秘链接

2.添加源文件 

        源文件链接:https://pan.baidu.com/s/1iMf45oi4QBp2OQcmAYmzoQ 提取码:6a3i 

 

         添加文件路径。

 

 

 

 

3.修改esp8266.h

        需要修改的部分已经通过箭头指出,在这些宏定义中 转移符 \ 不可以随意删除,会导致指令发送失败。

4.初始化

        在初始化位置添加初始化函数。初始化函数在esp8266.c中可自行查看。

HAL_UART_Receive_IT(&huart2, (uint8_t *)&a_esp8266_buf, 1);
LCD_Init();
ESP8266_Init_ALIYUN();

        需要勾选MicroLIB的库,否则printf不可使用,会导致LCD_Init 函数卡死 

        同时在USART.C的如下位置添加如下代码,进行串口重定向。 

 

#include<stdio.h>
 
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}

        需要使用串口2的中断接收数据。 

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart->Instance == USART2)
    {
        if(esp8266_cnt >= 512)  
        {
            esp8266_cnt = 0;
            memset(ESP8266_Buf,0x00,sizeof(ESP8266_Buf));
            HAL_UART_Transmit(&huart2, (uint8_t *)"data overflow", 10,0xFFFF);
        }
        else
        {
            ESP8266_Buf[esp8266_cnt++] = a_esp8266_buf;
        }
        HAL_UART_Receive_IT(&huart2, (uint8_t *)&a_esp8266_buf, 1);
    }
}

        至此,stm32通过esp8266就成功的接入了阿里云。

5.功能定义

        在产品的详情界面中点击功能定义 ,再点击编辑草稿。

         点击添加自定义功能添加自己设置的功能模块。

        如图。 

         添加完成过后记得发布上线,否则不会更新。

 6.订阅和发布的Topic

        选择属性上报的第一个作为设备属性上报的Topic。

         在C语言中有一个函数可以将字符串按照格式写进数组中。sprintf 教程

         因为 AT+MQTTPUB  这个AT指令只支持256字节以内的消息发送,所以我我们只需要定义一个256个大小的数组去作为我们指令的存储的数组。

        代码如下:

char data[256];
memset(data, 0, sizeof(data));   
sprintf(data,"AT+MQTTPUB=0,\"/sys/hq42unqMiBQ/test/thing/event/property/post\",\"{\\\"params\\\":\\\"LED1\\\":%d\\\,\\\"LED2\\\":%d}\\\,\\\"method\\\":\\\"thing.event.property.post\\\"}\",0,0\r\n",1,0);
while(ESP8266_SendCmd(data,"OK"));

        需要将发送的间隔拉大一些,如下,通过延时函数和计数数将时间拉大到10s发送一次。

         将代码烧录之后,运行完成可以在物模型数据看到发送到平台的数据。

 下一步是创建web小程序并解析来自平台的数据

链接:神秘链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值