Project #15: Environment – MQ-3 Alcohol Detector – Mk41

——

#DonLucElectronics #DonLuc # #AHT20 #Environment #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

MQ-3 Alcohol Detector

——

MQ-3 Alcohol Detector

——

MQ-3 Alcohol Detector

——

MQ-3 Alcohol Detector

The MQ-3 Alcohol Detector is an electronic sensor designed to detect the presence of alcohol vapors in the air, such as ethanol, methanol, and isopropyl alcohol. It operates using a sensitive metal oxide component whose resistance varies according to the ambient alcohol concentration, generating an analog signal that can be read by microcontrollers. The MQ-3 is easy to use, has a fast response time, and can detect alcohol concentrations across a wide range, making it a useful tool for both home and professional applications.

The MQ-3 Alcohol Detector is a widely used sensor for detecting the presence of alcohol vapors in the air, making it ideal for applications such as breathalyzers, vehicle security systems, access control projects, and environmental monitoring.

DL2606Mk01

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x MQ-3 Alcohol Detector
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2606Mk01p

DL2606Mk01p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - MQ-3 Alcohol Detector - Mk41
15-41
DL2606Mk01p.ino
DL2606k01
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x MQ-3 Alcohol Detector
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x USB 3.0 to Type-C Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>
// MQ-3 Alcohol Detector
#include <MQ3.h>

// MQ-3 Alcohol Detector
int iMQ3 = A0;
float iValMQ3 = 0;
// Value Limit
int iValLim = 400;
String sVal = ""; 

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-41";

void loop() {
  
  // isMQ3
  isMQ3();
  
  // AHT20 Humidity and Temperature Sensor
  isHT();

  // isDisplay MQ-3 Alcohol Detector
  isDisplayMQ3();

  // Delay 2 Second
  delay( 2000 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("MQ-3 Alcohol Detector");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay MQ3
void isDisplayMQ3(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Vibration Senso
  screen.setCursor(0, 30);
  screen.println("MQ-3 Alcohol Detector");
  // Humidity
  screen.setCursor(0, 70);
  screen.println("Humidity");
  screen.setCursor(0, 100);
  screen.print( h );
  screen.setCursor(65, 100);
  screen.println( "%RH" );
  // Temperature
  screen.setCursor(0, 140);
  screen.println("Temperature");
  screen.setCursor(0, 170);
  screen.print( t );
  screen.setCursor(65, 170);
  screen.println( "C" );
  // MQ-3 Alcohol Detector
  screen.setCursor(0, 210);
  screen.println("MQ-3 Alcohol Detector");
  screen.setCursor(0, 240);
  screen.println( iValMQ3 );
  screen.setCursor(0, 270);
  screen.println( sVal );
  
}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
    // Temperature
    t = aht20.getTemperature_C();
    
   }
  
}

getMQ3.ino

// MQ-3 Alcohol Detector
// isMQ3
void isMQ3(){

  // iValMQ3
  iValMQ3 = analogRead( iMQ3 );

  // Value Limit
  if (iValMQ3 > iValLim) {

    sVal = "HIGH";

  } else {

    sVal = "LOW";

  }

}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay(100);

  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Wait for the sensor to heat up for 20 seconds
  delay( 20000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – Carbon Monoxide Sensor MQ7 – Mk39

——

#DonLucElectronics #DonLuc #CO #AHT20 #Environment #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

Carbon Monoxide Sensor MQ7

——

Carbon Monoxide Sensor MQ7

——

Carbon Monoxide Sensor MQ7

——

Gravity: Analog CO Sensor (MQ7)

This is an Arduino Carbon Monoxide Sensor. It uses MQ7 probe to detect Carbon Monoxide (CO) concentrations in the air from 20 to 2000ppm. The sensitivity can be adjusted by the potentiometer. The output is proportional to the density of gas. You can use analog reading to read the data from this sensor.

DL2605Mk02

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: Analog CO Sensor (MQ7)
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2605Mk02p

DL2605Mk02p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - Carbon Monoxide Sensor MQ7 - Mk39
15-39
DL2605Mk02p.ino
DL2605Mk02
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: Analog CO Sensor (MQ7)
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x USB 3.0 to Type-C Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>

// MQ7 Carbon Monoxide
int iMQ7 = A0;
int iValMQ7 = 0;

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-39";

void loop() {
  
  // isMQ7
  isMQ7();
  
  // AHT20 Humidity and Temperature Sensor
  isHT();

  // isDisplay CO
  isDisplayCO();

  // Delay 1 Second
  delay( 1000 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("Carbon Monoxide");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay CO
void isDisplayCO(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Vibration Senso
  screen.setCursor(0, 30);
  screen.println("Carbon Monoxide");
  // Humidity
  screen.setCursor(0, 70);
  screen.println("Humidity");
  screen.setCursor(0, 100);
  screen.print( h );
  screen.setCursor(65, 100);
  screen.println( "%RH" );
  // Temperature
  screen.setCursor(0, 140);
  screen.println("Temperature");
  screen.setCursor(0, 170);
  screen.print( t );
  screen.setCursor(65, 170);
  screen.println( "C" );
  // MQ7 Carbon Monoxide
  screen.setCursor(0, 210);
  screen.println("MQ7 Carbon Monoxide");
  screen.setCursor(0, 240);
  screen.print( iValMQ7 );
  screen.setCursor(65, 240);
  screen.println( "ppm" );
  
}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getgetHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
    // Temperature
    t = aht20.getTemperature_C();
    
   }
  
}

getMQ7.ino

// MQ7 Carbon Monoxide
// isMQ7
void isMQ7(){

  iValMQ7 = analogRead( iMQ7 );

}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay(100);

  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – Gravity: I2C SD2405 RTC – Mk38

——

#DonLucElectronics #DonLuc #RTC #SD #Buzzer #FlameSensor #AHT20 #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

Gravity: I2C SD2405 RTC

——

Gravity: I2C SD2405 RTC

——

Gravity: I2C SD2405 RTC

——

Gravity: I2C SD2405 RTC Module

This is an extremely accurate I2C Real Time Clock (RTC) with crystal compensation, inner chargeable battery. The SD2405AL is available in industrial temperature ranges. The SD2405AL is dual power supply system. When the primary power supply goes down to an assigned value or resumes from low power, the system can switch between the primary power supply and battery automatically. Even there is no external power, it can still work for 5~8 years, 1uA ultra-low power consumption (inner battery).

DL2603Mk04

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: I2C SD2405 RTC Module
1 x Fermion: MicroSD Card Module
1 x MicroSD 2 GB
1 x Crowtail – Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail – LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2603Mk04p

DL2603Mk04p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - Gravity: I2C SD2405 RTC - Mk38
15-38
DL2603Mk04p.ino
DL2603Mk04
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: I2C SD2405 RTC Module
1 x Fermion: MicroSD Card Module
1 x MicroSD 2 GB
1 x Crowtail - Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail - LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x Micro USB Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// Wire
#include <Wire.h>
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>
// SD Card
#include "FS.h"
#include "SD.h"
#include "SPI.h"
// RTC (Real-Time Clock)
#include <GravityRtc.h>

// RTC (Real-Time Clock) Initialization
GravityRtc rtc;
String dateRTC = "";
String timeRTC = "";

// MicroSD Card
const int chipSelect = D6;
String zzzzzz = "";

// Buzzer
int iBuzzer = D10;

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Flame Sensor
// LED Green
int iLEDG = D11;
// Flame Sensor
int iFlame =  A0;
String sF = "";

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-38";

void loop() {
  
  // RTC (Real-Time Clock)
  isRTC();
  
  // AHT20 Humidity and Temperature Sensor
  isHT();
  
  // Flame Sensor
  isFlame();

  // isDisplay HT
  isDisplayHT();

  // Delay 0.1 Second
  delay( 100 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("Gravity: I2C SD2405 RTC");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay HT
void isDisplayHT(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // RTC (Real-Time Clock)
  screen.setCursor(0, 30);
  screen.println("Gravity: I2C SD2405 RTC");
  // Flame Switch
  screen.setCursor(0, 70);
  screen.println( sF );
  // Humidity
  screen.setCursor(0, 110);
  screen.println("Humidity");
  screen.setCursor(0, 140);
  screen.print( h );
  screen.setCursor(65, 140);
  screen.println( "%RH" );
  // Temperature
  screen.setCursor(0, 190);
  screen.println("Temperature");
  screen.setCursor(0, 220);
  screen.print( t );
  screen.setCursor(65, 220);
  screen.println( "C" );
  // Date
  screen.setCursor(0, 260);
  screen.print( dateRTC );
  // Time
  screen.setCursor(0, 300);
  screen.print( timeRTC );

}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getFlame.ino

// Flame Sensor
// is Tilt
void isFlame(){

  // Flame
  // Check if Flame Sensor
  if(digitalRead( iFlame) == 0 ){   
    
    // Turn LED HIGH
    digitalWrite(iLEDG, HIGH);
    sF = "Fire Detected!!!";

    // iBuzzer On
    digitalWrite(iBuzzer, HIGH);

    // MicroSD Card
    isSD();

  } 
  else {
    
    // Turn LED LOW
    digitalWrite(iLEDG, LOW);
    sF = "No Fire Detected!!!";

    // iBuzzer Off
    digitalWrite(iBuzzer, LOW);
    
  }

}

getHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
   // Temperature
   t = aht20.getTemperature_C();
   }
  
}

getRTC.ino

// RTC (Real-Time Clock)
// is RTC (Real-Time Clock)
void isRTC(){

  // RTC (Real-Time Clock)
  rtc.read();
  
  // Date
  dateRTC = rtc.year; 
  dateRTC = dateRTC + "/";
  dateRTC = dateRTC + rtc.month;
  dateRTC = dateRTC + "/";
  dateRTC = dateRTC + rtc.day;
  
  // Time
  timeRTC = rtc.hour;
  timeRTC = timeRTC + ":";
  timeRTC = timeRTC + rtc.minute;
  timeRTC = timeRTC + ":";
  timeRTC = timeRTC + rtc.second;

}

getSD.ino

// MicroSD Card
// MicroSD Setup
void isSetupSD() {

    // MicroSD Card
    pinMode( chipSelect , OUTPUT );
    if(!SD.begin( chipSelect )){
        ;  
        return;
    }
    
    uint8_t cardType = SD.cardType();

    // CARD NONE
    if(cardType == CARD_NONE){
        ; 
        return;
    }

    // SD Card Type
    if(cardType == CARD_MMC){
        ; 
    } else if(cardType == CARD_SD){
        ; 
    } else if(cardType == CARD_SDHC){
        ; 
    } else {
        ; 
    } 

    // Size
    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
 
}
// MicroSD Card
void isSD() {

  zzzzzz = "";

  //DLE|EEPROM Unique ID|Version|Flame|Date|Time|Humidity|Temperature|*\r
  zzzzzz = "DLE|" + uid + "|" + sver + "|" + String( sF ) + "|" 
  + String( dateRTC ) + "|" + String( timeRTC ) + "|" 
  + String( h ) + "|" + String( t ) + "|*\r";

  // msg + 1
  char msg[zzzzzz.length() + 1];

  zzzzzz.toCharArray(msg, zzzzzz.length() + 1);

  // Append File
  appendFile(SD, "/dledata.txt", msg );
  
}
// List Dir
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
    
    // List Dir
    dirname;
    
    File root = fs.open(dirname);
    
    if(!root){
        return;
    }
    
    if(!root.isDirectory()){
        return;
    }

    File file = root.openNextFile();
    
    while(file){
        if(file.isDirectory()){
            file.name();
            if(levels){
                listDir(fs, file.name(), levels -1);
            }
        } else {
            file.name();
            file.size();
        }
        file = root.openNextFile();
    }
    
}
// Write File
void writeFile(fs::FS &fs, const char * path, const char * message){
    
    // Write File
    path;
    
    File file = fs.open(path, FILE_WRITE);
    
    if(!file){
        return;
    }
    
    if(file.print(message)){
        ;  
    } else {
        ;  
    }
    
    file.close();
    
}
// Append File
void appendFile(fs::FS &fs, const char * path, const char * message){
    
    // Append File
    path;
    
    File file = fs.open(path, FILE_APPEND);
    
    if(!file){
        return;
    }
    
    if(file.print(message)){
        ;  
    } else {
        ;  
    }
    
    file.close();
    
}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay(100);

  // Wire
  Wire.begin();

  // Delay
  delay( 100 );
 
  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );
  
  // Flame Sensor
  // LED Green 
  pinMode(iLEDG, OUTPUT);
  // Flame Sensor
  pinMode(iFlame, INPUT);

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();
  
  // Delay
  delay( 100 );

  // iBuzzer
  pinMode(iBuzzer, OUTPUT);

  // Delay
  delay(100);

  //MicroSD Card
  isSetupSD();

  // Delay
  delay(100);

  // RTC (Real-Time Clock)
  rtc.setup();

  // Set the RTC time automatically
  // Calibrate RTC time by your computer time
  rtc.adjustRtc(F(__DATE__), F(__TIME__));

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – SD Card Module – Mk37

——

#DonLucElectronics #DonLuc #SD #Buzzer #FlameSensor #AHT20 #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

SD Card Module
SD Card Module

——

SD Card Module
SD Card Module

——

SD Card Module
SD Card Module

——

Fermion: SD Card Module

This DFRobot SD card shield is a Break out board for standard SD card. It allows you to add mass storage and data logging to your project. Specification Compatible with standard SD cards and Micro SD (TF) cards. Can be directly plugged into Arduino shields. Can also be used with other microcontrollers (via SPI communication).

DL2603Mk02

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Fermion: MicroSD Card Module
1 x MicroSD 2 GB
1 x Crowtail – Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail – LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2603Mk02p

DL2603Mk02p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - SD Card Module - Mk37
15-37
DL2603Mk02p.ino
DL2603Mk02
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Fermion: MicroSD Card Module
1 x MicroSD 2 GB
1 x Crowtail - Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail - LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x Micro USB Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>
// SD Card
#include "FS.h"
#include "SD.h"
#include "SPI.h"

// MicroSD Card
const int chipSelect = D6;
String zzzzzz = "";

// Buzzer
int iBuzzer = D10;

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Flame Sensor
// LED Green
int iLEDG = D11;
// Flame Sensor
int iFlame =  A0;
String sF = "";

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-37";

void loop() {
  
  // AHT20 Humidity and Temperature Sensor
  isHT();
  
  // Flame Sensor
  isFlame();

  // isDisplay HT
  isDisplayHT();

  // Delay 0.1 Second
  delay( 100 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("MicroSD Card");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay HT
void isDisplayHT(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Tilt Switch
  screen.setCursor(0, 30);
  screen.println("MicroSD Card");
  screen.setCursor(0, 70);
  screen.println( sF );
  screen.setCursor(0, 120);
  screen.println("Humidity");
  screen.setCursor(0, 150);
  screen.print( h );
  screen.setCursor(65, 150);
  screen.println( "%RH" );
  screen.setCursor(0, 200);
  screen.println("Temperature");
  screen.setCursor(0, 230);
  screen.print( t );
  screen.setCursor(65, 230);
  screen.println( "C" );

}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getFlame.ino

// Flame Sensor
// is Tilt
void isFlame(){

  // Flame
  // Check if Flame Sensor
  if(digitalRead( iFlame) == 0 ){   
    
    // Turn LED HIGH
    digitalWrite(iLEDG, HIGH);
    sF = "Fire Detected!!!";

    // iBuzzer On
    digitalWrite(iBuzzer, HIGH);

    // MicroSD Card
    isSD();

  } 
  else {
    
    // Turn LED LOW
    digitalWrite(iLEDG, LOW);
    sF = "No Fire Detected!!!";

    // iBuzzer Off
    digitalWrite(iBuzzer, LOW);
    
  }

}

getHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
   // Temperature
   t = aht20.getTemperature_C();
   }
  
}

getSD.ino

// MicroSD Card
// MicroSD Setup
void isSetupSD() {

    // MicroSD Card
    pinMode( chipSelect , OUTPUT );
    if(!SD.begin( chipSelect )){
        ;  
        return;
    }
    
    uint8_t cardType = SD.cardType();

    // CARD NONE
    if(cardType == CARD_NONE){
        ; 
        return;
    }

    // SD Card Type
    if(cardType == CARD_MMC){
        ; 
    } else if(cardType == CARD_SD){
        ; 
    } else if(cardType == CARD_SDHC){
        ; 
    } else {
        ; 
    } 

    // Size
    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
 
}
// MicroSD Card
void isSD() {

  zzzzzz = "";

  //DLE|EEPROM Unique ID|Version|Flame|Humidity|Temperature|*\r
  zzzzzz = "DLE|" + uid + "|" + sver + "|" + String( sF ) + "|" 
  + String( h ) + "|" + String( t ) + "|*\r";

  // msg + 1
  char msg[zzzzzz.length() + 1];

  zzzzzz.toCharArray(msg, zzzzzz.length() + 1);

  // Append File
  appendFile(SD, "/dledata.txt", msg );
  
}
// List Dir
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
    
    // List Dir
    dirname;
    
    File root = fs.open(dirname);
    
    if(!root){
        return;
    }
    
    if(!root.isDirectory()){
        return;
    }

    File file = root.openNextFile();
    
    while(file){
        if(file.isDirectory()){
            file.name();
            if(levels){
                listDir(fs, file.name(), levels -1);
            }
        } else {
            file.name();
            file.size();
        }
        file = root.openNextFile();
    }
    
}
// Write File
void writeFile(fs::FS &fs, const char * path, const char * message){
    
    // Write File
    path;
    
    File file = fs.open(path, FILE_WRITE);
    
    if(!file){
        return;
    }
    
    if(file.print(message)){
        ;  
    } else {
        ;  
    }
    
    file.close();
    
}
// Append File
void appendFile(fs::FS &fs, const char * path, const char * message){
    
    // Append File
    path;
    
    File file = fs.open(path, FILE_APPEND);
    
    if(!file){
        return;
    }
    
    if(file.print(message)){
        ;  
    } else {
        ;  
    }
    
    file.close();
    
}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay( 100 );
 
  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );
  
  // Flame Sensor
  // LED Green 
  pinMode(iLEDG, OUTPUT);
  // Flame Sensor
  pinMode(iFlame, INPUT);

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();
  
  // Delay
  delay( 100 );

  // iBuzzer
  pinMode(iBuzzer, OUTPUT);

  // Delay
  delay(100);

  //MicroSD Card
  isSetupSD();

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – Buzzer – Mk36

——

#DonLucElectronics #DonLuc #Buzzer #FlameSensor #AHT20 #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

Buzzer

——

Buzzer

——

Buzzer

——

Crowtail – Buzzer 2.0

The buzzer module is for making sound in your project. It sounds when activated by a logic HIGH signal. Connect the buzzer to any of the D (digital) ports of you can easily make it sounds with setting the related ports to logic HIGH. The buzzer module can be also connected to an analog pluse-width modulation (PWM) output to generate various of tones.

DL2602Mk09

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Crowtail – Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail – LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2602Mk09p

DL2602Mk09p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - Buzzer - Mk36
15-36
DL2602Mk09p.ino
DL2602Mk09
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Crowtail - Buzzer 2.0
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail - LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x Micro USB Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>

// Buzzer
int iBuzzer = D10;

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Flame Sensor
// LED Green
int iLEDG = D11;
// Flame Sensor
int iFlame =  A0;
String sF = "";

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-36";

void loop() {
  
  // AHT20 Humidity and Temperature Sensor
  isHT();
  
  // Flame Sensor
  isFlame();

  // isDisplay HT
  isDisplayHT();

  // Delay 0.1 Second
  delay( 100 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("Buzzer");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay HT
void isDisplayHT(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Tilt Switch
  screen.setCursor(0, 30);
  screen.println("Buzzer");
  screen.setCursor(0, 70);
  screen.println( sF );
  screen.setCursor(0, 120);
  screen.println("Humidity");
  screen.setCursor(0, 150);
  screen.print( h );
  screen.setCursor(65, 150);
  screen.println( "%RH" );
  screen.setCursor(0, 200);
  screen.println("Temperature");
  screen.setCursor(0, 230);
  screen.print( t );
  screen.setCursor(65, 230);
  screen.println( "C" );

}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getFlame.ino

// Flame Sensor
// is Tilt
void isFlame(){

  // Flame
  // Check if Flame Sensor
  if(digitalRead( iFlame) == 0 ){   
    
    // Turn LED HIGH
    digitalWrite(iLEDG, HIGH);
    sF = "Fire Detected!!!";

    // iBuzzer On
    digitalWrite(iBuzzer, HIGH);

  } 
  else {
    
    // Turn LED LOW
    digitalWrite(iLEDG, LOW);
    sF = "No Fire Detected!!!";

    // iBuzzer Off
    digitalWrite(iBuzzer, LOW);
    
  }

}

getHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
   // Temperature
   t = aht20.getTemperature_C();
   }
  
}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay( 100 );
 
  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );
  
  // Flame Sensor
  // LED Green 
  pinMode(iLEDG, OUTPUT);
  // Flame Sensor
  pinMode(iFlame, INPUT);

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();
  
  // Delay
  delay( 100 );

  // iBuzzer
  pinMode(iBuzzer, OUTPUT);

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – AHT20 Temperature and Humidity – Mk35

——

#DonLucElectronics #DonLuc #FlameSensor #AHT20 #FireBeetle2ESP32E #ESP32 #Display #IoT #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

AHT20 Temperature and Humidity

——

AHT20 Temperature and Humidity

——

AHT20 Temperature and Humidity

——-

Gravity: AHT20 Temperature and Humidity Sensor

The AHT20 is a high-precision but low-cost temperature and humidity sensor, which is equipped with an improved MEMS semiconductor capacitive humidity sensor element. It features standard I2C interface and a wide voltage supply of 2 Volt – 5 Volt, and with the simple peripheral circuit, it performs stably even in harsh environments in the measuring range of -40C ~ +85C. This sensor can be widely used for measuring the environmental temperature and humidity of home electronic equipment, the temperature and humidity of automobiles, and so on.

DL2602Mk07

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480×320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail – LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery – 1000mAh
1 x USB 3.0 to Type-C Cable

DL2602Mk07p

DL2602Mk07p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - AHT20 Temperature and Humidity - Mk35
15-35
DL2602Mk07p.ino
DL2602Mk07
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x Gravity: AHT20 Temperature and Humidity Sensor
1 x Flame Sensor
1 x Crowtail - LED Green
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x Micro USB Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// AHT20 Humidity and Temperature Sensor
#include <DFRobot_AHT20.h>

// AHT20 Humidity and Temperature Sensor
DFRobot_AHT20 aht20;
// AHT20 Humidity and Temperature Sensor
float h = 0;
float t = 0;

// Flame Sensor
// LED Green
int iLEDG = D11;
// Flame Sensor
int iFlame =  A0;
String sF = "";

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-35";

void loop() {
  
  // AHT20 Humidity and Temperature Sensor
  isHT();
  
  // Flame Sensor
  isFlame();

  // isDisplay HT
  isDisplayHT();

  // Delay 0.1 Second
  delay( 100 );

}

getDisplay.ino

// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("Humidity and Temperature");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay HT
void isDisplayHT(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Tilt Switch
  screen.setCursor(0, 30);
  screen.println("Humidity and Temperature");
  screen.setCursor(0, 70);
  screen.println( sF );
  screen.setCursor(0, 120);
  screen.println("Humidity");
  screen.setCursor(0, 150);
  screen.print( h );
  screen.setCursor(65, 150);
  screen.println( "%RH" );
  screen.setCursor(0, 200);
  screen.println("Temperature");
  screen.setCursor(0, 230);
  screen.print( t );
  screen.setCursor(65, 230);
  screen.println( "C" );

}

getEEPROM.ino

// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getFlame.ino

// Flame Sensor
// is Tilt
void isFlame(){

  // Flame
  // Check if Flame Sensor
  if(digitalRead( iFlame) == 0 ){   
    
    // Turn LED HIGH
    digitalWrite(iLEDG, HIGH);
    sF = "Fire Detected!!!";

  } 
  else {
    
    // Turn LED LOW
    digitalWrite(iLEDG, LOW);
    sF = "No Fire Detected!!!";
    
  }

}

getHT.ino

// AHT20 Humidity and Temperature Sensor
void isHT(){

  if(aht20.startMeasurementReady(true)){

    // Humidity
    h = aht20.getHumidity_RH();
  
   // Temperature
   t = aht20.getTemperature_C();
   }
  
}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay( 100 );
 
  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );
  
  // Flame Sensor
  // LED Green 
  pinMode(iLEDG, OUTPUT);
  // Flame Sensor
  pinMode(iFlame, INPUT);

  // Delay
  delay( 100 );

  // AHT20 Humidity and Temperature Sensor
  aht20.begin();
  
  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2026
https://www.donluc.com/luc/LucPaquinCVEng2026Mk01.pdf
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Web: https://www.jlpconsultants.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – GNSS GPS – Mk34

——

#DonLucElectronics #DonLuc #GNSS #IoT #Project #DFRobot #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

GNSS GPS

——

GNSS GPS

——

GNSS GPS

——

Gravity: GNSS GPS BeiDou Receiver Module

GNSS stands for Global Navigation Satellite System. The main GNSS systems include GPS, GLONASS, QZSS, and BeiDou. These satellite systems transmit signals to the earth, allowing the receiver to determine its own position by calculating the propagation time of the signals and the position of the receiving satellite, thus achieving functions such as positioning and navigation.

This GNSS BeiDou positioning module supports multi-satellite system joint positioning and provides high-precision, high-speed, and stable data such as longitude, latitude, time, and altitude. It is suitable for various outdoor positioning scenarios, such as vehicle positioning, item tracking, weather stations, and outdoor positioning.

This GNSS receiver module uses the GNSS positioning system and support satellite systems such as BeiDou, GPS, GLONASS, QZSS, etc. Compared with traditional single GPS positioning, joint positioning using multiple systems increases the number of visible and usable satellites, which improves positioning accuracy and speed. It can also achieve stable high-precision positioning even in complex environments, providing more accurate positioning data.

DL2510Mk01

1 x FireBeetle 2 ESP32-P4 AI
1 x IO Expansion Board
1 x Adafruit SHARP Memory Display Breakout – 1.3″ 168×144 Monochrome
1 x Gravity: GNSS GPS BeiDou Receiver Module
1 x USB Battery Pack
1 x USB 3.1 Cable A to C

DL2510Mk01p

DL2510Mk01p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - GNSS GPS - Mk34
15-34
DL2509Mk01p.ino
DL2509Mk01
1 x FireBeetle 2 ESP32-P4 AI
1 x IO Expansion Board
1 x Adafruit SHARP Memory Display Breakout - 1.3" 168x144 Monochrome
1 x Gravity: GNSS GPS BeiDou Receiver Module
1 x USB Battery Pack
1 x USB 3.1 Cable A to C
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM
// with Unique ID for Unit
#include "EEPROM.h"
// SHARP Memory Display
#include <Adafruit_SharpMem.h>
#include <Adafruit_GFX.h>
// GNSS
#include "DFRobot_GNSS.h"

// Use I2C for communication, but use the serial port for communication if the line of codes were masked 
#define I2C_COMMUNICATION 

// ESP32 user hardware uart
DFRobot_GNSS_I2C gnss(&Wire ,GNSS_DEVICE_ADDR);
String sDate = "";
String sUTC = "";
String sLat = "";
String sLon = "";


// SHARP Memory Display
// any pins can be used
#define SHARP_SCK  30
#define SHARP_MOSI 29
#define SHARP_SS   28
// Set the size of the display here, e.g. 144x168!
Adafruit_SharpMem display(SHARP_SCK, SHARP_MOSI, SHARP_SS, 144, 168);
// The currently-available SHARP Memory Display (144x168 pixels)
// requires > 4K of microcontroller RAM; it WILL NOT WORK on Arduino Uno
// or other <4K "classic" devices!  The original display (96x96 pixels)
// does work there, but is no longer produced.
#define BLACK 0
#define WHITE 1

// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-34";

void loop() {


  // isGNSS
  isGNSS();

  // isGNSS Display
  isDisplayGNSS();

  // Delay 1 Second
  delay( 1000 );

}

getDisplay.ino

// SHARP Memory Display
// SHARP Memory Display - UID
void isDisplayUID(){

  // text display
  display.clearDisplay();
  display.setRotation(4);
  display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  // Don Luc
  display.println( "Don Luc" );
  // EEPROM
  display.setCursor(0,25);
  display.println( "EEPROM" );
  display.setCursor(0,55);
  display.println( uid );
  // Version
  display.setCursor(0,85);
  display.println( "Version" );
  display.setCursor(0,115);
  display.println( sver );
  display.refresh();
  delay( 100 );

}
// isGNSS Display
void isDisplayGNSS(){

  // text display Date and Time
  display.clearDisplay();
  display.setRotation(4);
  display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.print( "Lan: " );
  display.println( sLat );
  display.setCursor(0,25);
  display.print( "Lon: " );
  display.println( sLon );
  display.setCursor(0,55);
  display.println( "UTC" );
  display.setCursor(0,85);
  display.println( sDate );
  display.setCursor(0,115);
  display.println( sUTC );
  display.refresh();
  delay( 100 );
  
}

getEEPROM.ino

// EEPROM
// isUID EEPROM Unique ID
void isUID() {
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }

}

getGNSS.ino

// GNSS
// isSetupGNSS
void isSetupGNSS(){

  // GNSS
  //while(!gnss.begin()){
    //Serial.println("NO Deivces !");
   // delay(1000);
  //}

  gnss.begin();
  
  // GNSS
  gnss.enablePower();      

/** Set the galaxy to be used
 *   eGPS              USE gps
 *   eBeiDou           USE beidou
 *   eGPS_BeiDou       USE gps + beidou
 *   eGLONASS          USE glonass
 *   eGPS_GLONASS      USE gps + glonass
 *   eBeiDou_GLONASS   USE beidou +glonass
 *   eGPS_BeiDou_GLONASS USE gps + beidou + glonass
 */
  gnss.setGnss(eGPS_BeiDou_GLONASS);

  // GNSS
  // gnss.setRgbOff();
  gnss.setRgbOn();
  
  
}
// isGNSS
void isGNSS(){

  // GNSS
  sTim_t utc = gnss.getUTC();
  sTim_t date = gnss.getDate();
  sLonLat_t lat = gnss.getLat();
  sLonLat_t lon = gnss.getLon();
  
  sDate = "";
  sUTC = "";
  sLat = "";
  sLon = "";

  // Latitude
  sLat = lat.latitudeDegree;
  // Longitude
  sLon = lon.lonitudeDegree;

  // Date
  sDate = date.year;
  sDate = sDate + "/";
  sDate = sDate + date.month;
  sDate = sDate + "/";
  sDate = sDate + date.date;

  // UTC
  sUTC = utc.hour;
  sUTC = sUTC + ":";
  sUTC = sUTC + utc.hour;
  sUTC = sUTC + ":";
  sUTC = sUTC + utc.minute;

}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

  // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay(100);

  // SHARP Display start & clear the display
  display.begin();
  display.clearDisplay();

  // Delay
  delay(100);

  // isSetupGNSS
  isSetupGNSS();

  // Delay
  delay( 100 );

  // Display - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();
    
  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2024
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
Twitter: https://twitter.com/labs_steam
Pinterest: https://www.pinterest.com/NeoSteamLabs/
Instagram: https://www.instagram.com/neosteamlabs/
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – Arduino UNO R4 WiFi – Mk34

——

#DonLucElectronics #DonLuc #Environment #DHT11 #ArduinoUNOR4 #Project #IoT #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

Arduino UNO R4 WiFi

——

Arduino UNO R4 WiFi

——

Arduino UNO R4 WiFi

——

Arduino UNO R4 WiFi

The new Arduino UNO R4 development board UNO R4 WiFi. It runs on the Renesas RA4M1 (Arm Cortex®-M4) processor with a clock speed of 48MHz, which provides a 3x increase over the UNO R3. In addition to that, the SRAM has been upgraded from 2kB to 32kB and the flash memory has been increased from 32kB to 256kB to accommodate to more complex projects. Furthermore, in response to requests from the Arduino community, the USB port has been upgraded to USB-C and the maximum power supply voltage has been increased to 24V. The board provides a CAN bus, allowing users to minimize wiring and perform different tasks by connecting multiple extension boards. Finally, the new board also includes a 12-bit analog DAC. The WiFi version comes with an Espressif S3 WiFi module, expanding creative opportunities for makers, educators, and hobbyists alike. Based on the success of UNO R3, the UNO R4 board is the ideal prototype and learning tool for anyone. While retaining the well-known features of the UNO series, such as standard form factor, shield compatibility, 5V voltage, and robustness, new features have been added.

DL2509Mk03

1 x Arduino UNO R4 WiFi
1 x Adafruit SHARP Memory Display Breakout – 1.3″ 168×144 Monochrome
1 x Gravity: DHT11 Temperature & Humidity Sensor
1 x USB Battery Pack
1 x USB 3.1 Cable A to C

DL2509Mk03p

DL2508Mk03p.ino

/****** Don Luc Electronics © *****Software Version Information
Project #15: Environment - Arduino UNO R4 WiFi - Mk34
15-34
DL2509Mk03.ino
DL2509Mk03
1 x Arduino UNO R4 WiFi
1 x Adafruit SHARP Memory Display Breakout - 1.3" 168x144 Monochrome
1 x Gravity: DHT11 Temperature & Humidity Sensor
1 x USB Battery Pack
1 x USB 3.1 Cable A to C
*/

// Include the Library Code
// DHT11
#include <DHT11.h>
// SHARP Memory Display
#include <Adafruit_SharpMem.h>
#include <Adafruit_GFX.h>

// DHT11
#define DHT11PIN 2
DHT11 dht11(DHT11PIN);
int temperature = 0;
int humidity = 0;

// SHARP Memory Display
// any pins can be used
#define SHARP_SCK  13
#define SHARP_MOSI 11
#define SHARP_SS   10
// Set the size of the display here, e.g. 144x168!
Adafruit_SharpMem display(SHARP_SCK, SHARP_MOSI, SHARP_SS, 144, 168);
// The currently-available SHARP Memory Display (144x168 pixels)
// requires > 4K of microcontroller RAM; it WILL NOT WORK on Arduino Uno
// or other <4K "classic" devices!  The original display (96x96 pixels)
// does work there, but is no longer produced.
#define BLACK 0
#define WHITE 1

// Software Version Information
String sver = "15-34";

void loop() {

  // DHT11
  isDHT11();

  // isDT11 Display
  isDisplayDHT();

  // Delay 1 Second
  delay( 1000 );

}

getDHT.ino

// DHT11
// isDHT11
void isDHT11(){

  // Attempt to read the temperature and humidity values from the DHT11 sensor.
  int result = dht11.readTemperatureHumidity(temperature, humidity);

}

getDisplay.ino

// Adafruit SHARP Memory Display
// Adafruit SHARP Memory Display - UID
void isDisplayUID(){

  // text display
  display.setRotation(4);
  display.setTextSize(3);
  display.setTextColor(BLACK);
  display.setCursor(0,2);
  display.println( "Don Luc" );
  //display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(0,35);
  display.println( sver );
  display.refresh();
  delay( 100 );

}
// isDHT11 Display
void isDisplayDHT(){

  // text display Date and Time
  display.clearDisplay();
  display.setRotation(4);
  display.setTextSize(3);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println( "Temp (C)" );
  display.setCursor(0,35);
  display.print( temperature );
  display.setCursor(45,35);
  display.println( "C" );
  //display.setTextSize(3);
  //display.setTextColor(BLACK);
  display.setCursor(0,65);
  display.println( "Hum (%)" );
  display.setCursor(0,95);
  display.print( humidity );
  display.setCursor(45,95);
  display.println( "%" );
  display.refresh();
  delay( 100 );
  
}

setup.ino

// Setup
void setup()
{
  
  // Delay
  delay(100);
  
  // SHARP Display start & clear the display
  display.begin();
  display.clearDisplay();

  // Delay
  delay( 100 );

  // Display - UID
  // Don Luc Electronics
  // Version
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2024
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
Twitter: https://twitter.com/labs_steam
Pinterest: https://www.pinterest.com/NeoSteamLabs/
Instagram: https://www.instagram.com/neosteamlabs/
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – Geiger – Mk33

——

#DonLucElectronics #DonLuc #Environment #Geiger #DFRobot #Project #IoT #Fritzing #Programming #Electronics #Microcontrollers #Consultant

——

Geiger

——

Geiger

——

Geiger

——

Gravity: Geiger Counter Module Ionizing Radiation Detector

Ionizing radiation, an invisible and intangible enemy, exists not only in nuclear power plant reactors. In fact, we are bombarded by radiation from the surrounding environment and outer space all the time, but fortunately our body is strong enough to resist the natural background radiation.

No active contact does not mean that high-energy ionizing radiation will not be encountered. Natural marble building materials, ore gems with different colors, and “negative ion powder” of unknown composition may contain different amounts of radioactive elements. With the use of a Geiger counter, these radioactive sources have nowhere to hide.

In addition, the Geiger counter is a good random number generator, and undetermined high-energy particle ionization events can provide enough random entropy to get you a truly random number, rather than a fixed random sequence based on a random algorithm.

DL2509Mk02

1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 2.0″ 320×240 IPS TFT LCD
1 x GDL Line 10 CM
1 x Gravity: IO Shield for FireBeetle 2
1 x Gravity: Geiger Counter Module Ionizing Radiation Detector
1 x Lithium Ion Battery – 1000mAh
1 x Switch
1 x SPDT Slide Switch
1 x USB 3.1 Cable A to C

DL2509Mk02p

DL2508Mk01p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - Geiger  - Mk33
15-33
DL2509Mk02p.ino
DL2509Mk02
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 2.0" 320x240 IPS TFT LCD
1 x GDL Line 10 CM
1 x Gravity: IO Shield for FireBeetle 2
1 x Gravity: Geiger Counter Module Ionizing Radiation Detector
1 x Lithium Ion Battery - 1000mAh
1 x Switch
1 x USB 3.1 Cable A to C
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM
// with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>
// DFRobot Geiger
#include <DFRobot_Geiger.h>

// DFRobot Geiger
#define detect_pin D5
DFRobot_Geiger  geiger(detect_pin);
float iCPM = 0;
float inSvh = 0;
float iuSvh = 0;

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 240x320
DFRobot_ST7789_240x320_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "15-33";

void loop() {

  // isGeiger
  isGeiger();

  // isGeiger Display
  isDisplayGeiger();

  // Delay 3 Second
  //delay( 3000 );

}

getDisplay,ino

// DFRobot Display 240x320
// DFRobot Display 240x320 - UID
void isDisplayUID(){

  // DFRobot Display 240x320
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // SD
  screen.setCursor(0, 60);
  screen.println("Geiger");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isGeiger Display
void isDisplayGeiger(){

  // DFRobot Display 240x320
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Geiger
  screen.setCursor(0, 30);
  screen.println("Geiger");
  // CPM
  screen.setCursor(0, 60);
  screen.println("CPM: ");
  screen.setCursor(90, 60);
  screen.println( iCPM );
  // nSvh
  screen.setCursor(0, 90);
  screen.println( "nSvh: " );
  screen.setCursor(90, 90);
  screen.println( inSvh );
  // uSvh
  screen.setCursor(0, 120);
  screen.println( "uSvh: " );
  screen.setCursor(90, 120);
  screen.println( iuSvh );
  
}

getEEPROM.ino

// EEPROM
// isUID EEPROM Unique ID
void isUID() {
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }

}

getGeiger,ino

// DFRobot Geiger
// isGeiger
void isGeiger(){

  // Delay 3 Second
  delay( 3000 );
  
  // Geiger
  iCPM = geiger.getCPM();
  inSvh = geiger.getnSvh();
  iuSvh = geiger.getuSvh();
  
}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay( 100 );

  // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();
  
  // Delay
  delay(100);

  // DFRobot Geiger
  geiger.start();

  // Delay
  delay(100);
  
  // DFRobot Display 240x320
  screen.begin();

  // Delay
  delay( 100 );

  // DFRobot Display 240x320 - UID
  // Don Luc Electronics
  // Version
  isDisplayUID();

  // Delay 5 Second
  delay( 5000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Consultant, R&D, Electronics, IoT, Teacher and Instructor

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank , Underwater and UAV Vehicle
  • Unmanned Vehicles Terrestrial, Marine and UAV
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2024
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
Twitter: https://twitter.com/labs_steam
Pinterest: https://www.pinterest.com/NeoSteamLabs/
Instagram: https://www.instagram.com/neosteamlabs/
DFRobot: https://learn.dfrobot.com/user-10186.html
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc

Project #15: Environment – KY-039 – Mk32

——

#DonLucElectronics #DonLuc #KY039 #ESP32 #Arduino #EEPROM #Display #Elecrow #Project #Patreon #Electronics #Microcontrollers #IoT #Fritzing #Programming #Consultant

——

KY-039

——

KY-039

——

KY-039

——

KY-039 Heartbeat Sensor Module

This project uses bright infrared (IR) LED and a phototransistor to detect the pulse of the finger, a red LED flashes with each pulse.
Pulse monitor works as follows: The LED is the light side of the finger, and phototransistor on the other side of the finger, phototransistor used to obtain the flux emitted, when the blood pressure pulse by the finger when the resistance of the phototransistor will be slight changed.

We chose a very high resistance resistor R1, because most of the light through the finger is absorbed,it is desirable phototransistor sensitive enough.Resistance can be selected by experiment to get the best results. The most important is to keep the shield stray light into the phototransistor. For home lighting that is particularly important because the lights at home mostly based 50HZ or 60HZ fluctuate, so faint heartbeat will add considerable noise.

DL2506Mk04

1 x Crowduino Uno – SD
1 x Crowtail – Base Shield
1 x Crowtail – I2C LCD
1 x KY-039 Heartbeat Sensor Module
1 x Crowtail – LED(Green)
1 x USB Battery Pack
1 x USB Mini-B Cable

Crowduino Uno – SD

SCL – A5
SDA – A4
KYH – A0
LED – 6
VIN – +5V
GND – GND

DL2506Mk04p

DL2506Mk04p.ino

/****** Don Luc Electronics © ******
Software Version Information
Project #15: Environment - KY-039 - Mk31
DL2506Mk04p.ino
DL2506Mk04
1 x Crowduino Uno - SD
1 x Crowtail - Base Shield
1 x Crowtail - I2C LCD
1 x KY-039 Heartbeat Sensor Module
1 x Crowtail - LED(Green)
1 x USB Battery Pack
1 x USB Mini-B Cable
*/

// Include the Library Code
// EEPROM library to read and write EEPROM with unique ID for unit
#include <EEPROM.h>
// Wire
#include <Wire.h>
// Liquid Crystal
#include "LiquidCrystal.h"

// KY-039 Heartbeat
int iHeartbeat = A0;
// Pulse
float pulse;
// Sum
int sum = 0;

// Liquid Crystal
// Connect via i2c
LiquidCrystal lcd(0);

// LED Green
int iLEDGreen = 6;

// EEPROM Unique ID Information
String uid = "";

// Software Version Information
String sver = "15-31";

void loop() {

  // Heartbeat
  // isHeartbeat
  isHeartbeat();

  // Display Heartbeat
  isDisplayHeartbeat();

  // Delay
  delay( 100 );

}

getDisplay.ino

// getDisplay
// Crowbits - OLED 128X64 UID
// Display UID
void isDisplayUID(){

  // Set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  // Cursor
  lcd.setCursor(0, 0);
  lcd.print("Don Luc Electron");
  // Cursor
  lcd.setCursor(0, 1);
  // Print a message to the LCD.
  lcd.print( sver );

}
// Display Heartbeat
void isDisplayHeartbeat(){

  // Clear
  lcd.clear();
  // Set the cursor to column 0, line 0
  lcd.setCursor(0, 0);
  lcd.print( "Heartbeat" );
  // Set the cursor to column 0, line 1
  lcd.setCursor(0, 1);
  lcd.print( pulse );
  
}

getEEPROM.ino

// EEPROM
// isUID EEPROM Unique ID
void isUID() {
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getHeartbeat.ino

// KY-039 Heartbeat
// isHeartbeat
void isHeartbeat(){

  // Sum
  sum = 0;
  
  // KY-039 Heartbeat
  for (int i = 0; i < 20; i++){
  
    sum += analogRead(iHeartbeat);

  }

  // Pulse
  pulse = sum / 200.00;

}

setup.ino

// Setup
void setup()
{
 
  // Delay
  delay(100);
  
  // isUID EEPROM Unique ID
  isUID();
  
  // Delay
  delay(100);

  // Initialize the LED Green
  pinMode(iLEDGreen, OUTPUT);
  // LED Green
  digitalWrite(iLEDGreen, HIGH);

  // Delay
  delay(100);

  // KY-039 Heartbeat
  pinMode(iHeartbeat, INPUT);

  // Delay
  delay( 100 );

  // Display UID
  isDisplayUID();
  
  // Delay 10 Second
  delay( 10000 );

}

——

People can contact us: https://www.donluc.com/?page_id=1927

Electronics, IoT, Teacher, Instructor, R&D and Consulting

  • Programming Language
  • Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc…)
  • IoT
  • Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
  • Robotics
  • Automation
  • Camera and Video Capture Receiver Stationary, Wheel/Tank and Underwater Vehicle
  • Unmanned Vehicles Terrestrial and Marine
  • Machine Learning
  • Artificial Intelligence (AI)
  • RTOS
  • Sensors, eHealth Sensors, Biosensor, and Biometric
  • Research & Development (R & D)
  • Consulting

Follow Us

Luc Paquin – Curriculum Vitae – 2024
https://www.donluc.com/luc/

Web: https://www.donluc.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
Twitter: https://twitter.com/labs_steam
Pinterest: https://www.pinterest.com/NeoSteamLabs/
Instagram: https://www.instagram.com/neosteamlabs/
Patreon: https://patreon.com/DonLucElectronics59
DFRobot: https://learn.dfrobot.com/user-10186.html
Hackster.io: https://www.hackster.io/neosteam-labs
Elecrow: https://www.elecrow.com/share/sharepj/center/no/760816d385ebb1edc0732fd873bfbf13
TikTok: https://www.tiktok.com/@luc.paquin8
Twitch: https://www.twitch.tv/lucpaquin
Hackster: https://www.hackster.io/luc-paquin
LinkedIn: https://www.linkedin.com/in/jlucpaquin/

Don Luc