Grove Multichannel Gas Sensor CLONE

This is a small project based on orginal, open hardware and open software project Grove — Multichannel Gas Sensor. The main part is MiCS – 6814 MOS Triple Sensor production by Amphenol SGX Sensortech. Moreover using this robust MEMS sensor we cen detection of pollution from automobile exhausts and foragricultural/industrial odors. In our case we measure gas concentration for eight chemical compound like: NH3, CO, NO2, C3H8, C4H10, CH4, H2 and C2H5OH. The most important for us is Ammonia (NH3 ).

Grove – Multichannel Gas Sensor

Grove – Multichannel Gas Sensor is open project so we decided to use hardware and software firmware to lanuch our clone. Obviously source files (hardware design and software firmware) are avilable on project page or here.


Our goals in this case is prepare PCB (Printed Circuit Board) with electronic components like microcontroller, gas sensor and other. So the firs step is download hardware files sources and open in your editor. Obviously using Software Autodesk Eagle or Altium Designer you can open hardware source files.

Mutichannel Gas Sensor Sources PCB

If you don’t need to make changes to the reference project designe indeed generate fabrication files (Gerber) for production your PCB.

Preview of generated Gerber files

Now we can compress Gerber files into ZIP Archive and send Manufacture obviously. Short production times and high quality can be achieved in JLCPCB Manufacture certainly. In this project, we used the services of this company. Below show photo present quality of PCB’s. We order 5 pcs and paid about $6 Total.

PCB read to mouting SMD components

Below is the list of components (called as BOM) to be mounted on the PCB of course. Be careful when assembly on board the sensor. Do not use chemical substances particularly soldering flux. More information are available in sensor datasheet obviously.

Bill of materials

C0402100nFC0402C1, C2, C3, C4, C7, C10, C11, C148
C080510uF/25VC0805C5, C8, C93
C0402DNPC0402C6, C12, C133
L06031uHL0603L1, L22
R0402510RR0402R1, R102
R040256kR0402R4, R5, R63
R040210kR0402R7, R8, R9, R12, R13, R166
Multichannel Gas Sensor — Bill of Materials

In our case, we did not install integrated circuit U3 – ETA3410. This is DC/DC Step Down Converter 5V/3V3. Therefore we decided supply 3.30 Voltage from external Power Supply Source. Multichannel Gas Sensor Module need main power supply 5.0 V (and 3.30 V when do not assembly Step Down Converter part).

The I2C interface is used for communication between the host and the Gas Sensor Module. To point out the pull-Up resistors 10k (R8 and R9 on board) are included in project.

Assembled and ready to use the Multichannel Gas Senosr Module


Now is a good time to flash our microcontroller. AVR Microcontrollers ATMEGA168PA-MU is on board obviously. Therefore we can communciation with this part via socket on bottom side our PCB. Indeed this is a stnadard 6 pin ISP ( In-System Programming) socket. Connect Gas Sensor Module to Arduino NANO using this socket unquestionably.

Multichannel Gas Sensor Module — Bottom Side of PCB

Pinout how connecting Gas Sensor Module to Arduino NANO board is show below in table.

Gas Sensor ModuleArduino NANO
Pinout for connecting Gas Sensor Module to Arduino

Download firmware from official Git Repositor. In Arduino IDE choose Sketch -> Include Library -> Add ZIP Library for install new Library in Arduino IDE obviously.

Install new Library in Arduino IDE

After correct installation Mutichannel_Gas_Sensor Library select in Arduino IDE File -> Examples -> Grove Multichannel Gas Sensor -> UpdateFirmware doubtedly. Two files will be loaded into the Arduino IDE environment: UpdateFirmware.ino and bootloader_atmega168.h . The first file is the programming interface for communication with our microcontroller ATMega168 of course. Moreover the second file is the bootloader with newest firmware.

Connect Multichannel Gas Sensor Module to Arduino Nano. Using USB cable connect Arduino to computer obviously. Moreover in Arduino IDE show Serial Monitor (Tools -> Serial Monitor). Therefore upload UpdateFirmware Sketch into Arduino Nano board. After System Reset in Serial Monitor will be show message about start application for update firmware certainly. Thus send “G” via Serial Monitor for start flashing target microcontroller.

After flashing will be show log of course. It contains information aboout microcontroller signarure, flash memory size, Fuse Bit, Bootloader address and also processor name .

Information summarizing the software upload process


After correct firmware upload, we can check the firmware version. Before that, we must connect Gas Sensor Module via I2C Interface to our Arduino Nano. Pin SCL and SDA on Gas Sensor Board connect accordingly directly to A5 and A4 on Arduino Nano Board respectively. Particularly do not forget about connecting GND and power supply +5V (and 3V3 optional if you do not use DC/DC converter on board).

Multichannel Gas Sensor System Ready to launch

Consequently now our system is ready to check firmware version and read Gas Sensor Value first time! Further go to Arduino IDE and upload Sketch GetVersion.ino to Arduino Nano board. After reset system in Serial Monitor windows will be show message about firmware version correspondingly. Nevertheless if version is equal 2.0 or higher everything is fine. Congratulation.

Checking Firmware version on ATMega168


In this situation we can upload appropriate sketch to Arduino Nano board and measure gas concentration in ppm for:

  • NH3,
  • CO,
  • NO2,
  • C3H8,
  • C4H10,
  • CH4,
  • H2,
  • C2H5OH.

For this purpose load sketch ReadSensorValue_Grove.ino into Arduino IDE. Upload sketch to Arduino and open Serial Monitro Window to illustrate. After system reset Arduino will be communcating with our Gas Sensor Module and read gas concentration periodically every 1 second to demonstrate. When the value is read, LED D1 on Gas Sensor Board shortly blinky.

The first readings may be inaccurate. Hence the MiCS-6814 sensor requires a warm-up period. Thus recommended pre-heating time is 24 hours. Must be remembered in many cases, around 30 minutes should be sufficient. If after this time the values are significantly different than expected, the sensor calibration is recommended. For this purpose use a calibration.ino sketch from the Grove -Multichannel Gas Sensor library. Set pre-heat time on 30 minutes. Doubtedly Remember to perform the calibration in clean air conditions.

#include <Wire.h>
#include "MutichannelGasSensor.h"
#define SENSOR_ADDR     0X04        // default to 0x04
#define PRE_HEAT_TIME   30           // pre-heat time, 10-30 minutes is recommended
void setup() {
    gas.begin(SENSOR_ADDR);   //
    Serial.println("power on, and pre-heat");
    for (int i = 60 * PRE_HEAT_TIME; i >= 0; i--) {
        Serial.print(i / 60);
        Serial.println(i % 60);
    Serial.println("Begin to calibrate...");
    Serial.println("Calibration ok");
void loop() {

After Gas Sensor Calibration upload againt ReadSensorValue_Grove.ino into Arduino IDE indeed. The gas sensor readings should be correct now of course. Below is an example of a measurement at room temperature of approximately 23 degrees Celsius additionally in fresh air.

Example read value from Multichannel Gas Sensor Module.

All things considered the MiCS-6814 sensor is not a high-class sensor. For that reason it is recommended for use as an indicator of gas concentration, not a gas concentration meter in air.

Leave a Reply

Your email address will not be published.