Turinys:
- 1 žingsnis: Įranga
- 2 veiksmas: nuotolinio valdymo pulto šnipinėjimas
- 3 veiksmas: siųskite tuos pačius duomenų rėmus
- 4 veiksmas: prisijunkite prie sistemos
- 5 žingsnis: optimizuokite energijos suvartojimą
Video: Nulaužkite garažo duris: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Kas niekada nesvajojo grįžti namo tik su telefono programėle ar klausytis ir kopijuoti duomenų tramvajus? Džiaugiuosi galėdamas pasidalinti su jumis tuo, ką supratau ir kaip sekėsi. Pradėjau šį projektą po to, kai antrą kartą pamiršau raktus …
Žinoma, kodavimas, moduliacijos tipas, nešiklio dažnis, „Bluetooth“ryšio informacija ir duomenys, kuriuos parodysiu pavyzdyje, nėra originalūs, aš nenoriu turėti lankytojų;-).
Ši programa taikoma bet kuriam objektui, galinčiam priimti skaitmeninę informaciją elektromagnetinėmis bangomis (garažo durys, automobilis, kai kurios langinės ir kt.). Visa sistema susideda iš objekto, „Bluetooth“ryšiu prijungto prie telefono, šis objektas gali siųsti tuos pačius kadrus, kaip ir nuotolinio valdymo pultas, susietas su tuo, ką norime nulaužti. Aš įdėjau šį objektą į savo garažą ir galiu prie jo prisijungti iš išorės.
1 žingsnis: Įranga
Naudojamos kalbos: C ++, MATLAB, mašinraštis, C, html.
Pagrindinės skaitmeninės elektronikos ir telekomunikacijų/signalų apdorojimo žinios.
Kaina: mažiau nei 35 USD.
Techninės įrangos reikalavimai:
- NooELEC NESDR: duomenims fiksuoti. Šis labai pigus modulis atlieka skaitmeninę demoduliaciją, todėl yra labai nešiojamas. Šis modelis suderinamas su MATLAB. (18,95 USD)
www.nooelec.com/store/sdr/sdr-receivers/nes…
- „Wemos Lolin32 lite“: šis esp32 yra pigus mikrovaldiklis, aprūpintas „Wifi“ir „Bluetooth“. Šioje programoje nenaudosime „Wifi“, tačiau tai iš esmės yra įmanoma. (4,74 USD)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: šis radijo siųstuvas suteikia mums ypatingo lankstumo, nuo pasirinkto nešiklio dažnio iki moduliacijos tipo. (2,63 USD)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- Laidai, antraštės, suvirinimo įranga, 3,7 V lipo baterija autonomijai, galbūt osciloskopas ir (arba) loginis analizatorius derinimui, beje, išmanusis telefonas …
Programinės įrangos reikalavimai:
- MATLAB/Simulink: duomenims fiksuoti. Galima naudoti kitas nemokamas alternatyvias programas, pvz., „Audacity“duomenų vizualizavimui. (licencija)
fr.mathworks.com/products.html?s_tid=gn_ps
- esp-idf toolchain: tai bus naudojama programuojant esp32. Taip pat galima naudoti „Arduino ide“, tačiau jis neleidžia tiek laisvės, kiek mes naudosime. (Laisvas)
esp-idf.readthedocs.io/en/latest/get-starte…
- „TI SmartRF Studio“: tai padės mums sukonfigūruoti registrus „cc1101“pagal mūsų specifikacijas. (Laisvas)
www.ti.com/tool/SMARTRFTM-STUDIO
- Joninis: kuriant programą. Galite pasirinkti kurti vietines programas, tačiau „Ionic“leidžia mums paleisti programą ir „Android“, ir „IOS“įrenginiuose, naudojant tik kodą. Spektaklio mūsų atveju nesiekiama. (Laisvas)
ionicframework.com/
- Jūsų mėgstamiausia idėja…
2 veiksmas: nuotolinio valdymo pulto šnipinėjimas
Pradėsime stebėdami duomenis, kuriuos sukuria nuotolinio valdymo pulto komandos. Norėdami tai padaryti, mes naudosime rtl-sdr raktą ir anteną:
fr.mathworks.com/hardware-support/rtl-sdr….
Sekdami šia nuoroda rasite MATLAB paketą, taip pat nemokamą knygą, paaiškinančią visus dalyvius ir jų paaiškinimus. Apibendrinant tai, kas mums rūpi, tranzito duomenys pateikiami IQ signalo pavidalu: „I“fazės duomenys kartu su „Q“kvadratūros duomenimis. Šis metodas palengvina telekomunikacijas. Mums bus įdomu gauti signalą tik fazėje. Dabar rinksime fizinę ir skaitmeninę informaciją nuotolinio valdymo pulte. Jei rasite tam skirtą dokumentaciją, bus lengviau. Neradau nė vieno. Norėdami laiku stebėti signalą, pirmiausia turime žinoti, koks yra skleidžiamo signalo dažnio nešėjas. Mes naudosime pavyzdį, pateiktą kartu su dokumentų paketu „Spektrinė analizė su RTL-SDR radiju“, kad tiksliai žinotume, kokiu dažniu stebime didžiausią galią, kai siunčiame komandą. Mano atveju tai yra 868,22 MHz. Šio tipo programoms „standartiniai“dažniai yra apie 868 MHz.
Turėdami šias nuorodas, galėsime parašyti MATLAB kodą duomenims atkurti. Šis yra pridėtas nuotraukoje ir komentuojamas. Rezultatas leidžia mums rasti moduliacijos tipą: nuskaitydami neapdorotą informaciją, rodydami rezultatą tik atgavę tikrąją signalo dalį, galime daryti išvadą, kad tai yra ASK / OOK moduliacija. Iš tiesų pastebime, kad dažnis yra nekintamas, tačiau signalas turi tik dvi amplitudes: nulinę ir fiksuotąją. Likusi kodo dalis leidžia mums atkurti gauto signalo voką, kad būtų lengviau skaityti, kad sužinotume apie traumą. Kai pasirodys, galime nustatyti pagrindinės juostos moduliaciją: tai yra Mančesterio kodavimas (žr. Pridedamą nuotrauką). Taip pat galime nustatyti baudos greitį (simboliai per sekundę). Surinkus visą šią informaciją, galime žinoti duomenų rėmus. Mano atveju rasti baitai yra: 249, 39, 75, 178, 45, 200 ir kartojami kelis kartus, siekiant užtikrinti, kad komanda būtų gerai priimta. Laimei, kodas nesisuka, duomenų rėmas visada yra tas pats.
3 veiksmas: siųskite tuos pačius duomenų rėmus
„Texas Instruments cc1101“yra toks lankstus, kad vis tiek pasieksite savo tikslą, net jei ankstesniame žingsnyje rasti nustatymai visiškai skiriasi nuo mano. Iš tiesų, dokumentacijos 2 puslapyje (https://www.ti.com/lit/ds/symlink/cc1101.pdf) matysite, kad tai leidžia atlikti NRZ, Mančesterio, FSK, ASK/OOK moduliavimą, kad pasiektumėte apie 433 MHz arba 868 MHz dažnius ir daug kitų dalykų. Patariu perskaityti dokumentaciją, kad susipažintumėte su šiuo moduliu.
Šioje nuorodoje kaip pavyzdį rasite Loboriso darbą, susijusį su funkcijų kūrimu naudojant šį modulį:
github.com/loboris/ESP32_CC1101/tree/maste…
Mes parašysime savo kodą savo esp32 naudodami įrankių grandinę esp-idf (žr. Pirmojo žingsnio nuorodas). Nuorodos failus galite pridėti savo projekto komponentų pakatalogyje. Norėdami tinkamai sukonfigūruoti „cc1101“, turėsime pataisyti jo registrus. „Texas Instruments“suteikia mums programinę įrangą, kuri suteikia registrų vertę pagal mūsų konfigūraciją: „SmartRF Studio“.
Kalbant apie mane, aš programinei įrangai nurodau, kad noriu Mančesterio kodavimo, kad mano nešiklio dažnis yra 868,22 MHz, kad mano moduliacijos tipas yra ASK / OOK … Leidžiu įvesti jūsų parametrus. Tuo atveju, jei jūsų pagrindinės juostos kodavimas nėra prieinamas, galite apsvarstyti NRZ kodavimą, tinkamai padidindami duomenų perdavimo spartą ir pritaikydami duomenis.
Kai nustatysite savo vertybes, turėsite keletą pasirinkimų, susijusių su modulio naudojimu: galite naudoti funkcijas, kurias aš susiejau su jumis, arba tai, ką aš padariau, tik pasisemkite įkvėpimo iš šio kodo, kad viską konfigūruotumėte žiauriu būdu (žr. pridėtas nuotraukas) ir naudokite tik tai, ko mums reikia.
Kadangi „cc1101“mikroschema bendrauja per SPI, kodo pavyzdžio nuorodoje rasite antraštės failą „spi_master_lobo.h“, kuriame yra daugiau paprastų SPI naudojimo funkcijų nei tuo atveju, jei turėtumėte naudoti tik įrankių grandinę. Prisidedu prie jūsų nuotraukoje CC1101 ryšio schema SPI, nuotrauka paimta iš CC1101 duomenų lapo 30 puslapio. Pateikti keturi laidai: CS („Chip Select“arba SS: „Slave Select“arba čia CSn), CLK (arba SCLK, laikrodis, pateiktas pagrindinio), MISO (arba SO, „Master In Slave Out“) ir MOSI (arba SI, „Master Out Slave In“). Mūsų atveju pagrindinis yra ESP32, o vergas - CC1101. Bendravimas paprastai prasideda, kai CS kaištis yra žemas.
Nepamirškite įjungti meniu kompiliatoriaus parinktysekonfigūruoti C ++ kompiliavimo išimtis.
4 veiksmas: prisijunkite prie sistemos
Jei jūsų kodas veikia, jūs padarėte esminius dalykus. Šioje dalyje mes sutelksime dėmesį į tai, kaip sukurti telefono programą, prijungtą prie sistemos. Įdomiausias sprendimas yra prisijungti naudojant „Bluetooth“, nes tai leidžia naudoti mažos galios protokolą: „Bluetooth Low Energy“(BLE). Hierarchijos profilis parodytas pridedamame brėžinyje: komandą perskaitysime ir parašysime paslaugos charakteristikoje. Ir, žinoma, mūsų esp32 ir išmanusis telefonas aprūpinti „Bluetooth“.
Šis veiksmas yra padalintas į dvi dalis: esp32 ir programos dalį. Pridedama nuotrauka rodo ir paaiškina pagrindines kodų dalis.
Galite sugeneruoti savo UUID naudodami šią nuorodą:
www.uuidgenerator.net/
Tai yra identifikatoriai, kurie suteiks prieigą prie mūsų BLE profilio paslaugų ir funkcijų.
Apie esp32 BLE kodą Kolbanas padarė puikų darbą, suderindamas visas šias aukšto lygio C ++ funkcijas:
github.com/nkolban/esp32-snippets/tree/mas…
Šiuos failus galite sudėti į komponentų pakatalogį. Priešingu atveju jums reikės daugiau laiko, kad suprastumėte, kaip naudoti BLE su esp-idf įrankių grandine.
Apibendrinant tai, ką pamatysite kode, mes sukuriame serverį, paslaugą ir charakteristiką su susijusiais UUID, ir pridedame iš naujo apibrėžtą atgalinio ryšio klasę su susijusiu rašymo metodu: kai gauname „O“simbolį, siunčiame rašymo komandą į cc1101.
Žinoma, nepamirškite įjungti „Bluetooth“„Menuconfig“komponento konfigūracijoje.
Apie programos dalį naudosime „Framework Ionic“. Daugiau informacijos apie tai rasite pirmame žingsnyje pateiktoje nuorodoje ir daugiau informacijos apie tai, kaip naudoti BLE su „Ionic“:
ionicframework.com/docs/native/ble/
Ir pavyzdžiai, parašyti dono:
github.com/don/ionic-ble-examples/tree/mas…
Galite redaguoti, pavyzdžiui, pavyzdį „Prisijungti“. Mes nuskaitome įrenginius pirmajame puslapyje ir pasiekiame antrą puslapį, jei pasirenkame savo įrenginį. Tada pasiekiame sąsają, kurioje galite pridėti mygtuką su nuotraukoje pateiktu metodu: jis siunčia mūsų komandą „O“su atitinkamais UUID. Taip pat pirmojo puslapio konstruktoriuje galite pridėti metodą „įgalinti“, prašydami suaktyvinti „Bluetooth“programos pradžioje.
Aš labai rekomenduoju jums ištirti „Ionic“svetainę ir atrasti visus komponentus (mygtukus, įspėjimus, žymimuosius laukelius …), kad patobulintumėte savo programą:
ionicframework.com/docs/components/#overvi…
5 žingsnis: optimizuokite energijos suvartojimą
Pradėjome dirbti su mažu vartojimu, todėl padirbėkime.
Esp-idf įrankių grandinė leidžia mums naudoti konfigūracijos GUI, menuconfig: daugelis parametrų gali sumažinti esp32 vartojimą. Visų pirma, kadangi mums nereikia „Wifi“, galime jį išjungti „Component config“. Tame pačiame aplanke, „FreeRTOS“, galite pasirinkti „Vykdyti„ FreeRTOS “tik pirmame branduolyje. Tada, konkrečiai ESP, galite sumažinti procesoriaus dažnį iki 80 MHz. Visos funkcijos vis dar veikia tokiu laikrodžio greičiu. Galiausiai galite pažymėkite „Įgalinti itin mažos galios (ULP) procesorių. Dėl šios konfigūracijos srovės suvartojimas padidėja nuo maždaug šimto mA iki maždaug trisdešimt mA. Tai dar per daug…
ESP32 gali atlaikyti gilų miegą. Tik mažai energijos turinti šerdis yra įjungta ir laukia pabudimo.
Daugiau informacijos rasite šioje nuorodoje:
esp-idf.readthedocs.io/en/latest/api-refere…
Deja, paskutinėje galimoje esp-idf įrankių grandinės versijoje (3.0) vieninteliai galimi pabudimai yra laikmačiai ir GPIO sutrikimai. Laimei, „Espressif“pažada mums BLE pabusti kitoje versijoje (3.1).
Taip pat galite perjungti CC1101 į miego režimą, nusiųsdami SPI tinkamą komandą išjungti įrenginį (žr. Cc1101 duomenų lapą, SPWD komandą, 51 psl.). Norėdami įjungti įrenginį miego režimu arba jį pažadinti, galite įdėti žemą ir aukštą SPI kaiščių lusto pasirinkimo kaištį (daugiau informacijos rasite duomenų lape).
Šios paskutinės konfigūracijos turėtų sugerti, kad sistemos suvartojimas sumažėtų žemiau miliamperų…
Galiausiai, kad sistema veiktų kuo ilgiau be įkrovimo ar net pasiektų savarankiškumo mėnesį, rinkitės 3,7 V bateriją, kuri turi didžiausią miliamperų per valandą. Išmatuodami savo sistemos energijos suvartojimą, rodydami generatorių arba ampermetrą, nuosekliai prijungtus prieš sistemos + polių, galite įvertinti, kiek laiko sistema veiks!
Rekomenduojamas:
Nulaužkite savo automobilį naudodami „Wio“terminalą ir CAN magistralę: 7 žingsniai
Nulaužkite savo automobilį naudodami „Wio“terminalą ir CAN magistralę: Jei turite tam tikrą supratimą apie CAN magistralės ir „Arduino“programavimą ir norite nulaužti savo automobilį, tai šioje instrukcijoje galite rasti sprendimą. Kodėl norite įsilaužti į savo automobilį, aš nežinau, bet tai tikrai įdomus dalykas
Kaip sukurti „Redstone“kodo duris: 4 žingsniai
Kaip sukurti „Redstone“kodo duris. Tai yra „Redstone“grandinės nuotrauka, kai tai padaryta, nors ji atrodo sudėtingesnė, nes signalizacija yra strėlių šaudyklės, o ne varpas
Nulaužkite „Hollow's Wolverine Grow Cube“ISS: 5 žingsniai
Nulaužkite Hollow's Wolverine Grow Cube už ISS: Mes esame West Hollow vidurinė mokykla iš Long Ailendo, NY. Mes siekiame inžinierių, kurie susitinka kartą per savaitę klube „Hack the Hollow“, kuriame kuriame, koduojame ir kuriame daugybę kūrėjų projektų. Galite peržiūrėti visus projektus, prie kurių dirbame H
Užrakto keitiklis: atidarykite duris naudodami QR kodą: 8 žingsniai
Užrakto keitiklis: atviros durys su QR kodu: Sveiki, mano vardas Ben Vanpoucke ir aš studijuoju naujųjų medijų ir komunikacijos technologijas „Howest“mieste Kortrijke, Belgijoje. Kaip užduotis mokyklai, mums reikėjo sukurti daiktų interneto įrenginį. Išsinuomodamas būstą per „Airbnb“, sugalvojau atidaryti butą
Su „Arduino“padarykite automatines savijautos atidarymo ir uždarymo duris!: 4 žingsniai
Su „Arduino“padarykite automatines savijautos atidarymo ir uždarymo duris!: Ar kada nors norėjote, kad jūsų durys atsidarytų automatiškai, kaip ir mokslinės fantastikos filmuose? Dabar galite tai padaryti vadovaudamiesi šia instrukcija. Šioje instrukcijoje mes sukursime duris, kurios gali automatiškai atsidaryti ir užsidaryti jums neliesdami durų. Ultragarsiniai jutikliai