测一测现在的温度
目录
- 测一测现在的温度
- 一、Hello World
- 二、使用DHT11测温
我们使用Mongoose OS + esp8266 + DHT11来做。
-
Mongoose OS:一个物联网固件开发框架。官方文档
-
esp8266:ESP8266是一款串口WiFi模块。
-
DHT11:一个温度传感器。
-
固件:可以理解为一个电子产品的操作系统,是硬件最底层的软件。
-
串口:直接看图
可以一次性发送八位的数据,互不干扰,并口传输错误一位就要需要重新发送八位数据,串口传输错误一位只需要重新发送一位。
一、Hello World
-
下载mongoose OS的官方工具mos.exe,双击或是输入命令
mos ui
就可以启动它的UI界面。如果它没有启动,打开命令提示符,输入cd c:\mos
然后mos --start-webview=false
。关闭时需要关闭1992端口的服务(不然再次双击打不开ui界面)。 -
用一根数据线(一定是要可以传输数据的数据线,有的线只能充电)连接esp8266,按照自己的需求安装相应的驱动。
-
乐鑫主板的Silabs 驱动程序
-
乐鑫开发板的CH43x 驱动程序
-
CC3200、CC3220 的FTDI 驱动程序
安装驱动:1. 右键此电脑->管理->设备管理器->其他设备
黄色感叹号的就是我们需要安装的驱动,安装完成可以在端口中看见设备在哪个端口。
-
-
打开mos,选择端口和型号,端口和型号按实际情况选择,我用的是esp8266 2m内存的所以选择esp8266 flash 2m。
-
在ui的下面有一行可以输入命令的文本框,输入
mos clone https://github.com/mongoose-os-apps/demo-c app1
克隆一个模板。克隆完成后我们可以在对应目录中看到一个app1的文件夹,该目录的src目录下的main.c就是我们的代码,mos.yml是配置文件,描述整个应用。 -
打开main.c,找到
修改为:
-
在mos的ui界面中输入
mos build
编译代码。 -
漫长的等待后输入
mos flash
将固件刷入。 -
成功后将会每秒输出一句hello world!
二、使用DHT11测温
首先把我们的dht11连接到esp8266上,vcc或+ 连接3v的引脚, GND或- 连GND, DAT或out连IO引脚(IO几要记住,比如我接IO2引脚,待会儿就要去配置成IO2引脚)。
esp8266引脚图:
连接完成后我们只需要对hello world的程序稍作修改:
-
添加依赖:
在mos.yml的libs下添加dht驱动的依赖(这些驱动可以在mongoose官网中找),如果需要rpc服务可以添加rpc依赖。
libs:- location: https://github.com/mongoose-os-libs/boards- location: https://github.com/mongoose-os-libs/demo-bundle- location: https://github.com/mongoose-os-libs/rpc-service-config- location: https://github.com/mongoose-os-libs/rpc-service-fs- location: https://github.com/mongoose-os-libs/rpc-uart- location: https://github.com/mongoose-os-libs/wifi- location: https://github.com/mongoose-os-libs/dht
-
配置引脚,修改代码:
在mos.yml中添加:
config_schema:- ["app.pin", "i", 2, {title: "GPIO pin a sensor is attached to"}]#因为刚刚我是io2引脚,所以这里是2
main.c:
#include "mgos.h" #include "mgos_dht.h"static void timer_cb(void *dht) {LOG(LL_INFO, ("Temperature: %lf", mgos_dht_get_temp(dht))); }enum mgos_app_init_result mgos_app_init(void) {struct mgos_dht *dht = mgos_dht_create(mgos_sys_config_get_app_pin(), DHT11);mgos_set_timer(1000, true, timer_cb, dht);return MGOS_APP_INIT_SUCCESS; }
看似复杂,实际上只有两个重要的函数:
mgos_dht_create(mgos_sys_config_get_app_pin(), DHT11);
mgos_dht_get_temp(dht)
初始化dht以及获取温度。
-
编译&固件刷入
在mos的ui界面中输入
mos build
编译成功后输入mos flash
刷入固件。 -
效果: