Loretta is designed to use state-of-the-art high-quality sensors to give high-quality local weather information on a hobbyist budget.


The MKS system will be used throughout for all observations, with minor exceptions as noted. This means specifically:

  • Temperature will be measured in Celsius
  • Pressure will be measured in kilopascals
  • Illuminance in the visible spectrum will be measured in lux
  • UV will be measured as an index and as lux
  • Wind speed will be measured in metres per second
  • Wind direction will be measured in decimal degrees
  • Air quality will be given as an index, but individual pollutants will be given in quantities of µg/m3 and parts per million or parts per billion
  • Lightning will be measured by distance in kilometres, and a dimensionless intensity unit in the range [ 0 , 2 21 )
  • Rain will be measured in millimetres per hour


The sensing hardware consists of a wide array of environmental sensors and a radio transmitter using LoRa for wireless communications at a distance. See the hardware section for details.

All boards will be covered with conformal coating to prevent corrosion and increase durability.


The station equipment will be mounted onto a roughly 2-metre long pole, with a cross pole at the top roughly 1 metre long. The apparatus will be stabilised with cables, pipe collars, and placed into a bucket of concrete for stability. All the equipment will be attached to this. The entire apparatus is self-contained and self-sufficient.

Instrument shelters

There will be two instrument shelters; one will hold the air quality sensors, and the other will hold the meteorological sensors. Both shelters will be 3D printed out of reinforced ASA and spraypainted white to reject heat that could throw off the reading. They will be mounted on opposite sides of the pole. The instrument shelters will be similar in design to a Stevenson screen. They will be open on the bottom with screen mesh to keep out insects and other detritus. All openings will be covered with screen mesh.

Solar power and battery

There will be a battery shelter with a small heater inside for winter. The heater will be controlled by a thermostat controller. It will be mounted above the meteorological sensors to prevent contamination of the readings by heat generated by the battery and heater. The solar panel will be mounted at 70º and at a 2º azimuth to maximise solar energy collection in winter. These values were empirically determined using the European Union's Photovoltaic Geographical Information System. Values were optimised by hand to generate maximum power in December, the darkest month of the year. The solar power system is a 10 watt, 5 volt system from Voltaic Systems.


An additional shelter, placed above or below the battery shelter, will house the transmitter, GPS, and main controller board to which all the sensor boards will be connected to via RS-485. Integration of sensor data for packetisation will be performed by this module.

Anemometer and wind vane

The anemometer and wind vanes will be mounted horizontally on a pole attached to the vertical one via a special steel bracket. They will be kept approximately 80 centimetres apart, to prevent interference with each other's readings. They will be attached to the pole using brackets made of reinforced ASA or metal, depending on how strength tests go.

Light-collecting instruments

The light-collecting instruments will be placed into a special housing protected by a quartz glass window for UV transparency, and sealed with UV resistant silicone.


The receiver end will receive LoRa transmissions and upload them to the web. It will also place the data into a database for later reference. Data will be uploaded via scp.


A variety of hardware is going into Loretta. Here is some of what's going into it.


Presently, I plan to use two Raspberry Pi Picos for the air quality and meteorological sensor boards, and an Adafruit Feather RP2040 for the main controller. The reason for this is threefold: pins, parallel processing, and transmission. See immpementation details for more information. These MCUs are very low-cost and very powerful for the price point. They can also be underclocked to 50 MHz (useful for power savings), and offer programmable I/O pins (which will be useful for creating UARTs).


The receiver will use a Raspberry Pi Zero 2W. It is a cheap Linux-based platform that can also interface with an RFM95W radio. This greatly simplifies the programming on the Arduino end, which then only has to transmit data every hour.


This project will feature the following sensors:


  • ADS1115 with a GUVA-S12SD attached for UV readings
  • AS7431 multi-spectral sensor for sky colour (useful for cloud cover, etc).
  • PMSA003I particulate sensor
  • SEN0290 lightning sensor
  • SEN0575 tipping bucket rain gauge (may be moved to UART)
  • SHT45 temperature and humidity sensor
  • TSL2591 absolute light sensor, for cloud cover/light pollution detection




Other peripherals

These are used for interfacing with other components:


  • 3x DFR0627 dual UART to I2C interface


Implementation details

The sensor boards (meteorological and air quality) are separated for pin, space, and heat reasons. A lot of pins are required for the air quality and SPI meteorological sensors; therefore, it makes sense to place them on their own boards. The radio transceiver and main board also will generate some heat, which may contaminate meteorlogical readings. Attempting to wire SPI over long distances runs up against the issue of requiring a lot of wires for CS lines, which adds more cabling and more complexity. Therefore, it is not feasible to have a controller far away from the sensors. Although this seems it adds complexity, it does allow the sensor boards to be modular and swapped in and out. Since readings are only taken relatively infrequently, power consumption is still very low. Interrupt pins will be wired to request a reading from the sensors.

The sensor modules will communicate with the main board using RS-422, for its excellent transmission properties over distance. The RS-422 signal will be carried over standard Ethernet cables with standard RJ-11 jacks. Most of the time, they will be in a quiescent state, not active. They will be activated when a reading is required. The protocol used will be Modbus.

The main MCU board will have the transmission hardware and live in its own housing. It will integrate data from all the sensors and handle the transmission of that data. It will also coordinate the wakeup and sleep of all external data. The GPS will also be colocated with it, for timekeeping purposes.


Loretta will be written in C++, due to the multitaskikng demands being made of the system.

It is likely to be an Arduino SDK application, due to the widespread ecosystem support for the sensors in question, but I am opening to changing my mind on this.

All data will be published online in an accessible format, and past observations will be stored in a database for querying and searching. The portal itself is outside the scope of this project for the moment.

Bill of materials

Below is a total cost of all of the materials of the project. Prices are in USD unless otherwise indicated.

Note: prices do not include tools, consumables such as solder or flux, or time. The cost of conformal coating is included as that is not a common household item, nor a commonly used item in electronics except for specialty applications. This list does not include costs not yet incurred, such as for the bucket and cement. It will be updated as those costs come in.

Product Quantity Cost per unit Total cost
ADS1115 1 $14.95 $14.95
GUVA-S12SD 1 $6.50 $6.50
AS7341 1 $15.95 $15.95
PMSA003I 1 $44.95 $44.95
SEN0290 1 $21.90 $21.90
SEN0575 1 $29.90 $29.90
SHT45 1 $12.50 $12.50
TSL2591 1 $6.95 $6.95
ENS160 1 $21.95 $21.95
DPS310 1 $6.95 $6.95
SX1276 (RFM95W) 2 $19.95 $39.90
MTK3339/PA1616S 1 $29.95 $29.95
PS1-O3-5-MOD 1 $274.78 $274.78
PS1-SO2-5-MOD 1 $274.78 $274.78
PS1-CO-100-MOD 1 $229.04 $229.04
PS1-NO2-2-MOD 1 $254.00 $254.00
PS1-VOC-10-MOD 1 $270.24 $270.24
SEN0482 1 $45.00 $45.00
SEN0483 1 $45.00 $45.00
DFR0627 3 $8.00 $24.00
MAX3483EPA+ 4 $8.55 $34.20
K-P110-V75-E307 (solar power system) 1 $238.00 $238.00
Adafruit Feather RP2040 1 $11.95 $11.95
Raspberry Pi Zero 2W 1 $15.00 $15.00
Raspberry Pi Pico 2 $6.00 $12.00
2936T84 (U-bolts) 12 $2.71 $32.52
4698T64 (pipe cross-fitting) 1 $23.14 $23.14
40005K39 (10pk end caps) 1 $11.04 $11.04
89965K741 (1.25" OD 0.065" thickness tubing, 3') 1 $31.65 $31.65
89965K741 (1.25" OD 0.065" thickness tubing, 6') 1 $51.05 $51.05
Phaetus ASA-GF 3D printer filament (1kg) 1 $33.99 $33.99
334048 white plastic spraypaint 1 $6.95 $6.95
GE silicone window and door sealant (clear) 1 $6.95 $6.95
Screen mesh (48" x 99") 1 $13.56 $13.56
PCBs (packs of 5, minimum quantity) 3 $20.00 $60.00
419D-55ML conformal coating 1 $19.48 $19.48
Kapton tape 1 $9.99 $9.99
Total 56 $2,143.25 $2,281.26

Future directions

It is probable a carbon dioxide sensor will be added, once one is found with sufficient precision for the task.

Snow is not common in Seattle, and when it does fall, it is very little. However, it may be desirable to measure it in some way. Could an automatic gauge that dumps snow be rigged up to do this?

Should a heater be added to the top of the rain gauge to melt any snow that falls? Might waste power, would need to be smart about this.

It is possible an E-Ink display could be mounted to the pole in a weatherproof housing for aesthetic purposes.

Desktop display systems will probably be built out of E-Ink or OLED displays to show current observations.

Although cost-prohibitive and outside my current capabilities, eventually a way to measure atmospheric extinction such as fog is desired, likely using some sort of scatterometer or proximity sensor system.


Coming soon™.