Smoke and methane detection with FireBeetle 2 ESP32-C6 and Alvik robot
Methane gas and smoke pose significant risks, especially in enclosed spaces. But what if we could deploy a smart robot that not only detects these hazards but also transmits real-time information? Enter the Alvik robot, equipped with MEMS Smoke and Methane sensors.
Methane gas leaks and smoke outbreaks can occur unexpectedly, endangering lives and property. Traditional methods of monitoring rely on human inspection, which can be slow and inefficient.
In this experimental/educational project we will send a robot to do the work for us.
Parts required
FireBeetle 2 ESP32-C6 IoT Development Board
Beetle ESP32 C6 Mini Development Board
2.0" 320x240 IPS TFT LCD Display with MicroSD Card
Fermion: MEMS Methane CH4 Gas Detection Sensor
Circuit
For the receiver part we will connect a GDI cable between the FireBeetle 2 ESP32-C6 IoT Development Board and the 2.0" 320x240 IPS TFT LCD Display
For the sender part we will create an Y cable to use 1 VCC and 1 GND for 2 sensors. Then we will connect A3 to the Smoke A pin and A4 to the Methane gas A pin.
Finally we will power the Beetle ESP32 C6 Mini Development Board with the VIN and GND from Alvik.
ESPNow link
We will connect the ESP32-C6 and the ESP32-C6 mini with ESPNow and for that purpose we will have to configure the MAC address in the sender code.
uint8_t broadcastAddress[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
To obtain the MAC address upload the code to the ESP32-C6 receiver and open Serial Monitor. The Mac will be printed there.
Logo screen for TFT Display
For the logo screen I asked Copilot for a logo and then added some texts and 240x320 resize with Photopea. Finally I have converted the bmp to Arduino code with https://javl.github.io/image2cpp/ selecting Swap and Invert options.
Source code
There are 3 pieces of code in this project. MicroPython to move the robot avoiding obstacles. C++ for the Beetle ESP32 C6 Mini to read sensors and send the information to the screen device. And another C++ for the receiving screen device using Firebeetle 2 Beetle ESP32 C6.
Source code at https://github.com/ronibandini/Alvik/tree/main/smokegas
Alvik setup
Using Arduino Labs for Micrpython, connect to the Alvik COM and transfer Alvik.py Then edit main.py to include Alvik.py
For this project I wanted to explore the connection between Beetle ESP32 C6 Mini and Firebeetle 2 Beetle ESP32 C6 but it could be possible to connect the sensors directly to the Alvik’s Nano ESP32 board through Grove I2C cable and remove the C6 mini as well. I will explore this options in further projects.
Pictures
Alvik with 2 sensors mounted.
Receiver screen with a simple 3d printed stand.
Where to go from here
One enhancement should be integrating the functions of the small beetle ESP32 with the On Board Arduino Nano ESP32. The receiver script will use microPython. Check my Remote Control for Alvik as an example.
Then, a grove cable could be used to receive sensors data.
D11 A4
D12 A5
Finally, it would be interesting changing the robot's behaviour according to sensor levels as well.
Final notes
FireBeetle 2 ESP32-C6 and Beetle ESP32 C6 Mini Development Boards are excellent choices for IoT projects. They come packed with features and offer an incredible price point. Integrating a screen is as simple as connecting a basic GDI cable. As demonstrated in this project, they are also well-suited for robotics.