Innholdsfortegnelse:

Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter): 6 trinn
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter): 6 trinn

Video: Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter): 6 trinn

Video: Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter): 6 trinn
Video: Using Raspberry Pi as a RF Transmitter 2024, Juli
Anonim
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)
Raspberry Pi RF fjernkontrollerte strømkontakter (strømkontakter)

Kontroller billige 433MHz stikkontakter (stikkontakter) ved hjelp av en Raspberry Pi. Pi kan lære kontrollkodene som sendes ut fra stikkontaktens fjernkontroll og bruke dem under programkontroll for å aktivere alle eller alle eksterne stikkontakter i hele huset.

Designet er ikke avhengig av ekstern internettforbindelse (dvs.) 'Internet of Things' og er derfor (IMHO) mye sikrere enn nettbaserte kontrollere. Når det er sagt, prøvde jeg å integrere med Google Home, men mistet raskt viljen til å leve når kommandoer noen ganger tok flere titalls sekunder å utføre eller aldri ble utført i det hele tatt.

En åpenbar applikasjon rundt juletider er å kontrollere juletræslys og (hvis du er så tilbøyelig) utvendige displaylys. Selv om det er en enkel bruk, vil du ved å bygge denne instruksjonsboken ende opp med en super fleksibel kontaktkontroller som kan reagere på sensorinnganger og andre enheter på hjemmenettverket ditt, for eksempel Raspberry Pis som kjører Linux Motion.

For eksempel har jeg et sett med kjøkkenlys som tennes når et kamera som kjører 'Motion' oppdager bevegelse på kjøkkenet og deretter slår dem av etter fem minutter uten aktivitet. Det fungerer veldig bra!

Med 'Tasker' og 'AutoTools SSH' fra Google Play-butikken kan du sette opp alle slags flotte telefonbaserte fjernkontroller.

Prosjektet er avhengig av billige 433MHz mottaker- og senderkort som er allment tilgjengelig på eBay. Disse er kompatible med (minst i Storbritannia) 433MHz fjernkontakter som selges med fjernkontroller. Mitt prosjekt inkluderer en mottaker, slik at nye kommandosett for fjernkontroll enkelt og raskt kan integreres. Ett punkt å merke seg - eksterne stikkontakter tilgjengelig i Storbritannia ser ut til å komme i to varianter - de med en ID programmert av en bryter på kontakten og de som er avhengige av programmering fra fjernkontrollen. Dette prosjektet er kompatibelt med begge deler, men førstnevnte mister ikke identiteten ved strømbrudd og er derfor å foretrekke.

Prosjektet bruker en gammel ruterkasse - jeg har noen få av disse, og de har veldig praktisk de fleste nødvendige eksterne kontakter, for eksempel strøm, ethernet, USB og antenne (r). Hva du bruker vil avhenge av hva du har tilgjengelig, så denne instruksjonsboken er sannsynligvis mer nyttig som en generell veiledning i stedet for et trinnvis sett med instruksjoner.

Selv om det ikke er strengt nødvendig for dette prosjektet, har jeg også lagt til en kjølevifte og kontrollerkort. Uten vifte kan Pi bli ganske varm (ca. 60 ° C). Detaljer kan komme i en senere instruks.

Jeg burde nevne at jeg ikke er noen programmerer. Programvaren er (for det meste) skrevet i Python, og de smarte tingene blir kopiert fra folk som vet hva de gjør. Jeg har anerkjent kildene der jeg kan - hvis jeg har savnet noen, vennligst gi meg beskjed, så retter jeg teksten.

The Instructable forutsetter en viss loddeevne og en forbigående kjennskap til Python, Bash og å snakke med Pi via SSH (selv om jeg skal prøve å gjøre instruksjonene så omfattende som praktisk mulig). Det er også skrevet på britisk engelsk, så hvis du leser på den andre siden av dammen, kan du ignorere de ekstra bokstavene i ord og de merkelige navnene på ting (for eksempel 'strømnettet', som du vil kjenne som noe som 'stikkontakter').

Eventuelle kommentarer, foreslåtte forbedringer og bruk etc. er også veldig velkomne!

Trinn 1: Forberedelse av saken

Saksforberedelse
Saksforberedelse
Saksforberedelse
Saksforberedelse
Saksforberedelse
Saksforberedelse

Jeg brukte en gammel TP-Link TD-W8960N-ruter for dette prosjektet. Det er en fin størrelse, og en gang hadde jeg funnet ut hvordan jeg skulle komme inn i den, ganske lett å jobbe med.

Jeg beholdt også ruterens 12v @ 1A strømforsyning, som er litt under strøm, men i praksis er OK for denne applikasjonen.

Å åpne saken handler om å fjerne to skruer i bunnen av saken og deretter bruke et nysgjerrig verktøy rundt kanten på saken for å lette klemmene. De to skruene er under gummiføttene på baksiden av saken (se røde piler). De vanskeligste klippene å åpne er de på forsiden, men jeg hadde tro og de bøyde seg til mitt lirkeverktøy.

Når saken er åpen, løsner du de to mutrene på antennekontaktene, og kretskortet kan løftes ut.

Siden du skal bruke begge antennene senere, løsner du koaksialledningene på kretskortet og legger dem til side.

Hvis du føler deg modig (som jeg var), kan du fjerne trykkbryteren, likestrømkontakten og RJ45 -kontaktene fra kretskortet. Den beste måten jeg har funnet på å gjøre dette på, er å klemme brettet i en skrue og påføre varme fra en varmepistol mens du verdsetter et passende tynt åpningsverktøy eller en skrutrekker. Logikken er at alle loddetilkoblingene smeltes samtidig, noe som reduserer den totale varmestressen på komponentens plastkasse sammenlignet med bruk av et loddejern på hvert kryss. Det er i det minste teorien. I praksis er litt flaks involvert! Hvor mye varme du skal bruke er et spørsmål om vurdering, men vær forsiktig og ta feil på siden av for lite. Hvis alt går bra, vil du ende opp med de brukbare komponentene som vises på bildet (men du vil merke den smeltede bryteren og den litt deformerte RJ45 -sokkelisten!).

Ellers går det til internett for å kjøpe bitene dine.

Trinn 2: Deleliste

Raspberry Pi - Jeg mistenker at enhver smak vil gjøre, men jeg brukte en 3B+

433MHz senderkort - søk på eBay etter '433MHz RF -sender med mottakersett for Arduino Arm Mcu Wireless' eller lignende

433MHz mottakerbord - ditto. Vanligvis 1,98 kr per par

LM2596 Buck regulator - eBay, vanligvis £ 1,95. For å konvertere 12v strøm til 5v for Pi

Lysrør - søk på eBay etter 'Fiber Optic Cable - 0.25 / 0.5 / 0.75 / 1 / 1.5 / 2 / 2.5 / 3mm Dia - Light Guide' - jeg brukte 2mm rør, men 1.5mm hadde vært lettere å jobbe med (jeg betalte £ 2,95 for 1 m)

2 -polet miniatyrbryter (fint å ha, men valgfritt)

USB type A 180 ° loddbar kontakt - via eBay betalte jeg 1,90 pund for ti

To -polet trykkbryter (fint å ha, men valgfritt) - Jeg fikk min fra modemet/ruterkortet

RJ45 -kontakt (er) - gjenopprettet fra modem/ruterkort

DC -stikkontakt - via eBay (10X DC Power Supply Jack Socket Female Panel Mount Connector 5.5 x 2.1mm £ 0.99)

430MHz antenner - konverter modemet/ruteren 2GHz antenner

12v likestrøm 12W strømforsyning (minimum) - ideelt sett kommer dette med modemet/ruteren. Hvis ikke, må du kontrollere at likestrømkontakten ovenfor samsvarer med den du bruker. 12v -kravet bestemmes av 433MHz senderen

Delene til kjøleviftemodusen vil bli detaljert i en senere instruksjonsbok.

Trinn 3: Forbruksvarer og verktøy

Du trenger følgende forbruksvarer:

Lodding (etter behov)

Smeltelim (etter behov)

Koble til ledning - (f.eks.) 22 og 24AWG (etter behov)

Varmekrympemuff (etter behov)

Offerkatt. 5 Ethernet -patchkabel

Offer USB 2 patch -kabel.

Verktøy:

Wire strippere

Trådkuttere (helst spyleskjær)

Prisverktøy

Egnet skrutrekker for å ta saken fra hverandre.

Loddejern

Limpistol

Hårføner (for å bøye lysrørene og for eventuelle improviserte frisørsvingninger)

433MHz FM -kommunikasjonsmottaker (valgfritt - for feilsøking av senderproblemer) - (f.eks.) AR1000

Trinn 4: Montering

montering
montering
montering
montering
montering
montering
montering
montering

Hvordan du monterer Pi og tilleggskort avhenger av saken du bruker. Bildene viser hva jeg gjorde.

Pi sitter omtrent midt i saken, slik at det er nok plass til de forskjellige kontaktene (merk at HDMI ikke brukes som Pi kommuniseres med via SSH (dvs.) 'hodeløs').

Jeg festet Pi til basen ved hjelp av et par redde plastfester (se bilde). Ettersom esken ikke er beregnet for bærbar bruk, kan du slippe unna med bare to festeanordninger. Du kan enkelt bruke 2,5 mm skruer med avstandsstykker eller til og med smeltelim (som jeg har brukt tidligere-bare pass på at du ikke bruker for mye og unngå overflatemonteringskomponenter på undersiden som du uunngåelig vil ha for å fjerne brettet på et tidspunkt (første konstruksjonslov - du må ta det fra hverandre)).

Jeg brukte varmt lim for å fikse de forskjellige platene på sidene av saken. De samme hensynene som ovenfor gjelder.

Når alt er på plass kan du koble til ting.

Blokkediagrammet viser koblingsskjemaet jeg brukte. Vær oppmerksom på at jeg bruker den valgfrie vippebryteren for å bytte strøm mellom sender og mottakerbord - det er sannsynligvis liten risiko for å gjøre det, men jeg ville ikke steke mottakeren når jeg sendte.

Det gikk også opp for meg at trykkbryteren kunne ha blitt brukt til å slå av Pi grasiøst (det finnes en rekke design tilgjengelig på internett). Jeg gadd ikke - i dette tilfellet fungerer det som en enkel på/av -bryter. Jeg må bare være forsiktig med å slå av Pi via SSH før jeg trykker på bryteren.

Du vil merke lysrørene som brukes til å kanalisere lyset fra de to lysdiodene på Pi og fra strømforsyningsstatus -LED -en til forsiden av saken. Jeg brukte varme fra en hårføner for å bøye rørene (du vil definitivt IKKE bruke varmepistol!). Det er veldig prøving og feiling, men til slutt verdt det, da du direkte kan se hva lysdiodene signaliserer i stedet for å stole på programvare og eksterne lysdioder. Det er selvfølgelig ditt valg. Kutting av rørene gjøres med et skarpt par trådkuttere (spyleskjær er best), men du kan også bruke en skarp saks. Igjen kan smeltelim brukes til å fikse rørene på plass, men vær forsiktig med å bare bruke en liten mengde - som avkjøles raskt - ettersom limet kan forvride rørene.

Ideelt sett bør du endre antennene. De vil vanligvis ha en størrelse på 2 GHz og vil lage svært ineffektive antenner når de brukes på 433 MHz.

For å gjøre dette, må du først fjerne antennedekselet for å avsløre antennekabelen. Jeg tror jeg var heldig da dekselet kom av hver antenne med bare en liten mengde premier.

Klipp der det vises for å fjerne den originale 2 GHz-antennen og avsløre ko-øksen. Få forsiktig tilgang til den indre kjernen, fjern flettet godt unna og lodd den til et nytt stykke tråd som vist. Lengden på den nye ledningen er omtrent en 1/4 bølgelengde på 433MHz (dvs.) lengde = 0,25 * 3E8/433E6 = 17cm. Den nedre delen kan vikles med en liten borekrone eller lignende for å la hele lengden passe inn i antennedekselet.

Kontroller at det ikke er kortslutning mellom de indre og ytre antennekontaktene før du setter dem på plass igjen.

Jeg har kun modifisert senderantennen som en "døv" mottaker er sannsynligvis en fordel når jeg lærer RF -fjernkontrollkodene (se senere).

Ethernet -tilkoblingen opprettes ved å koble en offerkatt. 5 sammenkoblingskabel til RJ45 -kontakten reddet fra modemet. Kutt kabelen slik at den passer til avstanden mellom Pi ethernet -kontakten og RJ45 -sokkelkontakten, og blott alle åtte ledninger. Bruk en kontinuitetstester for å sikre at du kobler kabelpinne 1 til stikkontakt 1 osv. En enkel måte å gjøre dette på er å koble kontakten til kontakten du kobler til og ringe mellom stikkontaktene og de bare kabelendene. Siden bare en av de fire eksterne RJ45 -kontaktene brukes, merker du den kablede kontakten tilsvarende for å unngå pinlige feil senere.

På samme måte er USB -kontakten tilkoblet ved hjelp av en offer USB 2 patch -kabel, kablet pin 1 til pin 1 etc. Omverdenen USB -kontakt er varmt limt på plass på saken, ved hjelp av hullet i etuiet som er igjen av telefonlinjen.

Trinn 5: Sendernotater

Sendernotater
Sendernotater
Sendernotater
Sendernotater
Sendernotater
Sendernotater

433MHz sende- og mottakstavler jeg brukte er allestedsnærværende på internett, og da de er så billige bestilte jeg to par av hver (for å tillate eksperimentelle cock-ups). Jeg fant ut at mottakerne var pålitelige, men senderen jeg brukte trengte modifisering for å få den til å fungere pålitelig.

Kretsen til FS1000A -senderen jeg kjøpte* er vist i diagrammet. Jeg fant ved prøving og feiling at en 3pF kondensator måtte installeres i C1 SoT -posisjonen (velg på test) for å få tingen til å fungere. Siden jeg har en bredbåndsmottaker som dekker 430 MHz, var det relativt enkelt å feilsøke dette. Hvordan du kan teste uten mottaker er et interessant spørsmål ….

*Merk: Jeg kjøpte en ny masse sendere etter at jeg ikke kunne få de to første til å fungere. Disse manglet alle kollektorspolen. Hmmm!

Jeg hadde en 3pF kondensator i søppelboksen min, men dette vil ikke være tilfelle for de fleste tror jeg, og i alle fall kan verdien som trengs være mer, si 7pF. En grov erstatning kan gjøres med to biter av tvunnet ledning (tvunnet kabel fra min bekjente har en kapasitans på rundt 100pF per fot for å gi deg en guide til lengden), men det anbefales ikke, da andre problemer kan oppstå. Forhåpentligvis vil du være heldig, og du vil ikke ha noe slikt problem. Du kan alltid kjøpe en dyrere (og derfor sannsynligvis) bedre laget sender.

Vær oppmerksom på at senderens frekvens ikke er veldig presis eller stabil, men har i praksis vært god nok til å betjene de eksterne kontaktene på en pålitelig måte.

Vær også oppmerksom på at det hullede hullet ved siden av ordet ANT på senderen IKKE er antennetilkoblingen - det er det i hjørnet uten merking (se bilde). Dette var den første feilen jeg gjorde ….

Pinnetilkoblingen som er nyttig merket "ATAD" skal selvfølgelig lese "DATA".

Trinn 6: Oversikt over programvare

Oversikt over programvare
Oversikt over programvare

Vær oppmerksom på at jeg ikke er noen programmerer. Som nevnt tidligere, er de smarte tingene andres kode, men jeg vet nok til å knipe den og tilpasse den for å få den til å fungere sammen. Dette er også den første instruerbare jeg har publisert med kode i, så beklager hvis jeg har gjort det feil! Vær oppmerksom på det hvis du har spørsmål …

Den grunnleggende programvaren jeg brukte er som følger:

  • Raspbian Stretch Lite
  • PiGPIO (et fantastisk bibliotek for å kjøre servoer etc.)
  • _433.py -kode (for å kode og dekode RF -kontrollkoder) - koblet til fra PiGPIO -nettstedet.
  • Python3 (kommer med Raspbian)

Ekstra programvare som jeg bruker:

  • pyephem (beregner daggry og skumringstider - nyttig for lysskifte)
  • Den utmerkede 'Tasker' og 'AutoTools SSH' for å lage en fjernkontroll på min Android -telefon - se bildet (begge tilgjengelige i Google Play -butikken). [Hvordan lage en Tasker 'scene' er utenfor omfanget av denne Instructable, da det er en ganske bratt læringskurve involvert, men jeg er glad for å diskutere hva jeg gjorde]

Min egen kode (i Python). Grovt, men funksjonelt:

  • tx.py - meny og/eller kommandolinjeargumentprogramvare som sender riktig kode til 433MHz senderen.
  • dawn -dusk - beregner daggry og skumringstider på min plassering og oppdaterer brukerens crontab (brukes til juletrelys etc.)

Den personlige koden ovenfor er tilgjengelig via GitHub:

Prosjektets funksjonalitet er levert av PiGPIO- og _433.py -koden. Sistnevnte har en mottaksfunksjon som lytter etter fjernkontrollkommandoer fra din 433MHz RF -fjernkontroll og avkoder timingimpulsene, og produserer en utgang som kan lagres for senere bruk av sendefunksjonen. Dette gjør at systemet kan lære hvilken som helst "normal" 433MHz RF -fjernkontroll. I prinsippet kan den også brukes til å lære naboens RF -fjernkontroller også. Jeg vil fraråde dette sterkt, siden naboer sjelden ser den morsomme siden av tilfeldig ringende dørklokker. Jeg ville ikke.

Oppsett

Siden Pi i denne applikasjonen kjøres 'hodeløs' (dvs.) uten skjerm eller tastatur, må du snakke med den via ssh. Det er mange guider tilgjengelig som dekker hvordan du setter opp en Pi hodeløs, men for å holde ting enkelt, antar jeg at du først starter Pi med en skjerm og et tastatur. Etter oppstart starter terminalen og skriver 'sudo raspi-config'. Velg '5. Grensesnittalternativer 'og deretter' P2 SSH '. Aktiver ssh-serveren og lukk raspi-config (som sannsynligvis vil ende med en omstart).

Etterfølgende kommandoer med Pi kan deretter utføres fra en ekstern terminal via ssh. Vær oppmerksom på at koden ikke krever en fast LAN IP -adresse for Pi, men det hjelper absolutt (og det er absolutt nødvendig hvis du går nærmere inn på Tasker -kontroll). Igjen, det er mange opplæringsprogrammer på nettet som dekker hvordan du gjør dette. Hjemruteren min lar meg tilordne en fast IP -adresse til Pi's MAC -adresse, så jeg gjør det på den måten, i stedet for å redigere Pi -oppsettet.

Installere PiGPIO:

ssh inn i Pi og skriv inn følgende kommandoer:

sudo apt oppdatering

sudo apt installer pigpio python-pigpio python3-pigpio

sudo apt installere git

git -klon

sudo apt installer python3-RPi. GPIO

Slik kjører du PiGPIO ved oppstart:

crontab -e

legg til følgende linje:

Få Python -koden for overføring og dekoding av 433MHz RF -fjernkoder:

wget

pakke ut _433_py.zip

Flytt den utpakkede _433.py til en passende katalog (f.eks) ~/software/apps

Skriver (i den katalogen)

_433.py

setter Pi i 433 rx -modus og venter på demodulerte RF -fjernkontrollkoder på GPIO pin 38.

Med 433MHz mottakeren tilkoblet, når en 433MHz fjernkontroll brukes i nærheten, vil noe som følgende data bli sett på skjermen:

kode = 5330005 bits = 24 (gap = 12780 t0 = 422 t1 = 1236)

Disse dataene brukes i ditt Python -program for å regenerere overføringen fra fjernkontrollen.

For å koble disse dataene til en fil for senere bruk, kjør:

_433.py> ~/software/apps/remotedata.txt

Når du har fått dataene, er neste trinn å bruke dem til å redigere 'tx.py' -koden du kan kopiere fra GitHub -depotet mitt. Denne koden bruker dataene til å generere bølgeformer forstått av fjernkontakten (e) som skal overføres av 433MHz senderen. Forhåpentligvis vil de nødvendige redigeringene være rimelig åpenbare, og resten er opp til deg ….

Anbefalt: