Air-Monitoring-HAT

From SB-Components Wiki

Air Monitoring HAT

Air Monitoring HAT is a powerful and hi-tech PMSA003 sensor that provides the information of suspended particulate matter (PM1.0, PM2.5, and PM10) in the air per unit volume via digital output with an operating voltage of 3.3 V. It communicates via UART (serial) with the standby current ≤200 Microampere (μA) of the sensor.

Features

  • Digital sensor
  • Operating Voltage 5V DC
  • PMSA003 Sensor
  • Standard 40 Pin GPIO
  • OLED Display 0.91”
  • Measuring range 0.3 to 10 Micron
  • UART (Serial) Interface

Specifications

  • Model - Air Monitoring HAT
  • Sensor Model number - PMSA003
  • Data Output - Digital Sensor(unit quality + number of units)
  • Type - Biosensor
  • Communication Interface - UART (Serial)
  • Display Type - OLED Display 0.91”
  • Board Dimension - 65 x 56 mm
  • Measuring range - 0.3 to 1.0, 1.0 to 2.5, 2.5 to 10 Micron (μm)
  • Counting efficiency - 50% @ 0.3 μm 98% @> = 0.5 um
  • Response time - ≤10 s
  • DC supply voltage - 5.0 V
  • Maximum Operating Current - 100 Milliamp (mA)
  • Standby current - ≤200 Microamp (μA)
  • Data interface level - L <0.8 @3.3, H >2.7@3.3 Volt(V)
  • Operating Temperature range - -10 to +60 Celsius (℃)
  • Operating Humidity range - 0 - 99%
  • Mean time between failures - ≥3 Year(Y)


Air Monitoring HAT
Buy it From : Click Here

Pinout

Board Pins Raspberry Pi
5V 5V
GND GND
PMS RX GPIO 14
PMS TX GPIO 15
PMS SET GPIO 27
PMS RESET GPIO 17
OLED SDA GPIO 2
OLED SCL GPIO 3

Installation

Python

Required Hardware
  • Raspberry Pi x 1
  • Air Monitoring HAT x 1
Enable I2C and Serial Interface
  • Open a terminal and run the following commands to enable I2C:
sudo raspi-config

Choose Interfacing Options -> I2C ->yes

  • Again run below command to enable Serial
sudo raspi-config

Choose Interfacing Options -> Serial -> No -> Yes

  • You can also enable Serial and I2C using Graphical method, Open Menu by clicking on Raspberry Pi icon >> Preferences >> Raspberry Pi Configurations >> Interfaces , and select below option.

Serial i2c en graphical.PNG

  • Now reboot your pi by running the below command :
sudo reboot
Board Test
  • Clone Github repository of Air monitoring HAT by running below command and enter its directory.
git clone https://github.com/sbcshop/Air-Monitoring-HAT.git
cd Air-Monitoring-HAT
  • Now run GUI of Air monitoring HAT by running the below command on terminal.
python3 Air_Monitoring_GUI.py
  • Select COM port from above GUI ("/dev/ttyS0" in case of default connection), and click on the start button to start Real-Time data from the sensor.
  • You can also use these two examples and modify them easily :
    • display_on_oled_example.py :- To print the sensor data on Oled Display.
    • read_example.py : To print the sensor data on Python shell or Terminal.

API Usage

Guide to print data on python shell or terminal

  • Import required dependancy by adding below lines.
from pms_a003 import Sensor
  • Now create a sensor class object.
air_mon = Sensor()
  • Now initialize serial connection.
air_mon.connect_hat(port="/dev/ttyS0", baudrate=9600)
  • Read and print sensor data on python shell / terminal.
air_mon = Sensor()
  • Read and print sensor data on python shell/terminal
values = air_mon.read()
print("PMS 1 value is {}".format(values.pm10_cf1))
print("PMS 2.5 value is {}".format(values.pm25_cf1))
print("PMS 10 value is {}".format(values.pm100_cf1))
  • To disconnect or drop serial connection, use the below function
air_mon.disconnect_hat()

Guide to print data on Oled Display

  • Import required dependency by adding below lines.
from pms_a003 import Sensor
from oled_091 import SSD1306
from time import sleep
  • Now create class object for oled and sensor
oled_display = SSD1306()
air_mon = Sensor()
  • Now initialize serial connection
air_mon.connect_hat(port="/dev/ttyS0", baudrate=9600)
  • Read and print sensor data on Oled Display
values = air_mon.read()
oled_display.PrintText("PM1.0= {:2d}".format(values.pm10_cf1),
                               cords=(2, 2), FontSize=10)
oled_display.PrintText("PM2.5= {:2d}".format(values.pm25_cf1),
                               cords=(65, 2), FontSize=10)
oled_display.PrintText("PM10= {:2d}".format(values.pm100_cf1),
                               cords=(25, 20), FontSize=13)
oled_display.ShowImage()
sleep(1)


Resources

Github

Datasheet