NanoSTEM IOT Weather Kit

IOT Weather Kit for Pi

         

Learn how to program with python and interact with different sensors with the IOT Weather Kit for Pi. The kit contains all the necessary hardware and software to build your own indoor Air quality monitor with Carbon Dioxide, Total Volatile Organic Compounds, Pressure , Humidity and Temperature readings. Moreover, you will learn about all the basics of Raspberry Pi & Python programming

Knowing your kit

Your kit composed of

    • Raspberry Pi 3 B+ and Power Adaptor
    • 16GB microsd card – for running your operating system and software
  • Nanomesher ProdBoard – add-on board for Raspberry Pi 
  • Weather Sensors
    • Bosch BMP180 Pressure Sensor
      • Pressure range: 300 … 1100hPa (+9000m … -500m relating to sea level)
      • Fully Calibrated
    • Sensirion SHT31 Humidity and Temperature Sensor
      • Typical accuracy of +/- 2%RH and +/- 0.3°C
      • Fully Calibrated
    • AMS CCS811 Air quality Sensor
      • Total Volatile Organic Compound (TVOC) sensing from 0 to 1,187 parts per billion
      • eCO2 sensing from 400 to 8,192 parts per million
      • Integrated MCU Onboard Processing
  • Optional 3D Printer Case. You may print your own by using this stl file

What is ProdBoard?

Nanomesher ProdBoard contains essential utilities hardware which helps you with your raspberry pi projects. It contains

  • 6 x GPIO Buttons
  • 2 x onboard LED
  • 3 x i2C Ports for connecting to sensors such as temperature, humidity and pressure sensors
  • 1.3″ High Contrast OLED display (128 x 96 resolution)
  • Pi Switch for Raspberry Pi (It’s programmable with onboard Attiny85 using the same design as our first Kickstarter project delivered)
  • Infrared Receiver with Remote Control included (LIRC compatible)
  • Infrared Blaster (LIRC compatible)
  • 8 Channel Dip switch to optionally turn off any buttons and LEDs, so the GPIO pins can be spared
  • Reusable Raspberry Pi 40pin GPIO Pinout   

Assembling your hardware

Software Installation

You can install the software via following ways:

  • Method 1 – Pre-installed image
  • Method 2 – Manual installation

Method 1 – Pre-installed Air Monitor Image

This pre-configured card image is based on RASPBIAN STRETCH LITE, but have all the libraries / tools required by ProdBoard preinstalled.

It to configured to auto start the PiAirMon utility.  Just write the image, boot up your Pi and that’s it!

Download link: nanomesher_prodboard_airmon

Upzip and use utility such as Win32DiskImager to burn the img onto microsd card.

The installed library include:

  • Nanomesher Power Switch
    • https://github.com/nanomesher/Nanomesher_PiSwitch_Shutdown.git
  • Nanomesher ProdBoard
    • https://github.com/nanomesher/Nanomesher_ProdBoard.git
  • LIRC libraries
  • Luma.OLED Python Library
  • Weather Sensors
    • BMP180
      • https://github.com/adafruit/Adafruit_Python_BMP.git
    • SHT31
      • https://github.com/ralf1070/Adafruit_Python_SHT31.git
    • CCS811
      • https://learn.adafruit.com/adafruit-ccs811-air-quality-sensor/raspberry-pi-wiring-test

Please note the image has SSH server enabled.

Method 2 – Manual installation on top of Raspbian

Raspbian Installation

  • Download Raspbian Image from here
  • Use Image writing such as Etcher or win32imager to write the image onto your sd card. Using win32imager as example:
    • Unzip the Raspbian zip file
    • Open win32imager, open the image and select the drive of your sdcard and press write

  • Once it’s finished, you can eject your microsd card and insert into your Raspberry Pi

Installing the sample code

  • Follow this comprehensive guide to install all the required libraries.
  • Check if all sensors are display are installed properly
i2cdetect -y 1

This will scan all i2c devices, if you have all the sensors installed, you will see below.  There are 4 devices (3 sensors module and OLED display)

  • 0x44 – SHT31 temperature / humidity sensor
  • 0x3C – OLED display
  • 0x77 – BMP180 Barometric pressure sensor
  • 0x5B – CCS811 VOC sensor if your sensor is blue or 0x5A – CCS811 VOC sensor if your sensor is purple
  • Get the sample code
git clone https://github.com/nanomesher/Nanomesher_ProdBoard.git
  • Test your first code
cd ~/Nanomesher_ProdBoard
python ledDemo.py
  • Both LEDs should blink twice. Well done!

DisplayDemo – Sample for using the OLED Display

python DisplayDemo.py

The display should show the IP address of raspberry pi on the screen

SimpleButton – Sample for listening to button event

python SimpleButton.py

Press the top left button. You should see “Button Pressed” on the console

LIRCDemo – Samples for listening to infra remote

Before running the sample, please make sure LIRC has been properly setup. Instructions here.

python LIRCDemo.py

Press the buttons on the infrared control.  The LED should light up accordingly.

Using Infrared with ProdBoard

TempDisplay – Utility for display temperature, humidity, pressure, air quality

cd ~/Nanomesher_ProdBoard/WeatherExample
python TempDisplay.py

The data will be displayed on the OLED Display.  Note that for the CCS811 Air quality sensor, it take around 20mins to warm up to output valid data (CO2 and VOC)

PiAirMon – Utility for display temperature, humidity, pressure, air quality , saving to a local sqlite database and pushing data to Adafruit IO cloud service.

Configuration

Configuration can be change by editing the AirMonitor.config.

SaveToDatabase = yes  # Whether to save to database
SaveToDatabaseIntervalSecond = 60   # Interval of saving to database
SendToAIO = no   # Whether to send data to Adafruit.IO
SendToAIOIntervalSecond = 60  # Interval of sending data to Adafruit.IO
CCS811 = yes  # If Air quality sensor is installed
SHT31 = yes  # If Temperature & Humidity quality sensor is installed
BMP180 = yes  # If Pressure sensor is installed
Display = sh1106  # Which screen is installed.

When using with IOT Kit Standard (which comes with Pi Switch Cap),  change display to ssd1306:

Display = ssd1306

Before using this utility, Adafruit IO account needs to be registered.

  • First of join, go to https://io.adafruit.com . Join Adafruit account and sign in
  • To connect your device to adafruit io, note down the following connection details
    • Your Adafruit username (AIO username)
    • Your AIO Key – treat this like a password as this allow devices to publish data to your adafruit IO

  • In Adafruit IO, log into your account. Go to “Feeds” and Actions and Create a new feed called “temp-loc1”.  Repeat the same and create more feeds called “hum-loc1″, “co2-loc1”, “pres-loc1” and “tvoc-loc1”
  • ssh to your Pi
  • Edit AirMonitor.config
cd ~/Nanomesher_ProdBoard/WeatherExample

nano AirMonitor.config
  • Replace the aiokey with your own.
AIOKey = YOUR_ADAFRUIT_IO_KEY
  • Run the utility
python PiAirMon.py

  • If you seeing errors, please  follow the Weather Section in here to make sure you install the dependency and settings. Make sure you reboot after.
  • Data are saved into the sqlite database under the /database directory. sqlite3  utility can be used to view data.

The data will be displayed on the OLED Display, as well as .  Note that for the CCS811 Air quality sensor, it take around 20mins to warm up to output valid data (CO2 and VOC)

  • In Adafruit IO, under feeds you will see your data are being sent from your Raspberry Pi to Adafruit IO

Auto install PiAirMon as service

If you would like to install PiAirMon as an autostart service, follow below:

cd ~/Nanomesher_ProdBoard/WeatherExample
chmod 555 PiAirMon.py
sudo cp ~/Nanomesher_ProdBoard/service/nanomesher_piairmon.service /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable nanomesher_piairmon
sudo systemctl start nanomesher_piairmon

To check status of the service:

sudo systemctl status nanomesher_piairmon

You should see it active and running.  PiAirMon should now auto start as a service after reboot.

To check historical data in the sqlite database

  • Install sqlite3 if you have not already done so.
sudo apt-get install sqlite3

  • open the database and run the sql queries
sqlite3 ~/Nanomesher_ProdBoard/database/weather.db



Alternatively, you can also transfer the weather.db in Nanomesher_ProdBoard/database/ to your computer to view.

To check log

 nano ~/Nanomesher_ProdBoard/WeatherExample/piairmon.log

Multimedia use

You can re-purpose your system to be a Music Player or Video streamer.