Inhoudsopgave:

Fanair: een weerstation voor uw kamer: 6 stappen (met afbeeldingen)
Fanair: een weerstation voor uw kamer: 6 stappen (met afbeeldingen)

Video: Fanair: een weerstation voor uw kamer: 6 stappen (met afbeeldingen)

Video: Fanair: een weerstation voor uw kamer: 6 stappen (met afbeeldingen)
Video: Ontsnappen aan hackers Terug naar de taak.. Dead pmc's inc 2024, November
Anonim
Fanair: een weerstation voor uw kamer
Fanair: een weerstation voor uw kamer

Er zijn talloze manieren om het actuele weer te weten te komen, maar dan weet je alleen het weer buiten. Wat als u het weer in uw huis wilt weten, in een specifieke kamer? Dat probeer ik met dit project op te lossen.

Fanair gebruikt meerdere sensoren om te detecteren:

  • temperatuur-
  • vochtigheid
  • licht
  • bepaalde gassen
  • luchtdruk

Het is zeer compact en maakt gebruik van de Raspberry Pi 3 B, om de waarden op te halen, op te slaan in een MySQL-database en ze vervolgens gemakkelijk beschikbaar te maken op een website. Inbegrepen in de code en website is de mogelijkheid om actuele weergegevens voor uw locatie te krijgen, zodat de website ook kan worden gebruikt om het weer buiten te bekijken.

Stap 1: Verkrijg alle benodigde items

Krijg alle benodigde items
Krijg alle benodigde items

Allereerst heb je basiselektronica nodig, zoals draden / startkabels. Als je van plan bent om alles aan elkaar te solderen als een permanent project, dan heb je natuurlijk ook een soldeerbout, soldeer en voor je eigen gemak een PCB nodig om alles op te solderen.

Voor meer specifieke items heb ik deze Bill of Materials gemaakt.

  • Raspberry Pi 3 B
  • MPC3008 - 8-kanaals 10-bits ADC
  • AM2301 Thermometer temperatuur- en vochtigheidssensor
  • WR Rademacher WR-tyoe 930-1 printplaat
  • ABS Koffer voor prototyping (zwart)
  • LDR
  • MQ135 gassensor
  • 2x BC517 Darlington-transistor
  • RGB-LED
  • Weerstandspakket
  • Zoemer
  • Draden
  • BMP280-barometer
  • Stille USB-ventilator (5V)

Alles bij elkaar zou dit ongeveer € 110 moeten kosten. Houd er rekening mee dat de totale prijs een benadering is. Mijn project heeft ook een LCD-scherm op de foto, maar het is niet aangesloten omdat er niet genoeg ruimte in mijn geval was, dus het is niet opgenomen in de instructable.

Stap 2: Maak je Raspberry Pi klaar

Haal je Raspian Jessie met Pixel-besturingssysteem van de officiële Raspberry Pi-site en pak het uit zodra het is gedownload. Je krijgt een afbeeldingsbestand. Om het op de Pi te krijgen, moet je het naar de SD-kaart schrijven met Win32 Disk Imager. Nadat het is geïnstalleerd, selecteert u het afbeeldingsbestand en de schijf waarin uw SD-kaart zich bevindt. Druk vervolgens op schrijven en wacht tot het klaar is.

Als het klaar is, klik je op je SD-kaart in Verkenner en open je het bestand met de naam 'cmdline.txt', ga naar het einde van het tekstbestand net voor rootwait en schrijf 'ip=254.169.10.2' met natuurlijk spaties. Nadat je het hebt opgeslagen, moet je met de rechtermuisknop ergens in het venster klikken en een nieuw bestand maken met de naam 'ssh'. Merk op dat dit bestand geen bestandsextensie heeft. Om er zeker van te zijn dat het geen extensie heeft, klikt u op 'bekijken' in de bestandsverkenner en vinkt u 'verborgen bestanden' aan. Als het de naam ervan wijzigt en de extensie verwijdert, zodat het alleen 'ssh' leest.

Daarna kun je eindelijk je SD-kaart in de Raspberry Pi stoppen. Download een ssh-client (ik raad MobaXterm aan). En maak verbinding via ssh met het IP dat je eerder hebt ingesteld '254.169.10.2'. De gebruikersnaam is 'pi', het wachtwoord 'framboos'. Als je wilt, kun je het wachtwoord wijzigen door het commando 'sudo passwd' in de terminal te typen en de instructies te volgen. Aangezien we een groot deel van de SD-kaart voor Fanair gaan gebruiken, moet je de beschikbare opslagruimte uitbreiden door 'sudo rapi-config' te typen, 'Geavanceerde opties' te kiezen en vervolgens 'Bestandssysteem uitbreiden'. Start opnieuw op als daarom wordt gevraagd.

We zullen gebruik maken van de 1-wire, SPI en I2C interface. Om ze te kunnen gebruiken, moet je ze eerst instellen!

Stap 3: Verbind alles met elkaar

Verbind alles met elkaar
Verbind alles met elkaar
Verbind alles met elkaar
Verbind alles met elkaar

Het is tijd om een circuit te maken! De eerste keer zou je het waarschijnlijk op een breadboard moeten proberen, maar als je daar geen tijd voor hebt, zou je kunnen proberen het aan elkaar te solderen.

Het circuit dat je nodig hebt ziet er uit zoals hierboven, voor het gemak wordt er ook een breadboard-versie meegeleverd.

Stap 4: Creëer uw database

Om alle gegevens die u ontvangt efficiënt op te slaan, maken we gebruik van een TSQL MySQL-database. Voordat we MySQL installeren, zorgen we ervoor dat alles up-to-date is door een paar commando's in de terminal te typen:

  • 'sudo apt-get update'
  • 'sudo apt-get-upgrade'
  • 'sudo apt-get dist-upgrade'

Accepteer elke prompt door 'y' te typen en binnen te gaan.

Om MySQL-type te installeren:

  • 'sudo apt-get install mysql-server'
  • 'sudo apt-get install mysql-client'

Maak desgevraagd een root-wachtwoord naar keuze.

Nadat het klaar is met het installeren van login met behulp van:

'mysql -uroot -p'

En je wachtwoord intypen.

Haal de Fanair-code van My Github! Klik op 'Klonen of downloaden' en vervolgens op 'ZIP downloaden'. Pak de code uit in een map naar keuze. De query om de volledig operationele database te maken staat in de databasemap. Open het bestand, kopieer de code en plak deze in de terminal met MySQL geopend. Klik vervolgens op enter en de database is klaar!

Stap 5: Tijd voor de code

Om alle sensoren te kunnen gebruiken, moet je natuurlijk een programma draaien. Gelukkig is de code al klaar (voor het grootste deel) en hebben we deze al gedownload toen we de SQL-query van de database kregen.

Zoals ik al zei zijn er een paar dingen die nog veranderd/toegevoegd moeten worden om het programma goed te laten werken. Allereerst gebruikt het programma de Darksky API om de weergegevens te krijgen op basis van lengte- en breedtegraad. Om er gebruik van te maken dient u zich aan te melden. De eerste 1000 gesprekken zijn gratis en daarna kost het $ 0,0001 per gesprek. Ik heb gehoord dat als je niet betaalt, je account wordt geblokkeerd. Om eerlijk te zijn is $ 0,0001 per gesprek best goedkoop. Fanair roept elk uur de meest recente gegevens op, wat betekent dat in een jaar als het fulltime wordt uitgevoerd het u slechts $ 0,876 kost. Je krijgt ook 41 dagen gratis als Fanair fulltime draait.

Nadat u zich heeft aangemeld, zoekt u naar uw API-sleutel. Zoek de lengte- en breedtegraad van uw locatie op google maps of probeer het te googlen. Maak een nieuw tekstbestand aan in de hoofdmap van Fanair (met klassen, main.py …). Noem het bestand 'key_location.txt'. Open het tekstbestand en plak op de eerste regel uw Darksky API-sleutel. Plak op de tweede regel uw lengtegraad en op de derde regel uw breedtegraad (beide in decimaal formaat). Als u klaar bent, slaat u het bestand op.

Maak in dezelfde directory een ander tekstbestand aan met de naam 'database_dsn.txt'. Op de eerste regel moet 'localhost' staan. De tweede regel is 'root'. In de derde regel typt u uw wachtwoord dat u eerder voor de database hebt gemaakt, en in de vierde en laatste regel typt u 'fanair'.

Klik met de rechtermuisknop op het bestand main.py en selecteer bewerken. De 'fanair = Fanair(5, 26, 17, 27, 22, 4, "AM2301", 1, 0, 0, 0, "key_location.txt", "database_dsn.txt")' moet worden gewijzigd. Als je de afbeelding hebt gevolgd, moeten de eerste 5 waarden worden gewijzigd van '5, 26, 17, 27, 22, 4' in '20, 21, 26, 19, 13'. '/home/muhsin/Applications/Fanair' moet ook worden gewijzigd in je Fanair-rootpad (waar main.py is). Zet een schuine streep voor 'home' maar niet achter 'Fanair'.

Dit is allemaal geweldig, maar de code moet in de Pi komen. Gelukkig voor ons bestaat het sftp-protocol. Om de bestanden op de Pi te zetten, gebruik je een sftp-client zoals FileZilla of als je hebt besloten om MobaXterm te gebruiken, kun je de bestanden eenvoudig uploaden in de sftp-interface links van de terminal.

In mijn ervaring krijg ik niet altijd de juiste datum en tijd in de Raspberry Pi. Om er zeker van te zijn dat je de juiste datetime ontvangt, raad ik aan om deze handleiding te volgen: Raspberry Pi-synchronisatiedatum en -tijd.

En last but not least moeten een paar bibliotheken worden geïnstalleerd en een paar interfaces worden geactiveerd:

'sudo apt-get install build-essentiële python-dev'

Adafruit DHT:

'pip3 installeer adafruit_python_dht'

1-draads:

  1. 'sudo raspi-config'
  2. 'Interface-opties'
  3. '1 Draad'
  4. Inschakelen
  5. 'sudo nano /boot/config.txt'
  6. Voeg deze regel toe aan het bestand: 'dtoverlay=w1-gpio'
  7. 'sudo opnieuw opstarten'

SPI:

  1. 'sudo raspi-config'
  2. 'Interface-opties'
  3. 'SPI'
  4. Inschakelen
  5. 'sudo opnieuw opstarten'
  6. 'sudo nano /boot/config.txt'
  7. Zoek naar 'dtparam=spi=on' en verwijder het commentaar door de hashtag te verwijderen.
  8. 'sudo apt-get install python3-dev'

Smbus:

  1. 'sudo raspi-config''
  2. 'Interfacing-opties'
  3. 'I2C'
  4. Inschakelen
  5. 'sudo opnieuw opstarten'
  6. 'sudo apt-get install -y python-smbus'
  7. 'sudo apt-get install -y i2c-tools'
  8. 'sudo nano /boot/config.txt'
  9. Zoek naar dtparam=i2c_arm=on en verwijder het commentaar door de hashtag te verwijderen.

kolf

pip3 installeer Flask

mysql-connector

'pip3 install -Iv mysql-connector==2.1.4'

spidev

'pip3 installeer py-spidev'

donkere lucht

'pip3 installeer darkskylib'

Stap 6: Probeer het uit

Als het je gelukt is om zo ver te komen, tik je jezelf op de achterkant. Nu is er alles aan gedaan om Fanair goed te laten werken. Dus om het uit te testen typ je 'cd ""'. Bestandslocatie is "/home/pi" bijvoorbeeld als u zojuist in uw thuismap hebt geplakt. Typ vervolgens 'python3 main.py' en laat het 15 minuten rusten, zodat het gegevens in de database heeft als het klaar is. Druk daarna op 'ctrl + c' stop het programma en typ 'python3 Flask.py'. Om te zien of je website werkt, moet je naar het IP-adres van je Pi surfen dat je hebt gemaakt met ':5000' erachter (zoals dit: 169.254.10.1:5000').

Om het automatisch te laten werken na het opstarten:

'sudo nano /etc/rc.local'

Aan het einde van het bestand MAAR VOOR exit 0:

'sudo python3 "/main.py" &'

'sudo python3 "/Flask.py" &'

Gefeliciteerd, je script zou vanaf het opstarten moeten worden uitgevoerd en JE BENT KLAAR! Als je van plan bent om het project draaiende te houden en dat nog niet gedaan hebt, raad ik je aan alles aan elkaar te solderen, om er zeker van te zijn dat alles blijft zitten. Hoewel als je niet veel speelt om het te verplaatsen, een breadboard natuurlijk ook werkt.

Aanbevolen: