(一)STM32连上阿里云(附开源代码)
STM32连上Aliyun1、首先你得有一个阿里云的账号,没有的话就注册一个2、找到物联网平台3、选择华东2,点击公共实例4、创建产品5、给产品添加设备,这里添加两个设备,将stm32 上面的温湿度数据传到MQTTFX上面6、回到产品处自定义一个既能发布又能订阅的Topic类列表7、创建一个云产品流转规则,目的是将上传到服务器的数据发布出去供别的产品订阅8、编辑这个云产品流转规则,定义消息的源头以
STM32连上Aliyun
1、首先你得有一个阿里云的账号,没有的话就注册一个
2、找到物联网平台
3、选择华东2,点击公共实例
4、创建产品
5、给产品添加设备,这里添加两个设备,将stm32 上面的温湿度数据传到MQTTFX上面
6、回到产品处自定义一个既能发布又能订阅的Topic类列表
7、创建一个云产品流转规则,目的是将上传到服务器的数据发布出去供别的产品订阅(注:现在aliyun版本更新了,点击右上角切回旧版即可)
8、编辑这个云产品流转规则,定义消息的源头以及消息的目的地
启用这个云产品流转,启用之后才会运行
9、连接测试,找到设备,点击查看,一键复制设备证书,粘贴到 技小新 MQTT编程工具,自动生成连接Aliyun信息
技小新MQTT编程工具链接
链接:https://pan.baidu.com/s/14C55cnRO3C0G5gnN95JKWw
提取码:o24i
将上面的信息复制到MQTT.FX工具上面
点击连接,可见连接成功,说明我们创建的设备没有问题,可以以同样的方法测试另外一个设备是否成功
10、让单片机通过wifi模块连接无线网并登录Aliyun的MQTT服务器并上传数据
这里我是在GitHub上找到一份源码,并在这源码的基础上面做的修改,让单片机成功连接上Aliyun服务器,这里放上源码链接,大家可以自己动手实践
链接:https://pan.baidu.com/s/1SZxNs0AUkwFHrrUvM2Nwkg
提取码:0nqu
具体修改过程如下:
在登录MQTT服务器函数处填上WIFI的连接信息和用技小新MQTT工具生成的基本信息,这里在源工程上加以改进,使用宏定义的方式方便修改;并将联网登录服务器部分封装成一个函数。
联网部分:填上联网信息和登录阿里云设备信息
void Mqtt_Connect(void)
{
sta=0;
if(_net.Init(rxbuf,sizeof(rxbuf),txbuf,sizeof(txbuf))!=0) //检查ESP8266
{
printf("\nNet Init OK!\r\n");
sta++;
}
else
{
printf("\nNet Init Error!\r\n");
sta=0;
}
if(sta==1) //连接热点
{
if(_net.ConnectAP(WIFI_NAME,WIFI_PASSWD)!=0)
{
printf("Conncet AP OK!\r\n");
sta++;
}
else
{
printf("Conncet AP Error!\r\n");
sta=0;
}
}
if(sta==2) //连接TCP
{
if(_net.ConnectServer("TCP",MQTT_BROKERADDRESS,1883)!=0)
{
printf("Conncet Server OK!\r\n");
sta++;
}
else
{
printf("Conncet Server Error!\r\n");
}
}
if(sta==3) //登录MQTT
{
_mqtt.Init(rxbuf,sizeof(rxbuf),txbuf,sizeof(txbuf));
if(_mqtt.Connect(
MQTT_CLIENTID, //ClientID
MQTT_USARNAME, //Username
MQTT_PASSWD //Password
) != 0)
{
printf("Enter MQTT OK!\r\n");
sta++;
}
else
{
printf("Enter MQTT Error!\r\n");
sta=0;
}
}
if(sta==4) //订阅主题
{
if(_mqtt.SubscribeTopic(MQTT_SUBSCRIBE_TOPIC,0,1) != 0)
{
printf("SubscribeTopic OK!\r\n");
}
else
{
printf("SubscribeTopic Error!\r\n");
}
}
sta = 0;
}
主函数部分:填写需要上传的数据
int main(void)
{
u16 cnt_5s=0;
u8 temperature=0,humidity=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init();
Usart1_Configuration(115200);
Usart2_Configuration(115200);
DHT11_Init();
delay_ms(100);
Mqtt_Connect();
while(1)
{
DHT11_Read_Data(&temperature, &humidity); //读取温湿度值
//printf("温度:%d℃\r\n湿度:%d%%RH\r\n", temperature, humidity);
if(++cnt_5s>=80)
{
cnt_5s=0;
sprintf(mqtt_message,
"{\
\"temp\":%d,\
\"humi\":%d\
}",
temperature,
humidity
);
_mqtt.PublishData(CUSTOMIZE_TOPIC,mqtt_message,0);
}
}
}
编译后将程序烧录到单片机之后,打开手机热点,可见连接服务器成功
11、用MQTT.FX订阅单片机发布的信息
至此就完成了利用Aliyun发布数据并订阅数据,就可以自己设计一个APP或者网页去订阅单片机发布的数据。
按照上面修改的完整的工程 ,有需要的可以下载支持一下。
mqtt登不上去可能的原因:
1、模组原因:我用正点原子wifi模组和小熊派wifi模组都已验证可以使用;
2、供电问题:wifi模块必须得有一个稳定的电压,有的板子直接用一个USB供电可能不行;
3、频段问题:热点的频段得是2.4g,5g可能不行;
4、热点问题:热点名不能是中文,密码最好是8位,校园网可能不行,信号太弱了可能也也不行;
5、格式问题:注意看清楚 "tcp"、":"、"1883" 这些字段到底是有还是没有
友情推荐和我这篇相关的内容
更多推荐
所有评论(0)