【项目介绍】
农历的七月十五,又称为中元节、鬼节、七月半或盂兰盆节,是我国传统的民间节日。这个节日起源于北魏时期,时间在农历七月十五日,部分地区在七月十四日庆祝。中元节是道教的叫法,佛教则称之为盂兰盆节。盂兰盆节源于印度佛教,意为“倒悬”,传说是为了救度饿鬼的痛苦。
在中国传统文化中,中元节、盂兰盆节和鬼节有祭祀祖先和崇尚忠烈的共同文化内涵。民间传说,每年农历七月初,阎王会大开地狱之门,让受苦受难的冤魂厉鬼走出地狱,享受人间的血食。因此,人们认为七月是鬼月,这个月人们认为是不吉的月份,既不嫁娶,也不搬家。七月十四日则鬼门大开。
在中元节这一天,民间有祭祖、焚烧纸钱、祭孤魂野鬼等习俗。家家户户都会给自己已故的亲人敬上一品香,然后烧纸钱,用以表示后人对先人的孝敬。同时,人们还会举行普渡会,以救度那些在世间受苦的孤魂野鬼。
中元寄哀思,灯下念故人。有关中元节的诗词也有很多,例如:范仲淹的《中元夜百花洲作》,陆龟蒙的《中元夜寄道侣》,李商隐《中元作》等。无论是河灯度孤、祭祖、祭祀土地、上香,烧纸,还是作诗赋词,都寄托了对故人的思念之情。
那么问题来了,河灯度孤、祭祖、祭祀土地、上香,烧纸等,另一个世界的故人会知道吗?这些活动就是我们和另一个世界的故人的信息交流吗?有些人肯定了是可以交流的,有诗为证:
十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。纵使相逢应不识,尘满面,鬓如霜。
夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。料得年年肠断处,明月夜,短松冈。
就是说,另一个世界的故人会进入我们的梦境给我们回复信息的,这种说法认同的人也是挺多的,你认为呢?
在遥远的未来,地球上的人类因为科技的进步,成功实现了阴阳两界的信息互通。承担信息互通的关键是发明了通灵机器人。阴界的故人非常担心地球的环境,因为他们离开地球的时候已经知道地球的环境越来越恶化,为了能让阴界的人能实时知道地球环境的变化,人类利用物联网技术,通过通灵机器人将地球某地的实时天气变化等情况传送到阴界。
遇到的问题:项目背景是科幻的,所以只能实现现实中的项目部分,至于通灵机器人,那是以后的事,我相信一定能够实现,因为有一句话说得好”没有做不到,只有想不到”。
【制作过程】
步骤1 硬件准备
硬件连接:SCI数据采集模块连接到行空板,PM2.5空气质量传感器和云雀气象仪连接到SCI数据采集模块,如下图:
步骤2 软件准备
一、Mind+1.8.0 SIoT V2版本
下载链接:
腾讯微云下载(推荐): 链接: https://share.weiyun.com/6SFhgLQj
阿里云盘下载:
链接:https://www.aliyundrive.com/s/BXPfB9TpjEn
提取码: 49vj百度云盘下载:
链接:https://pan.baidu.com/s/1vjb8phx8wUf0BiLlEQV9oQ?pwd=mind
提取码:mind
行空板上默认内置的是SIoT V1,而Mind+可视化平台需要使用SIoT V2,因此需要先进行升级。
升级方法:
1.下载升级文件:升级行空板SIOTV2.mp
2.打开Mind+,在项目中打开上一步下载的升级行空板SIOTV2.mp文件。
3.行空板连接电脑待启动完成,点击连接远程终端中选择10.1.2.3连接行空板,连接成功之后点击运行,等待行空板重启完成即可。
4.此时打开行空板上的SIOT网页,按Ctrl+F5刷新页面,可以看到界面已经SIOTV2了,登录账号是siot,密码dfrobot。
连接行空板上的SIoT服务器
在可视化平台上输入行空板的IP,USB线连接电脑时为10.1.2.3,点击完成即连接到了行空板上的SIoT服务器。
开关按钮选择Topic为siot/测试,按钮开启发送on,关闭发送off
二、SCI采集模块升级固件
https://gitee.com/dfrobot/DFRobot_RP2040_SCI/tree/master/resources/firmware
下载好最新固件Gravity: SCI采集模块固件
断电情况下,摁住SCI模块右上角的固件升级按钮(BOOT键),使用Type-c数据线将模块与电脑相连,此时SCI模块的电源灯亮起,屏幕无显示,在电脑中会弹出一个名为“RPI-RP2”的U盘,此时即可松开固件升级按钮。
将最新的“DFR0999_FW_V1.0.3.uf2”固件文件拖入“RPI-RP2”U盘固件烧录完成后,屏幕自动点亮,默认显示模块的ID号和系统时间,此时电脑会弹出一个名为“U盘”的U盘空间,首次使用需要将此U盘格式化。
步骤3 Mind+扩展设置
1.官方库添加
2.pinpong库添加
3.用户库添加
步骤4 SIoT服务器设置
打开http://10.1.2.3:8080/topics网址,新建主题如下:
步骤5 编程
1.初始化设置
2.MQTT订阅设置
3.天气预报部分设置
本部分借鉴了[教程]【行空板图形化Python入门教程】第15课:天气助手请移步学习。
用自己的账号登录,地址改为兰山,主要变成如下:
4.天气预报内容获取设置
5.云雀数据获取设置
6.SCI采集卡 (PM2.5空气质量传感器)数据获取设置
7.完整编程
步骤6 可视化大屏设置
可视化大屏设置如下图:
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from DFRobot_Atmospherlum import *
from dfrobot_rp2040_sci import *
from pinpong.board import Board
import requests
import siot
import time
Board().begin()
siot.init(client_id="31291515666326464",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
siot.connect()
siot.loop()
SCI1 = DFRobot_RP2040_SCI_IIC(addr=0x21)
while SCI1.begin() != 0:
print("Initialization Sensor Universal Adapter Board failed.")
time.sleep(1)
print("Initialization Sensor Universal Adapter Board done.")
yunque_i2c = DFRobot_Atmospherlum_I2C(0x42)
while (yunque_i2c.begin() != 0):
print("yunque_i2c initialize failed!!")
time.sleep(1)
print("Sensor initialize success!!")
yunque_i2c.set_local_time()
time.sleep(1)
siot.getsubscribe(topic="siot/时间")
siot.getsubscribe(topic="siot/湿度")
siot.getsubscribe(topic="siot/气压")
siot.getsubscribe(topic="siot/空气质量")
siot.getsubscribe(topic="siot/风速")
siot.getsubscribe(topic="siot/风力")
siot.getsubscribe(topic="siot/风向")
siot.getsubscribe(topic="siot/最低温度")
siot.getsubscribe(topic="siot/最高温度")
siot.getsubscribe(topic="siot/实时温度")
siot.getsubscribe(topic="siot/天气情况")
siot.getsubscribe(topic="siot/qiya")
siot.getsubscribe(topic="siot/shidu")
siot.getsubscribe(topic="siot/wendu")
siot.getsubscribe(topic="siot/fengxiang")
siot.getsubscribe(topic="siot/fengsu")
siot.getsubscribe(topic="siot/PM2.5")
siot.getsubscribe(topic="siot/PM1.0")
siot.getsubscribe(topic="siot/PM2.5说明")
siot.getsubscribe(topic="siot/TDS")
siot.getsubscribe(topic="siot/TDS水质说明")
url = (str("https://www.yiketianqi.com/free/day?appid=29988737&appsecret=Jipy6ZPN&unescape=1&city=") + str("兰山"))
response = requests.get(url)
data = response.json()
while True:
siot.publish(topic="siot/天气情况", data=(data["wea"]))
siot.publish(topic="siot/实时温度", data=(str((data["tem"])) + str("°C")))
siot.publish(topic="siot/最高温度", data=(str((data["tem_day"])) + str("°C")))
siot.publish(topic="siot/最低温度", data=(str((data["tem_night"])) + str("°C")))
siot.publish(topic="siot/湿度", data=(data["humidity"]))
siot.publish(topic="siot/风向", data=(data["win"]))
siot.publish(topic="siot/风力", data=(data["win_speed"]))
siot.publish(topic="siot/风速", data=(data["win_meter"]))
siot.publish(topic="siot/空气质量", data=(data["air"]))
siot.publish(topic="siot/气压", data=(data["pressure"]))
siot.publish(topic="siot/时间", data=(data["update_time"]))
siot.publish(topic="siot/fengxiang", data=(yunque_i2c.get_value("dir")))
siot.publish(topic="siot/fengsu", data=(str((yunque_i2c.get_value("speed"))) + str((yunque_i2c.get_unit("speed")))))
siot.publish(topic="siot/wendu", data=(str((yunque_i2c.get_value("Temp"))) + str((yunque_i2c.get_unit("Temp")))))
siot.publish(topic="siot/shidu", data=(str((yunque_i2c.get_value("Humi"))) + str((yunque_i2c.get_unit("Humi")))))
siot.publish(topic="siot/qiya", data=(str((yunque_i2c.get_value("Pressure"))) + str((yunque_i2c.get_unit("Pressure")))))
siot.publish(topic="siot/PM2.5", data=(str(SCI1.get_value0("PM2.5")) + str(SCI1.get_unit0("PM2.5"))))
siot.publish(topic="siot/PM1.0", data=(str(SCI1.get_value0("PM1.0")) + str(SCI1.get_unit0("PM1.0"))))
siot.publish(topic="siot/TDS", data=(str(SCI1.get_value0("TDS")) + str(SCI1.get_unit0("TDS"))))
siot.publish(topic="siot/TDS水质说明", data="TDS(Total Dissolved Solids),中文名总溶解固体,又称溶解性固体总量,表明1升水中溶有多少毫克溶解性固体。一般来说,TDS值越高,表示水中含有的溶解物越多,水就越不洁净。因此,TDS值的大小,可作为反映水的洁净程度的依据之一。")
siot.publish(topic="siot/PM2.5说明", data="PM2.5空气质量传感器采用的是一款基于激光散射原理的数字式通用颗粒物传感器,可连续采集并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而换算成为质量浓度,并利用I2C接口输出相关数据。本传感器可嵌入各种与空气中悬浮颗粒物浓度相关的仪器仪表或环境改善设备,为其提供及时准确的浓度数据。")
time.sleep(1)
【效果展示】
【总结】
通过本次作品制作,已经能熟练的使用SCI数据采集模块、云雀气象仪、Mind+数据可视化,确实是神器啊。本作品主要是数据采集方面的运用,至于通过通灵机器人和阴界传送信息只是个幻想,现阶段不能实现。
附件
评论