【野火】瑞萨RA MCU创意氛围赛+基于瑞萨单片机的环境温湿度监测装置

本文主要是介绍【野火】瑞萨RA MCU创意氛围赛+基于瑞萨单片机的环境温湿度监测装置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【野火】瑞萨RA MCU创意氛围赛+基于瑞萨单片机的环境温湿度监测装置

  • 1.设计简介
  • 2.硬件设计
    • 2.1主控板
    • 2.2DHT11温湿度采集模块
    • 2.3SPI屏幕
  • 3.软件设计
  • 4.效果展示
  • 5.部分代码

在这里插入图片描述
功能:
1.通过DHT11温湿度模块采集环境温湿度数据
2.通过软件SPI实现SPI屏幕显示温湿度数据
3.通过上位机显示温湿度数据并将数据换算成图像显示

视频展示:【野火】瑞萨RA MCU创意氛围赛+基于瑞萨单片机的环境温湿度监测装置

1.设计简介

最开始的设计是准备使用DHT11温湿度模块、MQ-2烟雾模块、人体红外做数据采集,使用板载ESP8266做WiFi数据传输,通过HTTP或者MQTT协议连接OneNET平台,实现云平台数据收发,同时运行RTOS操作系统。但由于本人忙于工作,无法按时制作,于是制作了简易版本,本次设计选择使用野火启明6M5单片机,采集模块使用的是DHT11温湿度模块,显示模块使用的是SPI屏幕,同时还做了串口通讯。

2.硬件设计

在这里插入图片描述

2.1主控板

本次使用的是瑞萨的R7FA6M5BH3CFC单片机。RA 产品家族单片机 (MCU) 于 2019 年 10 月推出,丰富了瑞萨的 32 位 MCU 系列产品。除了 RA系列之外的 32 位 MCU 产品还有 RX 系列(CPU 使用瑞萨自家 RX 内核)和 Renesas Synergy™ 平台 MCU。Renesas Advanced (RA) 32 位 MCU 是采用 Arm® Cortex®-M33、-M23 和 -M4 处理器内核,并经过 PSA Certified ® 1 级认证的、行业领先的 32 位 MCU。是 Arm 公司于 2017 年推出的行业通用框架,旨在打造各种安全的互联设备。许多业界领先企业已宣布支持该架构的基础原则,为物联网设备和解决方案加入令人信任的安全级别。
RA 系列的所有 MCU 在功能上和大部分引脚上都是兼容的。小型器件上的外设大体上是大型器件上外设的子集。这便于实现可扩展性和不同器件之间的代码重用。对于不同系列的类似封装,其引脚排列几乎相同。
瑞萨 RA 系列产品家族包括:
• RA2 系列,适用于低功耗应用;
• RA4 系列,适用于需要低功耗、高性能和高安全性的设备;
• RA6 系列,具有卓越的连接性能和安全性能;
• RA8 系列,可以为采用人机界面、连接、安全和模拟功能的应用提供出色性能。

2.2DHT11温湿度采集模块

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
在这里插入图片描述
模块使用单总线连接,DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图所示
在这里插入图片描述
引脚连接为:
P0.10——DATA
Mode选择Output mode(Initial Low)
在这里插入图片描述

2.3SPI屏幕

屏幕使用了软件SPI,SPI协议是由摩托罗拉公司提出的通讯协议(SerialPeripheralInterface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。
在这里插入图片描述
SPI通讯使用3条总线及片选线,3条总线分别为SCK、MOSI、MISO,片选线为,它们的作用介绍如下:
(1)(SlaveSelect):从设备选择信号线,常称为片选信号线,也称为NSS、CS,以下用NSS表示。
当有多个SPI从设备与SPI主机相连时,设备的其它信号线SCK、MOSI及MISO同时并联到相同的SPI总线上,即无论有多少个从设备,都共同只使用这3条总线;而每个从设备都有独立的这一条NSS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。I2C协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而SPI协议中没有设备地址,它使用NSS信号线来寻址,当主机要选择从设备时,把该从设备的NSS信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯。所以SPI通讯以NSS线置低电平为开始信号,以NSS线被拉高作为结束信号。
(2)SCK(SerialClock):时钟信号线,用于通讯数据同步。它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如RA6M5的SPI时钟频率最大为fpclkA/2,两个设备之间通讯时,通讯速率受限于低速设备。
(3)MOSI(MasterOutput,SlaveInput):主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
(4)MISO(MasterInput,,SlaveOutput):主设备输入/从设备输出引脚。主机从这条信线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。
引脚连接为:
P0.2——MOSI
P0.1——CLK
P0.7——CS
P0.6——DC
P0.3——RST
P0.8——BL
使用的是软件SPI,所以引脚配置Mode选择Output mode(Initial High)
在这里插入图片描述

3.软件设计

需要注意一下串口的配置,串口通讯 (Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。
串口配置如下图所示,需要主要,引脚一定是P511\P512,引脚选错是无法监测到输出的
在这里插入图片描述
在“属性”窗口中配置名字(name)、通道(Channel)、
回调函数(Callback)名字即可,引脚(Pins)、波特率(Baud Rate)等其他的属性按照默认的配
置即可。
在这里插入图片描述
Name:名字,根据读者需求设置即可。
Channel :通道,根据 SCI 号设置即可,例如实验使用 SCI4,则这里配置为通道 4。
Data Bits: 每个字(word)的比特(bit)数,默认为 8bits
Parity :校验模式,可选择“Odd”奇校验,“Even”偶校验或“None”无校验。
Stop Bits: 停止位,可选 1 或 2bit。
Baud Rate :波特率
Baud Rate Modulation :波特率调制,通过调整时钟周期,以减少申请波特率与实际波特率之间的误差。
Max Error(%) :计算波特率时允许的最大百分比误差。
Callback: 回调函数的名字,根据读者需求设置即可。
Receive Interrupt Priority :接收中断优先级
Transmit Data Empty InterruptPriority:发送数据空中断优先级
Transmit End Interrupt Priority: 发送完成中断优先级
Error Interrupt Priority: 错误中断优先级

使用 printf 函数时,需要使用到堆,默认情况下堆的大小为 0,因此我们需要修改堆的大小。可
以在 FSP 配置界面中的“BSP”属性栏的“RA Common”中通过修改“Heap size”来设置堆区大
小。这里需要设置为 8 的整数倍,推荐至少为 4K(0x1000)
在这里插入图片描述

4.效果展示

上位机效果如图所示
在这里插入图片描述
实物效果
在这里插入图片描述

5.部分代码

hal_entry.c代码:

#include "hal_data.h"
/** 作者:PrairieOne* csdn:PrairieOne* 邮箱:1965180365@qq.com* 嵌入式技术交流群:583914666*/FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER/* 用户头文件包含 */
#include "led/bsp_led.h"
#include "debug_uart/bsp_debug_uart.h"
#include "led/ST7735.h"
#include "led/bsp_dht11.h"//温湿度变量定义
uint8_t humdity_integer;//湿度整数
uint8_t humdity_decimal;//湿度小数
uint8_t temp_integer ;//温度整数
uint8_t temp_decimal ;//温度小数
uint8_t dht11_check ;//校验值/*******************************************************************************************************************//*** main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function* is called by main() when no RTOS is used.**********************************************************************************************************************/
void hal_entry(void)
{/* TODO: add your own code here */DHT11_Init();// DHT11 初始化XTFT_Init_GPIO();//LCD引脚初始化LCD_Init();//LCD——SPI初始化ST7735_FillScreen(ST7735_BLACK);R_BSP_PinWrite(BSP_IO_PORT_00_PIN_10, BSP_IO_LEVEL_HIGH); //DHT11端口配置LED_Init();         // LED 初始化Debug_UART4_Init(); // SCI4 UART 调试串口初始化printf("PrairieOne\r\n");
//    printf("打开串口助手发送数据,接收窗口会回显所发送的数据\r\n");while(1){DHT11_Read();// ST7735_DrawString(0, 0, "CSDN", Font_7x10, ST7735_RED, ST7735_BLACK);//ST7735_DrawString(0, 32, "CSDN", Font_16x26, ST7735_BLUE, ST7735_BLACK);ST7735_DrawString(0, 0, "RA6M5", Font_11x18, ST7735_GREEN, ST7735_BLACK);ST7735_DrawString(0, 16, "PrairieOne", Font_11x18, ST7735_GREEN, ST7735_BLACK);ST7735_DrawString(0, 32, "-----------", Font_11x18, ST7735_RED, ST7735_BLACK);ST7735_DrawString(0, 48, "Temp:", Font_11x18, ST7735_GREEN, ST7735_BLACK);ST7735_DrawString(0, 64, "Humi:", Font_11x18, ST7735_GREEN, ST7735_BLACK);LCD_ShowIntNum(55, 48, temp_integer, Font_11x18, ST7735_GREEN, ST7735_BLACK);LCD_ShowIntNum(55, 64, humdity_integer, Font_11x18, ST7735_GREEN, ST7735_BLACK);printf("T%dPH%dI", temp_integer, humdity_integer);//printf("Temp%dHumi%d", temp_integer, humdity_integer);printf("\r\n");ST7735_DrawString(77, 48, "C", Font_11x18, ST7735_GREEN, ST7735_BLACK);ST7735_DrawString(77, 64, "%", Font_11x18, ST7735_GREEN, ST7735_BLACK);LED1_ON; // LED1亮LED2_ON; // LED2亮LED3_ON; // LED3亮// printf("1\r\n");R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); //延时1秒LED1_OFF; // LED1灭LED2_OFF; // LED2灭LED3_OFF; // LED3灭// printf("2\r\n");
//        printf((uint8_t *)123);R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS); //延时1秒}#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}/*******************************************************************************************************************//*** This function is called at various points during the startup process.  This implementation uses the event that is* called right before main() to set up the pins.** @param[in]  event    Where at in the start up process the code is currently at**********************************************************************************************************************/
void R_BSP_WarmStart(bsp_warm_start_event_t event)
{if (BSP_WARM_START_RESET == event){
#if BSP_FEATURE_FLASH_LP_VERSION != 0/* Enable reading from data flash. */R_FACI_LP->DFLCTL = 1U;/* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and* C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
#endif}if (BSP_WARM_START_POST_C == event){/* C runtime environment and system clocks are setup. *//* Configure pins. */R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);}
}#if BSP_TZ_SECURE_BUILDBSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{}
#endif

这篇关于【野火】瑞萨RA MCU创意氛围赛+基于瑞萨单片机的环境温湿度监测装置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340039

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用