嵌入式技术分享

Embedded Technology Sharing

基于正点原子STM32F4开发板和阿里云物联网平台的MQTT项目

【本人GitHub开源项目】

《基于正点原子STM32F4开发板和阿里云物联网平台的MQTT项目》

项目github地址: https://github.com/maxlicheng/stm32f4_ucosii_lwip_mqtt

说明
本项目基于正点原子STM32F4探索者开发板和阿里云平台的MQTT通信项目,
MQTT协议中文版pdf文件已上传github,下载源码后在Documents文件夹即可看到。

使用
1.下载源码
2.修改mqtt_app.h文件中的阿里云设备三元参数
3.编译后download到开发板

注意事项
1.务必自行在阿里云上创建物联网设备,并将相关三元参数填入mqtt_app.h文件中,否则功能无法正常演示
2.开发板网口需要用网线连入可上网的路由器
3.开发板需要插入LCD显示屏,项目用的是4.3寸电阻屏
4.开发板需要接DS18B20温度传感器,用于上报环境温度
5.可用USB线接串口1,在串口中断上查看开发板运行状态

具体使用方式,可参考以下文章和视频
1.项目演示视频
https://www.bilibili.com/video/av52731912/

2.阿里云创建物联网设备教程
https://www.bilibili.com/video/av52731912/?p=2

3.MQTT协议简介
https://www.bilibili.com/video/av52731912/?p=3

4.基于github项目制作的MQTT点阵显示系统
https://www.bilibili.com/video/av52731912/?p=4

5.个人github
https://github.com/maxlicheng

如果文章对您有帮助,欢迎移至上方按钮打赏博主;

点赞
  1. Wang说道:

    由于未能找到您的邮箱,特意在找在这个角落发表,
    很荣幸,能成为你的邻居。
    但这里很抱歉,本站 nmza.net 近期进入备案程序,将关站一星期。
    特此打扰通知,看到请删除,谢谢!

  2. Surk说道:

    您好,如何通过阿里云使用iap更新板卡程序?

    1. cheng说道:

      更新固件直接用mqtt源码比较笨重,建议直接看阿里云的iot sdk进行参考,因为我没有这需求,所以没有去研究了。

  3. yzmvv说道:

    博主好,今天看了您这个工程的源码,收益匪浅,非常感谢。只是小弟刚接触MQTT,有个疑问请教。 我想实现一个类似架在客户端 和代理之间桥的功能, 检测到一帧MQTT报文后进行传送。因为MQTT协议的固定报文头 是根据报文类型变化的,后续也没有校验计算,认为很容易会出现检帧检错的情况(), 不知有何办法解决, 还是我对协议理解有误。望赐教。

  4. LJSHOW说道:

    想请教博主,想要把源码移植到F7的基本思路是怎么的呢

    1. cheng说道:

      先跑一个可以联网的demo,一般是网口lwip的例程,尝试与服务器(或网络调试助手)建立tcp端口连接,收发信息都没有问题,就可以在这基础上进行移植了。mqtt就与阿里云服务器建立tcp指定端口连接,配置mqtt参数,实现mqtt通信。

  5. chenl说道:

    博主你好,我想问一下,这个MQTT的例程中没有采用ssl加密吧,那么使用stm32f4的板子,有做过相关ssl的移植么?一直搞不定这个加密的东西,希望帮忙一波 :mrgreen:

    1. cheng说道:

      参考rtthread的实现方式

  6. chenl说道:

    博主你好,我想请问一下,你这个例程里面没有ssl的移植吧,如果还想加ssl进去,需要该怎么弄呀?

    1. cheng说道:

      尝试过,没成功,最后采用了有效负载的方式。你如果真需要可以试试rtthread的demo,他里面有。

  7. chenl说道:

    嗯,好哒,我去下载rtthread的SDK来看下,多谢哈

  8. 大大说道:

    博主,请问一下,利用串口调试助手查看,显示[ERROR] connect failed Sending to hostname a16072EN7vc.iot-as-mqtt.cn-shanghai.aliyuncs.com port 1883,这个问题如何解决啊?

    1. cheng说道:

      默认的静态ip没改吧。

      1. 大大说道:

        请问一下,哪里修改啊,刚开始接触,有些问题不是很清楚,麻烦博主指点一下,谢谢啦 :lol:

        1. cheng说道:

          刚下班,不太记得路径了,你看这个视频里面得P2,我在里面有说明: https://b23.tv/av60889214/p2

          1. 大大说道:

            博主,修改过默认的本机IP地址了,但是仍然还是不行,有其他可能原因么? :lol:

        2. cheng说道:

          在P1,1分10秒处,https://b23.tv/av60889214/p1

  9. Gavin说道:

    版主你好,我编译不过,我用的是MDK528a,出现了15个错误,7个警告,是因为MDK版本问题吗?

    1. cheng说道:

      把提示错误的变量,放到函数开始前声明,不要在函数中间声明。

    2. 小张说道:

      请问你的问题解决了嘛,我也遇到了同样的问题。按博主说的换声明方式,我好像也没弄好。问一下你解决了的话,可以提个建议嘛?969860963@qq.com

      1. cheng说道:

        keil target里面取消c99标准试试

  10. Xi_mo说道:

    博主好 想问下云端已经和设备关联,通过什么方式可以让第三方软件得到设备的数据?看了你发的视频其中网站是调用阿里云的API 请问有相关API的文档说明么?

  11. s说道:

    楼主你好,我想请教你一个问题,我现在也在用stm32系列芯片做和物联网相关的项目,不过我是自己写了一个TCPv4协议的server,然后用自己基于stm32+w6100设计的板子,想实现在阿里云云服务器上运行我的server,然后stm32+w6100板子去connect server,我已经在局域网的环境下实现了互联,且收发数据没问题,只是在将server运行在云服务器上,stm32+w6100板子无法连接到server了。我的测试如下(处于学校的局域网内,上网是通过账号登录,没有自主可控路由器):
    1、通过自己设计的client,在联网的状态下,能访问到运行在云服务器上的server,client ip为自动获取,目标IP和port均为云服务器设置好的。
    2、通过stm32+w6100板子,设置好静态IP(非自动获取),设置好目标ip和port,跑程序时,无法连接到云服务器上的server。
    我自己的初步判断是因为板子没有联网的原因,但我用的W6100网络芯片,就如同阿波罗开发板一样,想请教一下你,如何解决我所遇到的问题,还有根据你的经验,我还存在那些问题没做到位呢?

  12. ning说道:

    博主,你好,我将你最新的github上的代码下载到我的探索者板子中,但板子有时能够连上mqtt,有时是【ERROR】 Get host ip failed,是我这边网络的原因吗?感觉不太稳定

发表评论

电子邮件地址不会被公开。 必填项已用*标注