2021-5-29 15:24:57 [显示全部楼层]
373浏览
查看: 373|回复: 3

[项目] ESP32-E的温湿度监控DIY开发记录

[复制链接]
本帖最后由 lll9p 于 2021-5-29 15:24 编辑

缘起:

我们实验室经常做一些检测,有时候要边升温边测试,我想对设备内部的环境进行监测,我打算用手头上的ESP32-E进行开发。

ESP32可以安装传感器,并连接上wifi,通过数据传输,完全可以监测到环境的温湿度变化~~这里记录一下过程~



硬件列表:

序号 名称
1FireBeetle Board ESP32-E开发板
2AM2301A 温湿度传感器
3USB Type-C供电线
4充电宝


准备工作:

1、开发环境
1)安装esp-idf
根据espressif指南,直接从idf-installer下载安装即可,我用的是2.8的installer。
2)安装esp-idf-lib
由于需要使用温湿度模块,esp-idf-lib有DHT模块的驱动,直接clone即可。
  1. git clone https://github.com/UncleRus/esp-idf-lib.git
复制代码


2、接线
将AM2301A接到ESP32-E开发板,红线接到3V3,黄线接到GPIO17,黑线接到GND,USB线接到电脑。
365571523fe4bd845bd0a9d2df05a87.jpg

开发工作:

1、打开开发环境

  1. pwsh.exe -nologo -NoExit -Command xxx\esp-idf\export.ps1;xxx\.espressif\python_env\idf4.4_py3.8_env\Scripts\Activate.ps1
复制代码
2、配置ESP32工程
代码可以从我的GITHUB上下载:https://github.com/lll9p/ESP-32-AM2301
设置开发板

  1. idf.py set-target esp32
复制代码
设置要连接的WIFI账号密码

  1. idf.py menuconfig
复制代码
如图所示,设置好之后按s再按q保存退出:
1.png 2.png

编译上传:

  1. idf.py build
  2. idf.py -p com3 flash
复制代码


代码解释:


1、ESP32端
main/main.c

  1. //设置AM2301的类型和端口
  2. static const dht_sensor_type_t sensor_type = DHT_TYPE_AM2301;
  3. static const gpio_num_t dht_gpio = 17;
  4. //从传感器读取数据并响应http
  5.     int16_t temperature = 0;
  6.     int16_t humidity = 0;
  7.     char data_str[30] = { 0 };
  8.     if (dht_read_data(sensor_type, dht_gpio, &humidity, &temperature) == ESP_OK){
  9.         sprintf(data_str,"%d;%d",temperature,humidity);
  10.     } else {
  11.         sprintf(data_str,"%d;%d",temperature,humidity);
  12.     }
  13.     req->user_ctx = data_str;
复制代码
2、客户端
read.py
  1.     #从命令行读取IP,并从IP获取数据,保存到data.csv
  2. if len(sys.argv) == 1:
  3.      ip = ""
  4.     else:
  5.      ip = sys.argv[1]
  6.     req = request.Request(f"http://{ip}", method="GET")
  7.     with request.urlopen(req) as f:
  8.      r = f.read().decode('utf-8')
  9.         data = list(map(lambda num: float(num) / 10., r.split(";")))
  10.     df = pd.read_csv("data.csv")
  11.     df = df.append({'temperature': data[0],
  12.                     'humidity': data[1]}, ignore_index=True)
  13.     df.to_csv('data.csv')
复制代码


客户端运行
将ESP32+传感器连接到充电宝,放在设备中,客户端运行 python read.py ,即可从浏览器访问数据,每3秒 更新一次。

效果展示:

带上充电宝安装后是这样的 w243.jpg

运行时每隔3秒进行一次更新数据


动画.gif
运行半小时后,没有数据丢失,还是挺稳定的

newplot.png













刘思宇hhhhhhhhh  学徒

发表于 2021-5-29 22:38:57

看起来不错啊
回复

使用道具 举报

lll9p  学徒
 楼主|

发表于 2021-5-30 08:56:04


第一次用ESP32,很有意思~
回复

使用道具 举报

hmilycheng  见习技师

发表于 2021-6-19 15:36:41

不错!!
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail