您当前的位置:首页 > 美文摘抄 > 内容

基于无线传感网络智能鱼缸(一种多传感器数据融合的智能鱼缸系统设计)

基于无线传感网络智能鱼缸(一种多传感器数据融合的智能鱼缸系统设计)

挑选

在今天在社会生活中,饲养观赏鱼已经成为一种趋势。目前,人们开始追求更方便的饲养方法,并保证其成活率。新一代家居设计以供氧、换水、杀菌、控温等丰富实用的功能,以及更加人性化的设计,受到大众的青睐。基于鱼缸的智能化需求,本文提出了一种多传感器数据融合的智能鱼缸,利用RA6M4单片机和onenet物联网平台,融合和补充多个传感器的信息,对鱼缸进行管理,对水环境进行感知。用户通过s本地电脑、web客户端或手机APP(仍在开发和测试中)实现对智能鱼缸的水温、气压、光照强度的感知和采集,从而实现供氧、蜂鸣器提示和杀菌的本地控制,室外远程控制以及各传感器根据实际环境自动调整执行器的工作状态。

介绍

本文所研究的智能鱼缸系统是智能家居的一个具体产品。鱼缸是大众家庭常见的养鱼容器,但它的实际意义不仅仅是一个鱼缸,而是家庭中的一道风景。鱼缸里鲜活快乐的鱼儿,迷人的小虾,荡漾的水草,漂浮的浮萍,将水环境生态系统之美巧妙地组合在一个鱼缸里,构成了一幅动静皆宜的画卷。

目前国内市场上功能不一致的产品很多,大多是非智能的,单一的恒温控制、增氧、照明系统。如果多功能鱼缸能智能控制多个功能模块和单个设备,使用起来会非常不灵活,效率低下,整体性能得不到提升。

因此,针对这些问题,提出了一种基于多传感器数据融合的智能鱼缸系统。首先,对智能鱼缸系统进行了总体设计。其次,分别介绍了系统的硬件设计和软件选型。硬件设计介绍了控制器、传感器、执行器和电源的设计方案。软件设计包括多传感器数据融合与执行器协作系统、本地监控系统和物联网远程监控系统。首先,多传感器利用均值滤波得到水温、水压、罐外温度、光照强度等数据。对鱼缸的水温和水压进行模糊逻辑推理,模糊控制水泵的工作状态来调节供氧量。鱼缸外的温度和光照强度也通过模糊逻辑进行推理,模糊控制水泵的工作状态来调节供氧量。结合后期项目的系统软硬件,经过多次测试,有望实现水循环、蜂鸣器提示、照明控制等功能,实现移动终端的远程实时控制。本设计采用多传感器数据融合对水泵和紫外线灯进行模糊控制,不仅可用于家庭鱼缸的管理和改进,也可用于类似智能家居产品的研究和生产。

1、总体设计

该系统采用RA6M4芯片作为主控制器,并围绕其设计了一系列外围电路。通过各种组件函数库完成的RT-Thread Studio项目构建,系统利用I2C、ADC、PWM、UART等通信协议控制各种外围模块。同时MQTT协议发布主题和订阅主题接入onenet物联网平台,通过物联网实现对系统的远程监控和后期控制。系统框图如图1所示,以RA6M4为主控制器,间接或直接控制外围电路和模块。电源、控制器、执行器、传感器、鱼缸共同构成系统的硬件监控执行部分,通讯中的电脑、手机、中国移动互联网云平台为软件交互部分。

图1系统结构框图

2、硬件设计

硬件由控制器、传感器、执行器、电源和鱼缸组成。硬件原理图如下:

项目见李闯EDA:智能鱼缸系统。

2.1控制

DHT11数字温湿度传感器是一种带校准数字信号输出的温湿度复合传感器。它采用特殊的数字模块采集技术和温湿度传感技术,保证了产品的可靠性和优良的长期稳定性,成本低,响应快,抗干扰能力强,信号传输距离远,数字信号输出,校准准确。传感器包括电容式湿度传感器和NTC温度传感器,并与高性能8位单片机相连。使用方法参见【瑞萨RA6M4开发板DHT11温湿度读数】。

修改接口代码:

dhtxx_sample.c

1 2 3 #包含4 #包含5 #包含6 #包含dhtxx _ sample.h 7 #包含dhtxx.h 8 #包含bsp _ api.h 9 # include 10 # include 11 # defined ta _ PINBSP _ IO _ PORT _ 01 _ PIN _ 02//DHT温湿度端口定义1213RT _ uint 8 _ T * CAT _ DHTXX(void)14 { 15 static RT _ uint 8 _ TDHT[2];16 DHT _ device _ t sensor=DHT _ create(DATA _ PIN);17if(DHT _ read(sensor)){ 18rt _ int 32 _ ttemp=DHT _ get _ temperature(sensor);19rt _ int32 _ thumi=dht _ get _湿度(传感器);20rt _ kprintf(临时:% d. % d c,米虎:% d %'temp/10-2,temp,humi/10);21dht[0]=temp/10-4,DHT[1]=米虎/10;22 } 23 else { 24rt _ kprintf(Readdhtsensorfailed。');25 } 26rt _ thread _ m delay(100);27dht_delete(传感器);28returndht29 } 30//# ifdefFINSH _ USING _ msh 31//MSH _ CMD _ EXPORT(cat _ dhtxx,readdhtxxhumidtyandtemperature);32//#endif

dhtxx_sample.h

1 # IFN def _ DH txx _ SAMPLE _ H _ 2 # define _ DH txx _ SAMPLE _ H _ 3rt _ uint 8 _ t * cat _ DH txx(void);4 # endif

LM35温度传感器

LM35线性温度传感器是一种应用广泛的温度传感器,具有很宽的工作温度范围。该模块适用于许多特殊场合。测量温度范围为0~100,输出电压与温度成线性关系。0时输出电压为0V,温度每升高1,输出电压增加10mV。LM35线性温度传感器可以通过ADC读取(需要校准),可以轻松实现与环境温度感知相关的交互效果。在本实验中,建议对LM35传感器进行封装,使其能够稳定读取水温。参见【瑞萨RA6M4开发板Arduino六通道ADC采样】

光敏电阻光传感器

光敏电阻是由硫化镉或硒化镉等半导体材料制成的特殊电阻,其工作原理是基于内部光电效应。光强越强,电阻值越低。随着光照强度的增加,电阻值迅速下降,亮电阻值可小至1k以下。光敏电阻对光非常敏感。无光时处于高阻状态,其暗电阻一般可达1.5 m,应由ADC读取(需校准)。用法参见【瑞萨RA6M4开发板Arduino六通道ADC采样】。

两个ADC接口代码

adc.c

1 #包含'ADC。h 2 #定义C _ NAME adc0 3 #定义LM35 _ ADC _通道04 #定义照明_ADC _通道15#defineREFER_VOLTAGE3306 #定义转换位(112)7rt _ ADC _ device _ tadc _ dev;8rt _ err _ tret=RT _ EOK;9 int ADC _ Initiation(void)10 { 11rt _ err _ tret=RT _ EOK;1213 ADC _ dev=(rt _ ADC _ device _ t)rt _ device _ find(ADC _ NAME);14if(ADC _ dev==RT _ NULL)15 { 16rt _ kprintf(adcsamplerun失败!找不到% s设备!ADC _ NAME);17 ret=RT _ error 18 } 19 else 20 { 21rt _ kprintf(rt _ sensor找到% sdeviceinitsuccess!'ADC _ NAME);22 } 23返回;24 } 25rt _ uint 8 _ t * ADC _ read()26 { 27rt _ int 16 _ tlm 35=0,light=0;28staticrt_uint8_tadc[2],adc_value[4],max=5;29 for(int var=0;varmaxvar){3031ret=rt_adc_enable(adc_dev,LM35 _ ADC _ CHANNEL);32ret=rt_adc_enable(adc_dev,light _ ADC _ CHANNEL);33rt _ thread _ m延迟(var);3435lm 35=LM35 rt _ ADC _ read(ADC _ dev,LM35 _ ADC _ CHANNEL);36rt _ thread _ m延迟(var);3738 light=light rt _ ADC _ read(ADC _ dev,light _ ADC _ CHANNEL);3940ret=rt_adc_disable(adc_dev,LM35 _ ADC _ CHANNEL);41ret=rt_adc_disable(adc_dev,light _ ADC _ CHANNEL);42rt _ thread _ m delay(50);43}44LM35=LM35/max,light=light/max;45//rt _ kprintf(这是:% d ,LM35);4647lm 35=LM35 *(REFER _ VOLTAGE/40.96);//转化为温度48 ADC _ value[0]=LM35/100-22;49adc_value[1]=lm350;50rt _ kprintf(hevoltageis:%d.d`c'adc_value[0],ADC _ value[1]);51//rt _ kprintf(灯光:% d ,轻);5253 light=light * REFER _ VOLTAGE/CONVERT _ bit;54 ADC _ value[2]=light/100;55adc_value[3]=light0;56rt _ kprintf(hevoltageis:%d.dlx'adc_value[2],ADC _ value[3]);57 ADC[0]=LM35/100-22;58 ADC[1]=光;59 return DC 60 } 61 init _ APP _ EXPORT(ADC _ Initiation);

adc.h

1 # ifndef _ ADC _ H _ 2 # define _ ADC _ H _ 3 # include 4 # include 5 # include 6 # include 7 int ADC _ Initiation(void);8rt _ uint 8 _ t * ADC _ read();9#endif

2.3 执行器

结合鱼缸实际需求,执行器包括水泵、紫外线杀菌灯、有机发光二极管显示屏和蜂鸣器。

水泵

通用串行总线鱼缸养鱼氧气泵,超静音打氧机小型增氧机家用增氧泵钓鱼专用,控制方式采用脉宽调制(脉宽调制的缩写)输出,将通用串行总线接口连接MX1919,通过MX1919驱动器控制增氧效果,需要大增氧时满功率运行,不需要增氧时关闭气泵,中间过渡可以通过气压和温度进行传感器数据融合实现模糊控制。使用方法见【瑞萨RA6M4开发板之两路脉宽调制(脉宽调制的缩写)驱动】

紫外线杀菌灯

采用5W鱼缸紫外线杀菌灯180 遮光板,控制方式采用脉宽调制(脉宽调制的缩写)输出,避免漏光直射对眼睛和鱼儿造成不可逆的伤害不透光才能更安全;随意调整遮光板角度。本次实验采用六颗紫色发光二极管代替,同样使用MX1919另外一路输出,使用方法见【瑞萨RA6M4开发板之两路脉宽调制(脉宽调制的缩写)驱动】

两路脉宽调制(脉宽调制的缩写)接口代码

pwmled.c

#包括pwmled.h #定义PWM _ dev _ name pwm8 #定义PWM 2 _ dev _ name pwm7 #definePWM_DEV_CHANNEL0# */# define period 500000/*struct rt _ device _ PWM * PWM 2 _ DEV;int PWM _ initiation(void){ rt _ err _ TRT _ err=rt _ eok;rt _ uint 16 _ t pulse=0;PWM _ dev=(struct RT _ device _ PWM *)RT _ device _ Find(PWM _ dev _ name);if(PWM _ dev==RT _ NULL){ RT _ kprintf(pwmsamplerunfailed!能找到% s设备!'PWM _ DEV _ NAME);rt _ err=RT _ NULL} else { rt _ kprintf(rt _ sensor find % sdeviceinitsuccess!'PWM _ DEV _ NAME);}PWM 2 _ dev=(struct RT _ device _ PWM *)RT _ device _ Find(PWM 2 _ dev _ name);if(PWM 2 _ dev==RT _ NULL){ RT _ kprintf(pwmsamplerunfailed!能找到% s设备!'PWM 2 _ DEV _ NAME);rt _ err=RT _ NULL} else { rt _ kprintf(rt _ sensor find % sdeviceinitsuccess!'PWM 2 _ DEV _ NAME);}RT _ PWM _ set (PWM _ dev,PWM _ dev _ channel,period,pulse);rt_pwm_set(pwm2_dev,PWM_DEV_CHANNEL,period,pulse);RT _ PWM _ enable (PWM _ dev,PWM _ dev _ channel);rt_pwm_enable(pwm2_dev,PWM _ DEV _ CHANNEL);returnrt _ err}void PWM _ action (RT _ uint8 _ ta,RT _ uint 8 _ TB){ if(A=10){ A=10;} else if(a=10){ b=10;} else if(b=5){ b=0;} if(a==0b==0){ rt _ PWM _ set(PWM _ DEV,PWM_DEV_CHANNEL,period,0);//UV灯rt _ PWM _ set (pwm2 _ dev,PWM _ dev _ channel,period,0);//水泵} else {RT _ PWM _ set (PWM _ dev,PWM _ dev _ channel,period,period * 0.1 * a);//UV灯rt _ PWM _ set (pwm2 _ dev,PWM _ dev _ channel,period,period * 0.7 period * 0.03 * b);//水泵} } init _ app _ export(PWM _ initiation);

pwmled.h

1 # ifndef _ PWM led _ H _ 2 # define _ PWM led _ H _ 3 # include 4 # include hal _ data.h 5 # include 6 int PWM _ Initiation(void);7voidpwm_action(rt_uint8_ta,rt _ uint 8 _ TB);8#endif

oled显示屏

该模块采用0.96英寸有机发光二极管显示屏,采用IIC协议进行通信,可实时显示水温、缸外温度、外界气压和光照强度。该模块由RA6M4用户键触发(5S后屏幕关闭),默认状态不显示。使用方法见【瑞萨RA6M4开发板I2C驱动ssd1306有机发光二极管屏】。

门铃

采用TMB09A03 DC3V主动蜂鸣器,属于主动连续音。该模块采用通用GPIO输出控制,当传感器达到一定阈值时,会提醒用户在本地进行相关操作,从而达到交互使用的效果。用法参见【瑞萨RA6M4开发板按键和LED的GPIO】。

https://OSS-club . rt-thread . org/uploads/20220806/da 39 a3 ee 5 e 6 B4 b 0d 3255 bfef 95601890 AFD 80709 . png

t是相应的服务时间,结合实验分析,参数如下:

每天消耗约60焦耳电能(估计),所以USB供电用18650电池,供电用4节2000mA的18650锂电池和太阳能电池板。系统配有UPS不间断电源系统,监控18650锂电池的电压。如果光伏发电使锂电池达到3.7V,就不会启动USB供电,取而代之。

太阳能电池板,采用三块5V200mA单晶太阳能电池板并联发电。太阳能电池板为电池充电,并在白天通过环境光为系统供电。可以有效缓解18650锂电池的供电需求。

2.5鱼缸

本次实验采用市面上意大利宠物用品店常用的240高清热弯中小型台式鱼缸,采用汽车级浮法玻璃工艺,使透光率达到92%。构成整个生态循环过滤,模拟自然水流环境,循环净水。鱼缸结构如图2所示。尺寸为240mm170mm285mm,持水量约为8升。

3、软件设计

软件设计包括多传感器数据融合和执行器协作系统、本地监控系统和物联网远程监控系统,其中RA6M4软件架构如下。

本项目的软件架构主要由三个线程完成,如上图所示,其中:

CMD_Theard线程:负责收集和修正传感器数据和执行器数据;

LM _ THERHEAD线程:负责采集系统中的传感器数据和执行器数据,拼接自定义串口协议,采用Uart串口通信实现l

Net _ heartthread:负责系统中传感器数据和执行器数据的采集,通过esp8266上报给Onenet平台,以及云端数据分发、分析和执行等。

3.1多传感器数据融合和执行器协作系统

首先,多传感器采用卡尔曼滤波器获取智能鱼缸的水温、水压和光照强度数据,对鱼缸的水温和水压进行模糊逻辑推理,模糊控制水泵的工作状态。

均值滤波

系统获得的传感器数据可以不可直接使用(有噪声干扰:低频噪声或高频噪声)。一般通过组合一种或多种滤波算法对原始数据进行滤波,在保证滤波数据实时性要求的前提下,获得相对稳定、无噪声的数据,供实际应用系统使用。

平均滤波,取一定量的原始数据,累加平均,得到稳定的输出数据,主要滤除原始数据中的高频噪声。为了减少电源的干扰,主动放弃第一次采样,累加后五次数据平均值。

模糊控制

如图3所示,模糊控制结构以鱼缸环境传感器的数据处理结果为输入值,一般包括气压、温度、湿度、光照强度等。模糊输出用于执行器,如水泵、加热设备、紫外线灯等。

图3模糊控制结构

由于多输出模糊控制算法过于复杂,利用模糊控制器的解耦特性,可以将模糊控制系统分解成多个单输出子系统。系统的模糊控制如表1所示。例如,可以根据温度和气压来控制水泵的开启时间。本文将以此为例设计一个模糊控制器。

表1系统的模糊控制

输入主参数,输入辅助参数,输出结果。

外部温度气压水泵的工作时间

缸内温度照明紫外灯的工作时间

假设环境:室内温度为0~30,鱼缸水温为0~20。定义输入温度的基本域是[0,20]。

定义了五个模糊子集(NB,ns,ZO,PS,PB)和高斯隶属函数,其中为2,NB,NS,ZO,PS,PB隶属函数中的均值X分别为0,5、10、15、20。因此,温度范围和隶属函数曲线如图4所示:

图4温度范围和隶属函数曲线

据初步调查,武汉地区一般春季气压为100,000 Pa ~ 101,000 Pa,定义输入气压的基本域为[100000,101000]。定义了五个模糊子集(NB,ns,ZO,PS,PB)和高斯隶属函数,其中为125,NB,NS,ZO,PS,PB隶属函数中的均值X分别为100,000,100,250,100,500,100,750,101,000。因此,气压的值域和隶属函数曲线如图5所示:

图5气压范围和隶属函数曲线

每个水循环的泵启动时间一般为0~20分钟,输出水循环时间的基本域定义为[0,20]。它被分成五个模糊子集:闭合(NB)稍短(NS)中等(ZO)稍长(PS)长(PB),它们定义了一个三角形隶属函数。因此,水循环时间的范围和隶属函数曲线如图6所示。

图6水循环时间的极差和隶属函数曲线

模糊推理方法以如果温度和压力,则电机其中Temp和Temp为输入模糊子集,电机为输出模糊子集。根据实际调试经验,表2所示的模糊控制规则表,也称为模糊关系矩阵,有25条控制规则:

表2模糊控制规则表

系统采用Mamdani模糊推理方法,本次设计采用重心法,即以模糊隶属函数曲线和坐标围成的区域的重心作为最终输出值。

利用Matlab的模糊逻辑工具箱对系统进行仿真,观察系统的输入输出。例如:温度Temp=10,气压Pres=100500pa,输出水循环时间Motor=3.14min,给定输入通过模糊规则推理的输出如图7所示:

图7通过模糊规则推理的给定输入的输出

系统的模拟输出界面如图8所示。

用户可以在本地实时观察鱼缸状态,有机发光二极管显示器会以事件模式滚动屏幕,在休眠状态下屏幕会关闭,所以休眠时间会比滚动显示时间长很多,以达到节能的效果。当有机发光二极管滚动屏幕时,收集的传感器数据、执行器状态数据和电池电压数据将实时动态显示。在本地端设计了直接控制模式,优先级为1级。根据当前鱼缸环境的实际情况,可以单独调节鱼缸的水泵和照明,实现智能鱼缸的精准控制。

3.3物联网远程监控系统

本文的智能鱼缸系统接入onenet物联网云平台,实现物联网远程控制。采用onenet库和接口函数,通过手机APP或手机语音实现远程操作。利用公共云服务进行数据传输和远程控制,让鱼缸作为智能家居被用户使用。

4系统测试

4.1本地端测试

Uart0用于实现本地串行通信。串行通信分为接收协议和发送协议。上位机采用串口Studio。参见使用方法:

[瑞萨RA6M4开发板Serial studio串行接口]]

https://OSS-club . rt-thread . org/uploads/20220806/da 39 a3 ee 5 e 6 B4 b 0d 3255 bfef 95601890 AFD 80709 . png

Serial Studio的Json映射文件

{'frameEnd :'*/''frameStart :'/*KAANSATQRO,'团体[{'数据集[{'警报0,'fft :假的,fftSamples :1024,'图表没错,led :假的,日志假的,Max :0,'min :0,'标题'水温(LM35)'单位'''价值'% 1''widget :'规}, {'警报 0,'FFT :FFT对数假的,马克斯 0,'min : 0,'标题'光强度'单位'力士'价值'% 2''widget :'}, {'警报 0,'FFT 日志假的,马克斯 0,'min : 0,'标题'警报器(蜂鸣器)'单位'布尔'价值'% 3''widget :''}, {'警报 0,'Led :没错,日志假的,马克斯 0,'min : 0,'标题'板载led3 ,'单位'布尔'价值'% 4''widget :'}, {'警报图表没错,led :假的,日志假的,马克斯 0,'min : 0,'标题'外部大气压力(BMP 180)'单位'kpa ,'价值'% 5''widget FFT样本 1024,'图表没错,led :假的,日志假的,马克斯 0,'min : 0,'标题'外部温度1(BMP 180)'单位'''价值FFT :假的,FFT样本 1024,'图表没错,LED :假的,日志假的,马克斯 0,'min : 0,'标题'外部温度2(DHT 11)'单位'{'警报 0,'FFT :假的,FFT样本 1024,'图表没错,LED :假的,日志假的,马克斯 0,'min : 0,'标题'外部湿度(DHT11)小工具'规}, {'警报 0,'FFT :假的,FFT样本 1024,'图表没错,led :假的,日志假的,马克斯 0,'min : 0,'标题值'% 9''widget :'}, {'警报 0,'FFT :假的,FFT样本 1024,'图表没错,LED :假的,日志假的,马克斯 0,单位'%''价值'''widget :'}],'标题'智能鱼缸监控系统'widget :'}],'分隔符'''标题'测试}

打印效果:

11:42:35.098-helloRT-Thread!11:42:35.586-11:42:37.005-11:42:38.426-# include UART。h # defined 3 _ PINBSP _ IO _ PORT _ 01 _ PIN _ 06 # define buzzer _ PINBSP _ IO _ PORT _ 04 _ PIN _ 03//蜂鸣器定义# define sample _ UART _ NAME UART 0 # define data _ CMD _ END '#defineONE_DATA_MAXLEN12static struct rt _ semaphore rx _ SEM;staticrt _ device _ tserialstatic rt _ err _ tuart _ rx _ ind(rt _ device _ tdev,rt_size_tsize){if(size 0){ rt _ SEM _ release(rx _ SEM);} returnRT _ EOK;} static charuart _ sample _ get _ char(void){ charch;while(rt_device_read(serial,0,ch,1)==0){rt_sem_control(rx_sem,RT_IPC_CMD_RESET,RT _ NULL);rt_sem_take(rx_sem,RT _ WAITING _ FOREVER);} returnch}staticvoidcontrol _ thread _ entry(void){ charch;chardata[ONE _ DATA _ MAXLEN];静态chari=0;unsignedchar*adc_value,* BMP _ value while(1){ ch=UART _ sample _ get _ char();if(ch==DATA _ CMD _ END){ DATA[I]='rt _ kprintf(数据=0x );//CMDuart7打印uart0接收16进制数for(int var=0;var one _ DATA _ MAXLEN-1;var){ rt _ kprintf(% x ,data[var]);} rt _ kprintf();rt _ thread _ m delay(1);if(data[0]==0x 5a data[10]==0x a5){//校验头部和尾部if(data[4]==0x00){//保持命令rt _ kprintf(继续);}elseif(data[4]==0x01){//修改命令//操作发光二极管灯亮rt _ kprintf(行动);rt_pin_write(LED3_PIN,data[5]);//蜂鸣器操作相反pwm_action(data[2],data[3]);//灯和水泵rt_pin_write(buzzer_PIN,data[1]);//蜂鸣器操作相反} else if(data[4]==0x 02){ rt _ kprintf(自动');ADC _ value=ADC _ read();BMP _ value=BMP _ read();data[2]=10 * ADC _ value[0]/35 *(330-ADC _ value[1])/330;//水泵data[3]=10 * ADC _ value[0]/30 *(101-BMP _ value[0])/5;//水泵pwm_action(data[2],data[3]);//灯和水泵}}else{//校验识别,返回数据不合法rt _ kprintf(数据输入非法!请输入:5a 0000000101000 b 0000 a 5 数据);} rt _设备_写入(串行,0,数据,sizeof(数据));//uart0打印接收指令for(int var=0;var=ONE_DATA_MAXLEN-1)?ONE _ DATA _ MAXLEN-1:I;data[I]=ch;}}void serial _ thread _ entry(rt _ uint 8 _ ta,rt _ uint 8 _ TB){ unsignedchar * ADC _ value,gpio_value[2],*bmp_value,*dht_value,PWM _ value[2];字符串1[45];char head byte[45]=');rt_device_write(serial,0,str1,sizeof(str 1));rt _ thread _ m延迟(500);} static int UART _ data _ sample(int argc,char * argv[]){ RT _ err _ tret=RT _ EOK;charuart _ NAME[RT _ NAME _ MAX];charstr[]=喂,螺纹!'if(argc==2){ RT _ strncpy(UART _ NAME,argv[1],RT _ NAME _ MAX);}else{rt_strncpy(uart_name,SAMPLE_UART_NAME,RT _ NAME _ MAX);}serial=rt _ device _ find(UART _ name);如果(!serial){ rt _ kprintf(查找% s失败!'UART _ name);returnRT _ ERROR}rt_sem_init(rx_sem,rx _ sem ,0,RT _ IPC _ FLAG _ FIFO);rt_device_open(串行,RT _ DEVICE _ FLAG _ INT _ RX);/*设置接收回调函数*实时开发

16进制指令:

部分效果图:

水泵工作状态

4.2 情况说明:

由于本人从7月25号困在中高风险区,电脑和硬件28号到,并且在实验室是可以连接wifi,由于条件有限,我所处管控区没有wifi,设备连接手机热点是无法登入onenet,因此暂时还没试验完,后期会补充onenet平台。

4.3 附件

代码地址: (请点击文末阅读原文至原文获取)

5、结语

首先感谢瑞萨和RTT官方给了我们DIY爱好者提供第二次测评。【基于RT-Thread+RA6M4的智能鱼缸系统设计之鱼我所欲也】只是个人在业余时间中一个不太完整的构想,虽然当前市面上以及有非常多的同类产品,但是二次开发易用性和扩展度与之相形见绌。

RT-Thread作为国内嵌入式系统生态的领跑者,对产品的快速原型开发有很强的支持,至于产品的稳健性还需尔后完善。因此第一次测评开发板,这个开发过程让我映像深刻,社区问答基本在专业伙伴协助下可以解决90%,更多是需要自身对C++基本语法掌握使用得当(强烈建议完善相关适配C++语言文档,那么RT-Thread愈加强大和健壮)。

本文利用RA6M4开发板、ESP8266、onenet平台构建了智能鱼缸系统,并开发了多传感器数据融合与执行器协同系统,将鱼缸的水体温度和水面气压进行模糊逻辑推理,模糊控制水泵的工作状态,克服了传统鱼缸缺乏反馈环节和调节环节的缺陷。该系统可通过传感器获得水温、气压、光照强度和文章流等数据实时鱼缸并由显示器或物联网平台反馈给用户。该智能鱼缸系统的功能全面、成本低廉、操作简便,易于推广应用,可创造较大市场价值。

由于时间短、本人知识水平有限等因素,该系统的研究设计中还是存在一些不足之处。本系统为了完成远程控制的功能,使用了onenet平台来进行数据的传输与存储,该云平台为商业平台,本系统对于用户数据的私密性保护存在一定的缺陷,需耍进一步提高对传输数据的加密保护。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 苹果召回计划是当场换新吗(苹果11召回计划更换需要多久)

下一篇: 长虹app软件下载(IPTV长虹在哪里找下载APP的地方)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号