基于FireBeetle ESP32-e倾斜报警开关实现报警功能的设备
利用倾斜开关触发时,使电路导通,给ESP-WROOM-32E IO高电位,并通过IO输出开马达,开LED起到警示的作用,在OLED与MQTT平台窗口显示工作信息。
标签
Funpack活动
meiyao
更新2023-01-06
2179

项目介绍:

利用倾斜开关触发,使里面的圆球导通里面的开关,点灯报警LED,使蜂鸣器蜂鸣,驱动电机工作,然后通过MQTT显示相关的信息在窗口,通过OLED显示当前的工作状态,只有当人为按下开关,才会关掉蜂鸣,再OLED和MQTT显示工作情况。

 

硬件介绍(控制器及外设,应用方向及应用场景):

硬件模块如下:  

1.360度倾斜开关

FhFdDBT2KLNz05tBAGB7seKMZ0Qk

2.蜂鸣器

Fnaxzm6UVv_cxc6PFld3HjIiQiH2

3.OLED

Fim0iKZObSYUXLwCps43_PWPt6wU

4.DFR0654(ESP32)

FihB02wDaZrnVJSydMv87EeWKFHH

5.风机(为了直观用LED代替)

FjoCVZASmxvFaFhGEPIIHDqVpY4b

6、按键:

FtfANHPN4W8LGmY_LB5KUzOxAGkh

1、360度倾斜开关:Gravity:数字钢球360°倾斜传感器 是一款可对360°全方向进行倾斜检测的Gravity开关量传感器,产品利用钢球的特性,通过内部特殊结构和钢球的重力作用,使钢球滚动,从而使开关闭合或断开。因此也可作为简单的倾角传感器使用。钢球开关数字输入模块,与Arduino专用传感器扩展板结合使用,能够实现非常有趣的互动作品,比使用水银开关更加安全。

传统的钢球倾斜开关只能实现对单方向的倾倒检测,本品采用圆柱形设计,实现对360°任意方向的倾斜检测。

技术要求:

   1、3.3V、5V兼容,工作电压:3.3~5V

   2、360°倾斜检测

   3、通信方式:数字信号

   4、接口类型:Gravity接口

   5、倾斜开关角度:45°±10°

   6、模块尺寸:22 * 30 mm

2.蜂鸣器:

      蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型。

无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出。

3.OLED:

      OLED显示需要显示的功能,只是一个显示的功能。

4.ESP32

FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计。
它支持WIFI和蓝牙双模通信并具有体积小巧、超低功耗、板载充电电路、接口易用等特性。

1、输入电压:3.3V~5.5V,支持低功耗:10uA

2、支持最大放电电流:600mA@3.3V LDO,支持最大充电电流:500mA

3、支持USB充电

4、处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)

主频:240MHz,SRAM:520KB,Flash:4MB

5、Wi-Fi标准:FCC/CE/TELEC/KCC

6、Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔,频率范围:2.4~2.5 GHz

7、蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准,蓝牙音频:CVSD和SBC音频低功耗:10uA

工作电流:80mA(平均),频率范围:2.4~2.5GHz

8、支持Arduino一键下载,支持micropython

9、片上时钟:40MHz晶振、32.768KHz晶振,数字I/O x10(arduino默认),模拟输入 x5(arduino默认),SPI x1(arduino默认),I2C x1(arduino默认),I2S x1(arduino默认),RGB_LED:5/D8

10、接口方式:FireBeetle V2系列兼容,工作温度:-40℃~+85℃,模块尺寸:25.4 × 60(mm)

,安装孔尺寸:M2安装孔孔径2.0mm

 

设计思路(用板子的哪些模块实现了什么功能):

本项目产品设计思路与项目描述如下:

静默状态:

  • 电源以弱电为例,工作电源电压为3V,显示屏通过IIC通信显示MeiYaoEsp32 HeiioWorld字符,这个时候产品为等候状态,相当于待机的状态。
  • MQTT连接后,接收窗口显示MQTT Connected!

动态状态:

  • 当倾斜开关出现倾倒状态时,ESP32板载的LED会亮,倾斜板载的红色LED也会亮,起到警示的作用。
  • OLED会显示360SW DOWN(360倾斜开关倒下),buzzer moto run(蜂鸣器和马达运行)。
  • 倾斜开关出现倾倒状态时,蜂鸣器处于一直鸣叫的状态。
  • 马达(用红色LED1代替)一直处于工作状态。
  • Mqtt窗口会显示baojing alarm,倾斜开关倒下,开风机。
  • 按下ESP32S板载按键后MQTT会显示OFF BUZZER 关蜂鸣器。
  • 按下ESP32S板载按键后OLED会显示moto run off buzzer.工作流程,产品在接入YTPEC时,或者接入PC端时,注意是5V供电,电压不能超过5V,否则会烧毁ESP32-WROOM-32E开发板,还会因为电压过高,烧坏OLED,倾斜开关等设备。当通上电时,除了OLED有显示外,其它的设备都没有任何人眼和人耳能接收到的信息,只能通过OLED屏上看到MEIYAO ESP32 ,HELLO WORLD显示状态,这个状态是静默状态,正在等待下一步动作,MQTT显示窗口会出现MQTT Connected!,后面就没有任何显示了。
  • 一切动作都在等待倾斜开关的动作,当倾斜开关出现倾斜时,首先蜂鸣器就会发出响亮的蜂鸣声,由于是晚上,我没有把蜂鸣器上的贴纸拿下来,因为有同事在休息,不能吵到同事睡觉。蜂鸣器发出的声音非常的清脆,不过这个蜂鸣器可以调节它的工作模式,可以有节奏的发出蜂鸣声,然后风机会转,民会发出工作的声音,这个是听;人眼可以看到的ESP32-WROOM-32E  LED会亮,倾斜开关上的LED也会点亮,红色的LED,红色的LED代表警示的作用,可以在晚上或者白天都非常的清晰看到,ESP32-WROOM-32E板载LED的工作方式是,只有当倾斜开关出现倾斜时才会亮,也就是触发状态时,当倾斜开关到正常状态时就会熄灭,倾斜开关倾斜时,会给到ESP32-WROOM-32EG 一个输入的高电平,这个时候ESP32-WROOM-32E的IO口就会识别到有电平输入,然后就会通过ESP32-WROOM-32E发射出相关的信息,还通过IO27脚输出高电平点亮LED,IO16脚输出高电平使蜂鸣器发出声音;ESP32-WROOM-32E通过网络与MQTT相连,发送倾斜开关倒下,开风机告诉MQTT,并通过MQTT的窗口显示出当前产品的工作状态,处于在哪一步。
  • 当倾斜开关倾斜时,触发了报警状态,只能通过人为的操作按下IO27脚的轻触开关,IO27为输入,只有出现低电平时才会被ESP32-WROOM-32E的IO口识别,并取消蜂鸣器的蜂鸣,这个时间风机会一直在工作状态,不会因为人按下轻触开关时而关闭,MQTT窗口也会显示BUZZER off,MOTO RUN,OLED也会显示BUZZER off,MOTO RUN,OLED,然后OLED会一直停止在这个状态,不会有其它的动作,除非倾斜开关又倾倒,才会再次触发工作,满足条件后,又会再次回到DOWN的状态,往返工作。

 

项目总结报告:

  • 本项目是个人进行物联网开发的产品,是利用一个倾斜开关触发装置引发的工作模式产品,可以通过蜂鸣器LED报警,并打开风机工作,通过MQTT显示工作状态。
  • 它是通过珠子滚动接触导针的原理来控制电路的接通或者断开的。比如打开或关掉电灯一样的道理,如手动去开关触碰里头的金属板电灯就亮,离开就关,滚珠开关也是利用这样的原理。利用开关中的小珠的滚动,制造与金属端子的触碰,就能产生导通或不导通的效果。

 

各功能对应的主要代码片段及说明:

#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <Wire.h>
#include "SSD1306.h"

#define WLAN_SSID "TPS-227"
#define WLAN_PASS "TPSDS12345678"

/************************* Adafruit.io Setup *********************************/

#define MQTT_SERVER "broker.emqx.io"
#define MQTT_SERVERPORT 1883
#define MQTT_USERNAME "test001"
#define MQTT_KEY "test001"
int ledPin = 2;     // Connect LED to pin 13
int report = 17;   // Connect Tilt sensor to Pin3 倾倒报警器
int Buzzer = 16;  //蜂鸣器模块连接引脚16  
int moto1 = 15;  //启动马达
int switcher = 27;  //按键输入
//int moto2 = 12;  //工作马达
//int moto3 = 4;  //工作马达
WiFiClient client;  //定义wifi客户端对象
Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, MQTT_SERVERPORT, MQTT_USERNAME, MQTT_KEY);

Adafruit_MQTT_Publish MQTT = Adafruit_MQTT_Publish(&mqtt, "alarm");

SSD1306 display(0x3c, 21, 22);

void setup() {
  pinMode(ledPin, OUTPUT);    // Set digital pin 13 to output mode
  pinMode(report, INPUT);   // Set digital pin 3 to input mode
  pinMode(switcher, INPUT_PULLUP);   // Set digital pin 3 to input mode
  pinMode(Buzzer, OUTPUT);  // Set digital pin 3 to input mode
  pinMode(moto1, OUTPUT);  //风机
 // pinMode(moto2, OUTPUT);  //马达
 // pinMode(moto3, OUTPUT);  //马达
                              //联网配置
  display.init();//初始化
  WiFi.begin(WLAN_SSID, WLAN_PASS);
  delay(2000);
  display.drawString(40, 25, "Hello World");//显示字符串
  display.drawString(0, 0, "MeiYao ESP32");//显示字符串
  display.drawString(0, 45, "...............................................");//显示..。
  display.display();//显示
  display.clear();
  //digitalWrite(moto2, HIGH);        // 马达
  //digitalWrite(moto3, HIGH);        // 马达  
}

void loop() {
  MQTT_connect();
  if (digitalRead(report) == HIGH)  //Read sensor value
  {
    display.clear();
    digitalWrite(ledPin, HIGH);          // Turn on LED when the sensor is tilted
    digitalWrite(Buzzer, HIGH);        // 蜂鸣器
    digitalWrite(moto1, HIGH);        // 风机  
                                         //发送mqtt消息代码
    display.drawString(0, 0, "...............................................");//显示..。
    display.drawString(60, 35, "360sw down");//显示字符串
    display.drawString(40, 15, "buzzer moto run");//蜂鸣器工作
    display.drawString(0, 50, "...............................................");//显示..。    
    display.display();//显示
    if (!MQTT.publish("baojing alarm")) {  //发布内容
      // Serial.println(F("Msg pub Failed"));
    } else {
      // Serial.println(F("Msg pub OK!"));
    }
    if (!MQTT.publish("倾斜开关倒下,开风机")) {  //发布内容
      // Serial.println(F("Msg pub Failed"));
    } else {
      // Serial.println(F("Msg pub OK!"));
    }    
    delay(1000);
  } else {
  }
  digitalWrite(ledPin, LOW);  // Turn off LED when the sensor is not triggered
  if(digitalRead(switcher) == LOW)
  {
        if(digitalRead(switcher) == LOW)
    {
      delay(1000);
      display.clear();
      display.drawString(40, 0, "moto run");//显示字符串      
      display.drawString(0, 15, "...............................................");//显示..。      
      display.drawString(40, 35, "OFF BUZZER");//显示字符串
      display.drawString(0, 45, "...............................................");//显示..。
      display.display();//显示
      digitalWrite(Buzzer, LOW);        // Turn on LED when the sensor is tilted
      if (!MQTT.publish("OFF BUZZER 关蜂鸣器")) {  //发布内容
      } else {
      }      
    }
  }
}

void MQTT_connect() {
  int8_t ret;
  // Stop if already connected.
  if (mqtt.connected()) {
    return;
  }

  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) {  // connect will return 0 for connected
    mqtt.disconnect();
    delay(5000);  // wait 5 seconds
    retries--;
    if (retries == 0) {
      // basically die and wait for WDT to reset me
      ESP.restart();
    }
  }
  if (!MQTT.publish("MQTT Connected!")) {  //发布内容
    // Serial.println(F("Msg pub Failed"));
  } else {
    // Serial.println(F("Msg pub OK!"));
  }
}
 
功能展示及说明
OLED显示屏,主要是显示功能。
蜂鸣器:主要是发出蜂鸣声。
倾斜开关:当倾倒时,导通。
ESP32-WROOM-32E:相当于MCU,软件都下载在这个模块里面。
FrZeW2tJP1BTBL7hQW5KSge8h_Av
 
软硬件
元器件
ESP32
功能丰富的 Wi-Fi & 蓝牙 MCU,适用于多样的物联网应用
Buzzer -蜂鸣器
一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
电路图
附件下载
ESP322023.pdf
原理图PDF档
ESP322023.schdoc
利用AD21画的原理图
DFR0830(1).ino
Arduino平台写的软件
团队介绍
个人简短的自我介绍:    12年的项目管理和研发工作经验,6年前学习软件编程,对电子行业有着非常浓厚的兴趣与爱好,对电子产品的研发有一种不达目地不放弃的精神。    对电子行业的兴趣可能是从小就有的,刚开始是从电子的先从硬件画PCB再到硬件设计,一直都是靠时间慢慢提升,通过对工作时间的延长慢慢积累到的,先学会画板的相关layout,对元件有认识后,然后懂原理,再设计原理,后面再学编程。
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号