Innholdsfortegnelse:

Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi: 6 trinn
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi: 6 trinn

Video: Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi: 6 trinn

Video: Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi: 6 trinn
Video: Få energi ved å puste riktig - lær 3 pusteøvelser - VIDEO 3 | Akaal Yoga 2024, Juli
Anonim
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi
Hvordan kontrollere utsalgssteder ved hjelp av en Raspberry Pi

I denne instruksen vil jeg demonstrere deg hvordan du lager et webgrensesnitt for å kontrollere utsalgssteder i hjemmet ditt ved hjelp av en Raspberry Pi. Jeg valgte å skrive dette prosjektet da jeg så Sensors -konkurransen, og siden dette prosjektet innebærer å bruke en sensor til å lese koder fra fjernkontrollen som følger med uttakene du kjøper, trodde jeg at dette prosjektet ville passe perfekt.

Jeg vil jobbe for å holde dette så høyt nivå som mulig og gi kode for at alt skal fungere. For alle dere som kode aper der ute, kan du grave rundt i koden og undersøke meg i kommentarene! Jeg er alltid ute etter å bli bedre. Det skjer ganske mye i dette, så hvis du har spørsmål om et trinn, vennligst legg igjen en kommentar, slik at jeg kan oppdatere instruksjonsboken med de nødvendige detaljene.

Dette prosjektet bruker radiofrekvente kontrollerte uttak på 433MHz kombinert med en RF -sender koblet til din bringebær pi. Stikkontaktene kommer med fjernkontroller som kan slå av/på uttak, men det er ikke moro! Vi vil i stedet bruke en webserver som kjører på bringebær -pi som lar alle som er koblet til nettverket, slå på eller av bestemte utsalgssteder. En web-front-end til dette prosjektet er ideell siden en hvilken som helst nett-tilkoblet enhet i nettverket ditt kan brukes som fjernkontroll.

Dette er et prosjekt jeg har drømt om å fullføre i årevis, og selv om det fortsatt er rom for tillegg, er prosjektet beskrevet som følger et funksjonelt system.

Rekvisita

  • En Raspberry Pi (jeg brukte en RPi 3 modell B+)
  • En 433MHz sender og mottaker (jeg brukte denne)
  • 433MHz uttak (jeg brukte dette)
  • Kvinnelige til kvinnelige hoppere (jeg kjøpte denne gjengen)
  • En datamaskin eller håndholdt enhet som har tilgang til internett

Trinn 1: Sett opp din Raspberry Pi

Sett opp din Raspberry Pi
Sett opp din Raspberry Pi

Start med å installere den nyeste versjonen av Raspbian på din nye Raspberry Pi. Hvis du planlegger å bruke en eksisterende Pi (som du helt kan gjøre), er alt du trenger å sørge for at du har Python 3 på Pi, siden det er det all kildekoden jeg oppgir er skrevet i. For å gjøre dette, type

python3

inn på kommandolinjen. Hvis du har Python 3, bør du se python -terminalen åpen. Avslutt terminalen ved å lukke eller skrive

exit()

Når du har bekreftet dette, må du installere kolben på din Pi. Flask lar oss lage vår webserver. Skriv inn fra kommandolinjen Pi

sudo pip3 installere kolbe

Hvis du ikke har pip installert på din Pi, må du skrive

sudo apt-get install python3-pip

Jeg foretrekker å utvikle på Raspberry Pi fra komforten på min stasjonære datamaskin. Hvis du også foretrekker dette alternativet, må du installere et slags miljø til SSH i Pi. PuTTY vil fungere, men jeg foretrekker å ha en GUI (grafisk brukergrensesnitt), som får det til å virke som om du er direkte på Pi. For GUI -alternativet vil du installere VNC Viewer på datamaskinen du planlegger å jobbe med. Det er også innstillinger du må justere på Pi. Instruksjoner for å endre innstillinger finner du her.

Trinn 2: Koble til maskinvaren

Koble til maskinvaren
Koble til maskinvaren

På dette tidspunktet er det på tide å gjøre alle de fysiske tilkoblingene du må gjøre som forberedelse til å sette opp kildekoden for dette prosjektet. Du kobler pinnene på senderen og mottakeren til GPIO -pinnene på din Pi. Du vil religiøst referere til pinout -diagrammet til GPIO -pinnene. For å gjøre det, åpner du terminalen på din Pi og skriver

pinout

Følgende er tilkoblingene jeg gjorde. Du kan ha en annen konfigurasjon hvis du kjøpte annen sender/mottaker maskinvare enn jeg angav i innledningen. Hvis du bestemmer deg for å velge andre pin -numre enn de jeg angir nedenfor, ikke vær redd! Når du laster ned kildekoden, må du ganske enkelt endre pin -tallene etter behov i RxTx.py -filen.

Mottaker (stor brikke):

  • GND - Enhver angitt jordnål
  • DATA - Pin 11
  • DER - Ikke tilkoblet
  • +5V - Enhver angitt +5V pin
  • ------
  • +5V - Enhver angitt +5V pin
  • GND - Enhver angitt jordnål
  • GND - Ikke tilkoblet
  • ANT - Ikke tilkoblet

Merk: Du kan koble til en antenne etter behov, men jeg fant ut at jeg ikke trengte det. Denne lille brikken var overraskende sensitiv og oppdager trofast signaler ut til minst 50 fot fra hvor den satt og gjennom minst to vegger.

Sender:

  • P - 3.3V -pinnen
  • DA - Pin 7
  • G - Enhver angitt jordnål
  • AN - ikke tilkoblet

Merk: Igjen kan du koble en antenne til senderen etter behov, men jeg fant ut at jeg ikke trengte det. Rekkevidden er mer enn tilstrekkelig (50+fot).

Trinn 3: Legge til koden

Dette er delen jeg brukte mesteparten av tiden min på da jeg utviklet dette prosjektet. Jeg prøver å kommentere så mye som mulig, men jeg har sannsynligvis etterlatt hull som kan kreve forklaring hvis noen av dere bruker tid på å prøve å forstå det. Hvis dette skjer med deg, vennligst legg igjen en kommentar!

Språkene som er involvert her er:

  • Python
  • CSS
  • Javascript
  • HTML
  • JQuery/Ajax

Python brukes på kolbserveren og i

RxTx.py

fil, som håndterer kodeoverføring og kvittering. CSS brukes til å generere stilen til nettsiden. Hvem vil ha en kjedelig nettside !? Javascript brukes i enhver hendelseshåndtering (trykk på en knapp, etc.). HTML er kjernen i byggesteinen på nettsiden. Til slutt brukes JQuery/Ajax til å kommunisere mellom nettsiden og Python -backend.

Hvis alle disse språkene høres skremmende ut, ikke bekymre deg! Jeg visste bare at Python gikk inn i dette prosjektet, som tilfeldigvis var språket som involverte minst mulig koding. Gjør det bare å si, ta deg god tid til å gre gjennom koden hvis det er det du velger å gjøre. Hvis du ikke vil, trenger du ikke!

Følgende er katalogstrukturen jeg valgte å bruke med denne nettsiden. Zippemappen som er knyttet til dette trinnet, inneholder all kildekoden i den følgende strukturen.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> nettside-- statisk ----- favicon.ico ----- style.css-- maler ----- index.html ----- plan.html-- app.py-- data.file

Du kan sette mappen Outlet Switch hvor som helst på din Pi. Når du er klar til å kjøre webserveren, åpner du terminalen på Pi og

cd

(endre katalog) til websidekatalogen. Skriv deretter inn

python3 app.py

inn i terminalen. Hvis det ikke var noen feil, bør du være i gang!

P. S. Vær tålmodig hvis du støter på feil. Jeg prøvde å squash dem alle før jeg lastet opp.

Trinn 4: Gi det et skudd

Prøv det!
Prøv det!

Nå som du kjører koden, kan du få en følelse av webgrensesnittet på fingertuppene. Systemets kontroll er veldig enkel:

  • Du kan legge til så mange utsalgssteder du vil ved å bruke webgrensesnittet.
  • Sletting er like enkelt som å klikke på rediger, velge utsalgssteder du vil slette og klikke på slett.

YouTube -videoen ovenfor viser hvordan du faktisk kan legge til et nytt utsalgssted på listen din. For å oppsummere hva det viser:

  • Skriv først inn tittelen på utsalgsstedet i Tittel -feltet
  • Klikk eller berør utenfor Tittel -feltet for å la programmet kontrollere at tittelen ikke allerede eksisterer. Du kan ikke ha titler med samme navn
  • Når de er validert, er knappene ON Code og OFF Code aktivert.
  • Trykk og hold inne PÅ -knappen på fjernkontrollen, og klikk raskt på PÅ -kode -knappen på grensesnittet. Hold knappen på fjernkontrollen til den binære koden fyller ut det tilstøtende feltet.
  • Gjenta det forrige trinnet for AV -koden.
  • Klikk OK, og nå er du klar til å bytte stikkontakt!

Som nevnt i innledningen er ikke prosjektet 100% ferdig for mitt eget bruk. Den største komponenten jeg ennå ikke har fullført og implementert, er planleggingskapasiteten. Jeg planlegger å la brukeren lage en tidsplan som gjør at utsalgssteder kan slås av og på på bestemte tidspunkt automatisk.

Trinn 5: Debugging og RxTx.py -filen

Debugging og RxTx.py -filen
Debugging og RxTx.py -filen
Feilsøking og RxTx.py -filen
Feilsøking og RxTx.py -filen
Debugging og RxTx.py -filen
Debugging og RxTx.py -filen
Feilsøking og RxTx.py -filen
Feilsøking og RxTx.py -filen

Den eneste kjente begrensningen av systemet er at det er en sjanse for inkompatibilitet mellom forskjellige leverandørs utsalgssteder. Av- og påkodemeldingene er 25 bits for systemet mitt, og hvis et system har en annen meldingslengde, er det ikke umiddelbart kompatibelt med dette prosjektet. Hvis du nøyaktig fulgte instruksjonene og du fortsatt har problemer med å få dette til å fungere, ville følgende være den beste måten å feilsøke problemet på.

  • Sørg for at du har matplotlib installert på din Pi. Du kan gjøre dette ved å skrive følgende inn i Pi -terminalen:

    • python3

    • importer matplotlib

    • Hvis du får en feil, må du installere matplotlib.
    • Avslutt python -skallet med

      exit()

  • For å installere matplotlib, skriv inn

    sudo pip3 installer matplotlib

  • inn i terminalen
  • Last ned den vedlagte test.py -filen, og legg den sammen med RxTx.py -filen på din Pi
  • Åpne python -terminalen og bytt katalog til kommemappen.
  • Type

    python3 test.py

  • Når det står "** Startet opptak **", trykker du på og holder inne PÅ eller AV -knappen på fjernkontrollen til opptaket avsluttes.
  • Programmet vil laste opp en matplotlib -figur som ligner på ovennevnte. Zoom inn til du ser det repeterende signalet som vist på bildene ovenfor.
  • Tell den totale logiske 1 og logiske 0 for hver melding, der en melding er en iterasjon av det repeterende signalet sett ovenfor. Hvis totalen er 25, er det sannsynligvis ikke feilen med RxTx.py -filen. Hvis du støter på noe annet enn 25, må du huske å kommentere nedenfor, så skal jeg omformulere RxTx.py-filen for å være mer åpen (eller prøv deg på den).

Hva om jeg ikke ser et repeterende signal?

Hvis du ikke ser et repeterende signal, er en av to ting feil. Sjekk først at alle jumper wire -tilkoblingene er riktig utført. Hvis alt ser bra ut, kan du ha en dårlig mottaker. Kjøpte du den jeg foreslo? Da jeg kjøpte min første mottakerbrikke, var det veldig bråkete. Så bråkete at jeg ikke kunne få et klart signal. Jeg returnerte deretter brikken og hentet den jeg lenket til, og den kunne ikke fungert bedre.

Trinn 6: Kos deg

Du vet at du har muligheten til å slå på/av utsalgssteder fra telefonen, nettbrettet, datamaskinen eller en annen webaktiveret enhet! Gi meg beskjed om hva du synes i kommentarene!

Anbefalt: