Difference between revisions of "Air-Monitoring-HAT"
From SB-Components Wiki
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<div class="row"> | <div class="row"> | ||
<div class="large-8 column"> | <div class="large-8 column"> | ||
− | == Air Monitoring HAT | + | == 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. | 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. | ||
Line 35: | Line 35: | ||
</div> | </div> | ||
<div class="large-4 column"> | <div class="large-4 column"> | ||
− | [[File: | + | [[File:Air_Monitoring_HAT.png|thumb|left|alt=Air Monitoring HAT| Buy it From : ''[https://shop.sb-components.co.uk/products/air-monitoring-hat-for-raspberry-pi Click Here]'']] |
</div> | </div> | ||
</div> | </div> | ||
Line 75: | Line 75: | ||
* Now reboot your pi by running the below command : | * Now reboot your pi by running the below command : | ||
<source lang="shell"> sudo reboot </source> | <source lang="shell"> sudo reboot </source> | ||
+ | |||
+ | ===== <b> Board Test </b> ===== | ||
+ | |||
+ | * Clone Github repository of Air monitoring HAT by running below command and enter its directory. | ||
+ | <source lang="shell"> | ||
+ | git clone https://github.com/sbcshop/Air-Monitoring-HAT.git | ||
+ | cd Air-Monitoring-HAT | ||
+ | </source> | ||
+ | * Now run GUI of Air monitoring HAT by running the below command on terminal. | ||
+ | <source lang="shell"> | ||
+ | python3 Air_Monitoring_GUI.py | ||
+ | </source> | ||
+ | * 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 == | ||
+ | <b> Guide to print data on python shell or terminal </b> | ||
+ | * Import required dependancy by adding below lines. | ||
+ | <source lang="python"> from pms_a003 import Sensor </source> | ||
+ | |||
+ | * Now create a sensor class object. | ||
+ | <source lang="python"> air_mon = Sensor() </source> | ||
+ | |||
+ | * Now initialize serial connection. | ||
+ | <source lang="python"> air_mon.connect_hat(port="/dev/ttyS0", baudrate=9600) </source> | ||
+ | * Read and print sensor data on python shell / terminal. | ||
+ | <source lang="python"> air_mon = Sensor() </source> | ||
+ | |||
+ | * Read and print sensor data on python shell/terminal | ||
+ | <source lang="python"> | ||
+ | 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)) | ||
+ | </source> | ||
+ | |||
+ | * To disconnect or drop serial connection, use the below function | ||
+ | <source lang="python"> air_mon.disconnect_hat() </source> | ||
+ | |||
+ | <b> Guide to print data on Oled Display </b> | ||
+ | |||
+ | * Import required dependency by adding below lines. | ||
+ | <source lang="python"> | ||
+ | from pms_a003 import Sensor | ||
+ | from oled_091 import SSD1306 | ||
+ | from time import sleep | ||
+ | </source> | ||
+ | * Now create class object for oled and sensor | ||
+ | <source lang="python"> | ||
+ | oled_display = SSD1306() | ||
+ | air_mon = Sensor() | ||
+ | </source> | ||
+ | * Now initialize serial connection | ||
+ | <source lang="python"> air_mon.connect_hat(port="/dev/ttyS0", baudrate=9600) </source> | ||
+ | |||
+ | * Read and print sensor data on Oled Display | ||
+ | <source lang="python"> | ||
+ | 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) | ||
+ | </source> | ||
+ | </br> | ||
== Resources == | == Resources == | ||
+ | |||
+ | ''' Github ''' | ||
+ | |||
+ | * [https://github.com/sbcshop/Air-Monitoring-HAT Source Code] | ||
+ | |||
+ | ''' Datasheet ''' | ||
+ | |||
+ | * [https://cdn.shopify.com/s/files/1/1217/2104/files/PMSA003_datasheet.pdf PMSA003 Datasheet] |
Latest revision as of 04:55, 23 June 2021
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)
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.
- 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