Hackster will be offline on Monday, June 15 from 5pm to 7pm PDT to perform some scheduled maintenance.
stevie135s
Published © GPL3+

mics4514 Gas detector and display

This is a circuit using an esp32 to display values received by the mics4514 gas detection module on an oled ssd 1306 display

BeginnerFull instructions provided1 hour12
mics4514 Gas detector and display

Things used in this project

Hardware components

ssd1306
×1
esp32 wroom
×1
mics4514 gas detector
×1

Story

Read more

Schematics

Circuit

Code

Gas detactor and ssd1306 display

Arduino
different esp32 modules use different pins. Change the code accordingly
#include <Adafruit_SSD1306.h>
#include <Wire.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C 

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

byte reducingGasPin = 34; // Analog input for reducing gas
byte oxidizingGasPin =35; // Analog input for oxidizing gas
byte heaterPin = 5; // Digital output for heater control
int reducingGasValue;
float prereducingGasVoltage = 0;
float reducingGasVoltage;
int oxidizingGasValue;
float preoxidizingGasVoltage = 0;
float oxidizingGasVoltage;
bool disp = false;    // update display or not flag

void setup() {
    pinMode(heaterPin, OUTPUT);
    pinMode (oxidizingGasPin,INPUT);
    pinMode (reducingGasPin,INPUT);
    digitalWrite(heaterPin, HIGH); // Turn on the heater
    
    display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(10,0);
    display.print("RED");
    display.setCursor(10,20);
    display.print("OXI"); 
    display.display();
  }

void loop() {
    reducingGasValue = analogRead(reducingGasPin);
    reducingGasVoltage = reducingGasValue * (5.0 / 1023.0);
    if (prereducingGasVoltage != reducingGasVoltage) {
        disp = true;
        display.setTextColor(SSD1306_BLACK);
        display.setCursor(60,0);
        display.print(prereducingGasVoltage);
        display.setCursor(60,0);
        display.setTextColor(SSD1306_WHITE);
        display.print(reducingGasVoltage);
        prereducingGasVoltage = reducingGasVoltage;

    }
    oxidizingGasValue = analogRead(oxidizingGasPin);
    oxidizingGasVoltage = oxidizingGasValue * (5.0 / 1023.0);
    if (preoxidizingGasVoltage != oxidizingGasVoltage) {
        disp = true;
        display.setTextColor(SSD1306_BLACK);
        display.setCursor(60,20);
        display.print(preoxidizingGasVoltage);
        display.setCursor(60,20);
        display.setTextColor(SSD1306_WHITE);
        display.print(oxidizingGasVoltage);
        preoxidizingGasVoltage = oxidizingGasVoltage;

    }
    if (disp) {
      disp = false;
      display.display();
    }
     delay(1000);
}

Credits

stevie135s
30 projects • 13 followers
I've been interested in microprocessors for a long time.

Comments