Sisällysluettelo:
- Vaihe 1: Anturimoduulit
- Vaihe 2: Laitteisto
- Vaihe 3: Ohjelmisto
- Vaihe 4: Tietojen kirjaaminen
- Vaihe 5: Näytevastaanotinohjelmisto
Video: Arduino RF -anturidekooderi: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Edellisessä talossani oli esiasennettu turvajärjestelmä, jossa oli ovianturit, liikeanturi ja ohjauspaneeli. Kaikki oli kiinteästi kytketty kaapin suureen elektroniikkalaatikkoon, ja siellä oli ohjeet lankapuhelimen kytkemiseen soittamaan automaattisesti hälytyksen sattuessa. Kun yritin leikkiä sen kanssa, huomasin, että yksi oviantureista oli asennettu puutteellisesti ja toinen oli ajoittainen virheellisen kohdistuksen vuoksi. Niin paljon turva -alan yrityksen käyntikortissa mainitusta ammattimaisesta asennuksesta. Ratkaisuni tuolloin oli ostaa pari Internet -turvakameraa ja halpa langaton turvahälytys.
Nopeasti eteenpäin tänään ja tuo langaton hälytys istuu laatikossani kellarissani. Halvan RF -vastaanottimen hankinnan jälkeen päätin katsoa, voinko purkaa eri hälytysanturien ja kaukosäätimien lähettämät viestit. Ajattelin, että koska he kaikki työskentelivät halvan hälytyslaatikon kanssa, heidän on käytettävä samaa viestimuotoa vain eri tunnuksella. Pian huomasin, että ne ovat samanlaisia vain viestien yleisessä rakenteessa. Joten projekti muuttui nopeasti triviaalista erittäin mielenkiintoiseksi.
Vaihe 1: Anturimoduulit
Kuten yllä olevista kuvista näkyy, lähettimet sisältävät oven auki -anturit, liiketunnistimet, virityskauko -ohjaimet ja langattoman näppäimistön, jota käytetään hälytyslaatikon ohjelmointiin. Kuten käy ilmi, kaksi näistä laitteista ei käytä samaa synkronointipituutta tai bittiaikaa. Ainoa yhteinen asia, paitsi viestin pituus, on bittien perusmuoto. Jokainen bitti kestää kiinteän ajanjakson nollan ja yhden välisen eron ollessa korkean/matalan osan käyttöjakso.
Edellä esitetty kaunis aaltomuoto EI ole se, mitä sain ensimmäisenä. Koska 433 MHz: n taajuusalueella on niin paljon liikennettä, minun täytyi aktivoida anturi juuri ennen kuin asetin laajuuden yhdelle laukaisimelle. Onneksi anturit lähettävät useita kopioita dataviestistä, kun ne aktivoidaan, ja kaukosäätimet ja näppäimistö jatkavat viestien lähettämistä niin kauan kuin painiketta painetaan. Käyttämällä laajuutta pystyin määrittämään kunkin kohteen synkronoinnin pituuden ja tietobittien kestot. Kuten aiemmin mainittiin, synkronointiajat ovat erilaisia ja bittiajat ovat erilaisia, mutta kaikissa sanomamuodoissa on matalan tason synkronointi, jota seuraa 24 databittiä ja yksi pysäytysbitti. Se riitti minulle, jotta pystyin rakentamaan yleisen dekooderin ohjelmistoon ilman, että tarvitsin koodata kaikki eri tiedot jokaiselle laitteelle.
Vaihe 2: Laitteisto
Rakensin alun perin anturidekooderin käyttäen PIC -mikrokontrolleria ja kokoonpanokieltä. Olen pelannut Arduinon muunnelmilla äskettäin, joten ajattelin nähdä, voisinko kopioida sen. Yksinkertainen kaavio on esitetty yllä, ja siellä on myös kuva prototyypistäni. Tein vain kolme tavallista hyppyjohtoa siirtyäkseni Arduino Nanosta RF -vastaanotinkorttiin. Virta ja yksi datalinja ovat kaikki mitä tarvitaan.
Jos luet ohjeistani”3-in-1 aika- ja säänäytössä”, huomaat, että käytän yleistä RXB6, 433 MHz: n vastaanotinta. Saatat saada todella halvat vastaanottimet toimimaan tällä projektilla tarvittavalla lyhyellä kantamalla, mutta suosittelen silti käyttämään superheterodyne-vastaanotinta.
Vaihe 3: Ohjelmisto
Ohjelmisto muuntaa vastaanotetut bitit näytettäviksi ASCII -merkeiksi. Se antaa synkronoinnin pituuden arvon sekä 1 ja 0 bitin pituudet. Koska tiesin jo synkronointipituudet ja bittimuodot, olisin voinut kirjoittaa ohjelmiston nimenomaan niitä varten. Sen sijaan päätin katsoa, voisinko kirjoittaa sen selvittääksesi synkronointipituudet ja selvittääksesi automaattisesti databitit. Tämän pitäisi helpottaa muokkaamista, jos haluan yrittää havaita muita formaatteja jossain vaiheessa. On tärkeää huomata, että ohjelmisto ei tiedä, onko viestin ensimmäinen bitti 1 vai 0. Se olettaa, että se on 1, mutta jos se havaitsee, että sen olisi pitänyt olla nolla, se kääntää bittiä valmiissa viestissä ennen sen lähettämistä sarjaportista.
Synkronointipulssin ja databittien ajat määritetään käyttämällä ulkoista INT0 -keskeytystuloa syöttämällä keskeytyksenkäsittelijä. INT0 voi laukaista nousussa, laskussa tai molemmissa reunoissa tai tasaisesti matalalla tasolla. Ohjelmisto keskeytyy molemmilta reunoilta ja mittaa ajan, jonka pulssi pysyy alhaisena. Tämä yksinkertaistaa asioita, koska viestin aloitus/synkronointi on matalan tason pulssi ja bitit voidaan määrittää niiden matalan tason ajan perusteella.
Keskeytyksen käsittelijä määrittää ensin, onko tallennettu luku tarpeeksi pitkä aloitus/synkronointipulssiksi. Käytettävissä olevat eri laitteet käyttävät synkronointipulsseja 4, 9, 10 ja 14 millisekuntia. Sallittujen min/max -synkronointiarvojen määrittelylauseet ovat ohjelmiston edellä ja ovat tällä hetkellä asetettu 3 ja 16 millisekunniksi. Bittiajat vaihtelevat myös antureiden välillä, joten bittien dekoodausalgoritmin on otettava tämä huomioon. Ensimmäisen bitin bittiaika tallennetaan, kuten myös seuraavan bitin aika, jolla on merkittävä ero ensimmäiseen bittiin. Seuraavien bittiaikojen suora vertailu ei ole mahdollista, joten käytetään "fudge factor" -määritystä ("Variation"). Bittien dekoodaus alkaa olettaen, että ensimmäinen databitti tallennetaan aina loogisena 1. Tämä arvo tallennetaan ja sitä käytetään seuraavien bittien testaamiseen. Jos myöhempi databittien lukumäärä on tallennetun arvon varianssi -ikkunassa, se tallennetaan myös logiikaksi 1. Jos se on tallennetun arvon varianssiajan ulkopuolella, se tallennetaan logiikkana 0. Jos logiikka 0 bittiaika on lyhyempi kuin ensimmäinen bittiaika, jolloin lippu ilmoittaa ohjelmistolle, että tavut on käännettävä ennen näyttämistä. Ainoa tapaus, jossa tämä algoritmi epäonnistuu, on silloin, kun viestin bitit ovat kaikki 0. Voimme hyväksyä tämän rajoituksen, koska tällainen viesti on merkityksetön.
Kaikista kiinnostuneista antureista viestin pituus on 24 databittiä, mutta ohjelmisto ei rajoitu tähän pituuteen. Puskuri on enintään seitsemälle tavulle (lisää voitaisiin lisätä) ja määrittelee viestin vähimmäis- ja enimmäispituuden tavuina. Ohjelmisto on määritetty keräämään bitit, muuntamaan ne tavuiksi, tallentamaan ne väliaikaisesti ja tulostamaan ne sitten ASCII -muodossa sarjaportin kautta. Tapahtuma, joka laukaisee viestin, on uuden käynnistys-/synkronointipulssin vastaanotto.
Vaihe 4: Tietojen kirjaaminen
Ohjelmisto on asetettu lähettämään muunnetut tiedot ASCII -merkeinä Arduinon sarjaportin (TX) kautta. Kun tein PIC -version, minun oli liitettävä tietokoneen pääteohjelmaan tietojen näyttämiseksi. Yksi Arduino IDE: n eduista on se, että siinä on sisäänrakennettu Serial Monitor -toiminto. Asetin sarjaportin nopeudeksi 115,2 k ja asetan sitten Serial Monitor -ikkunan samaan nopeuteen. Tässä kuvakaappauksessa näkyy tyypillinen näyttö, jossa on lähtöjä erilaisista antureista. Kuten näette, tiedot eivät joskus ole täydellisiä, mutta voit helposti määrittää kunkin anturin todellisen arvon.
Vaihe 5: Näytevastaanotinohjelmisto
Olen lisännyt esimerkkiohjelmistoluettelon, joka osoittaa, kuinka voit käyttää kerättyjä tietoja saadaksesi tietyn koodisarjan sovelluksellesi. Tämä esimerkki on asetettu matkimaan yhtä Etekcity -etäpistorasioistani. Yksi komento kytkee päälle nanoon sisäänrakennetun LED -valon (D13) ja toinen komento sammuttaa LED -valon. Jos sinulla ei ole LED -valoa Arduinossa, lisää vastus ja LED kuten kaaviossa. Todellisessa sovelluksessa tämä toiminto kytkeisi virran päälle/pois päältä pistorasiasta (käyttämällä relettä tai triacia). Synkronointiajat, bittiajat ja odotetut datatavut on määritetty etukäteen muokkaamisen helpottamiseksi. Voit käyttää mitä tahansa jäljellä olevista tietoriveistä kytkeäksesi asiat päälle/pois tms. Tietylle sovelluksellesi. Lisää vain soveltuva komentokoodi ja vaihda LED -on/off -logiikka silmukkaan tarpeidesi mukaan.
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Halvin Arduino -- Pienin Arduino -- Arduino Pro Mini -- Ohjelmointi -- Arduino Neno: 6 vaihetta (kuvilla)
Halvin Arduino || Pienin Arduino || Arduino Pro Mini || Ohjelmointi || Arduino Neno: …………………………. Tilaa YouTube -kanavani saadaksesi lisää videoita ……. Tässä projektissa keskitytään kaikkien aikojen pienimpään ja halvinan arduinoon. Pienin ja halvin arduino on arduino pro mini. Se muistuttaa arduinoa