温湿度监控系统

基于 Rasperry Pi 3B and Arduino

公司为了防止夏天机房温度过高,需要一个温度监测工具,其实市面上的小米温度监测只要35块,但是公司想着可自定义扩展神马的,就让我做一个从硬件到软件的温湿度监测系统(总赶脚是在试用期考验我呢),好在熬了3个通宵做出来了,考虑到之后还要增加电压警告等功能,选型如下:


  • 开发板:(来自万能的大淘宝)
    • Rasberry Pi 3:中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、提供/调用API以方便用其他终端控制。
    • Arduino UNO:负责传感器采样,和 RPi 进行通信。
  • 温度传感器:DHT22
  • 语言:Python3,Java8
  • 数据库:mysql

Arduino

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "DHT.h"
DHT dht(2, DHT22);

void setup()
{
Serial.begin(9600);
dht.begin();
}

void loop()
{
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" ");
Serial.print("Temperature: ");
Serial.println(temperature);
delay(2000);
}

RasberryPi 3B

安装系统

镜像:raspbian-stretch-lite
microSD卡:16G,推荐8G以上

  • 将SD卡格式化:(Mac)磁盘工具–>抹掉–>MS-DOS(FAT)–>抹掉
  • 终端

    查看挂载,SD 卡假设为link
    1
    + 卸载 SD 卡 ```diskutil unmount /dev/disk2s1

  • list``` 确认下的 disk2
    1
    + [官网](https://www.raspberrypi.org/downloads/)下载镜像,写入 SD 卡 ```sudo dd bs=4m if=本机镜像路径 of=/dev/disk2``` 查看进度可以另起终端 ```sudo kill -INFO $(pgrep ^dd)
  • 由于树莓派默认不开启 ssh,写入成功后在 /boot/ 创建无后缀的文件名为 ssh 的文件

  • 设置自动连接 Wi-Fi:在 /boot/ 下创建 wpa_supplicant.conf

    1
    2
    3
    4
    5
    6
    7
    8
    country=CN
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
    scan_ssid=1#SSID被隐藏时设置
    ssid="TaiGe"#Wi-Fi名
    psk="HaoyunHu888"#Wi-Fi密码
    }
  • 弹出SD卡

    unmountDisklink
    1
    2
    3
    4
    5

    以上,RasberryPi的系统安装完成,可以将SD卡插入开发版上电开机了

    ### 登录系统
    ##### SSH

ssh [email protected]
default password: raspberry

1
2
3
4
通过路由器查看树莓派的当前ip:

- 打开网页```192.168.1.1```,登录系统
- 状态/用户侧信息/以太网接口信息/,找到客户端名称为raspberrypi的IP地址: ```***.**.**.*

关机

shutdown -h now```,重新上电后会自动开机
1
2
3
4
5
6
7
8
9

- [系统安装参考](http://www.lugick.com/2018/01/30/raspberry-pi-init/)
- [查看rpiIP参考](https://blog.csdn.net/wongnoubo/article/details/79628313)

---
## RaspberryPi读取Arduino数据

### 安装Python3
```sudo aptitude install python-dev

安装Python的GPIO模块

用于控制LED、电机等

1
sudo apt-get install rpi.gpio

安装Serial

用于串口通信及USB通信

apt-get install python-serial```
1
2
3
4
5

### 安装串口调试程序
minicom是linux平台串口调试工具,可以用它来读取Arduino通过USB串口发送的传感器数值。

- 在RaspberryPi上安装minicom:```sudo apt-get install minicom

  • 配置minicom:
  • minicom启动:
    -b 9600 -Dlink
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    - -b代表波特率
    - -D代表端口
    - /dev/ttyACM0 代表打开与Arduino相连的端口

    ### Python打印数据
    show.py

    ~~~python
    import serial
    ser = serial.Serial('/dev/ttyACM0',9600)
    info = ser.readline()
    while info:
    print(info)
    info = ser.readline()
    ~~~

    Python调用http API
    安装requests
    ```sudo pip install requests

后台运行py脚本
nohup python api.py &

Joyce Lau wechat
扫一扫上面的微信订阅号,和我家萌客服聊聊天哟!
谢谢打赏