Guide to Building GeoAir v.1


- A GPS-enabled, Low-Cost, Portable DIY Air Monitor -


Read the Open-Access journal article on a classroom application: Park, Y.M. (2021). A GPS-enabled portable air pollution sensor and web-mapping technologies for field-based learning in health geography. Journal of Geography in Higher Education, 45. 





  1. M5Stack ESP32 Basic Core IoT Development Kit (K001)
  2. M5Stack Battery Module for ESP32 Core Development Kit (M002)
  3. M5Stack GPS Module with Internal & External Antenna (M003)
  4. M5Stack PM2.5 Sensor Base (Integrated with PMSA003)
  5. Multimeter (to test continuity)
  6. Soldering toolkit (soldering iron & solder)
  7. Utility knife

Hardware Development


 1. Cut the wire (as shown below) on the PM2.5 sensor base using the utility knife.

2. Read the following before using a digital multimeter:


      In addition, there are many YouTube videos that instruct on how to use a multimeter.

3. Check whether the wire is no longer connected using the multimeter. To test the continuity, place one of the probes on #1 in the picture below and the other probe on #2. If the wire was successfully cut (disconnected), the meter should display “1”.

4. Cut #17 on the GPS module and then check whether the two points are disconnected using the multimeter. Do the same things for #16.

5. Watch the “Adafruit Guide To Excellent Soldering” at before soldering.

6. Connect #5 on the GPS module by applying the solder using the soldering iron. Then, check whether the two points are connected using the multimeter. When they are connected, the meter should NOT display “1”. Do the same things for #13 (Please watch multimeter YouTube videos or review the instructions via the URLs above). 

7. Disconnect the gray wire (internal GPS antenna) from the circuit. Connect the black wire (external GPS antenna) to the circuit.

8. Plug in the external GPS antenna to the GPS module.

9. Stack M5Stack modules in the following order.

Software Installation


1. Plug in the GeoAir device to your computer. 

2. Go to and click a link under "1. Get Started" section".

3. Follow Steps 1 to 5(1) of the M5Stack instructions for the installation of Arduino IDE and dependencies for M5Stack.

  • Important! In step 3(4) "Install ESP32 Boards Manager", choose version 1.0.4. Code does not work with 1.0.5 or above.

4. Install the DFRobot_SHT20 library:

5. Install the TinyGPSPlus library:

6. Download geoair.ino from and open the file in Arduino IDE. 


7. Click "upload" to flash the code to the device (Before uploading, make sure your board & port is set correctly via Step 5(1) of the M5Stack instruction).



1. Plug in GPS antenna and turn on the device (if it is turned off). (Note: The device cannot be powered off when charging.)

2. Insert the SD card (data logger). (Note: If you do not hear the “click” sound, it means it is not properly inserted. Then, separate the top layer from the red layer to take out the card and try it again).  

3. Done! The GeoAir screen will display PM2.5 mass concentrations, battery levels, GPS, time, and log size. Contact me if you have any questions.  (Note: Getting GPS signal may take up to 2-3 minutes with a continuous clear sky).