ESP32WiFi(Blinker)-室内舒适度检测装置

一、硬件
ESP32

白色LED

DHT11温湿度传感器

有源蜂鸣器

USB转串口(只用到VCC,GND)

面包板

二、软件
Arduino IDE版ESP32开发板

Blinker,apk

三、电路连接

const int LED=18;  LED控制管脚
const int BUZ=2;    有源蜂鸣器VCC管脚

#define DHTPIN 14 温湿度传感器输出管教

0.96寸oled

scl D22

sda D21

四、代码


#include <SdFat.h>#include <DHT.h>
#define BLINKER_WIFI
#include <Blinker.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>#include <wire.h>
#include <SPI.h>#define DHTPIN 14 
#define DHTTYPE DHT11DHT Dht(DHTPIN, DHTTYPE);#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDR 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);#define LOGO_HEIGHT   16
#define LOGO_WIDTH    16static const unsigned char PROGMEM font[][32] =
{
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x42,0x1C,0x42,0xE4,0x42,0x44,0x3E,0x04,0x00,/*"北",0*/0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,
0x10,0x10,0x1F,0xF0,0x01,0x00,0x11,0x10,0x11,0x08,0x21,0x04,0x45,0x04,0x02,0x00,/*"京",1*/0x08,0x80,0x08,0x80,0x08,0x84,0x10,0x88,0x10,0x90,0x30,0xA0,0x30,0xC0,0x50,0x80,
0x91,0x80,0x12,0x80,0x14,0x80,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x7E,0x10,0x00,/*"化",2*/0x00,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,/*"工",3*/0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,/*"大",4*/0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"学",5*/};char auth[] = "2a54b7664c77";   //手机Blinker.apk中ESP32密钥
char ssid[] = "701";              //室内WiFi名称
char pswd[] = "1234567890";        //WiFi密码int r=0;int g=0;
int led=0;
int buz=0;const int LED=18;
const int BUZ=2;char  state1[]="on";
char state2[]="off";// 新建组件对象
BlinkerButton Button("开关");BlinkerText LEDstate("状态");BlinkerNumber Wen("温度");
BlinkerNumber Shi("湿度");float wen=0;
float shi=0;//----------------------------------
//把温度湿度传送给组件
void heartbeat()
{Wen.print(wen);Shi.print(shi);}
//---------------------------------// 按下按键即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);
if(g==1){digitalWrite(BUZ,LOW); }
}void setup() {// put your setup code here, to run once:// 初始化串口Serial.begin(115200);Blinker.begin(auth, ssid, pswd);Wire.begin();display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDR);display.display();// Clear the bufferdisplay.clearDisplay();// put your main code here, to run repeatedly:if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDR)) {Serial.println(F("SSD1306 allocation failed"));for(;;); // Don't proceed, loop forever}BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化有LED的IOpinMode(LED, OUTPUT);digitalWrite(LED, LOW);pinMode(BUZ, OUTPUT);digitalWrite(BUZ, LOW);// 初始化blinkerButton.attach(button1_callback);Blinker.attachHeartbeat(heartbeat);Dht.begin();}void loop() {delay(100);Blinker.run();display.clearDisplay();display.setTextSize(1); //设置字体大小display.setTextColor(SSD1306_WHITE);//开像素点发光// testdrawbitmap(cn_allArray[0],16,16);for(int i = 0;i < 6;i++){display.drawBitmap(i*16, 0, font[i], LOGO_WIDTH,LOGO_HEIGHT, SSD1306_WHITE);delay(1);}display.setCursor(0,0);   display.println();display.println();display.println();wen=Dht.readTemperature();shi=Dht.readHumidity();if(wen>=26){digitalWrite(LED,HIGH);digitalWrite(BUZ,LOW);g=0;}if(wen<26&&g==0){digitalWrite(LED,LOW);digitalWrite(BUZ,HIGH);g=1;}led=digitalRead(LED);buz=digitalRead(BUZ);display.setTextSize(2); //设置字体大小display.print("Tem:");display.print(wen,1);display.print("\xA7");display.println("C");display.print("Hum:");display.print(shi,1);display.println("%");display.display();delay(200);}

五、视频(有解说)

ESP32WiFi(Blinker)-室内舒适度检测装置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Matlab实现声音信号处理

利用Matlab软件对声音信号进行读取、放音、存储 先去下载一个声音文件&#xff1b;使用这个代码即可 clear; clc; [y, Fs] audioread(xxx.wav); plot(y); y y(:, 1); spectrogram(y); sound(y, Fs); % player audioplayer(y, Fs);y1 diff(y(:, 1)); subplot(2, 1, 1); pl…

美国第二大互联网供应商泄露3600万用户数据

12月18日&#xff0c;美国第二大互联网服务供应商Xfinity 透露&#xff0c;10月份发生的一起网络攻击泄露了多达3600万用户的敏感数据。 Xfinity由康卡斯特公司所属&#xff0c;为美国用户提供宽带互联网和有线电视等服务。 该公司表示&#xff0c;攻击是受Citrix Bleed的 CVE…

vue3挂载全局方法

比如某个js方法&#xff0c;项目很多地方都能用到&#xff0c;每次去重新写一遍太麻烦&#xff0c;放在一个js里面&#xff0c;每次去引入也懒得引&#xff0c;就可以挂载在全局上 1.创建tool.js文件&#xff0c;里面放常用的方法 const tools {getCurrentTim(){const curre…

基于PHP的蛋糕购物商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的蛋糕购物商城系统 一 介绍 此蛋糕购物商城基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…

08.queue 容器

8、queue 容器 概念&#xff1a; Queue 是一种先进先出&#xff08;First In First Out&#xff0c;FIFO&#xff09;的数据结构&#xff0c;他有两个出口 队列容器允许从一端新增元素&#xff0c;从另一端移除元素队列中只有队头和队尾才可以被外界使用&#xff0c;因此队列…

Oracle:JDBC链接Oracle的DEMO

1、引入jar包&#xff1a; 2、DEMO&#xff1a; package jdbc;import java.sql.*;public class OracleConnectionExample {public static void main(String[] args) throws SQLException {Connection conn null;PreparedStatement statement null;try {// Register JDBC dri…

基于Hadoop的农产品价格信息检测分析系统

基于Hadoop的农产品价格信息检测分析系统 前言数据处理模块1. 数据爬取2. 数据清洗与处理3. 数据存储 数据分析与检测模块1. 农产品价格趋势分析2. 农产品价格检索3. 不同市场价格对比 创新点 前言 为了更好地了解农产品市场价格趋势和不同市场之间的价格差异&#xff0c;我设…

Leetcode—151.反转字符串中的单词【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—151.反转字符串中的单词 实现代码 class Solution { public:string reverseWords(string s) {stringstream strs(s);string word;vector<string> res;while(strs >> word) {res.push_back(word);}reverse(…

springboot集成邮件发送的使用示例

springboot集成邮件发送的使用示例 步骤概述1. 引入依赖2. 配置邮件发送3. 发送简单邮件4. 发送 HTML 邮件5. 发送带附件的邮件6. 定时邮件发送 使用 Spring Boot 发送邮件时&#xff0c;通常的应用场景包括用户注册、密码重置和各种验证流程。这里我将展示一个以验证码发送为例…

Labview Vision 机器视觉使用,从下载程序安装应用,到实战找硬币并输出值

1.前言 大家好,今天我要和机器人一起配合来打算 做机器视觉 用Labview 和 Vision 联动实现机器的视觉 2.下载软件-软件的安装 我们除了基础款的labview软件 还要安装视觉四件套 1.Labview 编程平台&#xff08;我是 2023 q3&#xff09; 2. NI - IMAQdx &#xff08;驱动软…

为什么uboot/pmon会随机修改开发板的mac地址

U-Boot&#xff08;Universal Boot Loader&#xff09;在某些情况下可能会随机生成MAC地址&#xff0c;这主要是出于以下原因&#xff1a; 安全考虑&#xff1a; 为了增加设备的安全性&#xff0c;防止恶意用户通过MAC地址追踪或识别特定的设备&#xff0c;U-Boot可能会在每次…

Ubuntu 常用命令之 ifconfig 命令用法介绍

ifconfig 是一个用于配置和显示 Linux 内核中网络接口的系统管理命令。它用于配置&#xff0c;管理和查询 TCP/IP 网络接口参数。 ifconfig 命令的参数有很多&#xff0c;以下是一些常见的参数 up&#xff1a;激活指定的网络接口。down&#xff1a;关闭指定的网络接口。add&a…

Qnx wfd_be wfd_fe Android 通讯

在android 侧和 qnx 侧都指定mmid 使用habmm_socket_open 创建通讯channel 使用user_os_utils_send_recv完成消息的发送和接收 apps/qnx_ap/AMSS/multimedia/display/Hoya/wfd_be_qnx/src /* -----------------------------------------------------------------------------…

蓝桥杯常用库heapq

堆的常用方法 使用list表示一个堆 将无序List转换成最小堆;heapq.heapify(a) 最小堆a中添加元素x:heapq.heappush(a, x) 弹出并返回最小元素:heapq.heappop(a) 弹出并返回最小元素&#xff0c;同时添加元素x:heapq.heapreplace(a,x) import heapqa [11, 6, 9, 8, 7, 3] heapq.…

Redis字符串数据类型之INCR命令,通常用于统计网站访问量,文章访问量,实现分布式锁

前言 Redis的INCR命令用于将键的值增加1。如果键不存在&#xff0c;则会先将键的值设置为0&#xff0c;然后再执行INCR操作。INCR命令的作用是对计数器进行自增操作&#xff0c;可以用于实现多种场景&#xff0c;比如统计网站访问量、文章访问量、分布式锁等。 一、Redis字符…

JS中的selection事件与range

前言 本文简单总结下文本输入中的 Selection 与 Range 事件。 测试地址见: 在线效果预览 ::selection && Selection 自定义选取颜色 项目中一般有主题色的需求&#xff0c;这时候可以通过 css 中的::selection伪类可以自定义选中背景颜色 ::selection {background: yel…

【论文笔记】Distilling the Knowledge in a Neural Network

Abstract 几乎任何机器学习算法性能提升的一个非常简单的方法是在相同数据上训练多个不同的模型&#xff0c;然后对它们的预测结果进行平均。 不幸的是&#xff0c;使用整个模型集合进行预测繁琐&#xff0c;可能会因为计算成本过高而难以部署给大量用户&#xff0c;尤其是如果…

MyBatis的原始DAO开发!!!

引用&#xff1a;MyBatis的删除、修改、插入操作&#xff01;&#xff01;&#xff01;-CSDN博客的准备工作&#xff01;&#xff01;&#xff01;&#xff08;准备工作都一样只不过文件名称有所不同&#xff09; 1.利用原始DAO开发&#xff0c;查询所有的信息。 UserDao&#…

使用 Rsync 在 Linux 上实现高效文件同步和备份

前言 Rsync&#xff08;Remote Sync&#xff09;是一款在 Linux 系统中被广泛应用于文件备份和同步的工具&#xff0c;它提供了快速、可靠且灵活的文件同步方案。 Rsync 的优势 增量传输&#xff1a;Rsync 只传输文件的变更部分&#xff0c;大幅减少了数据传输的时间和网络带…

【数据库模拟题目集】选择题

数据库应用程序的编写是基于数据库三级模式中的&#xff08;外模式&#xff09; 对创建数据库模式一类的数据库对象的授权可由CREATE USER时实现。新创建的数据库用户有三种权限&#xff0c;CONNECT、RESOURCE和DBA。拥有RESOURCE权限的用户&#xff08;不能创建模式 &#xf…