【野火】瑞萨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

相关文章

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

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

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

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

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

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

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