Flask Weather Station

In this instructable we’re going to make a weather station.

The weather station is going to measure temperature, humidity and luminosity with an Arduino. These values will be saved in a Mysql database and displayed on a website running on a Raspberry Pi.

Step 1: The Materials


  • Raspberry Pi, adapter and micro SD card
  • Arduino
  • Wooden planks
  • Plexiglas
  • Glue
  • Screw
  • Nails
  • Tape
  • USB cable
  • Small breadboard
  • Jumper wire


  • DS1307 (RTC)
  • AM2302: humidity and temperature sensor
  • TSL2561: luminosity sensor
  • 16*4 lcd
  • I2C adapter for lcd
  • 10KOhm resistor


  • Hammer
  • Dremel
  • Saw

Step 2: Getting Data

Connecting the sensors

We connect the sensors to an Arduino UNO.

The AM2302 is connected to 3.3V (pin1), GND (pin4) and data (pin2). Between VCC and DATA there must be a 10kOhm resistor. Pin 3 is not connected.

The TSL 2561 is connectod to 3.3V (pin1), GND (pin2), SCL (pin3), SDA (pin4). Pin 5 is not connected. If your Arduino doesn't have pins named SCL and SDA, they can be connected to analog pin 5 (SCL) and analog pin 4 (SDA).

Solder the i2c lcd connector to the LCD. The connector is connected to GND, 5V, SDA, SCL.

Reading the sensors

We're going to use libraries for reading the sensors.

AM2302: https://github.com/adafruit/DHT-sensor-library

TSL2561: https://github.com/adafruit/Adafruit_TSL2561

LCD: https://github.com/fdebrabander/Arduino-LiquidCrys...

Dowload these libraries and extraxt them to document\arduino\libraries.

After restarting the Arduino IDE, the libraries will show up in your examples and can be used.

You can find the code I've used here: https://github.com/Wobbe-Steeland/weather-station/...

The code will send the sensor values and update the LCD if you send a character to the Arduino. You may have to change the addresses of the I2C devices.

Step 3: Setting Up the Pi

Enabling I2C

To read our RTC we use I2C. I2C can be enabled in raspi-config.


A real time clock must be added if the Pi is not connected to the internet. The clock can be attached directly to the GPIO pins of the Pi.

Now we must configure the Pi to automatically use the RTC, we can do this by following this guide: https://thepihut.com/blogs/raspberry-pi-tutorials/...

Step 4: Database

The data from the sensors will be stored in a Mysql database.


sudo apt-get update && sudo apt-get install mysql mysql-client

Log in to the mysql server.

mysql -uroot -p

Grant acces to root from remote connections. Don't forget to change password for the password you have chosen.



We also have to edit /etc/mysql/my.cnf. Uncomment bind-address and change the address to

Making the database

Now we can log in on the server with MySQL Workbench from a remote computer.

Use: https://github.com/Wobbe-Steeland/weather-station/... to create the database.

Add the values we're measuring to the type table:

insert into weather_station.type values(1,"temperature");
insert into weather_station.type values(2,"humidity");
insert into weather_station.type values(4,"luminosity");

Step 5: Website

The website can be downloaded on: https://github.com/Wobbe-Steeland/weather-station/...

The server uses passlib, simplejson and serial. If these packages are not installed they can be added with pip3.

Automatic start

To start the webserver automatically when the Pi receives power we will add the following lines to /etc/rc.local. Sensor.py asks for data from the Arduino and adds it to the database.

python3 *location of server.py* &
python3 *location of sensor.py* &

Step 6: Enclosure

Cut the thin plank in four pieces. Two pieces of 7cm+2*thickness of the plank by 11.7cm. And two pieces of 11.7cm by 22.2cm.

Cut on piece of 7cm * 22.2cm from the thick wood and the plexiglass.

With a dremel we drill a hole trough the thin plank and a little in the thick plank, that way we can easely insert the nail.

After we have attached the first side, we're going to place the electronics. With the dremel we cut a hole in the middle of the side panel, and glue to LCD to it. Next to the LCD we glue the small breadboard.

Now we attach the Raspberry Pi and the Arduino. This can be done with glue, screws or tape.

Place the sensors in the breadboard and connect them and the LCD to the Arduino. Don't forget to test the connections before you glue or tape them in place.

Attach the rest of the side panels and glue the plexiglass on the top

Finally drill a hole in the back for the power adapter of the Raspberry Pi.

Step 7: Result



    • Epilog X Contest

      Epilog X Contest
    • Safe and Secure Challenge

      Safe and Secure Challenge
    • Cardboard Challenge

      Cardboard Challenge



    1 year ago

    That's a neat setup, I'd like to have one with how unpredictable it can be here :)