2021-9-29 22:30:46 [显示全部楼层]
2849浏览
查看: 2849|回复: 0

[ESP8266/ESP32] 雨量监测IoT#ESP8266知识分享#

[复制链接]
本帖最后由 gada888 于 2021-9-30 13:37 编辑

项目实验目标


发送到云端的资料做统计服务 , 以便接下来可以动态产生资料统计图。
这次用雨水传感收集数据,并通过ESP8266将数据传到adafruit.io云平台,做数据的图表化展现。编程语言用的是micropython



雨量监测IoT#ESP8266知识分享#图3


先来认识如下硬件
雨量监测IoT#ESP8266知识分享#图1
雨量监测IoT#ESP8266知识分享#图4
雨量监测IoT#ESP8266知识分享#图2
这是连线图。

电子世界里,数字信号有高低电平两个值,HIGH/LOW.但实际世界的电压不是二选一,是个连续的变化,例如0.1,0.2等等,这叫模拟信号,这里的水滴传感
就是要透过ADC模拟转数字转化器来吧电压变成PC可以认识的数字值。

ADC会将0-3.3转换为0-1024.传感传回的值除以1024再乘以3.3就是转换的电压。
雨量监测IoT#ESP8266知识分享#图5
  1. from machine import ADC
  2. import time
  3. import network
  4. import urequests
  5. # 连接 Wifi 网路
  6. sta_if = network.WLAN(network.STA_IF)
  7. sta_if.active(True)
  8. sta_if.connect("111111111", "11111111")
  9. while not sta_if.isconnected():
  10.     pass
  11. print("Wifi已連上")
  12. aio_username = "11111111111"
  13. aio_key = "111111111111111111"
  14. aio_feed = "rain"
  15. # 建立 A0 位的 ADC , 並命名为 adc
  16. adc = ADC(0)
  17. while True:
  18.     # 读取雨水感測器经过ADC转换过的数值
  19.     value = adc.read()
  20.    
  21.     if value < 800:   # 小于800 表示有下雨
  22.         # 雨水越多, ADC 值越低, 所以用最大值 1024 减 ADC 值,
  23.         data = {"value": 1024-value}
  24.     else:
  25.         # 沒下雨就输出 0
  26.         data = {"value": 0}
  27.         
  28.     # 设定Adafruit IO 上传资料的API地址
  29.     url = ("https://io.adafruit.com/api/v2/" + aio_username +
  30.            "/feeds/" + aio_feed + "/data?X-AIO-Key=" + aio_key)
  31.    
  32.     # 用 POST upload JSON DATA
  33.     urequests.post(url, json=data)
  34.     # pause 2 sec, avoid wasting Adafruit IO free quota
  35.     time.sleep(5)
复制代码
注意:aio_username = "11111111111"
aio_key = "111111111111111111"这个1111111111要填你的adafruit注册后的名称以及adafruit给你的秘钥。

雨量监测IoT#ESP8266知识分享#图6
认识下adafruit MQTT服务器
雨量监测IoT#ESP8266知识分享#图7
进入feed
雨量监测IoT#ESP8266知识分享#图8
建立一个rain主题
雨量监测IoT#ESP8266知识分享#图9
进入秘钥,查看并拷贝到记事本。
================
打开代码,把名字和秘钥粘贴到下面代码内,替换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)



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail