Inhoudsopgave:

Raspberry Pi Barometer Weerklok - Ajarnpa
Raspberry Pi Barometer Weerklok - Ajarnpa

Video: Raspberry Pi Barometer Weerklok - Ajarnpa

Video: Raspberry Pi Barometer Weerklok - Ajarnpa
Video: PinePhone KDE Community Edition smartphone with Plasma Mobile now up for pre-order $149.99 & $199.99 2024, November
Anonim
Raspberry Pi Barometer Weerklok
Raspberry Pi Barometer Weerklok

In deze instructable laat ik je zien hoe je een basisthermometer / barometerklok kunt bouwen met behulp van een Raspberry Pi 2 met een BMP180 I2C-sensor die wordt weergegeven op een Adafruit 4-cijferig 7-segment I2C-display. De Pi gebruikt ook een DS3231 realtime I2C-klokmodule om de tijd bij te houden wanneer de Pi opnieuw wordt opgestart.

De klok loopt door 4 fasen van elk 5 seconden. Eerst toont het de temperatuur in Celsius, dan in Fahrenheit, dan de barometrische druk in kPa * (het loopt dit getal naar links vanwege een beperkt aantal cijfers) en ten slotte toont het een trend van barometrische drukverandering tussen nu en het gemiddelde van de vorige uur.

Wat deze klok anders maakt dan de meeste, is dat hij een MySQL-database op de Pi gebruikt om elke minuut gegevens van de BMP180 te loggen. Omdat de huidige luchtdruk niet zo waardevol is als de beweging omhoog of omlaag over een bepaalde periode, gebruikt het deze database om een gemiddelde te berekenen voor een uur tussen 2 uur en 1 uur geleden en dat te vergelijken met de huidige druk. Een significante toename van de luchtdruk duidt meestal op een verbetering van de weersomstandigheden versus een grote daling zou kunnen waarschuwen voor een naderende storm.

De klok is gehuisvest in een 3D-geprinte ABS-behuizing met de BMP180 in een geventileerde dop aan de achterkant van de klok om te voorkomen dat de warmte die door de Pi wordt gegenereerd de temperatuurmetingen beïnvloedt. Ik zal het Autodesk 123D Design-schema leveren als u uw eigen schema wilt afdrukken.

De klok wordt gevoed met een standaard USB-muurwrat en trekt in totaal ongeveer 450 mA.

Ik zal niet te veel ingaan op de basisconfiguratie van de Pi en I2C, omdat dit is behandeld in veel andere instructables waarnaar ik links zal geven.

Stap 1: Bereid de Pi. voor

Bereid de Pi. voor
Bereid de Pi. voor

Stel uw Raspberry Pi in - Details op Raspberrypi.org

  1. Download en installeer uw geselecteerde Linux-distributie op een SD-kaart - ik gebruikte Raspbian
  2. Sluit de pi aan en start hem op
  3. Ik heb een micro-WiFi-adapter gebruikt om de pi op mijn router aan te sluiten, omdat de klokbehuizing de Ethernet-poort verduistert.
  4. Ik gebruikte de headless-modus waarbij je verbinding maakt met de pi via SSH, dus alles wat je nodig hebt, is de stroomvoorziening.
  5. Configureer I2C op de Pi - Ik volgde deze instructies op de Adafruit-site.

Stap 2: Sluit alles aan

Sluit alles aan
Sluit alles aan

Alle modules die ik in dit project gebruik, zijn 5V-tolerant en gebruiken I2C, een 2-draads protocol dat wordt gebruikt om IC's met elkaar te laten communiceren, dus de bedrading is vrij eenvoudig. Verbind alle VCC met 5V, alle Grounds samen en alle SCA- en SCL-lijnen samen volgens het schema. Klus geklaard.

Stap 3: Test je I2C

Test je I2C
Test je I2C

Een deel van de I2C-installatie is om i2cdetect uit te voeren, dat eruit zou moeten zien als de bijgevoegde afbeelding als alles correct is aangesloten.

Hieronder staan de overeenkomende adressen

  1. 0x70 = 7-segmentsweergave
  2. 0x77 = BMP180 Thermometer / Barometersensor
  3. 0x68 = DS3231 Real Time Clock-module
  4. 0x57 = DS3231 aan boord van EEPROM voor het opslaan van alarmgegevens.

Stap 4: Installeer MySQL en PhpMyAdmin

Installeer MySQL en PhpMyAdmin
Installeer MySQL en PhpMyAdmin

Het installeren van mySQL is vrij eenvoudig als je de tutorial hier volgt

sudo apt-get install mysql-server

Ik heb ook phpMyAdmin geïnstalleerd, een website die op Apache draait en die u kunt gebruiken om mySQL-databases te maken en te beheren. Tutorial hier

sudo apt-get install phpmyadmin

Eenmaal geïnstalleerd heb ik een database opgezet met de naam BP180 met behulp van phpMyAdmin met de structuur volgens de afbeelding.

Ik maak ook gebruik van een python-module genaamd mysqlDB die je kunt installeren met

sudo apt-get install python-mysqldb

Stap 5: Python-modules installeren

Download en installeer de onderstaande python-modules die u gaat gebruiken om verbinding te maken met de sensoren.

  1. Adafruit_BMP085-module
  2. SDL_DS3231-module
  3. Adafruit 7 Segment-module

Stap 6: Code om in te loggen op database

Het onderstaande codefragment wordt gebruikt om de temperatuur en luchtdruk te loggen en wordt aangeroepen vanuit een cron-script (Linux-geplande taken) dat elke 5 minuten wordt uitgevoerd. Bekijk deze tutorial om te leren hoe je crond kunt gebruiken.

NB! Doe geen moeite om mijn codeervaardigheden te vernietigen, ik ben geen ontwikkelaar, dus ja, er zijn waarschijnlijk een miljoen betere, snellere, soepelere, schonere manieren om dit te doen

Je zult in de code zien dat de temperatuur met 7 graden wordt verlaagd, wat overeenkomt met de warmte die door de Raspberry Pi wordt gegenereerd, zelfs als de BMP180 aan de buitenkant van de behuizing is gemonteerd. Toen ik het oorspronkelijk in de behuizing had, was het ongeveer 15 graden heter dan omgevingstemperatuur. Het lijkt vrij lineair te zijn, maar ik heb niet de kans gehad om extremen te testen. Feedback van uw ervaringen wordt op prijs gesteld.

Stap 7: Codeer om Temp weer te geven

Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven
Code om temperatuur weer te geven

Deze code wordt aangeroepen om door het display te bladeren volgens de inleiding.

Nogmaals, ik ben geen ontwikkelaar, dus de code is erg ruw, maar het werkt

Stap 8: 3D-geprinte behuizing

3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing
3D-geprinte behuizing

Het volgende is het ontwerp van de behuizing. Dit was een behoorlijke uitdaging omdat de vorm vatbaar is voor kromtrekken omdat delen van de buitenschaal slechts 2 mm dik zijn. Ik tekende eerst mock-ups van de Pi en alle onderdelen en ontwierp vervolgens de behuizing eromheen. De afdruk duurde ongeveer 7 uur op mijn RapMan 3.2 (wat een vrij langzame printer is) met een diepte van 0,25 laag.

Het bijgevoegde schema is gemaakt in Autodesk 123D Design, wat volgens mij een fantastisch stuk gratis software is.

Merk op dat sommige van de gaten, zoals die nodig zijn om de Pi te monteren, niet in het ontwerp zitten, omdat het beter is om deze achteraf te boren voor het geval je print een beetje kromtrekt. Vaste hand een boortje van 3 mm is alles wat je nodig hebt. Markeer de diepte op het bit met wat plakband, zodat je niet per ongeluk dwars door je 7-uurs print gaat zoals ik deed.

Stap 9: Dingen om te doen

Dingen om te doen
Dingen om te doen
  1. De realtimeklok was een toevoeging nadat de behuizing voor de 5e keer was afgedrukt, dus het is momenteel heet gelijmd op de zijkant van de behuizing, wat er niet goed uitziet, dus ik zou het ontwerp opnieuw willen doen en er een plek voor willen toevoegen.
  2. De helderheid van het 7-segments display is momenteel op het lichtst ingesteld, wat niet optimaal is voor sterke lichtomstandigheden. Ik wil graag een fotoweerstand toevoegen aan de bovenkant van de behuizing en de helderheid van 7 segmenten aanpassen op basis van het omgevingslicht.
  3. Er zijn enkele kleine ontwerpproblemen met het kraken van de basis, die ook zullen worden verholpen.
  4. Alle ideeën zijn welkom.

Ik hoop dat je dit instructable leuk vond en vond het inspirerend genoeg om je op weg te helpen. Het idee is om een platform te bieden dat u kunt gebruiken om uw eigen ideeën toe te voegen. Veel plezier!

Aanbevolen: