雨量监测IoT#ESP8266知识分享#
本帖最后由 gada888 于 2021-9-30 13:37 编辑项目实验目标
发送到云端的资料做统计服务 , 以便接下来可以动态产生资料统计图。
这次用雨水传感收集数据,并通过ESP8266将数据传到adafruit.io云平台,做数据的图表化展现。编程语言用的是micropython
先来认识如下硬件
这是连线图。
电子世界里,数字信号有高低电平两个值,HIGH/LOW.但实际世界的电压不是二选一,是个连续的变化,例如0.1,0.2等等,这叫模拟信号,这里的水滴传感
就是要透过ADC模拟转数字转化器来吧电压变成PC可以认识的数字值。
ADC会将0-3.3转换为0-1024.传感传回的值除以1024再乘以3.3就是转换的电压。
from machine import ADC
import time
import network
import urequests
# 连接 Wifi 网路
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("111111111", "11111111")
while not sta_if.isconnected():
pass
print("Wifi已連上")
aio_username = "11111111111"
aio_key = "111111111111111111"
aio_feed = "rain"
# 建立 A0 位的 ADC , 並命名为 adc
adc = ADC(0)
while True:
# 读取雨水感測器经过ADC转换过的数值
value = adc.read()
if value < 800: # 小于800 表示有下雨
# 雨水越多, ADC 值越低, 所以用最大值 1024 减 ADC 值,
data = {"value": 1024-value}
else:
# 沒下雨就输出 0
data = {"value": 0}
# 设定Adafruit IO 上传资料的API地址
url = ("https://io.adafruit.com/api/v2/" + aio_username +
"/feeds/" + aio_feed + "/data?X-AIO-Key=" + aio_key)
# 用 POST upload JSON DATA
urequests.post(url, json=data)
# pause 2 sec, avoid wasting Adafruit IO free quota
time.sleep(5)
注意:aio_username = "11111111111"
aio_key = "111111111111111111"这个1111111111要填你的adafruit注册后的名称以及adafruit给你的秘钥。
认识下adafruit MQTT服务器
进入feed
建立一个rain主题
进入秘钥,查看并拷贝到记事本。
================
打开代码,把名字和秘钥粘贴到下面代码内,替换111111.feed填rain。
aio_username = "11111111111"
aio_key = "111111111111111111"
aio_feed = "rain"
===========
代码的如下这个命令,用了urequests去连线HTTP服务,并且用post来传送资料。urequests还会将资料转换为JSON格式来上传。
# 用 POST upload JSON DATA
urequests.post(url, json=data)
https://www.bilibili.com/video/BV1Hv411G7ed/
页:
[1]