disasterMesh — Esp32 Devkit C V4 simulation

An interactive Esp32 Devkit C V4 circuit simulation you can run free in your browser on Velxio, by combination-gs.

Components

Sketch code

#include <WiFi.h>
#include <PubSubClient.h>

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>

#include "DHTesp.h"

// =====================================================
// DISASTERMESH
// ESP32 Emergency Survivor Detection System
// Velxio Simulator Version
//
// Sensors:
// DHT22
// MQ-2
// AK9753 Human Presence Sensor
// MPU6050
// OLED
// SOS Button
// Buzzer
// Red + Green LED
// =====================================================


// =====================================================
// PIN CONFIGURATION
// =====================================================

#define DHT_PIN       4
#define SMOKE_PIN     34

// I2C
#define I2C_SDA       21
#define I2C_SCL       22

// SOS
#define SOS_BUTTON    19

// Alarm
#define BUZZER        23

// LEDs
#define GREEN_LED     25
#define RED_LED       26


// =====================================================
// I2C ADDRESSES
// =====================================================

#define OLED_ADDR     0x3C
#define MPU_ADDR      0x68
#define AK9753_ADDR   0x64


// =====================================================
// OLED
// =====================================================

#define SCREEN_WIDTH  128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(
  SCREEN_WIDTH,
  SCREEN_HEIGHT,
  &Wire,
  -1
);


// =====================================================
// SENSOR OBJECTS
// =====================================================

DHTesp dht;
Adafruit_MPU6050 mpu;


// =====================================================
// WIFI - VELXIO
// =====================================================

const char* WIFI_SSID = "Velxio-GUEST";
const char* WIFI_PASSWORD = "";


// =====================================================
// MQTT
// =====================================================

const char* MQTT_SERVER = "broker.hivemq.com";
const int MQTT_PORT = 1883;

WiFiClient espClient;
PubSubClient mqttClient(espClient);


// =====================================================
// MQTT TOPICS
// =====================================================

const char* TOPIC_TEMP =
  "disastermesh/node/temperature";

const char* TOPIC_HUM =
  "disastermesh/node/humidity";

const char* TOPIC_GAS =
  "disastermesh/node/gas";

const char* TOPIC_MOTION =
  "disastermesh/node/motion";

const char* TOPIC_SOS =
  "disastermesh/node/sos";

const char* TOPIC_SURVIVOR =
  "disastermesh/survivor/status";

const char* TOPIC_PRIORITY =
  "disastermesh/survivor/priority";

const char* TOPIC_SECTOR =
  "disastermesh/node/sector";


// =====================================================
// NODE INFORMATION
// =====================================================

const char* NODE_ID = "DM-01";
const char* SECTOR = "A1";


// =====================================================
// THRESHOLDS
// =====================================================

const int GAS_THRESHOLD = 2500;

const float TEMP_THRESHOLD = 50.0;

con