Innehållsförteckning:

Raspberry Pi RF Fjärrstyrda eluttag (strömkontakter): 6 steg
Raspberry Pi RF Fjärrstyrda eluttag (strömkontakter): 6 steg

Video: Raspberry Pi RF Fjärrstyrda eluttag (strömkontakter): 6 steg

Video: Raspberry Pi RF Fjärrstyrda eluttag (strömkontakter): 6 steg
Video: Raspberry PI control of RC car by synthesising RF signals 2024, Juli
Anonim
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)
Raspberry Pi RF fjärrstyrda eluttag (strömkontakter)

Styr billiga 433MHz eluttag (vägguttag) med en Raspberry Pi. Pi kan lära sig kontrollkoderna från uttagens fjärrkontroll och använda dem under programkontroll för att aktivera alla eller alla fjärrkontakter i hela huset.

Designen förlitar sig inte på extern internetanslutning (dvs.) 'Internet of Things' och är därför (IMHO) mycket säkrare än webbaserade kontroller. Som sagt, jag försökte integrera med Google Home men tappade snabbt viljan att leva när kommandon ibland tog flera tiotals sekunder att köra eller aldrig köras alls.

En uppenbar applikation runt juletid är att kontrollera julgransljus och (om du är så benägen) yttre displaybelysning. Även om det är en enkel användning, kommer du genom att bygga denna Instructable att få en superflexibel sockelkontroll som kan svara på sensoringångar och andra enheter i ditt hemnätverk, till exempel Raspberry Pis som kör Linux Motion.

Till exempel har jag en uppsättning kökslampor som tänds när en kamera som kör 'Motion' detekterar rörelse i köket och sedan stänger av dem efter fem minuters aktivitet. Det fungerar riktigt bra!

Med 'Tasker' och 'AutoTools SSH' från Google Play-butiken kan du ställa in alla möjliga snygga telefonbaserade fjärrkontroller.

Projektet bygger på billiga 433MHz mottagare och sändarkort som är allmänt tillgängliga på eBay. Dessa är kompatibla med (i Storbritannien minst) 433MHz fjärrkontakter som säljs med fjärrkontroller. Mitt projekt innehåller en mottagare så att nya fjärrkontrollkommandon enkelt och snabbt kan införlivas. En punkt att notera - fjärrkontakter som finns tillgängliga i Storbritannien verkar komma i två varianter - de med ett ID programmerat av en strömbrytare på uttaget och de som är beroende av programmering från fjärrkontrollen. Detta projekt är kompatibelt med båda men de förra tappar inte sin identitet vid strömavbrott och är därför att föredra.

Projektet använder ett gammalt routerfodral - jag har några av dessa och de har mycket praktiskt taget de flesta nödvändiga externa kontakterna, till exempel ström, ethernet, USB och antenner. Vad du använder beror på vad du har tillgängligt så den här instruktionsboken är förmodligen mer användbar som en allmän guide snarare än en steg-för-steg-uppsättning instruktioner.

Även om det inte är absolut nödvändigt för detta projekt, har jag också lagt till en kylfläkt och styrkort. Utan fläkt kan Pi bli ganska varm (cirka 60 ° C). Detaljer kan lämnas i en senare instruktionsbok.

Jag borde nämna att jag inte är någon programmerare. Programvaran är (mestadels) skriven i Python och de smarta sakerna kopieras från människor som vet vad de gör. Jag har erkänt källorna där jag kan - om jag har missat några, vänligen meddela mig så rättar jag texten.

The Instructable förutsätter viss lödningsförmåga och en förbigående bekantskap med Python, Bash och att prata med din Pi via SSH (även om jag ska försöka göra instruktionerna så omfattande som möjligt). Det är också skrivet på brittisk engelska, så om du läser på andra sidan dammen, ignorera de extra bokstäverna i ord och de udda namnen på saker (till exempel 'eluttag', som du kommer att känna till något liknande 'vägguttag').

Alla kommentarer, förbättringsförslag och användningsområden etc. är också mycket välkomna!

Steg 1: Förberedelse av ärende

Fallförberedelse
Fallförberedelse
Fallförberedelse
Fallförberedelse
Fallförberedelse
Fallförberedelse

Jag använde en gammal TP-Link TD-W8960N-router för detta projekt. Det är en fin storlek och när jag väl hade kommit fram till hur jag skulle komma in i den, ganska lätt att arbeta med.

Jag behöll också routerns 12v @ 1A strömförsörjning, som är lite underdriven men i praktiken är OK för den här applikationen.

Att öppna höljet är att ta bort två skruvar i botten av höljet och sedan använda ett nyfiket verktyg runt kanten på höljet för att underlätta att clipsen öppnas. De två skruvarna sitter under gummifötterna på baksidan av fodralet (se röda pilar). De svåraste klippen att öppna är de på framsidan men jag hade tro och de böjde sig mot mitt bända verktyg.

När höljet är öppet, lossa de två muttrarna på antennkontakterna och kretskortet kan lyftas ut.

Eftersom du kommer att använda båda antennerna senare, lossar du koaxialledningarna vid kretskortet och lägger dem åt sidan.

Om du känner dig modig (som jag var) kan du ta bort tryckknappen, DC -uttaget och RJ45 -uttagen från kretskortet. Det bästa sättet jag har hittat för att göra detta är att klämma fast brädan i en skruv och applicera värme från en värmepistol medan du prisar med ett lämpligt tunn öppningsverktyg eller en skruvmejsel. Logiken är att alla lödanslutningar smälts samtidigt, vilket minskar den totala värmespänningen på komponentens plasthölje jämfört med att använda ett lödkolv på varje korsning. Det är åtminstone teorin. I praktiken är lite tur inblandat! Hur mycket värme som ska appliceras är en bedömningsfråga men var försiktig och ta fel på sidan av för lite. Om allt går bra kommer du att få de användbara komponenterna som visas på bilden (men du kommer att notera den smälta omkopplarvredet och den något deformerade RJ45 -sockelremsan!).

Annars går det till internet för att köpa dina bitar.

Steg 2: Dellista

Raspberry Pi - Jag misstänker att någon smak kommer att göra men jag använde en 3B+

433MHz sändarkort - sök på eBay efter '433MHz RF -sändare med mottagarsats för Arduino Arm Mcu Wireless' eller liknande

433MHz mottagarkort - ditto. Vanligtvis £ 1,98 per par

LM2596 Buckregulator - eBay, vanligtvis £ 1,95. För att konvertera 12v effekt till 5v för Pi

Ljusrör - sök eBay efter 'Fiber Optic Cable - 0.25 / 0.5 / 0.75 / 1 / 1.5 / 2 / 2.5 / 3mm Dia - Light Guide' - Jag använde 2mm rör men 1.5mm hade varit lättare att arbeta med (jag betalade £ 2,95 för 1m)

2 -polig miniatyrströmställare (trevligt att ha men valfritt)

USB typ A 180 ° lödbart uttag - via eBay betalade jag 1,90 pund för tio

Dubbelpolig tryckbrytare (trevligt att ha men valfritt) - Jag fick min från modemet/routerkortet

RJ45 -uttag - återställs från modem/routerkort

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

430 MHz antenner - konvertera modem/routerns 2 GHz antenner

12v DC 12W strömförsörjning (minimum) - helst kommer detta med modemet/routern. Om inte, måste du se till att likströmslocket ovan matchar det du använder. 12v -kravet bestäms av 433MHz -sändaren

Delarna för kylfläktmod kommer att detaljeras i en senare instruktionsbok.

Steg 3: Förbrukningsartiklar och verktyg

Du behöver följande förbrukningsmaterial:

Lödning (efter behov)

Smältlim (efter behov)

Anslutningskabel - (t.ex.) 22 & 24AWG (efter behov)

Värmekrymphylsa (efter behov)

Offerkatt. 5 Ethernet -patchkabel

Uppoffrande USB 2 -patchkabel.

Verktyg:

Wire strippers

Trådskärare (helst spolskärare)

Prisverktyg

Lämplig skruvmejsel för att ta isär höljet.

Lödkolv

Limpistol

Hårtork (för att böja ljusrören och för eventuella improviserade frisöravbrott)

433MHz FM -kommunikationsmottagare (tillval - för felsökning av sändarproblem) - (t.ex.) AR1000

Steg 4: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Hur du monterar Pi och tilläggskort beror på det fall du använder. Bilderna visar vad jag gjorde.

Pi sitter ungefär i mitten av fodralet, så att det finns tillräckligt med utrymme för de olika kontakterna (notera att HDMI inte används som Pi kommuniceras med via SSH (dvs.) 'headless').

Jag fäst Pi på basen med ett par bärgade plastfästen (se bild). Eftersom lådan inte är avsedd för bärbar användning kan du komma undan med att bara använda två fästelement. Du kan enkelt använda 2,5 mm skruvar med avstånd eller till och med smältlim (som jag har använt tidigare-var noga med att inte använda för mycket och undvik ytmonterade komponenter på undersidan som du oundvikligen kommer att ha för att ta bort brädet någon gång (första bygglagen - du måste ta isär det)).

Jag använde varmt lim för att fixa de olika brädorna på sidorna av fodralet. Samma överväganden som ovan gäller.

När allt är på plats kan du koppla ihop saker.

Blockschemat visar kopplingsschemat jag använde. Observera att jag använder den valfria omkopplaren för att växla mellan sändare och mottagarkort - det är nog liten risk att göra det men jag ville inte steka mottagaren vid sändning.

Det kom också upp för mig att tryckknappen kunde ha använts för att graciöst stänga av Pi (det finns ett antal mönster tillgängliga på internet). Jag störde mig inte - i det här fallet fungerar det som en enkel strömbrytare. Jag måste bara vara försiktig med att stänga av Pi via SSH innan jag trycker på strömbrytaren.

Du kommer att notera de ljusrör som används för att kanalisera ljuset från de två lysdioderna på Pi och från strömförsörjningens status -LED till framsidan av fodralet. Jag använde värme från en hårtork för att böja rören (du vill definitivt inte använda en värmepistol!). Det är mycket försök och fel men värt i slutändan eftersom du direkt kan se vad lysdioderna signalerar snarare än att förlita sig på programvara och externa lysdioder. Det är självklart ditt val. Skärning av rören görs med ett vass par trådskärare (spolskärare är bäst) men du kan också använda vass sax. Återigen kan smältlim användas för att fixera rören på plats, men var försiktig med att bara använda en liten mängd - som svalnar snabbt - eftersom limmet kan snedvrida rören.

Helst bör du ändra antennerna. De kommer vanligtvis att vara dimensionerade för att fungera vid 2 GHz och kommer att göra mycket ineffektiva antenner när de används vid 433 MHz.

För att göra detta bör du först ta bort antennskyddet för att avslöja antennkabeln. Jag tror att jag hade tur eftersom locket kom av varje antenn med bara en liten mängd priser.

Klipp där det visas för att ta bort den ursprungliga 2 GHz antennen och avslöja koaxeln. Ta försiktigt åt den inre kärnan, ta bort flätan väl bort och löd den till en ny tråd som visas. Längden på den nya tråden är ungefär en 1/4 våglängd på 433MHz (dvs) längd = 0,25 * 3E8/433E6 = 17cm. Den nedre delen kan lindas med en liten borr eller liknande så att hela längden får plats i antennskyddet.

Kontrollera före montering att det inte är en kortslutning mellan de inre och yttre antennkontakterna.

Jag modifierade bara sändarantennen eftersom en "döv" mottagare förmodligen är fördelaktig när jag lär mig RF -fjärrkontrollkoder (se senare).

Ethernet -anslutningen görs genom att ansluta en offerkatt. 5 anslutningskabel till RJ45 -uttaget som räddats från modemet. Klipp av kabeln så att den passar avståndet mellan Pi ethernet -uttaget och RJ45 -uttaget och blott alla åtta ledningar. Använd en kontinuitetstester för att säkerställa att du kopplar kabelstift 1 till uttagstapp 1 etc. Ett enkelt sätt att göra detta är att ansluta kontakten till uttaget du kopplar till och ringa mellan uttagskontakterna och de enda kabeländarna. Eftersom endast ett av de fyra externa RJ45 -uttagen används, markerar du det trådbundna uttaget därefter för att undvika pinsamma fel senare.

På samma sätt är USB -kontakten ansluten med en offerkabel USB 2 -patchkabel, kabelnål 1 till stift 1 etc. Omvärldens USB -kontakt limmas på plats på fodralet med hålet i höljet som lämnas av telefonuttaget.

Steg 5: Sändaranteckningar

Sändaranteckningar
Sändaranteckningar
Sändaranteckningar
Sändaranteckningar
Sändaranteckningar
Sändaranteckningar

433MHz sändnings- och mottagningskort jag använde är allestädes närvarande på internet och eftersom de är så billiga beställde jag två par av varje (för att möjliggöra experimentella cock-ups). Jag fann att mottagarna var pålitliga men sändaren jag använde behövde modifieras för att den skulle fungera pålitligt.

Kretsen för FS1000A -sändaren som jag köpte* visas i diagrammet. Jag fann genom försök och fel att en 3pF kondensator behövde installeras i C1 SoT (välj på test) position för att få saken att fungera. Eftersom jag har en bredbandsmottagare som täcker 430 MHz var det relativt enkelt att felsöka detta. Hur du kan testa utan mottagare är en intressant fråga ….

*Obs! Jag köpte en andra massa sändare efter att jag inte kunde få de två första att fungera. Dessa saknade alla samlarspolen. Hmmm!

Jag hade en 3pF kondensator i min skräpbox men detta kommer inte att vara fallet för de flesta antar jag och värdet som behövs kan vara mer, säg 7pF. En rå ersättning kan göras med två bitar av vriden tråd (tvungen parkabel från min bekant har en kapacitans på cirka 100pF per fot för att ge dig en guide till längden) men det rekommenderas inte eftersom andra problem kan uppstå. Förhoppningsvis har du tur och har inga sådana problem. Du kan alltid köpa en dyrare (och därför troligen) bättre gjord sändare.

Observera också att sändarens frekvens inte är särskilt exakt eller stabil men har i praktiken varit tillräckligt bra för att på ett tillförlitligt sätt styra fjärrkontakten.

Observera också att det pläterade hålet intill ordet 'ANT' på sändaren INTE är antennanslutningen - det är det i hörnet utan märkning (se bild). Detta var det första misstaget jag gjorde ….

Stiftanslutningen som är märkt med "ATAD" borde naturligtvis läsa "DATA".

Steg 6: Programöversikt

Programvaruöversikt
Programvaruöversikt

Kom ihåg att jag inte är någon programmerare. Som tidigare nämnts är de smarta grejerna andras kod men jag vet tillräckligt för att nypa den och anpassa den för att få den att fungera tillsammans. Detta är också den första instruerbara jag har publicerat med kod in, så ber om ursäkt om jag har gjort det fel! Om du har några frågor, kom ihåg det …

Den grundläggande programvaran jag använde är följande:

  • Raspbian Stretch Lite
  • PiGPIO (ett fantastiskt bibliotek för att köra servon etc.)
  • _433.py -kod (för att koda och avkoda RF -kontrollkoder) - länkad till från PiGPIO -webbplatsen.
  • Python3 (levereras med Raspbian)

Ytterligare programvara som jag använder:

  • pyephem (beräknar grynings- och skymningstider - användbart för ljusbyte)
  • Den utmärkta 'Tasker' och 'AutoTools SSH' för att skapa en fjärrkontroll på min Android -telefon - se foto (båda tillgängliga i Google Play -butiken). [Hur man skapar en Tasker "scen" ligger utanför tillämpningsområdet för denna Instructable eftersom det är en ganska brant inlärningskurva involverad men jag diskuterar gärna vad jag gjorde]

Min egen kod (i Python). Ojämnt men funktionellt:

  • tx.py - meny- och/eller kommandoradsargumentprogramvara som skickar lämplig kod till 433MHz -sändaren.
  • dawn -dusk - beräknar grynings- och skymningstider på min plats och uppdaterar användarens crontab (används för julgransljus etc.)

Ovanstående personliga kod kan nås via GitHub:

Projektets funktionalitet tillhandahålls av PiGPIO- och _433.py -koden. Den senare har en mottagningsfunktion som lyssnar efter fjärrkontrollkommandon från din 433MHz RF -fjärrkontroll och avkodar tidspulserna, vilket ger en utgång som kan lagras för senare användning av sändningsfunktionen. Detta gör att systemet kan lära sig vilken "normal" 433MHz RF -fjärrkontroll som helst. I princip kan den också användas för att lära dig grannens RF -fjärrkontroller också. Jag skulle avråda starkt från detta eftersom grannar sällan ser den roliga sidan av slumpmässigt ringande dörrklockor. Jag skulle inte.

Uppstart

Eftersom Pi i den här applikationen körs 'utan huvud' (dvs.) utan bildskärm eller tangentbord, måste du prata med den via ssh. Det finns gott om guider som täcker hur man konfigurerar en Pi utan huvud, men för att hålla sakerna enkla antar jag att du först startar Pi med en bildskärm och ett tangentbord. När du har startat startar du terminalen och anger 'sudo raspi-config'. Välj '5. Gränssnittsalternativ 'och sedan' P2 SSH '. Aktivera ssh-servern och stäng raspi-config (som förmodligen slutar med en omstart).

Efterföljande kommandon med Pi kan sedan utföras från en fjärrterminal via ssh. Observera att koden inte kräver en fast LAN -IP -adress för Pi men det hjälper verkligen (och det är verkligen nödvändigt om du fördjupar dig i Tasker -kontroll). Återigen finns det massor av självstudier på nätet som täcker hur man gör detta. Min hemrouter låter mig tilldela Pi: s MAC -adress en fast IP -adress, så jag gör det på det sättet, snarare än genom att redigera Pi: s inställningar.

Installera PiGPIO:

ssh i Pi och ange följande kommandon:

sudo apt uppdatering

sudo apt installera pigpio python-pigpio python3-pigpio

sudo apt installera git

git -klon

sudo apt installera python3-RPi. GPIO

Så här kör du PiGPIO vid start:

crontab -e

lägg till följande rad:

Få Python -koden för att sända och avkoda 433MHz RF -fjärrkoder:

wget

packa upp _433_py.zip

Flytta den uppackade _433.py till en lämplig katalog (t.ex.) ~/software/apps

Skrivning (i den katalogen)

_433.py

placerar Pi i 433 rx -läge och väntar på demodulerade RF -fjärrkontrollkoder på GPIO pin 38.

Med 433MHz -mottagaren ansluten, när en 433MHz fjärrkontroll används i närheten, kommer något liknande följande data att visas på skärmen:

kod = 5330005 bitar = 24 (gap = 12780 t0 = 422 t1 = 1236)

Denna data används i ditt Python -program för att regenerera överföringen från fjärrkontrollen.

Kör följande data till en fil för senare användning:

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

När du har fått informationen är nästa steg att använda den för att redigera 'tx.py' -koden som du kan kopiera från mitt GitHub -arkiv. Denna kod använder data för att generera vågformer som förstås av fjärrkontakten (s) som ska överföras av 433MHz -sändaren. Förhoppningsvis är de nödvändiga redigeringarna rimligen uppenbara och resten är upp till dig ….

Rekommenderad: