摘 要:该文设计了基于嵌入式树莓派为核心控制器的远程温度监测系统,并通过温度传感器DS18B20获得数据加以融合以及模糊算法对其进行处理,用户可在手机或电脑客户终端上了解到居室温度变化情况。该系统可以被广泛地用于生产中的各领域,特别适合于人体无法接近的高温或危险场所的温度控制。
关键词:树莓派 DS18B20 网络监控 单总线协议
Abstract: The designs is a remote temperature monitoring system based on embedded controller’s raspberry pie, And use the temperature sensor DS18B20 to get data and fuzzy algorithm to deal with it, The user can know the room temperature’s change by the mobile phone or computer client terminal. The system can be widely used in various fields of production. Especially suitable for the people can not be close to the high temperature or dangerous places of temperature control.
Key Words: Raspberry pie; DS18B20; Network monitoring; 1-wire protocol
在日常生活中温度在我们身边无时不在,温度的控制和应用在各个领域都有重要的作用。目前市场上的大多数温室测控系统大多采用有线布网、人工测量,导致现场安装困难,工作效率偏低,测量精度差,这不仅大大增加了电气工程施工费用,也导致施工等工作困难;此外,系统中的每个监控点没有自组织功能和自愈能力,维护工作量大,也不利十系统升级。因此,开发和研制一种新型的远程温室环境测控系统是十分必要的。
传统的利用单片机来检测控制温度的案例有很多,但是用单片机来实现远程无线通信比较复杂,涉及到编写WiFi模块的驱动程序和无线数据通信程序。如果我们把主控制器换成树莓派,实现远程监控就会变得简单很多。树莓派(Raspberry PI)是英国一个小型慈善组织开发的一款基于Linux的开放式嵌入式系统,通过装载相应的Linux系统和相应的应用程序,可以实现强大的能力,还具有廉价、体积小等优点。该次设计开发就是以硬件开源的嵌入式系统树莓派作为应用开发平台,加上现在特别流行的数字型温度传感器ds18b20作为采集数据的终端。利用创业公司Yeelink公司开发的Yeelink作为云存储平台来实现远程的温度数据的监测和控制。
1 系统结构设计
该系统设计分为以下几个模块:主控模块、待测模块、显示模块、控制模块、远程交互模块。
(1)主控模块我们采用嵌入式树莓派作为该系统的主控器。
(2)待测模块采用的单总线结构的数字型温度传感器ds18b20。
(3)控制模块采用的报警发声模块。
(4)输出模块采用四位数码管显示所测得温度值。
(5)主控模块通过WiFi连接internet,用于实现远程的数据交互。
2 环境搭建
主控器我们采用的是树莓派,它是只有信用卡大小的卡片式电脑。Raspberry Pi是一款以SD卡为内存硬盘,操作系统采用开源的Linux系统。通过装载相应的Linux系统和相应的应用程序,树莓派可以实现强大的应用功能,为我们提供了一个理想的嵌入式开发平台。树莓派预搭载的编程开发环境是Python语言,Python是一种面向对象、直译式计算机编程语言,包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。
就像每一个计算机那样,树莓派需要一个操作系统,我们选择Linux。选择Linux是因为它免费,而且可支持ARM处理器。
系统安装过程如下:
制作可引导的SD卡。
(1)一个带读卡器的PC。
(2)从官方下载页下载Debian映像文件。
下载地址:http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip
下载完成后,PC上将有2013-02-09-wheezy-raspbian.zip文件。
(3)用专门的工具将映像文件写入到SD卡。
Windows用户可以使用Win32DiskImager软件,Unix用户使用dd工具。
在Windows下可以使用Win32Disk Imager进行镜像恢复,非常方便,也是树莓派官方推荐的方法。官方下载地址:http://sourceforge.net/projects/win32diskimager/。
(4)树莓派实现WiFi上网。
给树莓派添加wifi模块,实际上就是一个usb无线网卡。我使用的是EOUP的usb无线网卡,经测试树莓派可以直接识别,不需要额外配置驱动,即可实现树莓派的无线上网功能。
3 硬件电路设计
设计中我们采用的树莓派的扩展板对树莓派的外围电路进行扩展,扩展板上已经设计引出DS18B20的引脚,我们只需要把DS18B20插在扩展板上即可实现硬件的设计和开发。
4 软件电路设计
4.1 ds18b20驱动的安装和使用
树莓派支持多种串行总线,包括SPI和I2C,却没有提供1-Wire接口。温度传感器DS18B20就是个1-Wire接口的器件,为了使用这款温度传感器,我们必须使用软件来模拟1-Wire接口时序,从DS18B20中读取我们需要的温度。在树莓派的操作系统Debian中,包含这部分驱动,我们可以直接使用它。
具体方式,进入命令行(通过ssh或者直接连显示器)。
输入如下命令:
sudo wget http://www.frank-buss.de/raspberrypi/kernel-rpi-w1.tgz
sudo tar -xzf kernel-rpi-w1.tgz
sudo rm -f kernel-rpi-w1.tgz
sudo cd /lib/modules
sudo wget http://www.frank-buss.de/raspberrypi/modules-rpi-w1.tgz
sudo tar -xzf modules-rpi-w1.tgz
sudo rm -f modules-rpi-w1.tgz
sudo sync
sudo reboot
然后等待机器重启重新加载1-wire设备的驱动,也就是给18b20的驱动。
接下来,在命令行输入:
sudo modprobe w1-gpio
sudo modprobe w1-therm
在打开的界面上,其中28开头的就是28b20设备了,如果接多个DS18B20,将会看到多个28-xxxx的文件,分别对应各个DS18B20。程序中我们只要调用驱动程序w1_slave中的提供的获得温度数据函数,进行处理即可得到DS18B20传感器监测的温度值。
4.2 温度获取程序
下面是利用python实现获得温度值程序模块。
import os
import glob
import time
os.system(‘modprobe w1-gpio’)
os.system(‘modprobe w1-therm’)
base_dir=’/sys/bus/w1/devices/’
device_folder=glob.glob(base_dir+’28*’)[0]
device_file=device_folder+’/w1_slave’
def read_temp_raw():
f=open(device_file,’r’)
lines=f.readlines()
f.close()
return lines
def read_temp():
lines=read_temp_raw()
while lines[0].strip()[-3:]!=’YES’:
time.sleep(0.2)
lines=read_temp_raw()
equals_pos=lines[1].find(‘t=’)
if equals_pos!=-1:
temp_string=lines[1][equals_pos+2:]
temp_c=float(temp_string)/1000.0
return temp_c
4.3 远程交互
Yeelink独有设计的高并发接入服务器和云存储方案,能够同时完成海量的传感器数据接入和存储任务,确保您的数据能够安全的保存在互联网上,先进的鉴权系统和安全机制,能够确保数据只在您允许的范围内共享。
此次设计中我们就利用互联网云平台yeelink将采集的温度数据进行收集并显示出来,Yeelink是一个开源的硬件数据平台,我们把它定义为一个物联网云平台,因为它给我们提供了API接口,我们可以把数据发送到云平台保存起来,也可以随时随地查看。
5 结语
该文介绍了基于树莓派检测温度控制系统的工作原理, 测温系统采用了树莓派为核心微处理器,通过传感器DS18B20实现对温度测量,并进行存储和远程显示。用户可以远程监测温度,并显示温度变化曲线图。我们在此基础上,还可以扩展其他信号,如湿度,PM2.5等,来实现远程环境的监测。
参考文献
[1] 刘继忠,邱于兵,黄翔.基于ARM的远程温湿度监测系统的设计[J].仪表技术与传感器,2012(8):90-92.
[2] 张文普,牟宇飞,基于ARM的远程无线瓦斯监控系统[J].仪表技术与传感器,2012(1):68-70.
[3] 衷卫声,施忠华.嵌入式Web Server在远程数据采集系统中的应用[J].仪表技术与传感器,2012(9):103-104,110.