用树莓派搭建的校园气象信息检测系统

有一次看到学生的科学实践作业,是记录一周的天气情况,记录每天的最低温度、最高温度,并画出一周的气温变化折线图。我在想,如果利用传感器采集一些简单的气象信息,并用物联网技术存储并处理这些信息,就可以更加准确地记录更长时间的气象信息。于是,我准备构建一套基于物联网的气象信息监测系统,该系统包括采集气象信息的传感器,信息处理并联网的物联网开发板,存储数据的树莓派,最终呈现数据的大屏幕。
Blynk是一款优秀的物联网开发平台,它支持的硬件平台广泛,移动端app方便易用,编程简单易懂,是创客们入门物联网开发的最佳伴侣。利用Blynk开发的物联网应用主要包括开发板、手机app端、Blynk服务器端,如图 1所示。开发板上的传感器将采集到的数据上传到Blynk服务器,移动端app通过读取服务器信息将数据通过一定的方式呈现(数值、图表等)。在官方提供的方案中,数据只能在手机端呈现,而并不能通过电脑等其他设备查看数据,实属遗憾。


用树莓派搭建的校园气象信息检测系统_第1张图片
Blynk物联网平台结构图

硬件准备

名称 功能
树莓派3B 作为服务器存储、处理数据
WeMos D1物联网开发板 将传感器数据发送到服务器
DHT11温湿度传感器 采集温度数据
大屏幕(电视机或显示器) 呈现数据、图表等

设计思路

在树莓派上搭建Blynk server服务器,让开发板将数据存储在树莓派中;在树莓派上安装metabese,用于解析数据;用树莓派自带的浏览器访问metabese站点查看数据。


用树莓派搭建的校园气象信息检测系统_第2张图片
系统结构图

树莓派的安装与配置

从树莓派官网(https://www.raspberrypi.org/downloads/raspbian/)下载RASPBIAN STRETCH LITE版系统。系统烧写完成后,将树莓派连上鼠标键盘和显示器,利用终端进行基础配置。

树莓派基础配置

在命令行中输入sudo raspi-config,进行配置,具体配置如下图。


用树莓派搭建的校园气象信息检测系统_第3张图片
树莓派配置

Change User Password
修改用户密码,新装的树莓派系统需要修改默认用户pi的密码,选中后回车,输入新密码即可。
Network Options
网络设置,选择Wi-fi,输入你的Wi-fi名称及密码,注意区分大小写,在下次重启后树莓派就可以连接到网络了。
Localisation Options
本地化配置
Change Locale
语言和区域设置,下拉选择ZH-CN UTF-8然后按回车。
Change Timezone
设置时区,将时区设为Asia/Shanghai,如果不进行设置,树莓派的时间就会跟北京时间相差8小时。
完成基础设置后,运行以下命令,更新树莓派系统及软件。

sudo apt-get update
sudo apt-get upgrade

设置完成后,重启树莓派。
命令行输入ifconfig,查看并记录树莓派在内网的IP地址,如192.168.1.108。


用树莓派搭建的校园气象信息检测系统_第4张图片
查看树莓派IP

安装桌面系统

我们安装的树莓派系统是Lite版,该版本是树莓派的精简版,只保留树莓派系统最基础的功能,为应用程序提供尽可能多的资源。为了能用该树莓派连接屏幕显示数据与图表,还需要在该树莓派上安装桌面系统和浏览器。
依次执行以下命令:

sudo apt-get install --no-install-recommends xserver-xorg
sudo apt-get install --no-install-recommends xinit
sudo apt-get install raspberrypi-ui-mods
sudo apt-get install chromium-browser

重启树莓派后,用pi用户登录系统,发现树莓派已经有了桌面系统,并且已经安装了chromium浏览器。此时的树莓派已经具备一台小型电脑的功能,有图形界面,支持鼠标键盘操作,具有浏览网页的浏览器。

安装Blynk Server

Blynk Server是基于Java开发的开源Blynk服务器端程序,方便用户建立安全稳定的Blynk私有云。开发板将数据传输并存储在Blynk云,手机app端可以访问Blynk云端数据。比较Blynk的私有云与公共云,主要有以下区别:

指标 公共云 私有云
稳定性 服务器在国外,响应速度较慢,且稳定性受网络、公共云等影响。 可以安装在内网或国内公网,速度有保证,稳定性完全由自己掌握。
服务器资源 免费提供1000能量值,一般可以开发两个小型应用。 能量值无上限,可以开发的应用数量理论无上限。
二次开发 不能进行二次开发 可以进行二次开发,数据存储在私有云,可进行深度挖掘。
安全性 只能通过账号密码保护数据安全。 可以设置多种安全策略,比如绑定MAC,IP等。

在安装Blynk server之前要先安装java8,输入命令sudo apt-get install oracle-java8-jdk
下载Blynk server
wget https://github.com/blynkkk/blynk-server/releases/download/v0.32.1/server-0.32.1-java8.jar
(blynk server 最新版查看地址https://github.com/blynkkk/blynk-server/releases/latest)
在同级目录下创建Blynk server配置文件sudo nano server.properties
将官方提供的配置文件样例粘贴到server.properties文件中,https://github.com/Blynkkk/Blynk-server/blob/master/server/core/src/main/resources/server.properties
为了开启blynk的数据库存储功能,需要修改以下配置,将enable.db和enable.raw.db.data.store都设为true:

#enable DB
enable.db=true
#enable raw data storage to DB
enable.raw.db.data.store=true

安装并配置PostgreSQL9.6数据库

sudo apt-get --no-install-recommends install postgresql-9.6 postgresql-contrib-9.6

创建数据库配置文件

在临时目录创建数据库配置文件sudo nano /tmp/create_schema.sql
找到blynk官方给出的数据库配置文件https://raw.githubusercontent.com/Blynkkk/Blynk-server/master/server/core/src/main/resources/create_schema.sql
但是,官方提供的配置文件中时间变量的类型为timestamp,默认不带时区,会导致数据库中记录的时间值与当地时间有差值,因此需要修改该文件。将create_schema.sql文件中所有的timestamp替换成timestamp with time zone,再将内容复制到create_schema.sql文件中。

创建数据库

sudo su – postgres,切换到postgres(数据库管理员账号)。再输入psql,进入数据库管理界面,执行数据库文件\i create_schema.sql,用于创建数据库。根据数据库配置文件,将会创建一个名为Blynk的数据库,该数据库用于存放Blynk产生的所有数据,同时还会创建一个用户名和密码都为test的用户。完成后执行\q退出psql。

Metabese安装及配置

Metabase是一套开源、易用的数据可视化分析工具,可以方便地对数据库中的数据进行挖掘分析,创建柱状图、折线图等统计图表,非常适用于统计分析天气数据。
下载最新的metabase到树莓派
wget http://downloads.metabase.com/v0.28.1/metabase.jar
(metabase最新版查看地址https://www.metabase.com/start/jar.html)

启动相关服务

启动Blynk server服务,java –jar server-0.32.1-java8.jar -dataFolder /home/pi/Blynk
启动metabase服务,java -jar /home/pi/metabase.jar
稍等片刻,相关服务就会启动。
利用树莓派自带的浏览器访问以下网址进行功能测试,Blynk server后台地址https://127.0.0.1:9443/admin;metabase站点地址http://127.0.0.1:3000。如果两个站点都能正常访问,则说明部署完成。
为使用方便,可以将以上两项服务设为开机启动,用命令行打开rc.local文件并编辑该文件,sudo nano /etc/rc.local
在该文件中增加以下两行命令,用于开机时启动相关服务。

java -jar /home/pi/server-0.32.1-java8.jar -dataFolder /home/pi/Blynk &
java -jar /home/pi/metabase.jar

重启树莓派,等待2-3分钟后所有相关服务启动完成,服务器端的配置到此结束。

Blynk Server后台管理

访问blynk server后台,地址为https://127.0.0.1:9443/admin,注意该地址为https,而不是http。默认管理员账号为[email protected],密码为admin。登录后可以修改该账号的用户名和密码,还可以创建新的用户名。创建用户名后才能通过app端产生对应的授权码。

Blynk应用开发

利用Arduino IDE编写程序上传到开发板中,其中的服务器地址填写为树莓派的IP地址。
比如:将DHT11温湿度传感器接在D2管脚上,将测到的温湿度值传给虚拟管脚V5、V6,然后每隔15分钟将数据提交给树莓派服务器。程序如下:

#define BLYNK_PRINT Serial
#include 
#include 
#include 
char auth[] = "385328d811954a4ab990e7899971****";//授权码
char ssid[] = "****";//wifi名称
char pass[] = "****";//wifi密码
#define DHTPIN D2//DHT11温湿度传感器连接管脚
#define DHTTYPE DHT11//DHT温湿度传感器类型
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
void sendSensor()
{
  float h = dht.readHumidity();//读取湿度
  float t = dht.readTemperature(); //读取温度

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Blynk.virtualWrite(V5, h);//向blynk发送数据
  Blynk.virtualWrite(V6, t);
}
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,108), 8442);
  dht.begin();
  timer.setInterval(900000L, sendSensor);//每隔15分钟发送传感器数据
}
void loop()
{
  Blynk.run();
  timer.run();
}

具体Blynk应用开发可参考物联网开发,SO EASY——基于Blynk的物联网应用开发。

Metabase配置

用树莓派自带浏览器访问metabase站点,地址为http://127.0.0.1:3000。首次访问时需要等待片刻,系统会进行初始化。

用树莓派搭建的校园气象信息检测系统_第5张图片
metabase站点初始化

根据要求,填写管理员信息。
用树莓派搭建的校园气象信息检测系统_第6张图片
管理员信息

然后填写数据库信息,数据库类型选择PostgreSQL,数据库名称为blynk,用户名和密码都是test。
用树莓派搭建的校园气象信息检测系统_第7张图片
metabase数据库配置

完成metabase基础设置后,就可以创建数据监控面板了。
在metabase中,首先要创建dashboard,一个dashboard中可以包含多个question,每个question可以理解为一张图表。
用树莓派搭建的校园气象信息检测系统_第8张图片
创建数据面板

创建多个question共同组成一个dashboard,用于显示不同维度的气象信息。比如,创建最近24小时的温度变化情况图,最近30天温度变化情况图,甚至可以分析一年以来的温度变化情况。
用树莓派搭建的校园气象信息检测系统_第9张图片
创建问题

用树莓派搭建的校园气象信息检测系统_第10张图片
metabase面板

将这样的一块大屏幕挂在学校的显眼位置,学生们走过都会去看看温度以及变化曲线,这必将成为学校里最受学生欢迎的科学角。在此仅仅研究了温度和湿度的变化情况,随着传感器的增加,还可以研究更多气象指标,如光照、PM值等。

你可能感兴趣的:(用树莓派搭建的校园气象信息检测系统)