• 测一测现在的温度


    测一测现在的温度

    我们使用Mongoose OS + esp8266 + DHT11来做。

    • Mongoose OS:一个物联网固件开发框架。官方文档

    • esp8266:ESP8266是一款串口WiFi模块。

    • DHT11:一个温度传感器。

    • 固件:可以理解为一个电子产品的操作系统,是硬件最底层的软件。

    • 串口:直接看图

      在这里插入图片描述

      在这里插入图片描述

      可以一次性发送八位的数据,互不干扰,并口传输错误一位就要需要重新发送八位数据,串口传输错误一位只需要重新发送一位。

    一、Hello World

    1. 下载mongoose OS的官方工具mos.exe,双击或是输入命令mos ui就可以启动它的UI界面。如果它没有启动,打开命令提示符,输入cd c:\mos然后mos --start-webview=false。关闭时需要关闭1992端口的服务(不然再次双击打不开ui界面)。

      在这里插入图片描述

    2. 用一根数据线(一定是要可以传输数据的数据线,有的线只能充电)连接esp8266,按照自己的需求安装相应的驱动。

      安装驱动:1. 右键此电脑->管理->设备管理器->其他设备

      黄色感叹号的就是我们需要安装的驱动,安装完成可以在端口中看见设备在哪个端口。

    3. 打开mos,选择端口和型号,端口和型号按实际情况选择,我用的是esp8266 2m内存的所以选择esp8266 flash 2m。

    4. 在ui的下面有一行可以输入命令的文本框,输入mos clone https://github.com/mongoose-os-apps/demo-c app1克隆一个模板。克隆完成后我们可以在对应目录中看到一个app1的文件夹,该目录的src目录下的main.c就是我们的代码,mos.yml是配置文件,描述整个应用。

    5. 打开main.c,找到在这里插入图片描述

      修改为:

      在这里插入图片描述

    6. 在mos的ui界面中输入mos build编译代码。

    7. 漫长的等待后输入 mos flash将固件刷入。

    8. 成功后将会每秒输出一句hello world!

      在这里插入图片描述

    二、使用DHT11测温

    首先把我们的dht11连接到esp8266上,vcc或+ 连接3v的引脚, GND或- 连GND, DAT或out连IO引脚(IO几要记住,比如我接IO2引脚,待会儿就要去配置成IO2引脚)。

    esp8266引脚图:

    查看源图像

    连接完成后我们只需要对hello world的程序稍作修改:

    1. 添加依赖:

      在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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    2. 配置引脚,修改代码:

      在mos.yml中添加:

      config_schema:
        - ["app.pin", "i", 2, {title: "GPIO pin a sensor is attached to"}]
        #因为刚刚我是io2引脚,所以这里是2
      
      • 1
      • 2
      • 3

      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;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

      看似复杂,实际上只有两个重要的函数:

      mgos_dht_create(mgos_sys_config_get_app_pin(), DHT11);

      mgos_dht_get_temp(dht)

      初始化dht以及获取温度。

    3. 编译&固件刷入

      在mos的ui界面中输入mos build 编译成功后输入mos flash刷入固件。

    4. 效果:

      在这里插入图片描述

  • 相关阅读:
    Vue入门(二)
    Spring Boot CLI默认语句
    ATtiny88初体验(二):呼吸灯
    公共4G广播音柱有哪些用处
    网络安全(黑客)自学
    【pytorch笔记】第六篇 卷积原理和卷积层
    所有字母异位词
    Mysql数据库安装配置详细教程
    Parameter estimation for text analysis (上)
    Windows安装docker
  • 原文地址:https://blog.csdn.net/yangsf_/article/details/125406219