Inhoudsopgave:

RPi-weerstation met responsieve website - Ajarnpa
RPi-weerstation met responsieve website - Ajarnpa

Video: RPi-weerstation met responsieve website - Ajarnpa

Video: RPi-weerstation met responsieve website - Ajarnpa
Video: Timecontrol with Progressive Web App, RaspBerry Pi and RFID 2024, Juli-
Anonim
RPi-weerstation met responsieve website
RPi-weerstation met responsieve website
RPi-weerstation met responsieve website
RPi-weerstation met responsieve website

Voor een schoolproject moesten we een IoT-apparaat maken met een website om de verzamelde informatie op een mooie manier te visualiseren. Ik koos ervoor om een weerstation te maken dat wordt aangedreven door een Raspberry Pi 3 met Flask voor de responsieve website, MySQL (MariaDB) voor mijn database en een python-script voor het verzamelen van informatie met al mijn sensoren. Het kostte me ongeveer 2 weken van begin tot eind om te voltooien.

We werden aangemoedigd om een instructable te maken om onze voortgang te delen met de rest van de DIY-gemeenschap, dus hier is het!

Stap 1: Onderdeelselectie, gereedschappen en materialen

Eerst moest ik uitzoeken wat voor soort sensoren essentieel waren voor een weerstation. Ik besloot dat ik alle volgende gegevens wilde meten:

  • Temperatuur
  • Luchtdruk
  • Vochtigheid
  • Windsnelheid
  • UV-index

Hier zijn alle gereedschappen, materialen en onderdelen die ik heb gebruikt

Onderdelen:

  • DHT22/AM2302 voor temperatuur- en vochtmetingen. (15 euro)
  • Adafruit BMP280 voor luchtdruk en temperatuur. (12 euro)
  • Adafruit SI1145 voor het meten van de UV Index. (10 euro)
  • Adafruit Analoge Anemometer voor het meten van windsnelheid (50 EUR)
  • Een MCP3008 voor het omzetten van analoge signalen naar digitale.
  • 10kOhm Weerstand als pull-up voor mijn AM2302.
  • Een 9V Adapter om de Anemometer van stroom te voorzien
  • Een 5V-adapter voor de Raspberry Pi
  • Raspberry Pi 3 (elke Pi zou moeten volstaan)

Materialen:

Een kunststof bak om alles in op te bergen en regenbestendig te maken

Gereedschap:

  • Soldeerbout en tin
  • Multimeter
  • siliconen
  • wat band

Dus in totaal hebben alle sensoren me ongeveer 85 euro gekost, wat behoorlijk steil is, maar ik wilde echt een goede windsnelheidsmeter toevoegen, dus ik denk dat het de moeite waard is.

Een meer gedetailleerde lijst met winkels waar je alles kunt kopen, vind je in de pdf hieronder:)

Stap 2: Onze hardware aansluiten

Onze hardware aansluiten
Onze hardware aansluiten
Onze hardware aansluiten
Onze hardware aansluiten

Natuurlijk moeten we onze sensoren aansluiten op onze Raspberry Pi. Hierboven zie je het fritzing-schema dat je kunt volgen om alles goed aan te sluiten.

Op het schema kunt u zien dat een 9V-batterij wordt gebruikt als stroombron voor onze anemometer, dit kan het beste alleen worden gebruikt om te testen, omdat het niet te lang meegaat, u kunt de 9V-batterij vervangen voor elke 7-12V-stroombron die u Kiezen.

Onze SI1145- en BMP280-sensoren worden beide bestuurd met behulp van het I2C-protocol, omdat dit het gemakkelijkst is om mee te werken en minder draden nodig heeft.

De anemometer op het schema wordt hier als een LDR weergegeven, omdat deze vrijwel identieke bedrading heeft als de anemometer en ik geen echte anemometer kon vinden om op mijn grillige schema te plaatsen:)

Stap 3: Alles aansluiten: de Pi. instellen

Alles aansluiten: de Pi. instellen
Alles aansluiten: de Pi. instellen

Allereerst moeten we ervoor zorgen dat we verbonden zijn met internet.

Om dit in de terminal te doen, kun je naar je wpa_supplicant-bestand gaan door het volgende commando uit te voeren: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

In het bestand kun je dit toevoegen:

network={ssid= "Your_Wifi_SSID" psk="Your_Wifi_Password" key_mgmt=WPA-PSK

}

Je kunt er ook voor kiezen om je IP-adres op statisch in te stellen voor een betere toegang in de toekomst. Om dit te doen moet je naar het bestand dhcpcd.conf gaan door dit commando uit te voeren: sudo nano /etc/dhcpcd.conf

Voeg dit toe aan het bestand:

interface wlan0static ip_address=192.168.0.100/24

Dan gaan we ervoor zorgen dat de pakketten die al op onze Pi zijn geïnstalleerd, volledig worden bijgewerkt:

sudo apt-get update && sudo apt-get upgrade

Dit kan even duren, dus maak je geen zorgen

U moet het I2C- en SPI-protocol in raspi config inschakelen. U kunt dit doen door deze opdracht uit te voeren:

sudo raspi-config

Ga dan naar interface-opties en schakel beide in, I2C en SPI

Eerst moet je een map maken waarin je je project wilt plaatsen (we zullen het 'weatherstation' noemen):

cd ~mkdir weerstationcd weerstation

Vervolgens hebben we onze virtuele python3-omgeving opgezet:

python3 -m pip install --upgrade pip setuptools wiel virtualenvpython3 -m venv --system-site-packages envsource env/bin/activatepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Dan zullen we een aantal andere pakketten moeten installeren die nodig zijn om alles correct te laten functioneren:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Nu gaan we onze database maken:

We moeten onze database echter nog instellen. U kunt dit doen door het code/sql-bestand in de 'sql'-map als volgt uit te voeren:

sudo mariadb < sql/db_init.sql

De sql-query maakt de tabellen die we nodig hebben en maakt ook een paar gebruikers om onze database een beetje veiliger te maken.

Dit zal ook enkele voorbeeldgeschiedenisgegevens in onze database plaatsen om ervoor te zorgen dat onze website alles correct weergeeft wanneer er nog geen echte gegevens zijn verzameld.

Om Adafruit_GPIO en MyPyDHT te installeren moet je nog wat dingen doen. Ga eerst terug naar je gebruiksmap en dan:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Stap 4: Software / Code

Software / Code
Software / Code
Software / Code
Software / Code
Software / Code
Software / Code

We moeten de back-end voor het weerstation opzetten, inclusief:

- Een mariadb-database voor het opslaan van mijn sensormetingen en enkele andere kleine dingen - Een kolfservice voor het uitvoeren van de website. - Een andere service die het Python-bestand uitvoert dat alle sensoren uitleest. Hierboven ziet u mijn zeer eenvoudige database-configuratie. De gebruikerstabel is onnodig, maar aangezien ik een inlogsysteem wilde omdat ik (ook al zijn alle gegevens voor alle gebruikers hetzelfde) heb ik besloten om het in mijn database op te nemen.

Je kunt doorgaan en de code van mijn project van Github naar je projectmap klonen. Ga naar je gebruikersmap en voer:git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/ uit

Navigeer vervolgens naar de map conf in het weerstation en alle bestanden in de map.

Wijzig alle gevallen van 'USERNAME' in uw gebruikersnaam

U moet ook beide.service-bestanden naar systemd kopiëren en ze als volgt testen:

sudo cp conf/weatherstation-*.service /etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weerstation-flask.servicesudo systemctl start weerstation-sensor.service

sudo systemctl status weerstation-*

We moeten dan de nginx-configuratie bewerken.

sudo cp conf/nginx /etc/nginx/sites-available/weatherstationsudo rm /etc/nginx/sites-enabled/defaultsudo ln -s /etc/nginx/sites-available/weatherstation /etc/nginx/sites-enabled/cnl herstart nginx.servicesudo systemctl status nginx.service

Als alles goed is gegaan, zou je dit moeten kunnen uitvoeren en wat html in de terminal kunnen afdrukken:

wget -qO - localhost

Alles zou nu goed moeten werken. U kunt naar het IP-adres van uw Raspberry Pi surfen dat we in het begin hebben ingesteld en worden begroet met een inlogscherm.

Stap 5: De behuizing

de behuizing
de behuizing
de behuizing
de behuizing
de behuizing
de behuizing

Nu alles werkt, moeten we het hele ding ergens in stoppen.

Ik koos voor een eenvoudige plastic doos met een transparant deksel. De anemometer is erop gemonteerd, net als een secundair klein bakje met de DHT22- en BMP280-sensoren.

Deze sensoren zijn in een aparte container gemonteerd omdat ze in de open lucht moeten zijn (zonder dat er op geregend moet worden), maar de raspberry pi hoeft dat niet te zijn.

Zoals je kunt zien heb ik wat siliconen aan de randen toegevoegd om het waterdicht te maken. Ik heb ook wat gaten in de bovenste container geboord om er frisse lucht in te krijgen.

Ik hoop dat je genoten hebt van mijn gids over het bouwen van een weerstation, het is misschien een beetje ruw aan de randen omdat het de eerste keer is dat ik een gids als deze schrijf, maar ik hoop dat je het desalniettemin leuk vond:)

Aanbevolen: