
Iaq device
nkitanov/iaq_board
IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

Blueprints of LogAir particulate matter monitor
Logair diy is an open-source printed circuit board by logair, from the logair/LogAir-Device-DIY repository on GitHub. It is a 2-layer board of 80 × 60 mm with 12 parts on 52 nets, routed with 167 tracks and 0 vias.
It is built around the PMS7003M and BME280. Its parts include 7 ICs and 4 connectors.
The hardware as it is streams, once per second, the following data through BLE and to the uSD card: Latitude, Longitude, Altitude, Speed, Heading, Temperature, Relative Humidity, Atmospheric Pressure, PM1, PM2.5, PM4, PM10
The Arduino-compatible MCU is a Bluepill, a generic implementation of the STM32F103. The chip is flashed with a code compiled with the Arduino IDE and the following libraries: NeoGPS, PMS Library, BME280, SdFat.
The data transmissio nprotocol is extensible to allow implementation of different sensors.
LogAir PCB
Bluepill + connectors
BME280 + connector
uSD module
BLE module
PMS7003 + connector
DC step-up
Charger module
GPS module
Soldering iron + tin
double-sided tape + jelly tape if available
cutting pliers
flat pliers
A very first step should be to try and upload code to the Bluepill. This is before the rest as it happened that the chips could not be programmed, and realizing that after all that work is not ideal. Upload a bootloader, a blink code, and there you go.
Solder the Bluepill connectors. Use the holes in the PCB as a guide for alignment. The G (GND, ground) pins are harder to solder, because of the copper mass involved.








Then place and solder the switch. Here, try to apply a minimal amount of tin. As the other side of the pins will go against the PMS7003 which has a conductive casing, the pins should be cut or filed down, then taped over (two layers of normal, clear tape are enough)










https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.jsonhttp://dan.drown.org/stm32duino/package_STM32duino_index.jsonNO NEED TO FOLLOW THE CONFIGURE SECTION BELOW.
Tools > Boards > STM32 Boards (selected from submenu) > Generic STM32F1 seriesTools > U(S)ART Support > Enabled (Generic 'Serial')Tools > USB Support > CDC (Generic Serial supersedes U(S)ART)Tools > Upload Method > Maple DFU Bootloader 2.0Install the following libraries from the Library Manager Tools > Manage Libraries...
$HOME/Arduino/libraries/NeoGPS/src/GPSport.h by:#ifndef GPSport_h
#define GPSport_h
#define gpsPort Serial2
#define GPS_PORT_NAME "Serial2"
#define DEBUG_PORT Serial
#endifLet us now try and upload a quick code to test if all works...
#define LED_BUILTIN PC13 at the very beginningIf the upload does not go through, this might be because the board cannot auto-reset with your computer. To upload, you will need to manually reset by pressing the button you can see near where the GPS chip is stuck just before pressing the Compile arrow. It takes a bit of trial and error and some OS's need it while some others don't.
Download the code from the repository, and follow the same process as above.
UART parameters to connect to the serial monitor are the ones set in the code. The default is 112500, but 9600 was previously used.
You might need to create a udev rules file
/etc/udev/rules.d/45-bluepill.rules
ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", MODE="0666" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE="0666" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1"The switch onthe back of the device allows to turn the device on and off.
The red or green blinking light shows when the device is writing on the SD card. When the LED is ON, the device should not be turned OFF as it might corrupt the card.
The modules we use include LEDs of varying colors. Here are some useful informations you can get from them:
Follow the instructions on our video tutorial.
The LogAir device records its measurements on the micro-SD card, which can be extracted and imported into a spreadsheet or GIS program.
The limitation in this mode is that the device can only rely on its own GPS module for time and position. This means that, before a valid GPS signal is acquired, the measurements on the SD card will not list any time or position.
The signal depends on your location, the time of the day, if there are obstacles between the device and the sky, etc. Indoor measurements are often difficult, but windowsills sometimes give good results.
We are trying to find a way to give the current time to the device by using a program on the computer, or preparing it on the SD card, but there is no easy solution there... See ToDos, input welcome :)
Here are several items that are planned, currently developed, or on hold pending contributions. If you are interested in any of them be it for giving a helping hand or advices, please get in touch :)
These items focus on the device conception, including electronics, casing, production, etc.
Firmware development focuses on the program that makes the device run. The brain within the machine :)
Here, developmetn of our application that helps collect and send data from the device to the servers, and get it back in forms of maps, messages, etc. Our UI sucks? Contribute a better one ;)
All
Android version
iOS version
All the work that helps gather the data, safekeep it, develop ways to use it, share it, etc. DBs, services, APIs and the like. Put your hoodie on and hack away!
All the work that develop ways to analyse, understand and use the data. Algorithms, GIS, dashboards etc.
Licensed under CERN OHL v.1.2 or later
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | Conn_01x02_Female | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J2, J4 |
| 1 | BLE_JDY-23 | logair_diy:BLE_JDY-23_vert_unfold | U3 |
| 1 | BME280 | logair_diy:BME280_SPI | U4 |
| 1 | Charger_basic | logair_diy:Charger_basic | U6 |
| 1 | Conn_01x05_Female | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | GPS_conn_5pin1 |
| 1 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J1 |
| 1 | Conn_02x03_Odd_Even | logair_diy:Logair_switch_2 | J3 |
| 1 | DC-DC_step-up | logair_diy:DC-DC step-up | U7 |
| 1 | LogairBluepill | logairbluepill:LogairBluepill | U1 |
| 1 | PMS7003 | logair_diy:PMS7003_10pin | U5 |
| 1 | uSD_adapter | logair_diy:uSD_adapter | U2 |

nkitanov/iaq_board
IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

KhazAkar/espws
[MOVED to GitLab: https://gitlab.com//r3xxar/espws] Weather station firmware for ESP8266 - mirror

shm-dmitry/air-detector
Air status sensor with hass integration and fan control





sugaat/low-cost-aqi-monitor
esp32 based aqi monitor for pm, co, temperature and humidity
It measures 80 × 60 mm and has 2 copper layers, 1.6 mm thick.
12 parts, built around the PMS7003M and BME280. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the logair/LogAir-Device-DIY repository on GitHub, at the commit this page was made from: the board is pcb/kiCad/logair_diy.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask logair before reusing the design.