By: Ayush Vikram
avikram2@illinois.edu
ECE 120
Introduction
The Firebox is the name for a device that will be able to detect the presence of a wildfire and will aid in notifying the authorities. Wildfires can travel extremely quickly and are very hard to monitor effectively. Ideally, the Firebox will have sensors that take input from the surrounding environment, data which will be used to evaluate whether the threat of a wildfire is imminent. This project will be divided into parts, each with their own objectives.
Firstly, we need to make a device capable of measuring and recording various weather-related measurements through sensors. Secondly, we will need to study the meteorological conditions associated with a nearby wildfire and use our research to create 'danger limits' for temperature, humidity, air quality, and perhaps wind speed. If the recorded measurements exceed these limits, we will then notify local authorities of the threat. Thirdly, we need to develop a mechanism that allows communication with public authorities even in remote areas that may not recieve cell or internet coverage.
Parts
Hardware
- A Raspberry Pi, either one that has built-in wireless connectivity or has a WiFi dongle (Order Form Submitted)
- A BME280 pressure, temperature, and humidity sensor (Order Form Submitted)
- A DS18B20 digital thermal probe (with 1m lead) (Order Form Submitted)
- Two 4.7 KOhm resistors (Order Form Submitted)
- Some 5mm-pitch PCB mount screw terminal blocks (Order Form Submitted)
- A breadboard, some jumper wires (Order Form Submitted)
- An anemometer, wind vane, and rain gauge from here: https://www.argentdata.com/catalog/product_info.php?products_id=145 (Order Form Submitted)
- Two RJ11 breakout boards (Order Form Submitted)
- A MCP3008 analogue-to-digital convertor integrated circuit (Order Form Submitted)
- Weatherproof enclosures; 75x75x37mm box(http://cpc.farnell.com/spelsberg/332-907/universal-junc-box-7-entry/dp/EN81013) for the BME280 and 150x110x70mm box(http://cpc.farnell.com/olan/ol20112/box-ip55-glanded-150x110x70mm/dp/EN82191) for the Pi and a soldered HAT. (Order Form Submitted)
Additional resources:
- A soldering iron, solder, and safety equipment
- Solid core wire (22 AWG) (Form Submitted)
- An Adafruit Perma-Proto HAT for Pi Mini Kit (https://www.adafruit.com/product/2310)
- A 16-pin DIL/DIP IC Socket
- Two 2-pin male headers
- General prototyping tools: side-cutters, wire strippers. screwdrivers, etc.(Order Form Submitted)
- Insulating tape
Necessary 3D Printed Parts
(Mount for Raspberry Pi)
(Bracket for sensor)
Software Requirements:
Oracle Raspberry Pi Weather Station software (will access through GitHub).
Background Research and Design Details (Block Diagram and System Overview):
I am consulting the Raspberry Pi weather station project directions, which can be found at this link: https://projects.raspberrypi.org/en/projects/build-your-own-weather-station. This project, tasked with creating a machine to measure and record various weather-related measurements, such as temperature, air quality, humidity, will be a useful inspiration for the Firebox, since the Firebox also needs to measure and record various weather-related data in order to function.
The difference is that I intend on using that data. I plan on using the data collected to send warnings.
Humidity, temperature and pressure
The BME280 sensor is a digital sensor that can measure temperature, humidity, and atmospheric pressure. It is available in a number of breakout boards from popular manufacturers such as Adafruit and SparkFun. One thing to check is that the I2C address is correct: for the Adafruit models it is 0x77 (as shown in the code below), but other versions can have different addresses (0x76 is a common alternative).
Wiring up the sensor
Pi GPIO | BME280 |
---|---|
17 (3V3) | Vin |
6 (Gnd) | Gnd |
3 (SDA) | SDA (SDI) |
5 (SCL) | SCL (SCK) |
.
Code
import bme280
import smbus2
from time import sleep
port = 1
address = 0x77 # Adafruit BME280 address. Other BME280s may be different
bus = smbus2.SMBus(port)
bme280.load_calibration_params(bus,address)
while True:
bme280_data = bme280.sample(bus,address)
humidity = bme280_data.humidity
pressure = bme280_data.pressure
ambient_temperature = bme280_data.temperature
print(humidity, pressure, ambient_temperature)
sleep(1)
Ground Temperature: Another way of verifying if wildfire is in close proximity
The BME280 will report the air temperature, but this can be significantly warmer than the ground, particularly if it is frosty. A thermal probe stuck into the soil is a useful supplemental temperature measurement and can be used to indicate the presence of ice/frost in winter. The Dallas DS18B20 temperature sensor comes in many forms including a waterproof thermal probe version, and this is the sensor used on the Oracle Raspberry Pi Weather Station.
Wind Speed/Direction/Rain:
System:
Weather Station HAT to keep dry:
Possible Challenges:
Air quality
The original Oracle Raspberry Pi Weather Station kit used a Figaro TGS2600 sensor for air quality measurements; people have noticed that many have recently been very difficult to calibrate and have produced contradictory readings.
References:
projects.raspberrypi.org. (2019). Build your own weather station. [online] Available at: https://projects.raspberrypi.org/en/projects/build-your-own-weather-station [Accessed 24 Sep. 2019].