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即可。
git clone https://github.com/UncleRus/esp-idf-lib.git
2、接线
将AM2301A接到ESP32-E开发板,红线接到3V3,黄线接到GPIO17,黑线接到GND,USB线接到电脑。
开发工作:
1、打开开发环境
pwsh.exe -nologo -NoExit -Command xxx\esp-idf\export.ps1;xxx\.espressif\python_env\idf4.4_py3.8_env\Scripts\Activate.ps12、配置ESP32工程
代码可以从我的GITHUB上下载:https://github.com/lll9p/ESP-32-AM2301
设置开发板
idf.py set-target esp32设置要连接的WIFI账号密码
idf.py menuconfig如图所示,设置好之后按s再按q保存退出:
编译上传:
idf.py build
idf.py -p com3 flash
代码解释:
1、ESP32端
main/main.c
//设置AM2301的类型和端口
static const dht_sensor_type_t sensor_type = DHT_TYPE_AM2301;
static const gpio_num_t dht_gpio = 17;
//从传感器读取数据并响应http
int16_t temperature = 0;
int16_t humidity = 0;
char data_str = { 0 };
if (dht_read_data(sensor_type, dht_gpio, &humidity, &temperature) == ESP_OK){
sprintf(data_str,"%d;%d",temperature,humidity);
} else {
sprintf(data_str,"%d;%d",temperature,humidity);
}
req->user_ctx = data_str;
2、客户端
read.py
#从命令行读取IP,并从IP获取数据,保存到data.csv
if len(sys.argv) == 1:
ip = ""
else:
ip = sys.argv
req = request.Request(f"http://{ip}", method="GET")
with request.urlopen(req) as f:
r = f.read().decode('utf-8')
data = list(map(lambda num: float(num) / 10., r.split(";")))
df = pd.read_csv("data.csv")
df = df.append({'temperature': data,
'humidity': data}, ignore_index=True)
df.to_csv('data.csv')
客户端运行
将ESP32+传感器连接到充电宝,放在设备中,客户端运行 python read.py ,即可从浏览器访问数据,每3秒 更新一次。
效果展示:
带上充电宝安装后是这样的
运行时每隔3秒进行一次更新数据
运行半小时后,没有数据丢失,还是挺稳定的
看起来不错啊 刘思宇hhhhhhhhh 发表于 2021-5-29 22:38
看起来不错啊
第一次用ESP32{:5_131:},很有意思~ 不错!!
页:
[1]