Inhoudsopgave:

RPi IoT Smart Light met Firebase - Ajarnpa
RPi IoT Smart Light met Firebase - Ajarnpa

Video: RPi IoT Smart Light met Firebase - Ajarnpa

Video: RPi IoT Smart Light met Firebase - Ajarnpa
Video: I built a smarter smart home 2024, November
Anonim
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase
RPi IoT Smart Light met Firebase

Deze handleiding laat zien hoe je een app maakt en instelt om de Raspberry Pi te bedienen via Firebase (een online database). En dan 3D-printen van een behuizing voor de Pi Zero W, een Powerboost 1000C, een batterij en een Blinkt!.

Om het gemakkelijkst te kunnen volgen, raad ik aan bekend te zijn met Xcode en Raspberry Pi.

En als je het leuk vindt wat je ziet, volg me dan op Instagram en Twitter (@Anders644PI) om op de hoogte te blijven van wat ik maak.

Je zal nodig hebben:

  • Een Raspberry Pi Zero W met adapters en GPIO-headers

    (of de gewone Pi Zero met een wifi-dongle)

  • Een PowerBoost 1000 C
  • Een lithium-ionbatterij - 3.7v 2000mAh
  • Een Blinkt! (of een pHAT/HAT, die: geen fysieke pin 5 gebruikt en HAT's plat op de bodem moeten liggen.)
  • Een Micro SD-kaart van 8 GB of hoger, met Raspbian Stretch (met desktop) erop
  • Een toetsenbord en een muis (maar je kunt ook verbinding maken via ssh, als je nu hoe)
  • Een aansluiting op een monitor of tv (of ssh!)
  • Schroot schroeven
  • kleine draden
  • Een kleine schakelaar en een kleine knop
  • Een 3D-printer en een spoel van een kleur PLA-filament en een spoel van transparant PLA (of u kunt een 3D-service zoals 3D Hubs gebruiken om het voor u af te drukken)

Stap 1: Firebase en Xcode

Firebase en Xcode
Firebase en Xcode
Firebase en Xcode
Firebase en Xcode
Firebase en Xcode
Firebase en Xcode

Eerst zullen we Firebase instellen met de app, zodat we van de app naar de Pi kunnen communiceren.

Als je in de war raakt, kun je deze video bekijken.

1. Open Xcode en maak een nieuw Xcode-project. Kies Single View App en noem het RPiAppControl, en zorg ervoor dat de taal Swift is. Druk op Volgende en sla het op.

2. Kopieer je Bundel-ID, want die hebben we later nodig.

3. Log in Firebase in met uw Google-account en klik op Ga naar console.

4. Maak een nieuw project en noem het RPiAppControl.

5. Klik op Firebase toevoegen aan uw IOS-app. Plak je bundel-ID in en druk op Registreer App.

6. Download de GoogleService-Info.plist en sleep deze naar uw Xcode-project.

7. Terug bij Firebase drukt u op Doorgaan. Open vervolgens een terminalvenster en navigeer naar de locatie van uw Xcode-project.

8. Voer deze opdracht uit:

pod init

9. Open het podbestand en onder use_frameworks!, voeg deze regel toe:

pod 'Firebase/Core'

10. Terug in het terminaltype: pod installeren en Xcode sluiten.

11. Navigeer in Finder naar uw Xcode-project en open het nieuw gemaakte.xcworkspace-bestand.

12. Ga hier naar de AppDelegate.swift en voeg onder import UIKit deze regel toe:

Firebase importeren

En voeg in de applicatie-functie deze regel toe:

FIRApp.configure().

13. Terug in Firebase klikt u op Doorgaan en vervolgens op Voltooien.

14. Ga naar Database, dan Regels, en stel de ".read" en ".write" in op true. Druk op PUBLICEREN.

15. Terug bij Xcode, open het podbestand en voeg dit toe onder de eerste regel die we hebben ingesteld:

pod 'Firebase/Database'

16. Terug in de terminal, voer pod install opnieuw uit.

Stap 2: Xcode afwerken

Xcode afwerken
Xcode afwerken
Xcode afwerken
Xcode afwerken
Xcode afwerken
Xcode afwerken

We zullen nu de code en lay-out in Xcode afmaken.

Dit gebruikt Xcode 9 en Swift 4

Code voor de ViewController1. Bovenaan de ViewController, en onder de import UIKit, voeg je dit toe:

Firebase importeren

importeer FirebaseDatabase

2. Onderaan de ViewController, en onder de didReceiveMemoryWarning -functie, kopieer en plak deze functies voor elke knop:

func num1(status: String){

let ref = FIRDatabase.database().reference() laat posten: [String: Any] = ["state": state] ref.child("num1").setValue(post)}Vergeet niet om de (nummer

3. In de viewDidLoad -functie, onder de super.viewDidLoad(), voeg je deze regel in voor elke knop (Voor meerdere knoppen, verander gewoon het (nummer). Zie afbeelding…):

num1 (status: "UIT")

Lay-out van het Main.storyboard en de knoppen

1. Ga naar het Main.storyboard en plaats een aantal knoppen. Je kunt ze opmaken zoals ik deed, of ze aanpassen zoals je wilt.

2. Verbind de knoppen met de ViewController. Elke knop moet twee keer worden aangesloten: één als een actie en UIButton genaamd num(number)Button, en de andere als de standaard Outlet en noem deze num(number)Color. Zie foto…

3. Plak vervolgens voor alle knoppen deze regel in elk van de functies:

if self.num1Color.backgroundColor == UIColor.lightGray { // Stelt de achtergrondkleur in op lightGray

num1(state: "ON") // Stuurt de state: "ON" naar firebase self.num1Color.backgroundColor = UIColor(red:0.96, green:0.41, blue:0.26, alpha:1.0) // Stelt de achtergrondkleur in op roodachtig } else { num1(state: "OFF") // Stuurt de status: "OFF" naar firebase self.num1Color.backgroundColor = UIColor.lightGray // Stelt de achtergrondkleur in op lightGray}

Nu zou je het moeten kunnen testen door de app uit te voeren, en wanneer je op de knoppen drukt, zou je het van status moeten zien veranderen in de Realtime Database in Firebase.

Afwerking (optioneel)

1. Download de onderstaande afbeeldingen en plaats de LaunchScreen-image-j.webp

2. Ga naar Assets.xcassets en vervolgens naar AppIcon. Plaats hier in de overeenkomstige AppIcon -size.

Stap 3: Raspberry Pi-configuratie

Raspberry Pi-configuratie
Raspberry Pi-configuratie

Nu moeten we de Pi instellen met Firebase, zodat de app kan communiceren, Firebase naar de Pi kan gooien.

Ik heb de code niet geschreven, maar je kunt de originele code hier vinden.

1. Voer in de terminal de gebruikelijke updates uit:

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

2. Vervolgens importeren we pyrebase (Firebase):

sudo pip installeer pyrebase

sudo pip3 install pyrebase sudo pip3 install --upgrade google-auth-oauthlib

3. Download nu de Blinkt-bibliotheek:

krul https://get.pimoroni.com/blinkt | bash

4. Kloon mijn GitHub-repository:

git kloon https://github.com/Anders644PI/RPiAppControl.gitcd RPiAppControl

5. Bewerk de AppRPiControl_Template.py:

nano RPiAppControl_Template.py

6. Vul uw Firebase ApiKey en projectId in. U kunt deze vinden door naar uw Firebase-project te gaan en op Nog een app toevoegen te klikken en vervolgens Firebase aan uw web-app toevoegen.

7. Pas de functies aan en sla uw wijzigingen op door op ctrl-o (enter) te drukken en sluit met ctrl-x.

8. Voer het nu uit met:

sudo python3 RPiAppControl_Template.py

9. Als u vervolgens een Blinkt gebruikt, kunt u het voorbeeld proberen, wanneer u uw Firebase ApiKey en projectId hebt ingevuld:

cd-voorbeelden

nano RPiAppControl_blinkt_demo.py

Voer het nu uit:

sudo python3 RPiAppControl_blinkt_demo.pyHoud er rekening mee dat nadat u het script hebt uitgevoerd, het ongeveer een minuut duurt om u voor te bereiden (tenminste op de Pi Zero). En het script moet worden uitgevoerd in python 3

10. BONUS: Als je wilt dat het script bij het opstarten wordt uitgevoerd, kun je hier ontdekken hoe.

Afsluiten/Aan/uit-knop

Het is optioneel om een aan/uit-knop te installeren, maar ik raad het aan. Volg samen met deze video om het in te stellen.

Houd er rekening mee dat dit fysieke pin 5 op de Pi gebruikt, dus sommige HAT's werken niet.

Stap 4: Behuizing

Aanbevolen: