Taula de continguts:
- Pas 1: equipament
- Pas 2: espiar el control remot
- Pas 3: envieu els mateixos marcs de dades
- Pas 4: Connecteu-vos al sistema
- Pas 5: optimitzeu el consum d'energia
Vídeo: Tallar la porta del garatge: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Qui no ha somiat mai amb tornar a casa només amb una aplicació de telèfon o amb poder escoltar i copiar tramvies de dades? Estic feliç de poder compartir amb vosaltres el que em vaig adonar i com vaig procedir. Vaig començar aquest projecte després de la segona vegada que vaig oblidar les meves claus …
Per descomptat, la codificació, el tipus de modulació, la freqüència de la companyia, la informació de connexió bluetooth i les dades que mostraré per exemple no són els originals, prefereixo no tenir visitants;-).
Aquesta aplicació s'aplica a qualsevol objecte capaç de rebre informació digital mitjançant ones electromagnètiques (porta del garatge, cotxe, algunes persianes …). Tot el sistema consisteix en un objecte connectat per bluetooth a un telèfon, aquest objecte pot enviar els mateixos marcs que el comandament a distància associat al que volem piratejar. Vaig col·locar aquest objecte al meu garatge i hi puc connectar des de l’exterior.
Pas 1: equipament
Idiomes utilitzats: C ++, MATLAB, Typescript, C, html.
Coneixements bàsics en electrònica digital i telecomunicacions / processament de senyals.
Cost: inferior a 35 dòlars.
Requisits de maquinari:
- NooELEC NESDR: per capturar les dades. Aquest mòdul molt econòmic realitza una demodulació digital, d’aquí la seva alta portabilitat. Aquest model és compatible amb MATLAB. (18,95 dòlars)
www.nooelec.com/store/sdr/sdr-receivers/nes…
- Wemos Lolin32 lite: aquest esp32 és un microcontrolador econòmic, equipat amb Wifi i Bluetooth. No utilitzarem Wifi en aquesta aplicació, però és molt concebible. (4,74 dòlars)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: aquest transmissor de ràdio ens proporciona una flexibilitat extrema, des de la freqüència portadora triada fins al tipus de modulació. (2,63 dòlars)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- Cables, capçaleres, equips de soldadura, bateria lipo de 3,7 V per autonomia, possiblement oscil·loscopi i / o analitzador lògic per a la depuració i, per cert, un telèfon intel·ligent …
Requisits de programari:
- MATLAB / Simulink: per capturar les dades. Es poden utilitzar altres programes alternatius gratuïts, com Audacity per a la visualització de dades. (llicència)
fr.mathworks.com/products.html?s_tid=gn_ps
- cadena d’eines esp-idf: s’utilitzarà per programar l’esp32. També es pot utilitzar l'ide Arduino, però no permet tanta llibertat com la que farem servir. (gratuït)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: això ens ajudarà a configurar els registres cc1101, segons les nostres especificacions. (gratuït)
www.ti.com/tool/SMARTRFTM-STUDIO
- Ionic: per construir l'aplicació. Podeu triar la creació d'aplicacions natives, però Ionic ens permet executar la nostra aplicació tant en dispositius Android com en iOS, amb un únic codi. L’actuació no es busca en el nostre cas. (gratuït)
ionicframework.com/
- La teva idea preferida …
Pas 2: espiar el control remot
Començarem observant les dades que produeixen les ordres del comandament a distància. Per fer-ho, utilitzarem un dongle i una antena rtl-sdr:
fr.mathworks.com/hardware-support/rtl-sdr….
Seguint aquest enllaç, trobareu el paquet MATLAB, així com un llibre gratuït que explica tots els principis amb la seva explicació. Per resumir el que ens preocupa, les dades de trànsit es presenten en forma de senyal de coeficient intel·lectual: dades en fase de "I", combinades amb dades de quadratura "Q". Aquest mètode facilita les telecomunicacions. Només ens interessarà rebre el senyal en fase. Ara recollirem la informació física i digital al comandament a distància. Si en podeu trobar alguna documentació, serà més fàcil. No en vaig trobar cap. Per poder observar temporalment el senyal, primer hem de saber quina és la portadora de freqüència del senyal emès. Utilitzarem l'exemple proporcionat amb la documentació del paquet "Anàlisi espectral amb ràdio RTL-SDR", per saber exactament a quina freqüència observem una potència màxima quan enviem una ordre. En el meu cas és de 868,22 MHz. Les freqüències "estàndard" per a aquest tipus d'aplicacions ronden els 868 MHz.
Amb aquestes indicacions, podrem escriure un codi MATLAB per recuperar les dades. Aquesta s’adjunta a la foto i es comenta. El resultat ens permet trobar el tipus de modulació: en recuperar la informació en brut, mostrant el resultat just després d’haver recuperat la part real del senyal, podem deduir que es tracta d’un ASK / OOK modulació. De fet, observem que la freqüència és invariable, però, el senyal només té dues amplituds: una nul·la i una fixa. La resta del codi ens permet recuperar l’embolcall del senyal rebut, facilitat per llegir per conèixer el trame. Un cop mostrat, podem determinar la modulació de banda base: es tracta d’una codificació de Manchester (vegeu la foto adjunta). També podem deduir la velocitat en bauds (símbols per segon). Recopilant tota aquesta informació, podem conèixer el marc de dades. En el meu cas, els bytes trobats són: 249, 39, 75, 178, 45, 200 i repetits diverses vegades, per garantir que l’ordre tingui una bona rebuda. Afortunadament, el codi no funciona, el marc de dades sempre és el mateix.
Pas 3: envieu els mateixos marcs de dades
El Texas Instruments cc1101 és tan flexible que encara assolireu el vostre objectiu, fins i tot si la configuració que heu trobat al pas anterior és completament diferent de la meva. De fet, veureu a la documentació, pàgina 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) que permet realitzar la modulació NRZ, Manchester, FSK, ASK / OOK, per arribar les freqüències al voltant de 433 MHz o 868 MHz, i moltes altres coses. Us aconsello llegir la documentació per familiaritzar-vos amb aquest mòdul.
En aquest enllaç trobareu com a exemple el treball de Loboris sobre la construcció de funcions mitjançant aquest mòdul:
github.com/loboris/ESP32_CC1101/tree/maste…
Escriureem el nostre codi per al nostre esp32 amb la cadena d’eines esp-idf (vegeu els enllaços del primer pas). Podeu afegir els fitxers de l'enllaç al subdirectori de components del vostre projecte. Per configurar correctament el nostre cc1101, haurem de corregir-ne els registres. Texas Instruments ens proporciona un programari que ens proporciona el valor dels registres segons la nostra configuració: SmartRF Studio.
Pel que fa a mi, indico al programari que desitjo una codificació Manchester, que la meva freqüència de portadora és de 868,22 MHz, que el meu tipus de modulació és ASK / OOK … Us deixo introduir els vostres paràmetres. En el cas que la vostra codificació de banda base no estigui disponible, podeu considerar la codificació NRZ augmentant adequadament la velocitat en bauds i adaptant les dades.
Un cop definits els vostres valors, teniu diverses opcions quant a l’ús del mòdul: podeu utilitzar les funcions que he enllaçat amb vosaltres, o el que he fet, només inspirar-vos en aquest codi, per tal de configurar de manera brutal (vegeu les fotos adjuntes) i utilitzeu només el que necessitem.
Com que el xip cc1101 es comunica per SPI, trobareu a l'enllaç del codi d'exemple el fitxer de capçalera "spi_master_lobo.h", que conté funcions més fàcils d'utilitzar l'SPI que si l'haguéssiu d'utilitzar només amb la cadena d'eines. A la foto m’uneixo amb l’esquema de la comunicació CC1101 a SPI, foto extreta de la pàgina 30 del full de dades CC1101. Els quatre cables presentats són: CS (Chip Select o SS: Slave Select o CSn), CLK (o SCLK, el rellotge proporcionat pel mestre), MISO (o SO, Master In Slave Out) i MOSI (o SI, Master Out Slave In). En el nostre cas, el mestre és l’ESP32 i l’esclau el CC1101. Les comunicacions s’inicien quan el pin CS és baix, en general.
No oblideu habilitar a les opcions del compilador del menuconfig les excepcions C ++ per compilar.
Pas 4: Connecteu-vos al sistema
Si el vostre codi funciona, heu fet l’essencial. En aquesta part, ens centrarem en com crear una aplicació de telèfon connectada al sistema. La solució més interessant és connectar-se mitjançant bluetooth, ja que permet l’ús d’un protocol de baix consum: Bluetooth Low Energy (BLE). El perfil de jerarquia es mostra al dibuix adjunt: llegirem i escriurem l’ordre en una característica d’un servei. I, per descomptat, el nostre esp32 i el nostre telèfon intel·ligent estan equipats amb bluetooth.
Aquest pas es divideix en dues parts: la part esp32 i la part de l'aplicació. La foto adjunta mostra i explica les principals parts dels codis.
Podeu generar els vostres UUID seguint aquest enllaç:
www.uuidgenerator.net/
Aquests són els identificadors que proporcionaran accés als serveis i funcions del nostre perfil BLE.
Quant al codi BLE esp32, Kolban va fer un gran treball fent compatibles totes aquestes funcions C ++ d’alt nivell:
github.com/nkolban/esp32-snippets/tree/mas…
Podeu posar aquests fitxers al subdirectori de components. En cas contrari, necessitareu més temps per entendre com utilitzar BLE amb la cadena d’eines esp-idf.
En resum del que veureu al codi, creem un servidor, un servei i una característica, amb els UUID associats, i afegim una classe de devolució de trucada redefinida, amb un mètode associat a l’escriptura: quan rebem l’O caràcter, enviem una ordre d’escriptura al cc1101.
Per descomptat, no oblideu habilitar el Bluetooth a la configuració de components del Menuconfig.
Quant a la part de l'aplicació, utilitzarem Framework Ionic. Podeu trobar més informació al respecte a l’enllaç presentat al primer pas i per obtenir més informació sobre com utilitzar BLE amb Ionic:
ionicframework.com/docs/native/ble/
I exemples, escrits per don:
github.com/don/ionic-ble-examples/tree/mas…
Podeu editar per exemple l'exemple "Connecta". Escanejem dispositius en una primera pàgina i arribem a una segona pàgina si seleccionem el nostre dispositiu. Després accedim a una interfície on podeu afegir un botó amb el mètode presentat a la foto: envia la nostra comanda "O" amb els UUID adequats. També podeu afegir al constructor de la primera pàgina el mètode "enable", demanant que activeu el bluetooth al començament de l'aplicació.
Us recomano que explori el lloc web Ionic i que descobreixi tots els components (botons, alertes, caselles de selecció …) per millorar la vostra aplicació:
ionicframework.com/docs/components/#overvi…
Pas 5: optimitzeu el consum d'energia
Vam començar a treballar en un baix consum, així que anem a treballar.
La cadena d’eines esp-idf ens permet utilitzar una GUI de configuració, el menuconfig: molts paràmetres poden reduir el consum d’esp32. En primer lloc, com que no necessitem Wifi, podem desactivar-lo a la configuració del component. A la mateixa carpeta, a FreeRTOS, podeu seleccionar "Executa FreeRTOS només al primer nucli. Després, a ESP-específic, podeu reduir la freqüència de la CPU a 80 MHz. Totes les funcions segueixen funcionant a aquesta velocitat de rellotge. Finalment, podeu marqueu "Activa el coprocessador de baixa potència (ULP). Aquesta configuració fa que el consum actual passi d’un centenar de mA a uns trenta mA. Això encara és massa …
ESP32 pot gestionar el son profund. Només el nucli de baixa energia està engegat i espera el despertar.
Vegeu aquest enllaç següent per obtenir més informació:
esp-idf.readthedocs.io/en/latest/api-refere…
Malauradament, a la darrera versió disponible de la cadena d’eines esp-idf (3.0), els únics despertats disponibles són per temporitzadors i per interrupcions de GPIO. Per sort, Espressif ens promet que BLE despertarà a la següent versió (3.1).
També podeu posar el CC1101 en mode de suspensió, enviant a SPI l’ordre adequada per apagar el dispositiu (vegeu el full de dades de cc1101, l’ordre SPWD, pàgina 51). Per posar el dispositiu en mode de repòs o per despertar-lo, podeu posar baix i alt el pin de selecció de xip dels pins SPI (més informació al full de dades).
Aquestes darreres configuracions haurien de ser capaces de fer que el consum del sistema passi per sota del miliamper …
Finalment, per fer que el sistema duri el major temps possible sense recarregar-se, o fins i tot arribar a un mes d’autonomia, trieu la bateria de 3,7 V amb més miliamperis per hora. Mesurant el consum d'energia del vostre sistema, amb la visualització d'un generador o un amperímetre connectats en sèrie abans del vostre + pol del vostre sistema, podeu calcular el temps que durarà el vostre sistema.
Recomanat:
Comandament invisible de la porta del garatge: 7 passos (amb imatges)
Comandament invisible de la porta del garatge: una vegada vam deixar el cotxe aparcat fora del garatge i un lladre va trencar una finestra per arribar al comandament de la porta del garatge. Després van obrir el garatge i van robar algunes bicicletes. Així que vaig decidir amagar el control remot incorporant-lo al cendrer del cotxe. Funciona per a
Hack de llum d'estat de la porta del garatge: 3 passos
Garage Door Status Light Hack: visc en una casa on no és fàcil veure si la porta del garatge està oberta o tancada. Tenim un botó a la casa, però la porta no es veu. La idea d'enginyeria d'algun tipus d'interruptor i font d'alimentació no era desitjable a causa de l'elevada pr
Una versió sense fils de La porta del meu garatge és oberta o tancada ?: 7 passos
Una versió sense fils de … La meva porta del garatge és oberta o tancada ?: Volíem un sistema d’indicació senzill, econòmic i fiable que ens demostrés si les portes del garatge estaven obertes o tancades. Hi ha un munt de "La meva porta del garatge està oberta" projectes. La majoria més gran d’aquests projectes tenen un cablejat dur. En el meu cas runn
Temporitzador per tancar l'obertura de la porta del garatge: 4 passos
Temporitzador per tancar l'obertura de la porta del garatge: Introducció Així que la història comença després que vaig deixar la porta del garatge oberta, i alguns nois van entrar i es van embolicar. Afortunadament, no hi ha cap personal valuós perdut. Després d’aquest accident, decideixo fer un " temporitzador per tancar " característica per al meu garatge doo
Hack simple de la porta del garatge: 4 passos (amb imatges)
Simple Garage Door Hack: Després d’haver estat tancat fora de casa accidentalment en més d’una ocasió, vaig decidir que havia d’haver-hi una manera millor d’entrar a casa que no implicava entrar i entrar (i sense amagar cap clau fora d’algun lloc). fent una ullada al meu g