1設(shè)計(jì)簡(jiǎn)介
本項(xiàng)目初步設(shè)計(jì)思路是打算以瑞薩單片機(jī)作為控制和數(shù)據(jù)處理的單元,使用溫濕度,光照傳感器去監(jiān)測(cè)周?chē)沫h(huán)境參數(shù),在屏幕上完成傳感器數(shù)據(jù)和相關(guān)信息的顯示。同時(shí),使用WIFI無(wú)線模組與單片機(jī)之間進(jìn)行數(shù)據(jù)交互,接入物聯(lián)網(wǎng)云平臺(tái)。嘗試?yán)?a target="_blank">上位機(jī)實(shí)現(xiàn)對(duì)于溫度、濕度、光照強(qiáng)度等相關(guān)環(huán)境參數(shù)監(jiān)測(cè)。但是由于時(shí)間原因以及個(gè)人能力有限制,只完成了部分設(shè)計(jì)。本項(xiàng)目是基于啟明6M5開(kāi)發(fā)板完成了環(huán)境監(jiān)測(cè)系統(tǒng)設(shè)計(jì),傳感器DHT11獲取溫度濕度的數(shù)據(jù);傳感器GY39獲取光照強(qiáng)度數(shù)據(jù);0.96寸OLED屏幕提供顯示功能,能夠顯示傳感器數(shù)據(jù)以及相關(guān)信息。編寫(xiě)上位機(jī)軟件,實(shí)現(xiàn)溫濕度傳感器數(shù)據(jù)的上報(bào)。
2設(shè)計(jì)框架
? ?
3項(xiàng)目說(shuō)明
3.1 主控板
本項(xiàng)目是基于啟明6M5開(kāi)發(fā)板完成設(shè)計(jì),RA6M5芯片配置如下:采用 Arm Cortex-M33 內(nèi)核的瑞薩 RA 系列 32 位 MCU;主芯片為的R7FA6M5BH3CFC,主高達(dá)200MHz,2MB的代碼閃 存,8KB數(shù)據(jù)閃存,以及512KB的帶奇偶校驗(yàn)/ECC的SRAM。啟明6M5開(kāi)發(fā)板具有豐富的接口與外設(shè),例如基本的LED,按鍵,電容按鍵,蜂鳴器等,同時(shí)也具有RS232,RS485,CAN,以太網(wǎng)接口,板載ESP8266無(wú)線WiFi等。
3.2 傳感器模塊
①溫濕度傳感器DHT11是一款有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度傳感器。精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。
更多DHT11信息請(qǐng)參考:https://baike.sogou.com/v73984313.htm?fromTitle=DHT11
下圖為DHT11的引腳說(shuō)明圖,DATA引腳為信號(hào)輸入輸出。 ? ?
② 光照強(qiáng)度傳感器GY-39
GY-39 是一款低成本,氣壓,溫濕度,光強(qiáng)度傳感器模塊。工作電壓 3-5v,功耗小,安裝方便。
其工作原理是,MCU 收集各種傳感器數(shù)據(jù),統(tǒng)一處理,直接輸出計(jì)算后的結(jié)果。此模塊,有兩種方式讀取數(shù)據(jù),即串口 UART(TTL 電平)或者 IIC(2 線)。串口的波特率有 9600bps 與 115200bps,可配置,有連續(xù),詢問(wèn)輸出兩種方式,可掉電保存設(shè)置??蛇m應(yīng)不同的工作環(huán)境,與單片機(jī)及電腦連接。
模塊另外可以設(shè)置單獨(dú)傳感器芯片工作模式,作為簡(jiǎn)單傳感器模塊,MCU 不參與數(shù)據(jù)處理工作。
傳感器技術(shù)參數(shù)
GY39-MCU-IIC協(xié)議:
傳感器接線示意圖:
3.3OLED顯示模塊
OLED,即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode),又稱(chēng)為有機(jī)電激光顯示(Organic Electroluminesence Display, OELD)。OLED 由于同時(shí)具備自發(fā)光,不需背光源、對(duì)比度高、厚度薄、視角廣、反應(yīng)速度快的特點(diǎn)。
目前市面上常用的0.96寸OLED屏幕通訊方式主要有SPI和I2C兩種!SPI為4線制較多,而I2C為2線制。2種通訊協(xié)議較為淺顯的區(qū)別:總所周知,SPI的通訊速度明顯快于I2C的通訊速度,所以通常使用SPI通訊協(xié)議的OLED屏幕可以實(shí)現(xiàn)更高的幀數(shù)顯示,畫(huà)面更為流暢絲滑。本次實(shí)驗(yàn)所采用的0.96寸OLED屏幕為I2C通訊方式,故在此稍微給讀者介紹一下I2C通訊原理。IIC(Inter-Integrated Circuit)總線是一種由 PHILIPS 公司開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。它是由數(shù)據(jù)線 SDA 和時(shí)鐘 SCL 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進(jìn)行雙向傳送,高速 IIC 總線一般可達(dá) 400kbps 以上。I2C 總線在傳送數(shù)據(jù)過(guò)程中共有三種類(lèi)型信號(hào), 它們分別是:開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。
開(kāi)始信號(hào):SCL 為高電平時(shí),SDA 由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。
結(jié)束信號(hào):SCL 為高電平時(shí),SDA 由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。
應(yīng)答信號(hào):接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的 IC 發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU 接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。
這些信號(hào)中,起始信號(hào)是必需的,結(jié)束信號(hào)和應(yīng)答信號(hào),都可以不要。
? ? ?
4項(xiàng)目配置
瑞薩RA系列的MCU,提供了圖形化配置工具,和STM32CubeMX類(lèi)似,這大大的方便了開(kāi)發(fā)者配置。同時(shí),瑞薩的Flexible Software Package 旨在以較低的內(nèi)存占用量提供快速高效的驅(qū)動(dòng)程序和協(xié)議棧。FSP 集成了中間件協(xié)議棧、獨(dú)立于 RTOS 的硬件抽象層(HAL)驅(qū)動(dòng)程序, 以及最基礎(chǔ)的板級(jí)支持包(BSP)驅(qū)動(dòng)程序。在本次的設(shè)計(jì)中,主要是對(duì)于傳感器模塊,顯示模塊進(jìn)行相關(guān)的配置,下面是配置過(guò)程。
4.1 OLED顯示模塊
選擇了使用EBF模塊接口上的I2C接口,因?yàn)楦慕涌诘牟季€順序和OLED的I2C接口一致。可以直接將OLED插上去,減少了接線。該接口使用的是SCI6的I2C功能。
Pin下配置如下:選擇SCI6,復(fù)用I2C模式。
4.2 傳感器模塊
溫濕度傳感器DHT11,任意配置一個(gè)GPIO端口就可以了,不需要其他的配置,只要注意時(shí)序問(wèn)題即可,重點(diǎn)在GY39傳感器的配置。Pin下配置如下:選擇SCI2,復(fù)用I2C模式。
4.3 主函數(shù)代碼
主函數(shù)的代碼主要是傳感器的基本配置,OLED模塊的配置,調(diào)試串口的配置與上位機(jī)通信的格式。
1//--------------------------------------------------------------------------------------------------
2//函數(shù)頭文件|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//函數(shù)說(shuō)明:硬件初始化
64//函數(shù)備注:Hardware_init
65//--------------------------------------------------------------------------------------------------
66//|-|-|0|1|2|3|4|5|6|7|8|9
67//==================================================================================================
68voidHardware_init(void)
69undefined
70undefined//SCI4UART調(diào)試串口初始化
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//接收讀取后的數(shù)據(jù)
94undefineduint8_tundefined0x04undefined//寫(xiě)數(shù)據(jù)
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//寫(xiě)數(shù)據(jù)
117undefined
118undefined1undefinedtrueundefined
119undefined
120undefined3undefined
121undefined4undefinedfalseundefined
122undefined3undefined
123undefined
124undefined
125undefined0undefined0undefined8undefined1undefined
126undefined1undefined2undefined8undefined3undefined
127undefineduint32_tundefined0undefined16undefined1undefined
128
129undefined
130
131//==================================================================================================
132//函數(shù)說(shuō)明:主函數(shù)入口
133//函數(shù)備注: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測(cè)試效果
? ? ??
6總結(jié)
首先非常感謝野火舉辦的瑞薩RA MCU創(chuàng)意氛圍賽,能讓我入圍獲得這次參賽的機(jī)會(huì)。本次創(chuàng)意氛圍賽學(xué)習(xí)到了很多東西,對(duì)RA6M5單片機(jī)的內(nèi)核以及控制有了了解,野火官方提供的手冊(cè)例程使用起來(lái)也很方便,能夠快速上手,便于開(kāi)發(fā)使用。本項(xiàng)目初步設(shè)計(jì)思路是打算以瑞薩單片機(jī)作為控制和數(shù)據(jù)處理的單元,使用傳感器去監(jiān)測(cè)周?chē)沫h(huán)境參數(shù),在屏幕上完成傳感器數(shù)據(jù)和相關(guān)信息的顯示。同時(shí),使用無(wú)線模組接入物聯(lián)網(wǎng)云平臺(tái)。嘗試?yán)蒙衔粰C(jī)實(shí)現(xiàn)對(duì)于相關(guān)環(huán)境參數(shù)監(jiān)測(cè)。但是由于時(shí)間原因以及個(gè)人能力有限制,只完成了部分設(shè)計(jì)。雖然現(xiàn)在完成的功能較為簡(jiǎn)單,但是希望后面有時(shí)間繼續(xù)完善系統(tǒng)設(shè)計(jì),添加實(shí)時(shí)操作系統(tǒng),接入云平臺(tái),利用微信小程序,app等相關(guān)技術(shù)完善作品,最后,再次感謝野火和瑞薩舉辦RA-MCU創(chuàng)意氛圍賽,提供了學(xué)習(xí)機(jī)會(huì)。
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631960 -
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349914 -
瑞薩
+關(guān)注
關(guān)注
34文章
22282瀏覽量
85939 -
環(huán)境監(jiān)測(cè)系統(tǒng)
+關(guān)注
關(guān)注
0文章
40瀏覽量
9976 -
RA6M5
+關(guān)注
關(guān)注
0文章
7瀏覽量
359
原文標(biāo)題:【瑞薩RA MCU創(chuàng)意氛圍賽作品賞析】項(xiàng)目7——基于瑞薩RA6M5的環(huán)境監(jiān)測(cè)系統(tǒng)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論