raspberry-pi-bedroom-monitor icon indicating copy to clipboard operation
raspberry-pi-bedroom-monitor copied to clipboard

基于树莓派的多功能寝室监控系统

基于树莓派的多功能寝室监控系统

这个标题看起来就很像大学生的课设,但是其实不是,因为我是小学生,所以是小学生的课设。

大家在寝室里经常会遇到一些难题,比如寝室太冷、太热、太吵,然后你要和舍友理论的时候,舍友却说「不是和之前差不多吗」。

好在聪明的莉沫酱发明了多功能寝室监控系统,有了寝室监控系统记录下这些数据,以后你就可以和舍友说「你看,这个星期的温度比上星期高了0.5度」,然后舍友就会说「哦,那就不用开空调了」,然后你就可以安心的睡觉了。

材料

  • 树莓派4B 1个 (价格 ¥1000)
  • 16G以上的SD卡 1个 (价格 ¥50)
  • 传感器 (可选)
    • 微雪的传感器组 1个 (价格 ¥200)
      • TSL25911FN
      • BME280
      • ICM20948
      • LTR390-UV-1
      • SPG40
    • SCD40 1个 (价格 ¥100)
    • 杜邦线若干 (价格 ¥2)
  • 麦克风 1个 (可选) (价格 ¥10)

然后因为树莓派现在很贵,也可以买win10平板加usb转GPIO的方式来实现,还白赚了一个平板,不过我没有试过,所以也不知道会不会有坑。

监控指标

空气

空气指标包括温度、湿度、大气压、二氧化碳浓度、VOC浓度。

  • 人的活动会产生二氧化碳和VOC,所以这两个指标可以用来判断舍友是否在房间里。

  • 由于VOC是由味道产生的,所以可以根据VOC周期性的变化计算舍友多少天没有洗澡了。

  • 此外,二氧化碳浓度过高是导致舍友变成傻子的重要原因,所以这个指标也可以用来判断舍友是不是傻子。

场指标包括光照强度、紫外线强度、声音、磁场、加速度。

  • 光照强度可以用来统计寝室每天关灯上床的时间。

  • 紫外线强度在室内没有什么作用,不过因为紫外光很难透过普通玻璃,所以可以判断窗户是不是开着的。

  • 声音的频谱可以用来推理当时发生了什么事情,比如说开关门的声音是一条很高的竖线,洗衣机的声音是周期性的短线。

  • 地球上的加速度通常都是1G,如果你发现你测出来的值不是1G,那就说明你是在异世界上大学。

网络

网络指标包括WiFi信号、WiFi频道、蓝牙信号、局域网主机ping时间、互联网http get时间。

  • WiFi信号可以用来诊断网络问题,如果发现它出现异常,那就得及时检查路由器是不是被外卖的盒子埋住了。

  • 如果你的寝室的WiFi频道和隔壁寝室的WiFi频道重合了,会导致互相干扰,这时候就需要你们去换个WiFi频道。

  • 局域网主机ping时间可以帮你和你的舍友找手机,如果手机ping的延迟很大,那就说明手机在厕所里,如果ping不通,那就说明手机在教室里。

  • 互联网http get时间可以在你的舍友过来找你说「今天怎么网这么卡」的时候,把责任推卸给运营商。

然后这里有一个样例可以看: 监控面板的样例

使用方法

  1. 首先要把树莓派和传感器组装好,并且连上网。

  2. 把这个仓库clone到树莓派上。

  3. 执行 pip install -r requirements.txt

这里会有几个库装不上,这是正常的,网上搜一下就能解决,他们有说要apt install哪些但是我已经忘记了……

  1. 文件夹里面有5个监控程序,分别是监控传感器监控声音监控系统监控蓝牙监控网络,可以直接用python3命令启动,你需要监控哪些就开哪些吧。

(如果你知道怎么在本地起Grafana,那后面就可以跳过了)

  1. 接下来要去注册一个Grafana Cloud的帐号。

  2. 进到你的Grafana项目主页点击「+ Connect data」添加一个数据源,选择「Hosted Prometheus metrics」。

  3. 接下来根据网页上的提示,一步步填写即可。其中有一个它让你复制配置到本地的,那个地方有- targets: ['localhost:9100'],得把它换成- targets: ['localhost:9191', 'localhost:9192', 'localhost:9193', 'localhost:9194', 'localhost:9195']

  4. 添加好数据源之后,新建一个Dashboard,但不是空白的,而是选择「Import」,然后把model.json里的内容粘贴进去,点击「Load」即可。

结束

就这样,大家88,我要去和舍友一起睡觉了。