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

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


Blynk物联网平台结构图

硬件准备

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

设计思路

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


系统结构图

树莓派的安装与配置

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

树莓派基础配置

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


树莓派配置

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。


查看树莓派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。默认管理员账号为admin@blynk.cc,密码为admin。登录后可以修改该账号的用户名和密码,还可以创建新的用户名。创建用户名后才能通过app端产生对应的授权码。

Blynk应用开发

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

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
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。首次访问时需要等待片刻,系统会进行初始化。

metabase站点初始化

根据要求,填写管理员信息。
管理员信息

然后填写数据库信息,数据库类型选择PostgreSQL,数据库名称为blynk,用户名和密码都是test。
metabase数据库配置

完成metabase基础设置后,就可以创建数据监控面板了。
在metabase中,首先要创建dashboard,一个dashboard中可以包含多个question,每个question可以理解为一张图表。
创建数据面板

创建多个question共同组成一个dashboard,用于显示不同维度的气象信息。比如,创建最近24小时的温度变化情况图,最近30天温度变化情况图,甚至可以分析一年以来的温度变化情况。
创建问题

metabase面板

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容