0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何把机智云生成的协议移植到STM32CubeMX生成的工程

9GxC_IoTMaker 来源:机智云开发者 作者:机智云开发者 2022-05-21 11:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

降低IoT开发门槛是机智云的不懈追求,所以机智云先后推出自助开发平台、MCU代码自动生成器、APP在线生成器、D3规则引擎等工具,不断延伸物联网生态,兼容不同系列的MCU产品,适配STM32cubemx,大大简化 MCU 开发,降低门槛。

本文以程空气质量监测应用为例,讲解STM32接入机智云,通过STM32CubeMX 图形化配置工具生成 MCU 工程,然后只需编写几个简单的接口,即可将机智云自助生成的 STM32 方案工程里面的设备协议移植过来,这样可以十分方便的将其它型号 STM32 微控制 器连上机智云,开发智能产品。

本文的读者对象需要掌握的是:

1. 知道如何利用机智云自助开发生成 MCU 工程;2. 知道如何利用 STM32CubeMX 配置外设,生成 STM32 工程;3. 其它如开发工具 Keil,串口调试助手,STLINK,STM32CubeMX 等软件的安装使用教程这里不会赘述,新手可前往机智云开发者社区参考前期教程;

通过本文读者将学会:

1.如何把机智云生成的协议移植到 STM32CubeMX 生成的工程; 2. ADC(模数转换器)的使用; 3.GPIO 的使用; 4 . 非阻塞长短按键程序的移植; 5.简单的物联网应用开发流程;

先来张全家福:

51fc799c-d776-11ec-bce3-dac502259ad0.png

本文使用的硬件为:

52478b94-d776-11ec-bce3-dac502259ad0.png

软件工具为:

1.STM32CubeMX V4.16.1; 2.机智云自助开发平台; 3.串口调试助手; 4 . Keil V5.21.1.0;

01云端准备

我们这里演示的是一个简单的远程空气质量监测应用,即微控制器采集空气质量传感器的数据,通过 WIFI 上报到机智云服务器,然后我们通过手机端 APP 即可远程查看监测值。

我们先在机智云自助开发平台建立数据点并生成一个 MCU 方案 STM32 工程。

注:机智云自助开发平台 dev.gizwits.com

52801b8a-d776-11ec-bce3-dac502259ad0.png

通过对机智云的了解,我们知道,以下几个是必须的:

配置 WIFI 模块入网方法和触发方式;

为了和生成的测试 APP 配合,我们一般选择长按 Key2,RGB 绿灯亮起作为提示;

一个串口用于打印日志,方便调试,波特率没有要求;另一个串口(实现中断接收和写)用于和 WIFI 模组通信,波特率要求为 9600,其它参数后文给出;

MCU 需要一个定时器,1ms 中断作为心跳;上面红色的文字是实现任意 MCU 通过 WIFI 模块连接机智云所必须的。

02硬件准备

STM32L432 Nucleo-32 开发板是 Nucleo-32 系列开发板中最新的一款,它采用了STM32L432KC6 微控制器,除了具有良好的性能外,还支持超低功耗,板载 STlink 仿真器

52b7d822-d776-11ec-bce3-dac502259ad0.png

5339a456-d776-11ec-bce3-dac502259ad0.png

根据 STM32 Nucleo-32 原理图,USART2(PA2 为 USART2_TX,PA15 为 USART2_RX)与板载仿真器连接,因此我们将它作为调试打印日志用。

535f8234-d776-11ec-bce3-dac502259ad0.png

这里 MQ-135 空气质量传感器 A0 输出电压值代表了空气质量状况,我们使用 ADC 来采集这个电压值。

53b5b87a-d776-11ec-bce3-dac502259ad0.png

按键使用 2 个,由于 STM32 GPIO 内部可配置上拉输入模式,因此无需额外的上拉电阻,我们使用最简单的方法,GPIO 输入检测到低电平表示按键按下。三色 LED 为共阴极 LED,采用 GPIO 输出高电平点亮的接线方式,限流电阻取 510 欧姆。

最终我们使用的外设如下:

54038e24-d776-11ec-bce3-dac502259ad0.png

03移植开始

3.1、首先来看 STM32CubeMX 的配置。

STM32CubeMX 生成的 PDF 报表详细描述了工程的配置信息,限于篇幅这里就不贴图了,

具体可查阅原文附件文档:

Nucleo-L432KCU6-Gokit-STM32CubeMX 配置报表.pdf

原文地址:club.gizwits.com/thread-3876-1-1.html

这里解释以下几个关键的配置:

a) 选择的微控制器型号为 STM32L432KCU6,这里大家根据实际选用的型号选择即可;b) 本板卡没有焊接外部高速晶振,因此选择的是内部晶振,倍频后,系统时钟为80MHz,这里时钟配置和我们后面配置定时器有关;c) 开启定时器 7,将作为按键扫描用,配置为 1ms 中断,定时器 7 时钟为f=80MHz/( Prescaler+1),向上计数模式,计数到(ARR+1),进入中断;d) 开启定时器 6,将作为心跳用,配置为 1ms 中断,定时器 6 时钟为f=80MHz/( Prescaler+1),向上计数模式,计数到(ARR+1),进入中断;e) 串口 2 选择 Asynchronous 模式,将作为打印日志调试用。配置为 115200 波特率、8位数据、无校验、1 位停止位,数据传输方向为发送和接收双向(PS:其实这里只用到了 TX);f) 串口 1 选择 Asynchronous 模式,将作为和 WIFI 模组通信用。参数需要符合机智云串口通信协议规定:即 9600 波特率、8 位数据、无校验、1 位停止位;另外和 WIFI 模组通信的串口 1 需要配置为中断接收;g) PB3 是板卡上的翠绿色 LED,给它添加标签 LED3;h) PB0 和 PA12 是连接了按键,配置为上拉输入模式,给它添加标签 Key1,Key2; i) 开启模数转换器 ADC1,通道 5 对应的 GPIO 是 PA0,配置为 Analog mode 并开启DMA 传输,传输方向是外设到内存且地址不自增,字长为 word;

3.2.工程文件的添加和修改

工程文件的添加和修改内容主要是:

按键驱动的移植;1ms 定时心跳的移植;串口读写的移植;工程框架的移植;

移植步骤参考:club.gizwits.com/thread-3641-1-1.html

下面简单解释下应用程序部分,即 ADC DMA 方式采集模拟电压信号

54509cbe-d776-11ec-bce3-dac502259ad0.png

我们在 main.c 文件定义全局变量 ADC_ConvertedValue 存放 ADC 数据寄存器读取值,ADC_ConvertedValueLocal 为换算的电压值,由于参考电压为 3.3V,ADC 精度为 12bit,

计算公式如下:

ADC_ConvertedValueLocal =ADC_ConvertedValue)*3.3/4095;

54b8b204-d776-11ec-bce3-dac502259ad0.png

初始化完成后调用 HAL_ADC_Start_DMA()启动 ADC,使用 ADC 的好处是无需 CPU干预,减少 CPU 负担。

550a7c60-d776-11ec-bce3-dac502259ad0.png

在 main.c 里定义一个 ADC 转换完成回调函数,里面重新启动 ADC 转换。

5595ba64-d776-11ec-bce3-dac502259ad0.png

在 userHandle()接口里面把 ADC 采集的数值赋值给 airQuality 字段即可,当然这里可以加上一些数据处理,转换代码。

接下来就是调试了,关于如何在机智云自助开发平台生成 STM32 工程和测试 APP 以及配置入网步骤,这里不再赘述,不清楚的请参考。

原文标题:3分钟打造手机APP远程空气质量监测应用(STM32L432 Nucleo)

文章出处:【微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19232

    浏览量

    405183
  • 机智云
    +关注

    关注

    3

    文章

    654

    浏览量

    27865
  • stm32cubemx
    +关注

    关注

    5

    文章

    290

    浏览量

    17516

原文标题:3分钟打造手机APP远程空气质量监测应用(STM32L432 Nucleo)

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在 STM32Cube CMake 工程中添加源文件

    STM32CubeMX 能够很方便的导出 CMake 工程。例如,如下图所示在 STM32CubeMX的 ToolChain/IDE 中选择 Cmake。CMake 工程可以很容易被
    发表于 04-15 16:07 0次下载

    基于 X-Cube-FreeRTOS_Heap4 和 CubeMX 生成 UCPD 项目介绍

    1. 前言某客户反映参考我们的文档 AN5418《How to build a simple USB-PD sink applicationwith STM32CubeMX》去配置 FreeRTOS
    发表于 04-15 15:59 0次下载

    LAT1574_如何在 STM32Cube CMake 工程中添加源文件

    STM32CubeMX 能够很方便的导出 CMake 工程。例如,如下图所示在 STM32CubeMX的 ToolChain/IDE 中选择 CmakeCMake 工程可以很容易被
    发表于 03-11 10:46 0次下载

    基于 X-Cube-FreeRTOS_Heap4 和 CubeMX 生成 UCPD 项目介绍

    某客户反映参考我们的文档 AN5418《How to build a simple USB-PD sink applicationwith STM32CubeMX》去配置 FreeRTOS 生成
    发表于 01-04 11:18 0次下载

    STM32快速上实战指南:手把手带你入门机智

    本项目基于STM32F103C8T6最小系统板,采用HAL库开发方式,结合ESP01sWi-Fi模块,实现将各类传感器数据快速上传至机智平台。通过移植
    的头像 发表于 12-10 18:04 1551次阅读
    <b class='flag-5'>STM32</b>快速上<b class='flag-5'>云</b>实战指南:手把手带你入门<b class='flag-5'>机智</b><b class='flag-5'>云</b>

    请问RT-Thread与stm32cubemx联合开发的原理是什么?

    在使用RT-Thread与stm32cubemx联合开发的原理是什么,cubemx在其中主要起到了哪些功能呢?
    发表于 10-11 15:49

    STM32cubeMX生成配置rt-thread引用问题求解

    如题,本人小白,刚接触rt-thread,STM32F1/4简便配置起见利用cubeMX自动生成,测试几次后直接蒙了,不知道哪些文件是rt-thread项目必须的,网上说法也五花八门,说代码屏蔽某些
    发表于 09-12 07:21

    意法半导体:STM32CubeMX将不再集成STM32CubeIDE中

    从2025年11月发布的版本开始,我们将仅以 独立 版本的形式提供 STM32CubeIDE 和 STM32CubeMXSTM32CubeMX将不再集成
    的头像 发表于 09-01 17:18 4093次阅读

    STM32WB55使用cubemx生成的代码编译报错怎么解决?

    使用cubemx生成的代码有一处变量重复命名报错
    发表于 08-05 06:37

    求助,关于STM32Cubemx 6.15版本生成工程的文件编码的问题求解

    之前升级6.13和6.14版本的时候重新生成工程会将文件编码强制转换成UTF-8格式,导致中文注释乱码。但是在安装文件夹下面的STM32CubeMX.l4j.ini文件里面添加一行
    发表于 07-29 12:31

    使用STM32CubeMX的时候创建的工程已经使用的板载资源如何去掉?

    在使用STM32CubeMX的时候创建的工程已经使用的板载资源如何去掉?在基于开发板进行工程创建的时候会把板载资源直接初始化,后面想要用不同的功能配置,如何初始配置去掉?
    发表于 07-22 07:13

    STM32+esp8266连接机智,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植

    本教程将详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智
    的头像 发表于 07-15 18:54 1635次阅读
    <b class='flag-5'>STM32</b>+esp8266连接<b class='flag-5'>机智</b><b class='flag-5'>云</b>,上传温湿度数据并控制继电器开关(平台配置、代码<b class='flag-5'>生成</b>、代码<b class='flag-5'>移植</b>)

    机智配网教程 第二期:生成MCU代码包与调试

    在上一期中,我们介绍了机智GAgent固件的烧录过程,并在测试中完成了机智开发者账号的注册及数据点的创建。接下来,我将继续为大家讲解如何生成
    的头像 发表于 06-28 10:02 1093次阅读
    <b class='flag-5'>机智</b><b class='flag-5'>云</b>配网教程 第二期:<b class='flag-5'>生成</b>MCU代码包与调试

    基于STM32 HAL库与标准库的esp8266接入机智方案(二)

    在《基于STM32HAL库与标准库的esp8266接入机智方案(一)》中,我们详细介绍了硬件连接和机智客户端的创建。本篇将重点讲解如何下
    的头像 发表于 05-28 18:02 1770次阅读
    基于<b class='flag-5'>STM32</b> HAL库与标准库的esp8266接入<b class='flag-5'>机智</b><b class='flag-5'>云</b>方案(二)

    基于STM32 HAL库与标准库的ESP8266接入机智方案(一)

    最近在项目中需要进行物联网平台对接,之前我找到了一些资料,发现机智是一个不错的平台。机智的资料丰富,且操作简便,可以根据MCU自动
    的头像 发表于 05-28 18:02 1399次阅读
    基于<b class='flag-5'>STM32</b> HAL库与标准库的ESP8266接入<b class='flag-5'>机智</b><b class='flag-5'>云</b>方案(一)