Funpack3-4:基于MCX N94的物联网开发板
该项目使用了FRDM-MCXN947,实现了物联网开发板的设计,它的主要功能为:使用MQTT通讯,实时向服务器广播按键,触控板和温度传感器数据;并可以通过其他设备控制板载RGB LED。
标签
Funpack活动
单片机
MCU
物联网
NXP
IoT
StreakingJerry
更新2024-09-09
94

项目描述

这个项目使用FRDM-MCXN947开发板,实现了物联网通信,可以通过MQTT,实时向服务器广播按键,触控板和温度传感器数据;并可以通过其他设备控制板载RGB LED。


软件流程图及各功能对应的主要代码片段及说明

整个项目实现的流程图如下:

image.png

在MCUXpresso上可以通过以下方式导入官方例程。本项目基于官方MQTT例程修改得到。

image.png

image.png

image.png


导入例程后,首先要在例程项目里添加新的驱动和组件。具体添加的内容可以通过和其他相关例程对比,将缺少的补充上。

image.png


对于其他相关例程用到的额外引脚,也需要进行配置。同样可以通过对比其他例程得到需要添加的引脚。

image.png


具体添加的驱动,组件以及引脚配置可以参见项目附件中的源代码工程文件。


上传和调试程序的时候我遇到了一些问题,默认的LinkServer死活无法成功上传程序。通过查询官方文档,可以知道我们可以通过给编程器烧写J-link固件让它变成J-link。具体的方法是先去到MCUXpresso安装目录的nxp\MCU-LINK_installer_3.146\scripts下,可以看到有个program_JLINK.cmd文件。

image.png

运行文件前,先用跳线帽短路板子上的J21,然后给开发板重新上电,再运行。如果看到下面的输出,说明已经刷写成功。

ZhangJennie_1-1630293484667.png

接着回到MCUXpresso中,点击debug按钮,在跳出来的配置窗口中记得把除J-link以外的剩余两个选项都勾掉。完成后就可以正常调试板卡。

image.png


项目代码编写,主要是把其他相关项目的主程序文件代码补充在中。补充完成后的完整代码贴在下面,需要在使用前自行按需修改MQTT broker的地址,端口及身份验证信息。


#ifndef EXAMPLE_MQTT_SERVER_HOST

#define EXAMPLE_MQTT_SERVER_HOST "192.168.1.100"

#endif



/*! @brief MQTT server port number. */

#ifndef EXAMPLE_MQTT_SERVER_PORT

#define EXAMPLE_MQTT_SERVER_PORT 1883

#endif



/*! @brief MQTT server USERNAME. */

#ifndef EXAMPLE_MQTT_SERVER_USERNAME

#define EXAMPLE_MQTT_SERVER_USERNAME NULL

// #define EXAMPLE_MQTT_SERVER_USERNAME ""

#endif



/*! @brief MQTT server PASSWORD. */

#ifndef EXAMPLE_MQTT_SERVER_PASSWORD

#define EXAMPLE_MQTT_SERVER_PASSWORD NULL

// #define EXAMPLE_MQTT_SERVER_PASSWORD ""

#endif


电脑端使用的NodeRed,包括MQTT服务器,可以假设在任何一台具有Docker环境的主机中。通过docker compose来安装。先创建好下面的配置文件,然后使用docker compose up就可以完成配置。

version: "3"

services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
network_mode: host
volumes:
- /home/hao/docker/mosquitto/mosquitto/config:/mosquitto/config
- /home/hao/docker/mosquitto/mosquitto/data:/mosquitto/data
- /home/hao/docker/mosquitto/mosquitto/log:/mosquitto/log
healthcheck:
test: ["CMD", "ping", "-c", "3", "localhost"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
restart: unless-stopped

nodered:
image: nodered/node-red
container_name: nodered
network_mode: host
volumes:
- /home/hao/docker/nodered/data:/data
restart: unless-stopped


至于Docker安装,MQTT服务端的配置和Nodered的配置,网上有大量的资料,这里就不再赘述了。


通过电脑端网页登陆NodeRed,我们可以编写一个简单的结构来实现与FRDM-MCXN947的双向通信。配置好的结构可以导出成为json文件,复刻时可以直接导入,然后修改一下自己MQTT服务器的信息就可以了。

image.png

配置是以json格式进行记录的,可以方便的导入导出。完整的json文件在附件中。

功能展示及说明

从NodeRed的面板上,可以看到右侧debug输出已经成功间隔一定时间获取到板载传感器的信息。可以通过左侧的时间戳按钮来触发对应的MQTT命令发送,以此控制RGB LED灯。


image.png

37bb614e1d81547d832085fad82d1a8.jpg


对本活动的心得体会

这次活动的板卡是传统的c语言开发。有引脚配置等一系列工具,用起来还是相对比较方便。但这也同时带来对项目结构,配置代码理解难度的稍稍增加。对于第一次接触MCUXpresso的人来说,一开始面对复杂的界面,学习曲线还是较为陡峭。

附件下载
source.zip
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号