Arduino数据采集器研究

时间:2022-07-15 06:47:33

Arduino数据采集器研究

摘要:利用Arduino硬件平台,设计实现多功能物联网环境数据采集器,采集器可自动识别用户选择连接的传感器,采集器同时具备低功耗特性,以保证长期运行。

【关键词】Arduino;采集器;功耗

物联网采集器可以采集多种与环境相关数据,使我们能更好的感知环境。现存的采集器大多是为特定环境而设计,这使得在不同环境中无法通用;并且由于开发平台的限制,其功耗和成本也比较高。因此本文主要借助Arduino开发平台,研究设计一个能灵活调整的,低成本低功耗的新型物联网环境数据采集器。在设计中,充分考虑功耗和成本,实现采集器自动化和智能化,使物联网技术能更好的服务人们的生活。

1系统硬件设计

1.1系统总体设计

系统以AruidnoUNOR3为核心,使用DHT22传感器采集温湿度,BH1750传感器采集光照强度,BMP180传感器采集大气压强,DS3231获取时间信息,MQ-2传感器采集烟雾浓度,以及雨量和土壤湿度传感器采集相关信息,并使用两个继电器作为控制传感器电源开关,以达到节能的目的。设计框架如图1所示。

1.2传感器

1.2.1温湿度传感器DHT22DHT22数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。DHT22的供电电压为3-5.5V,温度采集范围为零下40摄氏度到80摄氏度,精度为0.1摄氏度;湿度采集范围为5%到95%,精度为0.1%。1.2.2大气压强传感器BMP180BMP180是一款设计在IIC总线上的大气压强传感器,它是由一个压阻传感器,数字模拟转换器,EEPROM和串行IIC接口组成。BMP180提供的压力和温度补偿的值。BMP180具备不同的采集模式(超低功率,标准型,高,超高),可根据需求选择。1.2.3光照强度传感器BH1750光照强度模块:BH1750是一款设计在IIC总线上的光线强度传感器,它可以探测的光线强度范围为1lx-65535lx。对光源不敏感,适合收集各种光线数据。BH1750采集速度快,灵敏度较高,适合使用。1.2.4时钟模块DS3231DS3231是低成本、高精度的实时时钟。该器件包含电池输入端,断开主电源时仍可保持精确的计时。具有自动调整月末日期以及闰年补齐功能,提供两个可设置的日历闹钟和一个可设置的方波输出。1.2.5烟雾传感器MQ-2MQ-2烟雾探测传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。1.2.6雨量模块和土壤湿度模块雨量模块可用于天气状况的监测,同时对雨量大小有一个大致的判断,感应板有水滴滴上时传感器感应。土壤湿度模块用于探测土壤的湿度。

1.3硬件连接

系统使用两个继电器控制传感器的电源,继电器1控制温湿度传感器,大气压强传感器,光照强度传感器,时间传感器的电源,另一个继电器2控制烟雾传感器,雨量传感器,土壤湿度传感器的电源,具体连接如图2。

2系统软件设计

2.1系统主程序

系统主程序分为初始化和运行采集两部分,其中初始化判断哪些传感器连入了系统,运行采集完成采集器采集数据以及整理数据的功能。2.1.1初始化采集器可以根据不同的环境而灵活的调整传感器,所以需要对传感器进行初始化,得出有哪些传感器与采集器连接,从而调整传感器的采集程序。判断连接的传感器的方法:首先为各个传感器设置好接口,采集器在通电之后对每个接口进行一次读数,根据得到的数值进行判断该接口是否正确的连接了相应的传感器,并因此设定标志位。2.1.2采集运行采集器十分钟进行一次数据采集,使用一个二维数组存储采集到的数据。由于内存有限,因此最多可存储12组数据,超过12组则覆盖最初数据。采集过程由各个传感器轮流采集,采集完毕后将数据整合。采集过程为:首先打开内部计时器,计时器到9分钟时发送时钟中断,打开两个继电器,继续计时,1分钟后进行数据采集,采集前需根据初始化得到的数组判断传感器是否连接,连接则进行数据采集,并将采集到的数据存储到数组的相应位置,所有传感器采集完成后,关闭继电器,打开计时器,重复以上步骤。

2.2传感器采集

2.2.1温湿度传感器DHT22首先由主机向传感器输出低电平大于18ms,传感器检测到主机信号后,等待主机开始信号结束,主机结束开始信号并延时等待20-40um,传感器会发送80um的低电平信号和80um的高电平信号,之后传感器开始发送40位的数据,如果高电平信号时间大于50us,为1,否则为0。数据格式为:16bit湿度数据+16bit温度数据+8bit校验数据,数据传送正确时校验和数据等于“8bit湿度高位数据+8bit湿度低位数据+8bi温度高位数据+8bit温度低位数据”所得结果的末8位。2.2.2大气压强传感器BMP180可使用提供的库文件,采集过程如下:1初始化传感器,根据返回值判断是否成功,失败则返回,2启动温度采集,读取返回值,失败则返回,3等待步骤2读取到的时间,4读取采集到的温度,5启动大气压强采集,并给定采集精度,读取返回值,6等待步骤5读取到的时间7,读取采集到的大气压强。2.2.3光照强度传感器BH1750采集过程为首先打开总线发送地址,发送采集精度,延迟等待,读取传感器发送回的数据,计算出最终结果。传感器会发送两字节(byte)的数据,将这两字节的数据换算成十进制并除以1.2即为最终结果。2.2.4时钟模块DS3231时钟模块读取时间的过程为:首先打开总线,发送要读取的地址,其中地址为秒0x00分0x01小时0x02日0x04月0x05年0x06,之后读取传感器发送的1字节(byte)数据,该数据为bcd码,将其转化成十进制即可。2.2.5烟雾模块,雨量模块,土壤湿度模块这些模块接入开发板的模拟读取口,直接读取数据即可,根据读取到的数值进行判断。

2.3数据上传

采集到的数据使用数组进行存放,可通过串口发送给上位机提取输出。数据传输使用Arduino的串口(0:RX,1:TX)发送,可选用多种途径,例如蓝牙或zigbee模块等等。

3结果

根据以上设计方案,实现了采集器的采集功能,下图分别为传感器全部连接采集器时,以及仅保留光照强度传感器,温湿度传感器以及土壤湿度传感器时采集到的数据(通过pc串口监视器读取)。图如3所示。可见,系统可完成自动判断哪些传感器连入,实现了采集器的灵活性。同时系统使用了继电器控制传感器的电源,降低了能耗,整体达到了预期的功能。

作者:孟萌

上一篇:公益广告对公众道德的养成与提升 下一篇:新媒体时代公益广告的创新