Alcoholdetector: ESP-WROOM-02 & MQ-3 sensor
|
Met een ESP-WROOM-02 en een MQ-3 Alcoholsensor kun je eenvoudig een portable alcoholdetector maken. Het wordt een eenvoudiger uitvoering van het eerdere project “Arduino alcoholtester met MQ-3 gas sensor en OLED display“. We maken ook gebruik van de bevindingen uit de eerdere blog “WEMOS D1 Esp-Wroom-02 met Arduino IDE“.


Alcoholdetector in 6 stappen
Als we vanaf nul beginnen dan moet je onderstaande stappen doorlopen, maar waarschijnlijk heb je de eerste (twee) al eerder gedaan:
- Installeer de Arduino IDE
- Installeer de Arduino core voor ESP8266
- Installeer de Thingpulse bibliotheek
- Installeer de Brzo I2C bibliotheek
- Sluit de sensor aan
- Upload de alcoholdetector sketch
Als dit allemaal gelukt is dan heb je een goed uitgangspunt voor je eigen versie van dit project. We beginnen met het installeren van de Arduino IDE.


Installeer de Arduino IDE
Om de ESP8266 microcontroller te programmeren gebruiken we de Arduino IDE. Als je deze nog niet geïnstalleerd hebt dan kun je hier lezen hoe dat moet:
- Linux: Installeer of upgrade nieuwste Arduino IDE op Linux
- Windows: De Arduino IDE installeren op Windows 10
Installeer de Arduino core voor ESP8266
Om ondersteuning voor de ESP8266 microcontroller aan de Arduino IDE toe te voegen, installeren we de “Arduino core for ESP8266 WiFi chip“.
- Ga naar menu Bestand > Voorkeuren, plak de URL “https://arduino.esp8266.com/stable/package_esp8266com_index.json” in het vak “Meer Board Managers URL’s”.
- Ga daarna naar het menu Hulpmiddelen > Board “xxx” > Board Beheer … en zoek op “ESP8266”. Druk dan bij “esp8266 by esp8266 community” op de knop “installeren”.
Lees voor een uitgebreidere beschrijving het hoofdstuk “De ESP8266 Arduino Core installeren” in het blog “ESP8266 NodeMcu met Arduino IDE op Linux” De procedure is overigens hetzelfde voor Windows en Linux.
Installeer de Thingpulse bibliotheek
De Thingpulse bibliotheek kun je op twee manieren installeren. Wil je het handmatig doen, download dan het ZIP-bestand van github. Ga daarna in de Arduino IDE naar Schets > Bibliotheek gebruiken > Voeg .ZIP bibliotheek toe > kies bestand en selecteer het bestand dat je zojuist gedownload hebt.
Je kunt de bibliotheek ook via “Bibliotheek Beheer” installeren. Ga daarvoor naar Schets > Bibliotheek gebruiken > Bibliotheken beheren en zoek naar “ESP8266 and ESP32 Oled Driver for SSD1306 display“. Klik daarna op de knop “Installeren”.


Installeer de Brzo I2C Bibliotheek
Installeer op dezelde manier de “Brzo I2C” bibliotheek. Handmatig, door het ZIP-bestand van GitHub te downloaden en via Schets > Bibliotheek gebruiken > Voeg .ZIP bibliotheek toe > kies bestand aan de Arduino IDE toe te voegen.
Of door middel van “Bibliotheek Beheer” via Schets > Bibliotheek gebruiken > Bibliotheken beheren, dan zoeken naar “Brzo I2C” en klikken op de knop “installeren”.
Sluit de sensor aan
Dan is het tijd om de sensor op de ESP aan te sluiten. Zorg dat de ESP uit staat. Met drie draden sluit je de sensor aan: AD van de sensor op A0 van de ESP voor het analoge signaal. VCC en GND van de sensor op 5V en GND van de ESP voor de voeding.
MQ-3 Sensor | ESP-WROOM-02 |
AD | A0 |
DD | (niet aangesloten) |
GND | GND |
VCC | 5V |
Upload de alcoholdetector voorbeeldsketch
Als het voorgaande allemaal gelukt is dan kun je nu de onderstaande voorbeeldsketch naar de ESP-WROOM-02 uploaden.
/* Alcoholdetector voorbeeldsketch https://nl.oneguyoneblog.com */ #include "SSD1306Brzo.h" // Include OLED Library SSD1306Brzo display(0x3c, 5, 4); // Initialize OLED display int analogPin = A0; // Analog input is A0 void setup() { display.init(); // Initialise the display } void drawData() { // Fuction to draw the text display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(ArialMT_Plain_16); int analogValue = analogRead(analogPin); // Read the analog sensor input (0-1023) int percentage = map(analogValue, 0, 1023, 0, 100); // Map sensor value (0-1023) to percentage (0-100) display.drawProgressBar(0, 24, 100, 5, percentage); // Draw the percentage bar (x,y,width,height,value) display.drawString(0, 0, "Alcohol: " + String(percentage) + "%"); // Print percentage display.drawString(0, 48, "ADC: " + String(analogValue)); // Print value of analog input (ADC) } void loop() { display.clear(); // Clear OLED display drawData(); // Draw the text display.display(); // Write the buffer to the display }


Verbeter de alcoholdetector
Zoals de meeste projecten op dit blog is dit slechts een basis voor je eigen project. Je kunt zelf nog veel toevoegen en verbeteren. Een paar suggesties:
- Een timer op het scherm die de opwarmtijd voor de sensor weergeeft (bijvoorbeeld 3 minuten)
- De WiFi-functionaliteit van de ESP8266 gebruiken zodat je de data met je telefoon kunt uitlezen
- De sketch optimaliseren om energie te besparen zodat de batterij langer meegaat
- Etc. etc.
Als je zelf een mooie alcoholdetector gemaakt hebt, laat het dan vooral weten in de commentaarsectie hieronder!