Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Tapti priekabiavimo auka važiuojant į darbą ir atgal yra gana įprastas dalykas daugeliui žmonių, ypač moterų. Kad ir kokia būtų šalis, viešasis transportas dažnai prilygsta žinojimui, kad gali būti seksualiai priekabiaujamas ar net sekamas vaikščiojant namo. Tokiose situacijose ne visada lengva reaguoti ir įvertinti grėsmę - nuo paprasčiausio išgąsčio nuo skambučio iki tikro susirūpinimo, kad gali atsitikti kažkas blogo. Baimė visada yra veiksnys, o nenorėjimas atkreipti potencialaus priekabiautojo dėmesio gali neleisti mums įspėti ką nors, kuo pasitikime.
„Talos“yra mažas įrenginys, jungiantis prie jūsų telefono ir leidžiantis išsiųsti tekstą pasirinktam asmeniui. Į SMS automatiškai įtraukiama paskutinė žinoma vieta ir iš anksto įrašytas jūsų pasirinktas tekstas. Pasirodžius paprastam raktų pakabukui, „Talos“lieka prikabintas prie jūsų krepšio ir leidžia diskretiškai jį suaktyvinti paspaudus, o tai sukelia teksto pranešimo siuntimą. Dėl mažo energijos suvartojimo nereikia kasdien jo įkrauti ir rizikuoti jį pamiršti arba tiesiog kasdien priminti apie grėsmę, su kuria susiduriate.
Šį projektą sudaro trys dalys:
- Fizinis modulis: naudojau „Puck-js“modulį, kuris yra paremtas „nRF52832“moduliu ir gali būti užprogramuotas naudojant „Javascript“dėka „Espruino“- „Android“programa: sukūriau paprastą programą, kuri jungiasi prie modulio. „Puck JS“dangtelis atrodys kaip paprastas raktų pakabukas
Prekės
- „Puck.js“modulis (https://www.puck-js.com)
- „Android“telefonas su bent 8.0 versija- kompiuteris su įdiegta „Android Studio“
- 3D spausdintuvas (neprivaloma)
1 žingsnis: apžvalga
Ši schema turėtų parodyti įvairius komponentus: pats „Puck“modulio kodas yra tikrai paprastas, o mes leidžiame „Android“programai pasirūpinti ryšiu, o ne „Puck“nuskaityti telefoną. Mes naudosime „Bluetooth Low Energy“ir jo charakteristikas bendraudami tarp programos ir įrenginio, kad akumuliatorius veiktų ilgiau
2 žingsnis: Puck programavimas
Patikrinę „puck-js.com“, kad jūsų naršyklė ir kompiuteris palaiko žiniatinklio „Bluetooth“, eikite į www.espruino.com/ide ir prisijunkite prie „Puck“spustelėdami kištuko piktogramą viršutiniame kairiajame puslapio kampe.
Tada galite nukopijuoti ir įklijuoti kodą iš pridėto failo į redaktorių ir nusiųsti jį į „Puck“.
Pirmoje kodo dalyje apibrėžiame funkciją „Blink“ir „updateCharacteristic“, kurią vėliau naudosime kodu. Funkcijoje updateCharacterical mes priskiriame dabartinę datos datą, kad įsitikintume, jog ji tikrai bus laikoma nauja verte. Tada pranešame bet kuriam šio naujinimo abonentui.
Po šių deklaracijų į kodą, kuris bus vykdomas:
56 eilutėje esantis kodas leidžia nuskaityti savo ritulio fizinį adresą, kurį turėsite kovoti „Android“programoje: atšaukite šią eilutę ir adresą pamatysite žurnaluose kairėje IDE pusėje (žr. ekrano kopija). Gavę šią vertę, galite komentuoti eilutę arba palikti ją taip.
Po to mes apibrėžiame vieną pasirinktinę BLE paslaugą (UUID yra atsitiktinės vertės) su trimis skirtingomis charakteristikomis, apie kurias reikia pranešti. Savo žinioms perduoti naudosime ne pačias vertybes, o tik tai, kad jos pasikeitė.
78 ir 79 eilutėse mes nustatėme kai kuriuos klausytojus, dėl kurių integruotas šviesos diodas mirksės, kai įrenginys bus prijungtas arba atjungtas nuo kito „Bluetooth“įrenginio. Galiausiai 81 eilutėje prie integruoto mygtuko pridedame pertraukimą, kad paspaudus jį būtų iškviesta atnaujinimo charakteristika
3 veiksmas: sukurkite „Android“programą
Kadangi visoje programoje yra keletas gana sunkių bibliotekų, pridedamame ZIP faile įtraukiau tik šaltinio failus ir programos laipsnio failą. Kad tai veiktų, turite paleisti „Android“studiją ir sukurti naują projektą (pasirinkite „Tuščia veikla“, žr. Ekrano kopiją). Pasirinkite 26 („Android 8.0“, „Oreo“) kaip minimalią programos versiją, nes kai kurie mano parašyti kodai naudoja API, kurių anksčiau nebuvo. Kai jūsų projektas bus nustatytas, turėsite programos failą build.gradle (pažymėtas build.gradle - Module: App). Atidarykite jį ir nukopijuokite turinį iš ZIP failo: IDE paragins jus atlikti „Gradle“sinchronizavimą, kurio metu ji atsisiųs Šiaurės šalių biblioteką, kuria remiasi programa. Tada galite vieną kartą paleisti programą ir patikrinti, ar ji veikia.
Kai programa bus įdiegta jūsų prietaise, eikite į nustatymų meniu, pasirinkite Programos ir raskite programą sąraše. Pasirinkite jį ir spustelėkite „Autorizacijos“. Čia turėsite kelis radijo mygtukus, kurie pagal numatytuosius nustatymus bus išjungti: patikrinkite juos visus, kad įsitikintumėte, jog programa turi prieigą prie visko, ko reikia.
Dabar galite importuoti šaltinio failus iš ZIP archyvo: lengviausias būdas tai padaryti yra sukurti naujas klases (dešiniuoju pelės mygtuku spustelėkite, naujas „Kotlin“failas/klasė) ir suteikti jiems tą patį pavadinimą, kaip ir iš archyvo. Kai klasės failas bus atidarytas, galėsite laisvai nukopijuoti ir įklijuoti kodą.
Jei norite naudoti tik programą, tiesiog pakeiskite „BTService“klasės 31 eilutės adresą ir įveskite adresą, kurį gavote atlikdami ankstesnį veiksmą. Dabar turėtumėte turėti galimybę surinkti programą ir paleisti ją savo įrenginyje!
Jei norite sužinoti daugiau apie programos veikimą, skaitykite toliau:-)
Ši diagrama padės geriau suprasti, kas vyksta programoje: - „MainActivity“yra ta, kurią vartotojas naudos tik kartą: jos pagrindinis tikslas yra, kad jie galėtų įvesti asmens telefono numerį jie norėtų susisiekti naudodamiesi „Talos“, taip pat tekstu jiems išsiųsti.
- „BTService“yra nauja informacija, o tai reiškia, kad kai ji paleidžiama, ji sukuria nuolatinius pranešimus, kurie riboja galimybę, kad „Android“nužudys paslaugą. Ši paslauga bando prisijungti prie „Talos“naudojant klasikinį „Bluetooth Low Energy“procesą - naudojau „Nordic“pavyzdinį kodą ir kitus išteklius, kuriuos galėjau rasti. Šiuo metu jis konkrečiai ieško ritulio UUID: turėtumėte pakeisti šią vertę (private val remoteMacAddress = "CF: EB: 2F: 6E: 33: 30"), kad ji atitiktų jūsų įrenginio adresą, gautą atlikus ankstesnį veiksmą. Suradęs įrenginį ir patikrinęs, ar jame yra mūsų ieškoma paslauga, jis užsisako pranešimus apie charakteristikas, kurios bus atnaujintos, kai tik vartotojas paspaudžia mygtuką.
Kai „BTService“gaus šios charakteristikos atnaujinimą, ji suaktyvins „LocalBroadcast“objektą, kad kiti programos komponentai galėtų reaguoti. Ji taip pat paskambins SMSIntentService, kad ji išsiųstų SMS
- „SMSIntentService“nuskaitys telefono numerį ir tekstą iš „SharePreferences“, kad vartotojas įvestų paskutines vertes. Tada jis automatiškai išsiųs SMS, vartotojui nesąveikaujant su programa, ir prie SMS pridės paskutinę žinomą vartotojo vietą.
4 žingsnis: dėklo projektavimas
Dabartiniame „Puck“komplekte jau yra maža kilpa, kad jis būtų pritvirtintas prie raktų pakabuko, todėl beveik galėtume tai palikti. Visiškai balti silicio gaubtai, kurie man atsitiko, vis dar atrodė gana keistai, todėl, kad jie nesukeltų jokių įtarimų, suprojektavau paprastą daiktą, kurį galiu uždėti ant ritulio. Jie sako, kad nuotrauka verta tūkstančio žodžių, aš maniau, kad duosiu jums 25 vaizdus per sekundę: šiame vaizdo įraše pamatysite, kaip aš panaudojau „Fusion 360“kurdamas dizainą, įskaitant mano naudojamas komandas ir nuorodas:
5 žingsnis: sudėkite viską kartu
Dabar, kai turite skirtingus komponentus, laikas juos sujungti! Dabartiniame „Puck“modulio korpuse jau yra skylė, kuria galite įterpti grandinę - atsitiktinai turėjau seną raktų pakabuką, kurį išardžiau, bet jūs taip pat galite juos lengvai nusipirkti. Išardykite žiedą replėmis - suradę žiedo angą, pastumkite kiekvieną pusę priešingomis kryptimis, vieną link savęs, o kitą nuo savęs. Tada galite įkišti žiedą į „Puck“ir uždaryti atgal.
3D spausdinkite ką tik sukurtą dizainą - aš panaudojau violetinę PLA ir užsifiksavau ant „Puck“