前言

本案例我们来做一个简单的气象站,进行温度,压力,高度,电量的无线测量。气压传感器模块有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. Python学习笔记之基本数据结构方法
  2. NYOJ 20 吝啬的国度(深搜)
  3. SpringDataJpa报错: Table 'XX.hibernate_sequence' doesn't exist
  4. 五个 .NET 性能小贴士
  5. mongodb查询内嵌文档
  6. 搭建LNMP遇到的问题
  7. 006 认识BeanNameAware
  8. 英格索兰扳手网口通信协议EOR原理
  9. python 前缀和总结
  10. 硬盘格式化怎么操作 硬盘格式化后数据还在吗
  11. 网站虚拟服务器共享ip与独立ip,误区解读:独立IP与共享IP虚拟主机哪个更好?...
  12. KDD CUP 99利用决策分类树进行网络异常检测
  13. 一、基础入门下------------视频处理
  14. php采集今日头条出现问题,PHP采集今日头条内容页时,解析页面上的JS转为json
  15. skynet设计原理和使用
  16. 数据库--sql文件
  17. 移动硬盘数据恢复该如何进行?2个方法告诉你
  18. 剑指Offer 12—矩阵中的路径
  19. 国内使用chatgpt便捷方式-CSDN内部
  20. java文件打包成jar文件_将java文件打包成jar包步骤

热门文章

  1. vue调用 手机拨号
  2. 微信小程序之算法查询
  3. C语言算法——实现二分查找
  4. Docker搭建ElasticSearch集群
  5. 阿里95亿美元收购饿了么;滴滴回应外卖故障;特朗普再度炮轰亚马逊丨价值早报
  6. 苹果最新机器学习研究,详解「嘿Siri」语音触发器背后的深度神经网络
  7. 高通助力Libratone小鸟音响新一代真无线耳机发布
  8. 利用冲印模式进行“非破坏”赛博朋克调色
  9. mysql分组排序加序号
  10. Tableau制作基本表、树形图、气泡图、词云