Taula de continguts:

Raspberry Pi RF Preses de xarxa controlades a distància (endolls): 6 passos
Raspberry Pi RF Preses de xarxa controlades a distància (endolls): 6 passos

Vídeo: Raspberry Pi RF Preses de xarxa controlades a distància (endolls): 6 passos

Vídeo: Raspberry Pi RF Preses de xarxa controlades a distància (endolls): 6 passos
Vídeo: Время начистить Плющу и Джокеру щебетало ► 3 Прохождение Batman: Arkham Asylum 2024, Juliol
Anonim
Raspberry Pi RF Preses de xarxa controlades a distància (endolls)
Raspberry Pi RF Preses de xarxa controlades a distància (endolls)
Raspberry Pi RF Preses de xarxa controlades a distància (endolls)
Raspberry Pi RF Preses de xarxa controlades a distància (endolls)
Preses de xarxa controlades a distància per Raspberry Pi RF (endolls)
Preses de xarxa controlades a distància per Raspberry Pi RF (endolls)
Preses de xarxa controlades a distància per Raspberry Pi RF (endolls)
Preses de xarxa controlades a distància per Raspberry Pi RF (endolls)

Controleu preses de corrent de 433 MHz (sortides de paret) econòmiques mitjançant un Raspberry Pi. El Pi pot aprendre els codis de control que es generen des del control remot dels endolls i utilitzar-los sota el control del programa per activar qualsevol o tots els endolls remots de tota la casa.

El disseny no es basa en la connectivitat a Internet externa (és a dir) "Internet de les coses" i, per tant, és (IMHO) molt més segur que els controladors basats en web. Dit això, vaig provar la integració amb Google Home, però vaig perdre ràpidament la voluntat de viure quan les ordres de vegades trigaven diverses desenes de segons a executar-se o mai no s’executaven mai.

Una aplicació òbvia al voltant de Nadal és controlar les llums dels arbres de Nadal i (si esteu inclinat d’aquesta manera) els llums de la pantalla exterior. Tot i que és un ús senzill, en crear aquest instructiu acabareu amb un controlador de sòcols súper flexible que pot respondre a les entrades del sensor i a altres dispositius de la vostra xarxa domèstica, com ara Raspberry Pis que executa Linux Motion.

Per exemple, tinc un conjunt de llums de cuina que s’encenen quan una càmera que funciona amb "Motion" detecta el moviment a la cuina i després els apaga després de cinc minuts sense activitat. Funciona molt bé!

Amb "Tasker" i "AutoTools SSH" de Google Play Store, podeu configurar tot tipus de comandaments remots basats en telèfons.

El projecte es basa en targetes de transmissors i receptors de 433 MHz barats disponibles a eBay. Són compatibles amb (almenys al Regne Unit) preses de corrent remotes de 433 MHz que es venen amb comandaments a distància. El meu projecte inclou un receptor, de manera que es poden incorporar conjunts de comandes de control remot fàcilment i ràpidament. Un punt a destacar: els endolls remots disponibles al Regne Unit semblen tenir dos sabors: els que tenen una identificació programada per un interruptor del sòcol i els que depenen de la programació des del control remot. Aquest projecte és compatible amb tots dos, però els primers no perden la seva identitat en un tall de corrent i, per tant, són preferibles.

El projecte utilitza una funda de router antiga: en tinc uns quants i tenen molt bé la majoria dels connectors externs necessaris, com ara alimentació, ethernet, USB i antenes. El que utilitzeu dependrà del que tingueu disponible, de manera que aquest Instructable és probablement més útil com a guia general en lloc d'un conjunt d'instruccions pas a pas.

Tot i que no és estrictament necessari per a aquest projecte, també he afegit un ventilador de refrigeració i una placa de control. Sense ventilador, el Pi pot escalfar-se força (aproximadament a 60 ° C). Els detalls es poden proporcionar en un instructable posterior.

He d’esmentar que no sóc cap programador. El programari està (sobretot) escrit en Python i les coses intel·ligents es copien de persones que saben el que fan. He reconegut les fonts on puc. Si he enyorat alguna, fes-me-ho saber i corregiré el text.

L’Instruible suposa una certa capacitat de soldadura i una familiaritat amb Python, Bash i parlar amb el vostre Pi mitjançant SSH (tot i que intentaré que les instruccions siguin tan completes com sigui possible). També està escrit en anglès britànic, de manera que si llegiu a l’altre costat de l’estany, ignoreu les lletres addicionals de les paraules i els noms estranys de les coses (com ara "preses de xarxa", que coneixereu com "sortides de paret").

Tots els comentaris, millores i usos suggerits, etc. també són molt benvinguts.

Pas 1: Preparació del cas

Preparació de casos
Preparació de casos
Preparació de casos
Preparació de casos
Preparació de casos
Preparació de casos

Vaig utilitzar un enrutador TP-Link TD-W8960N antic per a aquest projecte. Té una mida agradable i, un cop he après a treballar-hi, és molt fàcil de treballar.

També he conservat la font d'alimentació 12v @ 1A del router, que està una mica poc alimentada, però a la pràctica està bé per a aquesta aplicació.

Obrir la caixa és qüestió d’eliminar dos cargols a la part inferior de la caixa i, a continuació, utilitzar una eina indiscreta al voltant de la vora de la caixa per facilitar l’obertura dels clips. Els dos cargols es troben sota els peus de goma a la part posterior de la caixa (vegeu les fletxes vermelles). Els clips més difícils d’obrir són els de la part frontal, però tenia fe i es van inclinar cap a la meva eina d’expressió.

Un cop oberta la caixa, desfeu les dues femelles dels connectors de l'antena i es pot aixecar la placa de circuit.

Com més endavant utilitzarà les dues antenes, dessoldeu els cables coaxials de la placa de circuit i poseu-los a un costat.

Si us sentiu valent (tal i com ho feia jo), podeu treure l’interruptor de pressió, la presa de corrent continu i els endolls RJ45 de la placa de circuit. La millor manera que he trobat de fer-ho és fixar el tauler en un moll i aplicar calor des d'una pistola de calor mentre es premia amb una eina adequada d'obertura de caixa fina o un tornavís. La lògica és que totes les connexions de soldadura es fonen al mateix temps, reduint l’estrès tèrmic global de la caixa de plàstic del component en comparació amb l’ús d’un soldador a cada unió. Aquesta és la teoria almenys. A la pràctica, hi ha una mica de sort! La quantitat de calor que cal aplicar és una qüestió de criteri, però aneu amb compte i equivoqueu-vos per poc. Si tot va bé, acabareu amb els components utilitzables que es mostren a la foto (tot i això, fixareu-vos en el comandament del commutador fos i en la presa de presa RJ45 lleugerament deformada!).

En cas contrari, passa a Internet per comprar els vostres bits.

Pas 2: llista de peces

Raspberry Pi: sospito que qualsevol sabor farà, però he utilitzat un 3B +

Tauler transmissor de 433 MHz: cerqueu a eBay "Transmissor de RF de 433 MHz amb kit de receptor per a Arduino Arm Mcu Wireless" o similar

Tauler receptor de 433 MHz: ídem. Normalment, 1,98 lliures per parell

LM2596 Regulador Buck: eBay, normalment 1,95 GBP. Per convertir la potència de 12v a 5v per al Pi

Tub de llum: cerqueu a eBay "Cable de fibra òptica - 0,25 / 0,5 / 0,75 / 1 / 1,5 / 2 / 2,5 / 3mm de diàmetre - Guia de llum" - He utilitzat canonades de 2 mm, però hauria estat més fàcil treballar amb 1,5 mm (he pagat £ 2,95 per 1m)

Interruptor de palanca en miniatura de 2 pols (bonic, però opcional)

Connector USB tipus A soldable de 180 °: mitjançant eBay, he pagat 1,90 lliures per deu

Polsador dual polsador (és bo tenir-ho però opcional): el meu el vaig obtenir de la placa del mòdem / enrutador

Connectors RJ45: recuperats de la placa del mòdem / enrutador

Presa d’alimentació de CC: via eBay (10X presa de subministrament d’alimentació de CC Connector femení de muntatge a panell 5,5 x 2,1 mm 0,99 €)

Antenes de 430 MHz: converteix les antenes de 2 GHz del mòdem / enrutador

Font d'alimentació de 12 V CC 12 W (mínim): l'ideal seria que arribi amb el mòdem / enrutador. Si no, heu d'assegurar-vos que el sòcol d'alimentació de CC coincideixi amb el que feu servir. El transmissor de 433 MHz determina el requisit de 12v

Les parts del mod de ventilador de refrigeració es detallaran en una instrucció posterior.

Pas 3: Consumibles i eines

Necessitareu els consumibles següents:

Soldadura (segons calgui)

Cola de fusió en calent (segons calgui)

Cable d'interconnexió - (per exemple) 22 i 24AWG (segons calgui)

Funda termorretractable (segons calgui)

Gat sacrificat. 5 cable de connexió ethernet

Cable de connexió sacrificial USB 2.

Eines:

Decapants de filferro

Talladors de filferro (preferiblement talladors a ras)

Eina de premis

Tornavís adequat per desmuntar la caixa.

Soldador

Pistola de cola

Assecador de cabells (per doblegar els tubs de llum i per a qualsevol interrupció improvisada de la perruqueria)

Receptor de comunicacions FM de 433 MHz (opcional - per resoldre problemes de transmissors) - (per exemple) AR1000

Pas 4: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge
muntatge

La forma de muntar els taulers Pi i auxiliars depèn del cas que utilitzeu. Les fotos mostren el que vaig fer.

El Pi es troba aproximadament al centre de la caixa, permetent que hi hagi prou espai per utilitzar els diversos connectors (tingueu en compte que l’HDMI no s’utilitza ja que el Pi es comunica mitjançant SSH (és a dir) "sense cap".

Vaig fixar el Pi a la base mitjançant un parell de tancaments de plàstic recuperats (veure foto). Com que la caixa no està pensada per a un ús portàtil, només podeu fer servir dos elements de fixació. Podeu utilitzar fàcilment cargols de 2,5 mm amb separadors o fins i tot cola de fusió en calent (que he utilitzat anteriorment), assegureu-vos de no fer-ne servir massa i evitar components de muntatge superficial a la part inferior, ja que inevitablement tindreu per retirar el tauler en algun moment (primera llei de construcció, l’haureu de desmuntar).

Vaig utilitzar cola calenta per fixar les diverses taules als costats de la caixa. S'apliquen les mateixes consideracions que les anteriors.

Un cop tot estigui al seu lloc, podreu connectar les coses.

El diagrama de blocs mostra l’esquema de cablejat que he utilitzat. Tingueu en compte que faig servir l’interruptor alternatiu opcional per alternar l’alimentació entre les plaques del transmissor i del receptor; probablement hi ha poc risc, però no volia fregir el receptor en transmetre.

També se'm va ocórrer que el polsador es podria haver utilitzat per apagar el Pi amb gràcia (hi ha diversos dissenys disponibles a Internet). No em vaig molestar: en aquest cas actua com un simple interruptor d’encesa / apagat. Només he de tenir cura de tancar el Pi mitjançant SSH abans de prémer l’interruptor.

Observareu els tubs de llum que s’utilitzen per canalitzar la llum des dels dos LED del Pi i des del LED d’estat de la font d’alimentació fins a la part frontal de la caixa. Vaig utilitzar la calor d’un assecador per doblegar les canonades (definitivament NO voleu utilitzar una pistola de calor!). És un assaig i un error, però al final val la pena, ja que podeu veure directament el que estan indicant els LED en lloc de confiar en el programari i els LED externs. És la vostra elecció, per descomptat. El tall de les canonades es realitza amb un parell de talladores de filferro afilades (les talladores a ras són les millors), però també podeu utilitzar tisores afilades. Una vegada més, la cola de fusió en calent es pot utilitzar per fixar les canonades al seu lloc, però tingueu cura d'utilitzar només una petita quantitat (que es refredi ràpidament), ja que la cola pot distorsionar les canonades.

L’ideal seria que modifiqueu les antenes. Normalment es dimensionaran per funcionar a 2 GHz i fabricaran antenes molt poc eficients quan s’utilitzen a 433 MHz.

Per fer-ho, primer heu de treure la tapa de l'antena per exposar el cable de l'antena. Crec que vaig tenir sort, ja que la coberta va sortir de cada antena amb només una petita quantitat de preus.

Tallar on es mostra per treure l'antena original de 2 GHz i exposar la co-ax. Accediu amb cura al nucli intern, traient-ne la trena i la soldeu amb un nou tros de fil, tal com es mostra. La longitud del nou cable té aproximadament una longitud d’ona de 1/4 de 433 MHz (és a dir) = 0,25 * 3E8 / 433E6 = 17 cm. La part inferior es pot enrotllar amb una broca petita o similar per permetre que tota la longitud s'adapti a la coberta de l'antena.

Abans de tornar-lo a muntar, comproveu que no hi hagi un curtcircuit entre els contactes de l'antena interior i exterior.

Només he modificat l’antena del transmissor perquè un receptor “sord” és probablement avantatjós a l’hora d’aprendre els codis de control remot de RF (vegeu més endavant).

La connexió ethernet es realitza mitjançant el cablejat d’un Cat sacrificial. 5 cable d'interconnexió a la presa RJ45 rescatada del mòdem. Talleu el cable per adaptar-lo a la distància entre el sòcol Pi ethernet i el sòcol RJ45 i descobreix els vuit cables. Utilitzeu un provador de continuïtat per assegurar-vos que connecteu el pin 1 del cable al pin 1, etc. Una manera senzilla de fer-ho és connectar el connector a la presa a la qual esteu connectant i aneu entre els contactes de la presa i els extrems del cable nu. Com que només s’utilitza un dels quatre endolls RJ45 externs, marqueu el endoll cablejat en conseqüència per evitar errors vergonyosos més endavant.

De la mateixa manera, el connector USB es connecta mitjançant un cable de connexió USB 2 sacrificial, el pin 1 al pin 1, etc.

Pas 5: notes del transmissor

Notes del transmissor
Notes del transmissor
Notes del transmissor
Notes del transmissor
Notes del transmissor
Notes del transmissor

Les taules de transmissió i recepció de 433 MHz que he utilitzat són omnipresents a Internet i, com que són tan barates, en vaig demanar dos parells (per permetre cock-ups experimentals). Vaig trobar que els receptors eren fiables, però el transmissor que he utilitzat necessitava modificar-lo perquè funcionés de manera fiable.

El circuit del transmissor FS1000A que he comprat * es mostra al diagrama. Vaig comprovar, per assaig i error, que calia instal·lar un condensador de 3pF a la posició C1 SoT (seleccioneu en prova) per fer funcionar la cosa. Com que tinc un receptor de banda ampla que cobreix 430 MHz, va ser relativament fàcil solucionar-ho. Com es pot provar sense un receptor és una pregunta interessant …

* Nota: Vaig comprar un segon lot de transmissors després que els dos primers no poguessin funcionar. A tots aquests els va faltar la bobina del col·lector. Hmmm!

Tenia un condensador de 3pF a la meva brossa, però no serà el cas de la majoria de la gent, i en qualsevol cas, el valor necessari pot ser més, per exemple, 7pF. Es pot fer una substitució crua amb dos bits de fil trenat (el cable de parell trenat del meu conegut té una capacitat d’uns 100pF per peu per donar-vos una guia de longitud), però no es recomana, ja que poden sorgir altres problemes. Tant de bo tingueu sort i no tingueu aquest problema. Sempre podeu comprar un transmissor més car (i, per tant, probablement) millor fet.

Tingueu en compte també que la freqüència del transmissor no és molt precisa o estable, però a la pràctica ha estat prou bona per fer funcionar de manera fiable els endolls remots.

Tingueu en compte també que el forat travesser adjacent a la paraula "ANT" del transmissor NO és la connexió de l'antena; és la que hi ha a la cantonada sense marcatge (vegeu la foto). Aquest va ser el primer error que vaig cometre …

Per descomptat, la connexió de pin marcada amb l'utilitat "ATAD" hauria de llegir "DATA".

Pas 6: Visió general del programari

Descripció general del programari
Descripció general del programari

Tingueu en compte que no sóc cap programador. Com s'ha dit anteriorment, el tema intel·ligent és el codi d'altres persones, però sé prou com per pessigar-lo i adaptar-lo perquè funcioni junt. Aquest també és el primer instructable que he publicat amb codi, així que disculpeu-me si ho he fet malament. Si teniu cap pregunta, tingueu-ho en compte …

El programari bàsic que he utilitzat és el següent:

  • Raspbian Stretch Lite
  • PiGPIO (una fantàstica biblioteca per conduir servos, etc.)
  • Codi _433.py (per codificar i descodificar codis de control de RF): enllaçat des del lloc web PiGPIO.
  • Python3 (ve amb Raspbian)

Programari addicional que faig servir:

  • pyephem (calcula els temps de l'alba i del capvespre: útil per canviar la llum)
  • Els excel·lents "Tasker" i "AutoTools SSH" per crear un control remot al meu telèfon Android: vegeu la foto (totes dues disponibles a la botiga de Google Play). [Com crear una "escena" de Tasker està fora de l'abast d'aquest instructiu, ja que hi ha una corba d'aprenentatge bastant pronunciada, però estic encantat de parlar del que he fet]

El meu propi codi (en Python). Cru però funcional:

  • tx.py: programari d'arguments de menú i / o línia d'ordres que envia el codi adequat al transmissor de 433 MHz.
  • alba-vespre: calcula les hores d’alba i de vespre a la meva ubicació i actualitza el crontab de l’usuari (s’utilitza per a llums d’arbres de Nadal, etc.)

Es pot accedir al codi personal anterior a través de GitHub:

El codi PiGPIO i _433.py proporciona la funcionalitat del projecte. Aquest últim té una funció de recepció que escolta les ordres de control remot del vostre comandament a distància RF de 433 MHz i descodifica els polsos de temps, produint una sortida que pot ser emmagatzemada per a un ús posterior mitjançant la funció de transmissió. Això permet que el sistema aprengui qualsevol control remot RF normal a 433 MHz. En principi, també es pot utilitzar per aprendre també els comandaments a distància RF del vostre veí. Jo ho desaconsellaria fermament, ja que els veïns poques vegades veuen el costat graciós de tocar timbres a l’atzar. No ho faria.

Configuració

Com que el Pi d'aquesta aplicació s'executa "sense cap" (és a dir) sense monitor ni teclat, cal parlar-hi mitjançant ssh. Hi ha un munt de guies disponibles sobre com configurar un Pi sense cap, però per simplificar les coses, suposo que primer comenceu el Pi amb un monitor i un teclat. Un cop arrencat, inicieu el terminal i introduïu 'sudo raspi-config'. Seleccioneu '5. Opcions d'interfície "i després" P2 SSH ". Activeu el servidor ssh i tanqueu raspi-config (que probablement acabarà en un reinici).

Les comunicacions posteriors amb el Pi es poden realitzar des d'un terminal remot mitjançant ssh. Tingueu en compte que el codi no necessita una adreça IP de LAN fixa per al Pi, però sens dubte ajuda (i és cert que és necessari si aprofundeu en el control de Tasker). Una vegada més, hi ha molts tutorials en línia que expliquen com fer-ho. El meu encaminador domèstic em permet assignar una adreça IP fixa a l'adreça MAC del Pi, així que ho faig així, en lloc d'editar la configuració del Pi.

Instal·lació de PiGPIO:

ssh al Pi i introduïu les ordres següents:

actualització sudo apt

sudo apt install pigpio python-pigpio python3-pigpio

sudo apt install git

git clone

sudo apt install python3-RPi. GPIO

Per executar PiGPIO a l'arrencada:

crontab -e

afegiu la línia següent:

@reboot / usr / local / bin / pigpiod

Obteniu el codi Python per transmetre i descodificar codis remots RF de 433 MHz:

wget

descomprimir _433_py.zip

Moveu el _433.py descomprimit a un directori adequat (per exemple) ~ / software / apps

Escriptura (en aquest directori)

_433.py

col·loca el Pi en mode 433 rx, esperant codis de control remot RF demodulats al pin 38 GPIO.

Amb el receptor de 433 MHz connectat, quan s’utilitza un comandament a distància de 433 MHz, a la pantalla es veuran les dades següents:

codi = 5330005 bits = 24 (espai = 12780 t0 = 422 t1 = 1236)

Aquestes dades s’utilitzen al programa Python per regenerar la transmissió des del control remot.

Per enviar aquestes dades a un fitxer per utilitzar-les posteriorment, executeu:

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

Un cop obtingudes les dades, el següent pas és utilitzar-les per editar el codi 'tx.py' que podeu copiar des del meu dipòsit GitHub. Aquest codi utilitza les dades per generar formes d'ona enteses pels connectors remots que transmetrà el transmissor de 433 MHz. Tant de bo les modificacions necessàries siguin raonablement evidents i la resta depèn de vosaltres …..

Recomanat: