搜索
bottom↓
回复: 172

STM32072+PM2.5检测+ESP8266+MQTT连接阿里云物联网平台

  [复制链接]

出0入85汤圆

发表于 2019-3-26 22:02:48 | 显示全部楼层 |阅读模式
前段时间做了个小东西,有些经验在此分享一下:
先上一张实物图

硬件:
        电源:锂电池供电
        单片机:STM32F072C8T6
        WIFI模块:ESP8266
        传感器:攀藤科技PM2.5传感器、DHT12
        显示屏:3.2寸并口TFT
        存储:TF卡
软件:
程序是基于STM32CubeMX+HAL库开发的,移植了FatFS文件系统、USB虚拟串口、MQTT协议和CJSON。显示界面是自己做的,一些简单的字体,没有移植GUI。
功能:
        PM2.5检测、温湿度检测、甲醛检测(可选)
        WIFI连接阿里云物联网平台
        USB与上位机通讯
        电池电压监测
        背光调节
        时钟设置(上位机设置)
        数据存储(只移植了文件系统,功能暂时未做)
原理图:

48脚的单片机,内部高精度的48M RC时钟,做串口和USB通讯都不用外部晶振了。IO口基本都用完了。锂电池供电,充电芯片用的TP4054。PM2.5传感器需要5V供电,用了一个升压芯片SX1308。
(一)        关键分享一下MQTT连接阿里云物联网平台(MQTT协议具体内容就不详细说了):
1、        注册阿里云物联网平台,也不详细介绍了。
2、        创建产品,选择高级版。

3、        选择产品的属性,如图所示。然后点击完成。添加完成后会在产品列表中看到所添加的设备。

4、        增加产品功能。在设备列表中点击查看,查看产品详情,在功能定义菜单下,增加产品功能。其中标识符后面编程会用到。

5、        添加设备。在设备菜单下,点击添加设备,选择刚创建的产品,DeviceName随便取一个名字,点击确认。

6、        添加完成后查看设备的详细信息,其中Productkey、DeviceName、DeviceSecret后面编程会用到。

7、        Topic列表会自动生成一些Topic,后面会用到第一个。
(二)        平台设置完毕,下面就是单片机程序了。
1.        MQTT协议移植的paho.mqtt.embedded-c-master,用到的就是MQTTPacket\src目录下的文件和MQTTPacket\samples目录下transport.c和.h文件。需要修改的只有transport.c里的两个函数,一个发送,一个接收。

2.        打开和关闭连接已经在ESP8266实现了(ESP8266工作在TCP透传模式),所以直接返回0。
3.        还需要移植cJSON,只有两个文件cJSON.c和cJSON.h,添加到工程里,直接调用里面的函数就行。
4.        连接MQTT服务器,程序如下。抹掉的部分见后面注释。用户名中间有个“&”符号。密码可以是工具生成,也可以是函数生成。

5.        生成cJSON字符串,调用cJSON函数生成字符串,其中params内部的参数即为添加产品功能时的标识符。

6.        发布消息。函数参数char* pTopic为设备Topic列表中的第一条的字符串,char* PMessage为刚才生成的字符串。通过判断发布消息的反馈来判断服务器连接是否正常,如果不正常就重新连接。

7.        发布成功后,在管理平台上会看到设备上传的信息,以及历史曲线。

再分享一下USB虚拟串口的部分
STM32CubeMX生成源代码之后,只要修改usbd_cdc_if.c中的两个函数即可。在主程序中判断是否收到数据即可。

顺便写了一个简单的上位机软件,可以用于设置RTC、WIFI和采集数据。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入85汤圆

 楼主| 发表于 2019-3-28 09:04:22 | 显示全部楼层
本帖最后由 ZXF_CUG 于 2019-3-28 09:10 编辑

应大家要求,代码整理了一下,开源出来。包括单片机和上位机的,还有一个密码生成工具,可能有编写不合适的地方,望指教。PCB就不发了,随便画了一下,不献丑了。
有问题可以私信我。另外,手上还有几块板子,有需要也可以私信。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-3-26 22:41:22 | 显示全部楼层
COOL                  

出0入0汤圆

发表于 2019-3-26 22:51:19 来自手机 | 显示全部楼层
感谢楼主分享

出675入8汤圆

发表于 2019-3-26 23:43:38 来自手机 | 显示全部楼层
有意思,开源吗?

出0入4汤圆

发表于 2019-3-27 00:00:07 来自手机 | 显示全部楼层
正想学习这块,多谢

出0入0汤圆

发表于 2019-3-27 00:38:50 来自手机 | 显示全部楼层
不错,之前搞过移动的云,因为只有设备上传,所以协议和JSON都是自己写的,比较简单

出0入0汤圆

发表于 2019-3-27 06:41:59 来自手机 | 显示全部楼层
大牛!界面做的真漂亮,求开源

出0入8汤圆

发表于 2019-3-27 07:47:22 来自手机 | 显示全部楼层
Cool.      

出0入0汤圆

发表于 2019-3-27 08:24:35 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-3-27 09:08:19 | 显示全部楼层
这个C#仪表控件好熟悉

出0入0汤圆

发表于 2019-3-27 09:15:03 | 显示全部楼层
非常详细,不错,感谢分享

出0入0汤圆

发表于 2019-3-27 09:15:42 | 显示全部楼层
好久没看到这么有含量的帖子了

出0入0汤圆

发表于 2019-3-27 09:18:37 | 显示全部楼层
mqtt Mark !

出0入0汤圆

发表于 2019-3-27 09:35:15 | 显示全部楼层
顶楼主,正在学习相关知识,有个问题请教一下楼主:是不是做IOT项目,基本上用户数据内容基本上都是用JSON格式呢?但这种格式感觉传输效率是不是太低了?尤其针对MOTT及NB来说?望楼主指点

出250入8汤圆

发表于 2019-3-27 09:35:39 | 显示全部楼层
好贴子,开源吗,大神

出0入85汤圆

 楼主| 发表于 2019-3-27 11:07:50 | 显示全部楼层
hyghyg1234 发表于 2019-3-27 09:08
这个C#仪表控件好熟悉

控件网上找的,莫非是你写的?

出0入85汤圆

 楼主| 发表于 2019-3-27 11:08:58 | 显示全部楼层
ArthurBruin 发表于 2019-3-27 09:35
顶楼主,正在学习相关知识,有个问题请教一下楼主:是不是做IOT项目,基本上用户数据内容基本上都是用JSON ...

阿里云平台还有OneNet平台都支持透明传输,但是我没试过

出0入0汤圆

发表于 2019-3-27 11:09:37 | 显示全部楼层
ZXF_CUG 发表于 2019-3-27 11:07
控件网上找的,莫非是你写的?

我也是网上找的。

出0入85汤圆

 楼主| 发表于 2019-3-27 11:10:07 | 显示全部楼层
这几天比较忙,回头把代码整理一下开源~

出0入8汤圆

发表于 2019-3-27 11:11:53 | 显示全部楼层
楼主做的非常不错,赞一个

出0入4汤圆

发表于 2019-3-27 12:40:29 | 显示全部楼层
问下LZ,上面所有说的代码,都是STM32上的?
wifi模块使用官方固件?

期待回复

出0入85汤圆

 楼主| 发表于 2019-3-27 13:23:37 | 显示全部楼层
laujc 发表于 2019-3-27 12:40
问下LZ,上面所有说的代码,都是STM32上的?
wifi模块使用官方固件?

代码在STM32实现,wifi模块用的官方固件,AT指令的

出0入0汤圆

发表于 2019-3-27 13:54:50 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2019-3-27 13:56:54 | 显示全部楼层
我一直想不明白为什么要用这些物联网平台,感觉要害j8被人捏在手上。

出0入0汤圆

发表于 2019-3-27 14:33:30 | 显示全部楼层
LCD界面是用GUI库的吗,真漂亮

出250入8汤圆

发表于 2019-3-27 14:40:25 | 显示全部楼层
ZXF_CUG 发表于 2019-3-27 11:10
这几天比较忙,回头把代码整理一下开源~

致敬!世界因开源的大神们而美好

出0入85汤圆

 楼主| 发表于 2019-3-27 15:25:21 | 显示全部楼层
小Z 发表于 2019-3-27 14:33
LCD界面是用GUI库的吗,真漂亮

不是,单片机资源有限,没有用GUI库。其实只是一些简单的字体、小图标加一些线条

出0入0汤圆

发表于 2019-3-27 16:35:03 | 显示全部楼层
ESP8266  是不是一定要平台的服务器,  买了一个模块一直用不上。

出0入0汤圆

发表于 2019-3-27 16:35:29 | 显示全部楼层
期待开源

出0入85汤圆

 楼主| 发表于 2019-3-27 16:55:45 | 显示全部楼层
Wo456 发表于 2019-3-27 16:35
ESP8266  是不是一定要平台的服务器,  买了一个模块一直用不上。

不是啊,自己搭服务器也是一样的啊

出0入0汤圆

发表于 2019-3-27 17:31:04 | 显示全部楼层
厉害了,ESP8266+阿里云的应用,感觉今后也可能做类似的东西

出0入0汤圆

发表于 2019-3-27 17:59:43 | 显示全部楼层
好贴子,开源吗,大神

出0入8汤圆

发表于 2019-3-27 18:06:33 | 显示全部楼层
厉害,很酷炫!

出0入0汤圆

发表于 2019-3-27 18:24:03 | 显示全部楼层
楼主厉害,向你学习

出0入85汤圆

 楼主| 发表于 2019-3-28 09:08:24 | 显示全部楼层
xml2028 发表于 2019-3-26 23:43
有意思,开源吗?

已开源,代码在35楼

出0入85汤圆

 楼主| 发表于 2019-3-28 09:08:48 | 显示全部楼层
Himi 发表于 2019-3-27 17:59
好贴子,开源吗,大神

已开源,在35楼

出0入85汤圆

 楼主| 发表于 2019-3-28 09:09:42 | 显示全部楼层
sblpp 发表于 2019-3-27 06:41
大牛!界面做的真漂亮,求开源

已开源,在35楼

出0入0汤圆

发表于 2019-3-29 13:14:14 | 显示全部楼层
段码字体很给力~~~我是不是关注点看错了~

出0入85汤圆

 楼主| 发表于 2019-3-29 13:41:48 | 显示全部楼层
heimareed 发表于 2019-3-29 13:14
段码字体很给力~~~我是不是关注点看错了~

只是一种字体而已

出0入0汤圆

发表于 2019-3-29 13:45:23 | 显示全部楼层
UI漂亮!制作也很棒,再也不是程序猿审美了

出0入85汤圆

 楼主| 发表于 2019-3-29 13:47:59 | 显示全部楼层
正十七 发表于 2019-3-29 13:45
UI漂亮!制作也很棒,再也不是程序猿审美了

看来我的审美还可以啊

出0入0汤圆

发表于 2019-3-29 13:52:54 | 显示全部楼层
ZXF_CUG 发表于 2019-3-29 13:47
看来我的审美还可以啊

可以的,比大多数猿强了!
你的这个制作,用RT-Thread应该开发可以更快和容易一些,MQTT,文件系统以及阿里云适配等都集成了。

出0入0汤圆

发表于 2019-3-29 13:59:47 | 显示全部楼层
楼主腾讯云也可以吗,腾讯云每月消息100万条以内是免费的,100万条,自己做着玩,家里挂一些设备完全够用了.




帮助文档上有说支持mqtt,但不知道怎么用,连给的网络是什么地址都不知道.



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出675入8汤圆

发表于 2019-3-29 14:57:03 | 显示全部楼层
ZXF_CUG 发表于 2019-3-28 09:08
已开源,代码在35楼

35楼不见了,楼主

出0入85汤圆

 楼主| 发表于 2019-3-29 14:59:22 | 显示全部楼层
正十七 发表于 2019-3-29 13:52
可以的,比大多数猿强了!
你的这个制作,用RT-Thread应该开发可以更快和容易一些,MQTT,文件系统以及阿 ...

RT-Thread还没用过,多谢指导,我也研究一下

出0入85汤圆

 楼主| 发表于 2019-3-29 15:00:27 | 显示全部楼层
hyz_avr 发表于 2019-3-29 13:59
楼主腾讯云也可以吗,腾讯云每月消息100万条以内是免费的,100万条,自己做着玩,家里挂一些设备完全够用了.

腾讯应该也可以的,阿里云100万条也是免费的~

出0入85汤圆

 楼主| 发表于 2019-3-29 15:00:45 | 显示全部楼层
xml2028 发表于 2019-3-29 14:57
35楼不见了,楼主

置顶了                           

出675入8汤圆

发表于 2019-3-29 15:06:36 | 显示全部楼层

这么好的资料都被楼主开源了,楼主功德无量啊

出0入0汤圆

发表于 2019-3-29 15:15:44 | 显示全部楼层
标记下,学习

出0入0汤圆

发表于 2019-3-29 17:05:26 | 显示全部楼层
谢谢分享!赞一个

出0入0汤圆

发表于 2019-3-29 17:23:07 | 显示全部楼层

谢谢分享!赞一个

出0入0汤圆

发表于 2019-3-29 18:59:04 来自手机 | 显示全部楼层
感谢楼主分享,棒棒哒

出0入0汤圆

发表于 2019-3-29 20:14:52 来自手机 | 显示全部楼层
谢谢分享,赞一个!

出0入0汤圆

发表于 2019-3-29 20:24:37 | 显示全部楼层
謝謝分享。

出0入0汤圆

发表于 2019-3-29 20:47:51 | 显示全部楼层
必须顶起来,向开源致敬。

出0入0汤圆

发表于 2019-3-29 21:05:08 来自手机 | 显示全部楼层
楼主有没除两个传感器以外套件?屏幕能触摸不?想弄个触摸屏的小东西玩玩

出0入85汤圆

 楼主| 发表于 2019-3-30 08:22:13 | 显示全部楼层
ddz123abcdef 发表于 2019-3-29 21:05
楼主有没除两个传感器以外套件?屏幕能触摸不?想弄个触摸屏的小东西玩玩 ...

这个不能触摸,暂时也没有其它套件。有什么建议可以提出来,可以进行些改进

出0入0汤圆

发表于 2019-3-30 09:40:44 | 显示全部楼层
致敬!世界因开源的大神们而美好

出0入0汤圆

发表于 2019-4-1 12:35:20 | 显示全部楼层
就像看看MQTT的部分

出0入0汤圆

发表于 2019-4-1 13:42:49 | 显示全部楼层
现在这类产品增长非常快,楼主找对方向了

出0入0汤圆

发表于 2019-4-1 14:29:35 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2019-4-2 10:46:03 | 显示全部楼层
不错,学习了

出0入4汤圆

发表于 2019-4-2 11:07:20 | 显示全部楼层
MQTT的好像是事实上的传输标准了

出0入8汤圆

发表于 2019-4-2 13:42:43 | 显示全部楼层
楼主,怎么不直接用usb hid?上位机编程方便?但模拟成串口速度受限
我有个项目用stm32f030+ch340,串口最大速度115200,我想换成带usb的f072
以前没搞过usb
谢谢

出0入85汤圆

 楼主| 发表于 2019-4-2 17:30:55 | 显示全部楼层
rube 发表于 2019-4-2 13:42
楼主,怎么不直接用usb hid?上位机编程方便?但模拟成串口速度受限
我有个项目用stm32f030+ch340,串口最 ...

hid速度才有限,模拟串口速度可以很高,不受波特率限制

出0入0汤圆

发表于 2019-4-3 23:28:15 | 显示全部楼层

出0入0汤圆

发表于 2019-4-4 12:11:22 | 显示全部楼层
不错 赞

出0入0汤圆

发表于 2019-4-4 12:40:16 来自手机 | 显示全部楼层
赞一个   

出15入118汤圆

发表于 2019-4-4 12:56:10 来自手机 | 显示全部楼层
楼主赞一个

出0入0汤圆

发表于 2019-4-4 13:38:31 | 显示全部楼层
多谢分享,好好学习

出0入0汤圆

发表于 2019-4-4 14:50:29 | 显示全部楼层
很酷,学习哦

出0入0汤圆

发表于 2019-4-4 17:04:59 | 显示全部楼层
谢谢分享。。。。。

出0入8汤圆

发表于 2019-4-6 11:59:11 | 显示全部楼层
楼主外壳哪弄的?谢谢

出0入85汤圆

 楼主| 发表于 2019-4-6 19:36:17 | 显示全部楼层
rube 发表于 2019-4-6 11:59
楼主外壳哪弄的?谢谢

网上买的公模

出0入0汤圆

发表于 2019-4-6 20:45:47 | 显示全部楼层

楼主赞一个

出0入0汤圆

发表于 2019-4-6 22:25:26 | 显示全部楼层
楼主好厉害,物联网现在很火

出0入0汤圆

发表于 2019-4-7 01:35:01 来自手机 | 显示全部楼层
请问这个MQTT协议是全功能的吗?比如消息等级都支持吗?我看移动云并不支持全功能的MQTT协议

出0入0汤圆

发表于 2019-4-7 02:02:01 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2019-4-7 06:40:37 | 显示全部楼层
好文,收藏 。

出0入8汤圆

发表于 2019-4-7 10:15:28 | 显示全部楼层
本帖最后由 rube 于 2019-4-7 14:37 编辑


给楼主提两个建议:
bat54c的反向漏电流大(uA级),改用两个4148,反向漏电流小(na级)
电池分压后给adc,用100k或以上电阻
电池充电、升压用一个5410搞定

3.2寸LCD是ILI9341驱动的吗?

出0入0汤圆

发表于 2019-4-7 15:18:55 | 显示全部楼层
标记下,非常的不错

出0入0汤圆

发表于 2019-4-7 15:59:10 | 显示全部楼层
相当的酷!!!赞一个!

出0入85汤圆

 楼主| 发表于 2019-4-7 17:01:24 | 显示全部楼层
rube 发表于 2019-4-7 10:15
给楼主提两个建议:
bat54c的反向漏电流大(uA级),改用两个4148,反向漏电流小(na级)
电池分压后给ad ...

建议很好,学习了,多谢。液晶驱动是ili9341。

出0入0汤圆

发表于 2019-4-8 11:43:50 | 显示全部楼层
ZXF_CUG 发表于 2019-4-7 17:01
建议很好,学习了,多谢。液晶驱动是ili9341。

问一下: 这一整套下来硬件成本大概是多少?

出0入85汤圆

 楼主| 发表于 2019-4-8 14:07:39 | 显示全部楼层
QQ373466062 发表于 2019-4-8 11:43
问一下: 这一整套下来硬件成本大概是多少?


PCBA+TFT+2000mAH锂电池+外壳,一共100多块钱吧。PM2.5传感器价格不一

出0入0汤圆

发表于 2019-4-9 17:41:02 | 显示全部楼层
谢谢楼主分享!物联网工程技术是未来的一个职业!!

出0入0汤圆

发表于 2019-4-10 11:54:20 | 显示全部楼层
楼主v5啊啊

出0入0汤圆

发表于 2019-4-10 20:43:26 | 显示全部楼层
感谢开源,学习中

出0入8汤圆

发表于 2019-4-10 21:09:24 | 显示全部楼层
标记一下,这个很有用

出0入0汤圆

发表于 2019-4-10 22:35:03 | 显示全部楼层
感谢分享,标记一下

出0入13汤圆

发表于 2019-4-23 11:24:45 | 显示全部楼层
STM32072+PM2.5检测+ESP8266+MQTT连接阿里云物联网

出0入0汤圆

发表于 2019-4-23 13:52:12 | 显示全部楼层
多谢分享,高手啊!

出0入0汤圆

发表于 2019-4-23 15:02:05 | 显示全部楼层
标记下,学习,谢谢

出0入0汤圆

发表于 2019-4-28 14:28:04 | 显示全部楼层
谢谢谢分享,很不错。

出0入0汤圆

发表于 2019-4-28 20:33:22 | 显示全部楼层
这个东西真的不错,大气

出0入0汤圆

发表于 2019-4-28 22:37:58 | 显示全部楼层
谢谢楼主分享,好东西,标记一下

出0入0汤圆

发表于 2019-4-29 08:40:13 | 显示全部楼层
ZXF_CUG 发表于 2019-4-8 14:07
PCBA+TFT+2000mAH锂电池+外壳,一共100多块钱吧。PM2.5传感器价格不一

电池可以续航多久呢?

出0入0汤圆

发表于 2019-4-29 09:23:32 | 显示全部楼层
谢谢楼主的分享!!!!  学习了!!!

出0入17汤圆

发表于 2019-4-29 09:45:37 | 显示全部楼层
谢谢楼主分享,做得很漂亮,壳哪买的呀
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 07:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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