· Jacob Simeone · Projects · 5 min read
Bradley University Weather Station
Data acquisition project to make on-campus weather data accessible to all at Bradley University

Data acquisition is a rapidly expanding field of Electrical Engineering, especially with the recent rise of Internet of Thngs (IoT) products. The Bradley University Weather Station sets out to convert real-world environmental signals to a digital format that can then be stored and processed later. The BU Weather Station is open-source, allowing anyone to learn from (and hopefully, improve) our implementation of this common project.
Links:
System-Block Diagram
The BU Weather Station follows a typical setup for IoT devices: an embedded controller is on-board the Weather Station itself (top-left in diagram), which measures the digital signals output by sensors and then transmits that data over the radio. Radio data is received by a gateway, which posts data to the internet.
The radios implemented are RYLR896 LoRa radios. LoRa is a long-range proprietary radio protocol owned by Semtech. “LoRa” quite literally stands for “Long-Range.”
It should be noted: in future designs, it is not recommended to use these radios. The radios communicate using all ASCII and don’t really provide any interface for communicating using binary data, which would be better for this application. Furthermore, the RYLR896 radios don’t allow for close control of the internal radio transceiver IC.
The data is then received by a bridge, which acts as a gateway between the radio data and the internet. The software for this application is written targetting linux-y systems. Specifically, the software was tested on Ubuntu-server 24.04.
The data is posted via a JSON request to our custom-built API which then stores the data in a database. Currently, this database is Redis: but the team plans on changing this soon in favor of a SQL database. The API also allows users to pull data.
On the same server, a web-server is running that will serve a website to users that can visualize the weather station data.
Sensors
A core part of the BU Weather Station is the sensors that translate real-world signals into data the on-board controller can read.
Humidity, Pressure, Air Quality - BME680
The BME680 by Bosch is a popular environmental sensor that is capable of measuring temperature, pressure, humidity, and theoretically: air quality.
The Weather Station interfaces with the BME680 with the on-board controller over a serial bus, allowing us to pull the data from the sensor every so often.
Air Quality
The BME680 has a VOC (Volatile Organic Compounds) sensor which reports kOhms of resistance to our controller. This value itself does not seem to represent air quality, and Bosch wants users to use their proprietary software in order to calculate something linke air-quality-index. However: there seems to be open-source algorithms to fuse all the values of this sensor to calculate air quality. This is a future feature of the Weather Station.
For now, the Weather Station just reports the raw value from the VOC sensor, in kOhms.
Temperature - RTD
The Weather Station uses an RTD (Resistive Temperature Device) to detect outdoor temperature. We picked an RTD due to its higher accuracy, with the trade-off of a lower response time.
Custom Printed Circuit Board
The Weather Station team developed a custom PCB carrying a MAX31865 RTD-to-Digital converter IC.
The RTD sensor connects to this board, which provides an interface between the rtd signal and a digital controller.
Control Board
The Weather Station control board carries or breaks out all the connections for sensors needed to be read by the microcontroller. The control board was created due to issues using proto-board to connect everything, such as assembly time and shorts.
Hardware Design
The Weather Station hardware was designed using OnShape, and is available to all using the link at the top of this document. The part of the Weather Station that goes outside had some requirements:
- Keep water off of cricitcal electronics
- Pass cables through for external sensors and the solar panel
- Well-ventilated to maintain accuracy of sensors mounted internally
Water Sensor
The BU Weather Station measures if it is raining or not by mounting a resistive water sensor onto a 3d-printed custom mount. The sensor is then connected to the control board internally through a cable-gland on the side of the station.
Vent
The hooked vent allows airflow without allowing water in.
BME680 Mount
The BME680 sensor is mounted internally against the vent, in order to keep it as close to external air as possible.
Power
The BU Weather Station is powered through a solar panel, hooked up to a charge controller, and then a battery. The solar panel tops off the battery during the day, and when there is no sun, the station relies on the battery for power.
The solar panel is connected to the weather station through a connector on the bottom side of the enclosure, which leads to the electronics on the other side.
API
The API allows users to pull data from our service. The data is formatted in JSON and looks like this:
{
"weatherData": [
{
"timestamp_unix_ms": "1745921796526",
"temp_c": "22.66",
"humid_prcnt": "45.0",
"pressure_kpa": "98.36",
"gas_kohms": "1181.17",
"rain_an": "0",
"light_an": "1352"
}
]
}
This API feeds our website: weather.jacobsimeone.net.
Cost
Unfortunately, due to some design decisions of the station: the cost is upwards of $400, which is on the more expensive side of these types of projects. To get the cost down, we would probably move away from using an RTD as a temperature sensor, changing the enclosure to something cheaper, finding a different mounting solution, and removing custom circuit boards.
Another way cost could be driven down is by potentially figuring out a way to use 3d-printed enclosures.
Potential Improvements
- Reduce cost through simplified electronics and enclosure
- Improve radio transmission format by moving to a new radio
- Change enclosure to encourage venting, while keeping water off electronics
- Attempt a 3d-printed enclosure
- Improve API