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

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

3天内不再提示

基于瑞萨RA6M5 MCU的环境监测系统设计

瑞萨MCU小百科 来源:瑞萨MCU小百科 2023-09-25 12:26 次阅读

1设计简介

本项目初步设计思路是打算以瑞萨单片机作为控制和数据处理的单元,使用温湿度,光照传感器去监测周围的环境参数,在屏幕上完成传感器数据和相关信息的显示。同时,使用WIFI无线模组与单片机之间进行数据交互,接入物联网云平台。尝试利用上位机实现对于温度、湿度、光照强度等相关环境参数监测。但是由于时间原因以及个人能力有限制,只完成了部分设计。本项目是基于启明6M5开发板完成了环境监测系统设计,传感器DHT11获取温度湿度的数据;传感器GY39获取光照强度数据;0.96寸OLED屏幕提供显示功能,能够显示传感器数据以及相关信息。编写上位机软件,实现温湿度传感器数据的上报。

2设计框架

04467d7a-5b59-11ee-939d-92fbcf53809c.png    

3项目说明

3.1 主控板

本项目是基于启明6M5开发板完成设计,RA6M5芯片配置如下:采用 Arm Cortex-M33 内核的瑞萨 RA 系列 32 位 MCU;主芯片为的R7FA6M5BH3CFC,主高达200MHz,2MB的代码闪 存,8KB数据闪存,以及512KB的带奇偶校验/ECC的SRAM。启明6M5开发板具有丰富的接口与外设,例如基本的LED,按键,电容按键,蜂鸣器等,同时也具有RS232,RS485,CAN,以太网接口,板载ESP8266无线WiFi等。

045eb7fa-5b59-11ee-939d-92fbcf53809c.jpg

0474e57a-5b59-11ee-939d-92fbcf53809c.png

3.2 传感器模块

①温湿度传感器DHT11是一款有已校准数字信号输出的温湿度传感器。精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。

更多DHT11信息请参考:https://baike.sogou.com/v73984313.htm?fromTitle=DHT11

下图为DHT11的引脚说明图,DATA引脚为信号输入输出。 049a3dde-5b59-11ee-939d-92fbcf53809c.png    

② 光照强度传感器GY-39

GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。

工作原理是,MCU 收集各种传感器数据,统一处理,直接输出计算后的结果。此模块,有两种方式读取数据,即串口 UART(TTL 电平)或者 IIC(2 线)。串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。可适应不同的工作环境,与单片机及电脑连接。

模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU 不参与数据处理工作。

传感器技术参数

04b84c8e-5b59-11ee-939d-92fbcf53809c.jpg

GY39-MCU-IIC协议:

04c9ec46-5b59-11ee-939d-92fbcf53809c.png

传感器接线示意图:

04ea6052-5b59-11ee-939d-92fbcf53809c.jpg

3.3OLED显示模块

OLED,即有机发光二极管Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快的特点。

目前市面上常用的0.96寸OLED屏幕通讯方式主要有SPI和I2C两种!SPI为4线制较多,而I2C为2线制。2种通讯协议较为浅显的区别:总所周知,SPI的通讯速度明显快于I2C的通讯速度,所以通常使用SPI通讯协议的OLED屏幕可以实现更高的帧数显示,画面更为流畅丝滑。本次实验所采用的0.96寸OLED屏幕为I2C通讯方式,故在此稍微给读者介绍一下I2C通讯原理。IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。

结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

04fe69bc-5b59-11ee-939d-92fbcf53809c.jpg      

4项目配置

瑞萨RA系列的MCU,提供了图形化配置工具,和STM32CubeMX类似,这大大的方便了开发者配置。同时,瑞萨的Flexible Software Package 旨在以较低的内存占用量提供快速高效的驱动程序和协议栈。FSP 集成了中间件协议栈、独立于 RTOS硬件抽象层(HAL)驱动程序, 以及最基础的板级支持包(BSP)驱动程序。在本次的设计中,主要是对于传感器模块,显示模块进行相关的配置,下面是配置过程。

4.1 OLED显示模块

选择了使用EBF模块接口上的I2C接口,因为改接口的布线顺序和OLED的I2C接口一致。可以直接将OLED插上去,减少了接线。该接口使用的是SCI6的I2C功能。

Pin下配置如下:选择SCI6,复用I2C模式。 05132bfe-5b59-11ee-939d-92fbcf53809c.png0523c0fe-5b59-11ee-939d-92fbcf53809c.png053c7554-5b59-11ee-939d-92fbcf53809c.png

4.2 传感器模块

温湿度传感器DHT11,任意配置一个GPIO端口就可以了,不需要其他的配置,只要注意时序问题即可,重点在GY39传感器的配置。Pin下配置如下:选择SCI2,复用I2C模式。

0550d3b4-5b59-11ee-939d-92fbcf53809c.png055eca78-5b59-11ee-939d-92fbcf53809c.png05797670-5b59-11ee-939d-92fbcf53809c.png

4.3 主函数代码

主函数的代码主要是传感器的基本配置,OLED模块的配置,调试串口的配置与上位机通信的格式。

1//--------------------------------------------------------------------------------------------------
2//函数头文件|0|1|2|3|4|5|6|7|8|9
3//--------------------------------------------------------------------------------------------------
4#include"hal_data.h"
5#include"oled.h"
6#include"bmp.h"
7#include"bsp_debug_uart.h"
8#include"bsp_led.h"
9#include"bsp_dht11.h"
10#include"bsp_gpt_timing.h"
11
12#defineSUCCESS1
13
14voidHardware_init(void)undefined
15FSP_CPP_HEADER
16voidR_BSP_WarmStart(bsp_warm_start_event_tevent)undefined
17undefined
18
19/*Callbackfunction*/
20i2c_master_event_tundefined
21voidsci6_i2c_master_callback(i2c_master_callback_args_t*p_args)
22undefined
23undefined
24undefinedifundefinedNULLundefined
25undefined
26undefined/*capturecallbackeventforvalidatingthei2ctransferevent*/
27undefined
28undefined
29
30undefined
31
32voidsci2_i2c_master_callback(i2c_master_callback_args_t*p_args)
33undefined
34undefined
35undefinedifundefinedNULLundefined
36undefined
37undefined/*capturecallbackeventforvalidatingthei2ctransferevent*/
38undefined
39undefined
40
41undefined
42
43
44fsp_err_tundefined
45uint32_tundefined1000undefined
46
47undefined
48uint8_tundefined
49externundefineduint8_tundefined
50externundefineduint32_tundefined
51typedefundefinedstruct
52{
53undefineduint32_tundefined
54undefineduint16_tundefined
55undefineduint16_tundefined
56undefineduint16_tundefined
57undefined
58undefined
59uint32_tundefined
60floatundefined
61
62//==================================================================================================
63//函数说明:硬件初始化
64//函数备注:Hardware_init
65//--------------------------------------------------------------------------------------------------
66//|-|-|0|1|2|3|4|5|6|7|8|9
67//==================================================================================================
68voidHardware_init(void)
69undefined
70undefined//SCI4UART调试串口初始化
71undefined
72undefinedprintfundefined"Debug-UART4-InitOK "undefined
73undefined
74undefinedprintfundefined"LED_InitOK "undefined
75undefinedprintfundefined"IIC-ConfigStart "undefined
76undefined
77undefinedprintfundefined"DHT11_InitOK "undefined
78undefined/*InitializetheI2Cmodule*/
79undefined
80undefined/*Handleanyerrors.Thisfunctionshouldbedefinedbytheuser.*/
81undefined
82undefinedprintfundefined"IIC-ConfigOK "undefined
83undefined//初始化OLED
84undefined
85undefinedprintfundefined"oled-InitOK "undefined
86
87undefined
88
89
90voidread_bme(void)
91undefined
92undefineduint16_tundefined2undefined0undefined
93undefineduint8_tundefined10undefined0x00undefined//接收读取后的数据
94undefineduint8_tundefined0x04undefined//写数据
95undefined
96undefined1undefinedtrueundefined
97undefined
98undefined3undefined
99undefined10undefinedfalseundefined
100undefined3undefined
101undefined
102undefined
103
104undefined0undefined8undefined1undefined
105undefined0undefined2undefined8undefined3undefined
106undefined1undefined4undefined8undefined5undefined
107
108undefineduint32_tundefined0undefined16undefined1undefined
109undefined6undefined8undefined7undefined
110undefined8undefined8undefined9undefined
111undefined
112voidread_lux(void)
113undefined
114undefineduint16_tundefined2undefined0undefined
115undefineduint8_tundefined4undefined0undefined
116undefineduint8_tundefined0x00undefined//写数据
117undefined
118undefined1undefinedtrueundefined
119undefined
120undefined3undefined
121undefined4undefinedfalseundefined
122undefined3undefined
123undefined
124undefined
125undefined0undefined0undefined8undefined1undefined
126undefined1undefined2undefined8undefined3undefined
127undefineduint32_tundefined0undefined16undefined1undefined
128
129undefined
130
131//==================================================================================================
132//函数说明:主函数入口
133//函数备注:hal_entry
134//--------------------------------------------------------------------------------------------------
135//|-|-|0|1|2|3|4|5|6|7|8|9
136//==================================================================================================
137
138/*******************************************************************************************************************//**
139*main()isgeneratedbytheRAConfigurationeditorandisusedtogeneratethreadsifanRTOSisused.Thisfunction
140*iscalledbymain()whennoRTOSisused.
141**********************************************************************************************************************/
142voidhal_entry(void)
143undefined
144undefined/*TODO:addyourowncodehere*/
145
146undefined
147undefinedprintfundefined"RA6M5-Board-InitOK "undefined
148
149undefined0undefined0undefined0undefined//瑞
150undefined16undefined0undefined1undefined//萨
151undefined32undefined0undefined5undefined//电
152undefined48undefined0undefined6undefined//子
153undefined60undefined0undefined"Renesas"undefined16undefined
154undefined0undefined2undefined2023undefined4undefined16undefined//显示ASCII字符的码值
155undefined32undefined2undefined2undefined//中文字->年
156undefined48undefined2undefined8undefined2undefined16undefined//显示ASCII字符的码值
157undefined64undefined2undefined3undefined//中文字->月
158undefined80undefined2undefined5undefined2undefined16undefined//显示ASCII字符的码值
159undefined96undefined2undefined4undefined//中文字->日
160
161undefined0undefined4undefined7undefined//中文字->温
162undefined16undefined4undefined9undefined//中文字->度
163
164undefined64undefined4undefined8undefined//中文字->湿
165undefined80undefined4undefined9undefined//中文字->度
166
167undefined0undefined6undefined"Light:"undefined16undefined
168undefined96undefined6undefined"Lux"undefined16undefined
169undefined
170undefined//DHT11端口配置
171
172
173undefinedwhileundefined1undefined
174undefined
175
176undefinedifundefined1undefined
177undefined
178undefined//printf("time1s_flag...... ");
179undefinedprintfundefined"T%dPH%dI"undefined
180undefinedprintfundefined" "undefined
181
182undefined
183
184undefined32undefined4undefined2undefined16undefined
185undefined96undefined4undefined2undefined16undefined
186undefined
187undefined//光照传感器
188undefined100undefined
189undefined//printf("LightLux:%.2flux ",(float)LightLux);
190undefined48undefined6undefined5undefined16undefined
191undefined
192
193
194
195#ifBSP_TZ_SECURE_BUILD
196undefined/*Enternon-securecode*/
197undefined
198#endif
199undefined
200
201/*******************************************************************************************************************//**
202*Thisfunctioniscalledatvariouspointsduringthestartupprocess.Thisimplementationusestheeventthatis
203*calledrightbeforemain()tosetupthepins.
204*
205*@param[in]eventWhereatinthestartupprocessthecodeiscurrentlyat
206**********************************************************************************************************************/
207voidR_BSP_WarmStart(bsp_warm_start_event_tevent)
208undefined
209undefinedifundefined
210undefined
211#ifBSP_FEATURE_FLASH_LP_VERSION!=0
212
213undefined/*Enablereadingfromdataflash.*/
214undefined1Uundefined
215
216undefined/*WouldnormallyhavetowaittDSTOP(6us)fordataflashrecovery.Placingtheenablehere,beforeclockand
217*Cruntimeinitialization,shouldnegatetheneedforadelaysincetheinitializationwilltypicallytakemorethan6us.*/
218#endif
219undefined
220
221undefinedifundefined
222undefined
223undefined/*Cruntimeenvironmentandsystemclocksaresetup.*/
224
225undefined/*Configurepins.*/
226undefined
227undefined
228undefined
229
230#ifBSP_TZ_SECURE_BUILD
231
232BSP_CMSE_NONSECURE_ENTRYvoidtemplate_nonsecure_callable()undefined
233
234/*TrustzoneSecureProjectsrequireatleastonenonsecurecallablefunctioninordertobuild(Removethisifitisnotrequiredtobuild).*/
235BSP_CMSE_NONSECURE_ENTRYvoidtemplate_nonsecure_callable()
236undefined
237
238undefined
239#endif

5测试效果

0599ccf4-5b59-11ee-939d-92fbcf53809c.png

05a8a742-5b59-11ee-939d-92fbcf53809c.png      

6总结

首先非常感谢野火举办的瑞萨RA MCU创意氛围赛,能让我入围获得这次参赛的机会。本次创意氛围赛学习到了很多东西,对RA6M5单片机的内核以及控制有了了解,野火官方提供的手册例程使用起来也很方便,能够快速上手,便于开发使用。本项目初步设计思路是打算以瑞萨单片机作为控制和数据处理的单元,使用传感器去监测周围的环境参数,在屏幕上完成传感器数据和相关信息的显示。同时,使用无线模组接入物联网云平台。尝试利用上位机实现对于相关环境参数监测。但是由于时间原因以及个人能力有限制,只完成了部分设计。虽然现在完成的功能较为简单,但是希望后面有时间继续完善系统设计,添加实时操作系统,接入云平台,利用微信小程序,app等相关技术完善作品,最后,再次感谢野火和瑞萨举办RA-MCU创意氛围赛,提供了学习机会。

审核编辑:汤梓红

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

    关注

    6001

    文章

    43973

    浏览量

    620830
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343617
  • 瑞萨
    +关注

    关注

    32

    文章

    22214

    浏览量

    84915
  • 环境监测系统

    关注

    0

    文章

    35

    浏览量

    9938
  • RA6M5
    +关注

    关注

    0

    文章

    6

    浏览量

    346

原文标题:【瑞萨RA MCU创意氛围赛作品赏析】项目7——基于瑞萨RA6M5的环境监测系统

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCU的相关资料分享

    电子推出了适用于空间受限、能源敏感的物联网 (IoT) 端点应用的新型微控制器 (MCU),包括可穿戴设备、医疗设备、电器和工业自动化。新的 RA2E2
    发表于 11-11 08:18

    基于RT-Thread Studio的CPK-RA6M4开发板环境搭建方案推荐

    1、基于RT-Thread Studio的CPK-RA6M4开发板环境搭建CPK-RA6M4 开发板特点基于
    发表于 07-14 17:45

    基于RT-Thread+RA6M4 + LVGL的家庭空气质量监测系统设计方案

    1、基于RT-Thread+RA6M4 + LVGL的家庭空气质量监测系统设计整体架构以前使用下列传感器做了空气质量监测采集器:这个采集器通过串口输出各种测量值,本次实验借助
    发表于 07-22 11:33

    RA4M3移植rtthread仿真无法进入主线怎么解决呢

    使用KEIL5编译环境,按照单片机加载rtthread教程,移植rtthread到RA4M3完成后编译通过,运行时发现进不去主线程,调试
    发表于 08-05 10:17

    求一种基于RT-Thread+RA6M4的植物生长环境检测系统设计方案

    一、总体设计本次有幸参与电子 MCU RT-Thread开发设计大赛,植物生长环境检测系统基于
    发表于 08-08 11:31

    基于RT-Thread+RA6M4的家庭环境监测系统设计资料介绍

    1、基于RT-Thread+RA6M4的家庭环境监测系统设计本项目是基于芯片RA6M4,和R
    发表于 08-16 14:57

    RA4系列开发板体验】1.MDK搭建环境搭建以及LED闪烁程序

    M33系列MCU,看丰富的外设以及不错的核心配置,生态工作室推出的最小系统板,能给对这款MCU
    发表于 11-27 18:47

    【精品聚合】RA-Eco-RA4M2-100PIN开发板试用报告作品汇总

    RA4系列开发板体验】 参考野火RA6M5的例程移至到RA4M2-mdk开发环境-printf串口重定向+systick延时持续更新中
    发表于 12-02 16:43

    RA4系列开发板体验】开箱

    首先感谢电子 & 电子发烧友给与的机会。RA-Eco-RA4M2-100PIN基于R7FA4M2AD3CFP MCU,采用了Co
    发表于 12-05 08:28

    【野火启明6M5开发板体验】野火启明开发板和RA MCU介绍

    首先感谢电子发烧友和野火,已经收到野火启明6M5开发板。野火启明6M5开发板包装野火启明6M5开发板开发板简介:野火启明6M5开发板是野火科技基于
    发表于 12-14 22:31

    【野火启明6M5开发板体验】1 RA6M5开发环境搭建

    开发环境:IDE:MKD 5.30开发板:野火启明6M5开发板MCU:R7FA6M5BH3CFC
    发表于 12-21 22:49

    【名单公布】RA4M2(Cortex-M33内核MCU)物联网网关设计挑战赛初审通过名单

    初审名单公布开发板及模块申请申请链接 :RA4M2(Cortex-M33内核MCU)物联网网关设计挑战赛模块申请表单*注:请已通过初审的
    发表于 01-06 17:04

    【野火启明6M5开发板体验】5 RA6M5 PWM输出

    ,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。在RA6M5系列 MCU 中有两种定时器,一种是通用 PWM 定时
    发表于 01-07 10:09

    RA MCU创意氛围赛】3. 硬件I2C驱动OLED显示汉字

    经常使用的一个显示屏,主要是因为使用简单,可以通过IIC进行通信,也有支持SPI通信的OLED。 本文讲解如何使用启明RA6M5来驱动OLED显示中英文信息。 1. IIC硬件连接 我把原理图翻了一个遍,最终
    发表于 05-26 14:06

    RAMCU创意氛围赛】基于RA6M5的电子墨水屏微信信息站

    FreeRTOS --一款开源的MCU上运行的实时多任务操作系统E-ink Paper—微雪电子纸驱动开源代码,用于驱动电子墨水屏 三、项目所涉及的材料 RA6M5 野火
    发表于 08-28 04:06