前言

本案例我们来做一个简单的气象站,进行温度,压力,高度,电量的无线测量。气压传感器模块有GY-68 BMP180 可以测大气压和温度,升级版是GY-BMP280,还有高配版BME280,可以多测一个湿度。本案例我们用GY-BMP280,传感器测试范围:温度:-45℃~+85℃ ;大气压强:300-1100hPa(百帕)相对精度±0.12 hPa(相当于±1米)。WiFi无线还是ESP8266的NodeMCU,上传数据到ThingSpeak云端,我们还将研究低功耗模式,并测量系统电压。

气压计程序及硬件连线

在arduino IDE中,我们要添加库文件,adafruit/Adafruit_BMP280_Library: Arduino Library for BMP280 sensors https://github.com/adafruit/Adafruit_BMP280_Library

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BMP280.h"
Adafruit_BMP280 bmp; // I2C

如果找不到传感器地址,请将Adafruit_BMP280.h文件这一行替换:

//bool begin(uint8_t addr = BMP280_ADDRESS, uint8_t chipid = BMP280_CHIPID);bool begin(uint8_t addr = BMP280_ADDRESS_ALT, uint8_t chipid = BMP280_CHIPID);

程序设计可以参考下面几个文献。

如何将BMP280气压传感器模块与Arduino开发板进行连接 - 知乎

天南地北客:如何将BMP280气压传感器模块与Arduino开发板进行连接​zhuanlan.zhihu.com

使用带有Arduino IDE的BME280的ESP8266(压力,温度,湿度)| 随机书呆子教程

ESP8266 with BME280 using Arduino IDE (Pressure, Temperature, Humidity) | Random Nerd Tutorials​randomnerdtutorials.com

具有NodeMCU,Arduino和ThingSpeak的简单气象站http://-Hackster.io

https://www.hackster.io/jrance/simple-weather-station-with-nodemcu-arduino-and-thingspeak-3bf26c​www.hackster.io

硬件连接:SCL接D1,SDA接D2,VCC接3.3,GND接GND。

低功耗设计

ESP8266模块可以在以下模式运行:

1. 活动模式:在此模式下,整个芯片上电,芯片可以接收、传输数据。显然,这是耗电量最大的模式。

2. 调制解调器睡眠模式:在此模式下,CPU可以运行,但禁用Wi-Fi无线电。此模式可用于需要CPU工作的应用程序,如PWM。它使Wi-Fi调制解调器电路在与Wi-Fi AP(接入点)连接时关闭,无数据传输以优化功耗。

3. 轻度睡模式:在此模式下,CPU和所有外围设备都暂停。任何唤醒(如外部中断)都会唤醒芯片。在没有数据传输的情况下,可以关闭Wi-Fi调制解调器电路并暂停CPU以节省功耗。

由于我们户外测量很耗电,我们间断测量就好,调用ESP8266的深度睡眠。

Serial.println("deep sleep for 15 seconds");
ESP.deepSleep(15e6); //将使模块在定义的时间间隔内休眠,该时间间隔以微秒为单位。

将ESP8266的RST引脚与GPIO 16连接,即D0引脚。 GPIO 16是具有WAKE功能的重要引脚。

当ESP模块的RST引脚上为高电平时,它处于运行状态。一旦在RST引脚上接收到LOW信号,ESP就会重新启动。

使用深度睡眠模式设置定时器,一旦定时器结束,D0引脚将低电平信号发送到RST引脚,模块将通过重新启动来唤醒。

编译的时候请断开D0引脚和RST引脚的连接,运行时再接上。

3.3V电压供电,工作电流在70mA,实际测量睡眠模式功耗2mA。建议不要使用delay()函数,这会延长工作时间,非常耗电。在上图可以看出去掉delay()函数,启用deepSleep可以只有瞬时工作的高电流。其余时间都很小的睡眠功耗,深度睡眠后WiFi会掉线重连。

电压模拟信号测量

ESP8266有两种读模拟量的方法,内部电压和外部电压。

analogRead(A0):该函数用于读取模块ADC引脚上的外部电压。

ESP.getVcc():该函数用于读取NodeMCU模块VCC电压。ADC引脚必须留空。

注意,在读取VCC电源电压之前,应将ADC模式改为读取系统电压。要更改ADC模式,要在代码的 #include 行之后使用ADC_MODE(mode)。mode值为:ADC_TOUT表示外部电压,值为 ADC_VCC表示系统电压。默认情况下,它读取外部电压。模式是ADC_TOUT(对于外部电压),ADC_VCC(对于系统电压)。默认情况下,它读取外部电压。

外部电压0~1V监测范围,每单位1/1024 V。ESP8266只有一个A0口,如果需要多个模拟量,请接ADS1115数模转化模块。

本案例我们读取系统内部电压 ADC_MODE(ADC_VCC);

试验结果

温度,压力,高度,电量四个物理量间歇式(周期15s)地发送到ThingSpeak平台,关于调用ThingSpeak,请参考我之前发的博客。ThingSpeak数据可以导入MATLAB进行分析。

异常数据是因为手碰到模块接线不良。系统电压测量为3040mV,和实际值3.3V比较,偏低。

大家也试试做一个自己的气象站吧!

arduino低功耗模式_ESP8266+DeepSleep+BMP280+ThingSpeak温度压力高度电量无线低功耗测量...相关推荐

  1. io口模拟spi,stm32f103与MS5611基于spi总线的温度压力高度数据读取

    以下文件为源文件 /** -----------------------MS5611驱动 && IO口模拟SPI驱动------------------------- ******** ...

  2. FreeRTOS 低功耗模式设计 STM32平台

    1. STM32F105RBT6 的三种低功耗模式 1.1 sleep睡眠模式.stop停机模式.standby 待机模式 1.2 STM32中文参考手册有介绍STM32 低功耗模式的介绍 2. Fr ...

  3. AT32 MCU低功耗模式--AT_SURF案例19

    简介 AT32F437 系列MCU 工作电压范围为2.6V 至3.6V,为了降低功耗,提供了三种省电模式--睡眠模式,深度睡眠模式和待机模式,使用户可以在CPU 运行时间要求.速度和功耗进行折中取舍. ...

  4. STM32低功耗模式

    STM32 的低功耗模式有 3种: 1)睡眠模式(CM3内核停止,外设仍然运行) 2)停止模式(所有时钟都停止) 3)待机(standby)模式(1.8V内核电源关闭) 从待机模式唤醒后的代码执行等同 ...

  5. STM32L476rg 低功耗模式关系梳理以及stm32duino Lowpower库的调用关系梳理

    目录 低功耗模式介绍: Sleep mode: Low-power sleep mode : Stop 0,Stop 1 和Stop 2 mode: Standby mode : Shutdown m ...

  6. ESP32低功耗模式

    低功耗模式 ESP32可以进入light-sleep和deep-sleep模式,还能进入一个用于相对较低功耗运行的modem-sleep模式 注意:进入低功耗模式前,应用程序必须关闭wifi和蓝牙设备 ...

  7. SH367309 BMS 锂电池保护板方案 该电池管理系统由SH367309和MCU实现,其主要功能包括:充电管理、放电管理、容量计、安全保护、数据备份、ISP、静 置功耗和低功耗模式等

    SH367309 BMS 锂电池保护板方案 该电池管理系统由SH367309和MCU实现,其主要功能包括:充电管理.放电管理.容量计.安全保护.数据备份.ISP.静 置功耗和低功耗模式等 烧写工具 W ...

  8. stm32低功耗模式下mcu的实际功耗(ST芯片手册)

    STM32F103xC. STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低 功耗.短启动时间和多种唤醒事件之间达到最佳的平衡. ● 睡眠模式 在睡眠模式,只有C ...

  9. 【MSP430G2553】图形化开发笔记(2) 系统时钟和低功耗模式

    目录 系统时钟概述 BCS+模块单元的基本构造 时钟-概览 介绍 Basic User 模式 Power User 模式 1. 数控振荡器 DCO 2. 出厂预校正频率 3. 低频振荡器 VLO 4. ...

最新文章

  1. jupyter python版本_Ubuntu Desktop 16.04 LTS 下成功配置Jupyter的两个python内核版本(2.7x,3.5x)...
  2. 【208天】黑马程序员27天视频学习笔记【Day21-中】
  3. java线程死锁 cpu 100%_一文学会Java死锁和CPU 100% 问题的排查技巧
  4. java中字符和字节的转换_Java最佳实践–字符到字节和字节到字符的转换
  5. PHP单例模式经典讲解
  6. 年底双薪一般是什么时候发_评职称发表文章一般发什么刊物
  7. 【OpenCV/C++】KNN算法识别数字的实现原理与代码详解
  8. android模拟摄像头,android模拟器如何连接摄像头
  9. JNDI 是什么,怎么理解
  10. C语言开发简单的学生成绩管理系统(附源码)
  11. C语言六种方法求素数(质数) 最全 输出2-100以内的所有素数 求1000以内的所有素数
  12. TPC,TPCC,TPMC(计算机性能衡量指标)
  13. NOIP2017提高组模拟赛4 (总结)
  14. 计算机应用公式求和,Excel函数教程:与求和有关的函数
  15. 硬盘数据丢失了怎么恢复?数据恢复对策在这
  16. 【渝粤题库】陕西师范大学165106 冲突与沟通管理作业 (高起专)
  17. h5应用 vue 钉钉_钉钉企业内部H5微应用开发
  18. ps – report process status
  19. 王大师送福利啦!2021年面试题目汇总
  20. Ecplise捕捉异常的快捷键

热门文章

  1. 怎么调解计算机休眠不断网,win7怎么设置不待机?win7设置不待机的方法
  2. mysql消息队列推送到redis_Redis实现消息队列之发布订阅模式
  3. 小程序群发短信,借助云开发5行代码实现短信群发功能
  4. 倩女幽魂装备属性区分
  5. 分公司能与员工签劳动合同么
  6. html转换成keynote,Keynote教程(一)——隐藏的功能知识
  7. 如何解决office2007里出现盗版与需要验证的小星星图标
  8. 最热门的13个Java微服务框架
  9. 作业提交系统无法复制而交不了作业!?巧设JavaScript来帮你
  10. 字符数组转list集合