怎么能看出别人的网站是哪一家做,个人网页设计总结,网络营销策划要素,电商网站如何避免客户信息泄露目录
1 实现功能
2 器件
3 AT指令
4 阿里云配置
4.1 打开阿里云
4.2 创建产品
4.3 添加设备
5 STM32配置
5.1 基础参数
5.2 功能定义
6 STM32代码 本文主要是记述一下#xff0c;如何使用阿里云物联网平台#xff0c;创建一个简单的远程控制小灯示例。 完整工程如何使用阿里云物联网平台创建一个简单的远程控制小灯示例。 完整工程
https://download.csdn.net/download/qq_51458770/89550617
1 实现功能 STM32通过ESP8266模块采用MQTT连接阿里云平台之后可以和阿里云平台进行通信可以向平台发布小灯的状态开\关也可以接收平台控制小灯的指令开\关。 2 器件
单片机STM32f103c8t6Wif模块ESP8266-01s外设: 小灯STM32最小核心板自带PC13
3 AT指令
这里只是简单看下wifi连接阿里云的AT指令不需要过于纠结可以往下继续看
1 基础指令
1)重置wifi模块
ATRST2设置模块为STA模式
ATCWMODE1
3使模块连接上wifi
ATCWJAPWIFI名称,WIFI密码
注意若你的模块连接不上wifi回复EEROR首先先判断你的wifi是否是2.4G的频段5G频道ESP8266不可用4检查IP地址看看是否正确连上wifi
ATCIFSR5)设置时区为中国早上八点
ATCIPSNTPCFG1,8,ntp1.aliyun.com
到此ESP8266的基本配置以及完成下面就是MQTT协议连接上云平台的操作。2 使用MQTT指令连接到云平台
需要先查看下阿里云的MQTT参数在设备那里面有
1 设置MQTT的登陆用户名与密码
ATMQTTUSERCFG0,1,NULL,username,passwd,0,0,2 设置MQTT的ClientID
ATMQTTCLIENTID0,clientId
注意在自己的clientId中需要在每个逗号前面加一个\符号串口数据才能正确发送识别否则会一直回复EEROR3设置MQTT接入地址
ATMQTTCONN0,mqttHostUrl,port,1
完成以上三步设备就连接到了云平台设备更新为在线
3. 订阅平台消息设备上传/接收平台接收/下发
订阅Topic是指在一个订阅服务中用户可以选择关注或订阅感兴趣的话题或主题。
通过订阅Topic用户可以更加精准地获取自己的内容提高信息的质量和效率。3 订阅Topic
1订阅平台消息
ATMQTTSUB0,subtopic,1
2设备上报数据ATMQTTPUB0,pubtopic,data,0,0Eg
ATRST // 重置wifi模块
ATCWMODE1 //
ATCIPSNTPCFG1,8,ntp1.aliyun.com // 设置时区为中国早上八点
ATCWJAPHONORL,12345Lz. // 使模块连接上wifiATMQTTUSERCFG0,1,NULL,ESP8266010a1cRrS9qC4K,c9c3585b4841be49f67dc4da6d9e894074dd7fc956c429515bcf247a4bee7541,0,0, // 设置MQTT的登陆用户名与密码ATMQTTCLIENTID0,a1cRrS9qC4K.ESP8266010|securemode2\,signmethodhmacsha256\,timestamp1720315990667| // 设置MQTT的ClientIDATMQTTCONN0,a1cRrS9qC4K.iot-as-mqtt.cn-shanghai.aliyuncs.com,1883,1 // 设置MQTT接入地址// ATMQTTSUB0,topic,1
ATMQTTSUB0,/sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set,1 // 订阅平台消息ATMQTTPUB0,/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post,{params:{\LightSwitch\:1}},1,0 // 设备上报数据
// 注意发布部分写代码时容易出问题——格式问题
4 阿里云配置
4.1 打开阿里云
没有账号的话注册登录下之后搜索物联网平台点击进去 4.2 创建产品 4.3 添加设备 也可以直接到设备列表创建设备 5 STM32配置
5.1 基础参数
关于wifi连接阿里云的一些参数这些信息可以在MQTT连接参数里面找到 需要先查看下阿里云的MQTT参数在设备那里面有
1 设置MQTT的登陆用户名与密码
ATMQTTUSERCFG0,1,NULL,username,passwd,0,0,2 设置MQTT的ClientID
ATMQTTCLIENTID0,clientId
注意在自己的clientId中需要在每个逗号前面加一个\符号串口数据才能正确发送识别否则会一直回复EEROR3设置MQTT接入地址
ATMQTTCONN0,mqttHostUrl,port,1
完成以上三步设备就连接到了云平台设备更新为在线
至于要订阅和发布的主题可以到产品里面去找 以下以物模型通信topic为例说明。
5.2 功能定义
为了能够接收来自WiFi的数据小灯状态并显示小灯状态需要创建一下功能定义 为了更好的区分控制功能和显示功能我们这里再创建一个控制的功能定义用于下发控制信息 注意要发布上线之后去设备那里就可以看到了 以上完成后就可以编写代码连接云平台并实现数据的收发。
6 STM32代码
6.1 main.c #include string.h
#include system.h
#include SysTick.h
#include led.h
#include usart.h#define PubTopic /sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post // 发布
#define SubTopic /sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set // 订阅/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
int main()
{char buf[256];int buf_len;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组LED_Init();USART1_Init(115200); // 串口波特率115200GPIO_ResetBits(LED_PORT,LED_PIN); //LED0 亮delay_ms(1000); // 延迟printf(AT\r\n); // 第一步 ATdelay_ms(2000); // 延迟printf(ATGMR\r\n); // 第一步 版本号delay_ms(2000); // 延迟printf(ATCWJAP\%s\,\%s\\r\n, HONORL, 12345Lz.); // 第四步 wifi热点delay_ms(5000); //延迟delay_ms(5000); //延迟delay_ms(5000); //延迟 delay_ms(5000); //延迟GPIO_SetBits(LED_PORT,LED_PIN); // LED1 灭printf(ATCIPSNTPCFG1,8,\ntp1.aliyun.com\\r\n); // 第三步delay_ms(3000); //延迟printf(ATMQTTUSERCFG0,1,\NULL\,\ESP8266010a1cRrS9qC4K\,\c9c3585b4841be49f67dc4da6d9e894074dd7fc956c429515bcf247a4bee7541\,0,0,\\\r\n); //第五步delay_ms(3000); //延迟 printf(ATMQTTCLIENTID0,\a1cRrS9qC4K.ESP8266010|securemode2\\,signmethodhmacsha256\\,timestamp1720315990667|\\r\n); //第六步delay_ms(3000); //延迟 printf(ATMQTTCONN0,\a1cRrS9qC4K.iot-as-mqtt.cn-shanghai.aliyuncs.com\,1883,1\r\n); // 第七步delay_ms(3000); //延迟GPIO_ResetBits(LED_PORT,LED_PIN); //LED0 亮//连接阿里云让设备在线//---------------------------------------------------------//订阅发布指令// printf(ATMQTTSUB0,%s,1\r\n,SubTopic); //订阅指令printf(ATMQTTSUB0,\%s\,1\r\n, /sys/a1cRrS9qC4K/ESP8266010/thing/service/property/set); //订阅指令delay_ms(5000); //延迟GPIO_SetBits(LED_PORT,LED_PIN); //LED1 灭// 发布命令——测试使用printf(ATMQTTPUB0,\/sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post\,\{\\\test\\\}\,1,0\r\n); delay_ms(3000); printf(ATMQTTPUB0,\%s\,\%s\,1,0\r\n, /sys/a1cRrS9qC4K/ESP8266010/thing/event/property/post, {params:{LedState:1}}); //发数据{LED:1}// 发数据{LED:0}delay_ms(5000); printf(ATMQTTPUB0,\%s\, {\LedState\:0},1,0\r\n, PubTopic);GPIO_ResetBits(LED_PORT,LED_PIN); //LED0 亮
//--------------------------------------------------------- while(1){if(USART_RX_STA0x8000) // 判断接收到完整的字符串 完成{ if(strstr((const char*)USART_RX_BUF,on))//判断阿里云发下来的数据里是否有on{GPIO_ResetBits(LED_PORT,LED_PIN); //LED0 亮}if(strstr((const char*)USART_RX_BUF,off))//判断阿里云发下来的数据里是否有off{GPIO_SetBits(LED_PORT,LED_PIN); //LED1 灭} memset(USART_RX_BUF,0,600); //将接收区清0USART_RX_STA0;}}
}完整工程
https://download.csdn.net/download/qq_51458770/89550617