Senzor prisutnosti: 12 koraka
Senzor prisutnosti: 12 koraka
Anonim
Senzor prisutnosti
Senzor prisutnosti

Nosivi su obično uređaji s omogućenim BLE -om. Uobičajeno je da povremeno oglašavaju neke podatke uz njegovu MAC adresu. Koristimo ESP za skeniranje ovih podataka i pokretanje događaja putem interneta kada pronađe određenu MAC adresu. Ova posebna implementacija je za jednog korisnika na pametnom utikaču spojenom na svjetiljku. Ali također se može koristiti sa skupom registriranih uređaja sa bilo kojom vrstom IOT uređaja.

Supplies

  1. ESP32
  2. (opcionalno) TECKIN WiFi zidni utikač S10
  3. BLE omogućen uređaj bilo koje vrste

Korak 1: Definirajte svoj scenarij

Definirajte svoj scenarij
Definirajte svoj scenarij

Za okidač biste mogli koristiti većinu modernih nosive opreme. Ovo može biti Apple Watch, mi fit bend, telefon ili čak vaš vlastiti uređaj koji možete sami napraviti na bazi ESP32.

Vjerovatno jedan od najvažnijih koraka. Morate razmišljati unaprijed u 3 stvari:

1. Koji će nosivi uređaj ili uređaj biti okidač senzora blizine.

2. Šta će pokrenuti senzor (to se radi putem IFTTT -a).

3. Kada će se senzor aktivirati

Za ovaj primjer, ja ću koristiti svoj Apple Watch za aktiviranje pametnog utikača za uključivanje lampe kada sjednem za svoj stol.

U ovom vodiču ćemo pogledati pametni utikač kompanije TECKIN. Na Amazonu ga možete pronaći po povoljnoj cijeni. Kompatibilan je i sa Alexa i google Home. Velika vrijednost!

Korak 2: (Uvod) Postavite okidač - više korisnika

Ako želite konfigurirati tako da radi bilo koja osoba s uređajem koji podržava BLE dovoljno blizu vašeg senzora, preskočite sljedeći korak. Ovo je prilično korisno, postavku lično koristim. Imajte na umu da se ovaj senzor može lako hakirati ili iskoristiti za aktiviranje, tako da ne bih imao puno povjerenja u pintu sa sigurnosnog postolja; samo iz praktične svrhe (tj. ne želim da ga pokreće moj računar jer će uvijek biti pored senzora).

Korak 3: (Uvod) Postavite okidač - ograničeni korisnici

Ovaj korak se uvelike razlikuje od vašeg postavljanja. Da biste ograničili koji uređaji mogu pokrenuti senzor, morate ograničiti mnoge rute:

- BLE MAC adresa (ekvivalentna IP adresi na WiFi mreži. Razlog što ne jamči sigurnost jer nije prava MAC adresa modula. Na iOS uređajima mijenja se svaki put kada ponovo pokrenete bluetooth, nije tako zabavno)

- Kôd proizvođača (bolja opcija, ali nema načina da ograničite određene uređaje istog proizvođača/modela)

- Ime, UIDD usluge (rijetka, ali najbolja opcija, uglavnom DIY nosivi uređaji ili možda aplikacija za Android)

Neke napomene:

1. Ako se radi o iOS uređaju:

- Imate neke važne prednosti i nedostatke. Profesionalno, oni prenose nivo snage na kojem se nalaze podaci o oglašavanju. To je korisno u fazi kalibracije, vidjet ćete da je korištenje Apple Watcha korisno jer emitira na 24 db, iPhone i većina uređaja emitiraju na 12 db.

CON, morat ćete pronaći rješenja. Oglašena MAC adresa (glavni način identifikacije) mijenja se svaki put kada se bluetooth signal ponovo pokrene, što znači da ćete morati učitavati kôd svaki put … nije zabavno. Možete koristiti podatke proizvođača koji se mogu razlikovati među modelima. To znači da možete ograničiti tako da osjeti "sav iPhone 8".

2. Ako se radi o Android uređaju:

- Ja lično nemam android uređaj. Ali vjerojatno postoji mnogo aplikacija koje mogu popraviti MAC adresu ili čak dodati personalizirano ime (ako to želite učiniti). Na iOS uređajima postoji aplikacija "nrf connect" koja to može učiniti. Ali nije uporan, što znači da ako zaključate ekran ili promijenite aplikaciju.. konfiguracija se isključuje za nekoliko sekundi.

3. Još jedan ESP32. (najbolje je)

- Jednostavan kod poput ovog može se implementirati u uređaj poput ovog; pametna traka sa pogonom na esp32. Kod je zapravo primjer iz ESP BLE biblioteke BLE_IBeacon.ino. Nisam ga isprobao previše jer je moj pametni bend u prodaji, vjerojatno ću uskoro objaviti ažuriranja.

Korak 4: (Podešavanje) - IFTTT

(Postavljanje) - IFTTT
(Postavljanje) - IFTTT

U redu, tako da biste u ovoj fazi trebali uzeti sve odluke o svom toku rada. Imate svoj pokretački uređaj, imate mjesto za postavljanje ESP -a s bežičnom vezom na internet i imate na umu radnju koju IFTTT može automatizirati.

IFTTT je moćan; bilo da se radi samo o slanju jednostavnog obavještenja na vaš uređaj, želite da se pošalje tweet ili uključite žarulju sa pametnim utikačem. U ovom vodiču ćemo implementirati posljednji sa pametnim utičnicama TECKIN kompatibilnim sa IFTTT. U svakom slučaju, preuzmite aplikaciju IFTTT ili idite na web stranicu IFTTT.com i stvorite račun.

To je to za sada!

Ako samo želite poslati obavijest ili nešto drugo osim priključka Smart Life, možete preskočiti sljedeći korak.

Korak 5: (Postavljanje) IOT uređaj *opcionalno *

Preuzmite aplikaciju "Smart Life" s PlayStore -a (android) ili AppStore -a (iOS). Upute su prilično jasne, iako je proces pomalo kompliciran. Otkrio sam da je u fazi skeniranja (kada je plavo dugme treperilo) u jednom trenutku prestalo, a zatim sam ga ručno pritisnuo da se uključi i isključi nekoliko puta. To mi je pomoglo. U svakom slučaju; postavljanje ovog priključka ne razlikuje se ništa s našom aplikacijom, pa ako već posjedujete jedan i povežete ga s aplikacijom, trebali biste biti spremni za upotrebu.

NAPOMENA: Prije nego što nastavite s ovog koraka, morate omogućiti uključivanje i isključivanje prekidača u aplikaciji. To će značiti da ste pravilno konfigurirali pametni utikač.

Aplikacija IFTTT bi se trebala besprijekorno sinhronizirati s aplikacijom "Smart Life", što bi vjerovatno zahtijevalo autentifikaciju prilikom stvaranja događaja u sljedećem koraku.

Korak 6: (Postavljanje) IFTTT Webhook Api *Iskusni korisnici *

(Postavljanje) IFTTT Webhook Api *Iskusni korisnici *
(Postavljanje) IFTTT Webhook Api *Iskusni korisnici *

Ako niste koristili aplikaciju IFTTT prije i niste zadovoljni s nekim tehničkim terminima, preskočite ovaj korak za Detaljni vodič (sa fotografijama) u sljedećem koraku.

1. Kreirajte novi događaj.

2. Postavite "this" na API webhook -a. Zapišite ime koje ste postavili za događaj.

3. Postavite "to" na željeno ponašanje. Za pametan utikač pretražite pametni život i odaberite 'uključi'.

4. Odaberite svoj pametni utikač i pritisnite završi.

5. Na početnom ekranu potražite karticu 'webhooks'. Nakon što ste ga pritisnuli, pritisnite "get more" pri dnu.

6. Dokumentacija za štampu. Ovo će vam pokazati vaš api ključ zajedno s graditeljem URL -a i testerom.

7. Koristite de URL builder s imenom koje ste napisali na #2. Kopirajte to i zapišite.

8. Ponovite ako želite da se aktivira ponašanje kada senzor prisutnosti više nije aktivan. U našem slučaju ponovite #3, ali odaberite 'isključi'. Takođe, na drugom mjestu ime bi ovaj put trebalo biti drugačije.

Ako ste završili, preskočite sljedeći korak.

Korak 7: (Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *

(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *
(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *
(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *
(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *
(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *
(Postavljanje) IFTTT Webhook Api *Za početnike sa fotografijama *

Detaljan vodič *vodič za fotografije trebao bi biti sličan za android i na webu *

IFTTT je jednostavan tok rada, ako se "ovo dogodi" onda se "to dogodi". Morate stvoriti novu, 1. u aplikaciji pritisnite "get more" i prikazat će se popis.

2. Odmah ispod trake za pretraživanje a kaže "napravite svoje aplete od nule", pritisnite znak Plus.

3. Pritisnite znak "ovo" plus

U našem slučaju "ovo" će biti api poziv putem interneta. Api poziv je konsultacija s URL -om, poput kada upišete google pretraživanje, a url je google.com/ (dugačak niz znakova). Da biste kreirali api: (nakon pritiska na "ovo")

4. Pretražite "webhooks"

5. Odaberite jedinu opciju

6. Imenujte svoj događaj (u ovom primjeru ćemo koristiti "Sit"). Zapišite ovo ime, veoma važno.

7. Pritisnite Kreiraj okidač

Uredu! mi smo bliže, sada "onaj" dio. Za ovaj vodič ćemo postaviti "to" za uključivanje pametnog utikača. Ali možete odabrati bilo što od IFTTT -a. Dobar način testiranja postavki je odabir "obavijesti" koje će poslati obavijest na vaš telefon svaki put kada se senzor pokrene (ili se pozove api, čak i iz web preglednika: korisno za testiranje!)

8. Pritisnite "taj" znak plus

9. Pretražite "Smart Life" (ili "notifications")

10. Pritisnite 'uključi' (morat ćete ponoviti ove korake da kreirate još jedan događaj za isključivanje pri odlasku)

11. Ako imate obje aplikacije i utikač ispravno konfiguriran, trebali biste vidjeti utikač na padajućem izborniku 'koji uređaj/grupa.

12. Odaberite Kreiraj radnju, a zatim završite.

Sada biste trebali vidjeti da je događaj povezan. Sada moramo dobiti api URL. Za ovo:

13. Idite na početni ekran IFTTT

14. Pronađite Webhooks karticu

15. Odaberite "Dobijte više"

16. Dodirnite dugme Dokumentacija. Trebali biste vidjeti web stranicu s vašim ključem.

17. Na oznakama mjesta "{event}" unesite naziv svog događaja (zapamtite tačku 6)

18. Idite na dno stranice i dodirnite "Testiraj"

Ono što biste vjerojatno trebali vidjeti je zeleni transparent "događaj je pokrenut" i trebali biste vidjeti je li uspio ili ne. U našem slučaju utikač bi trebao biti uključen. Ili biste trebali vidjeti obavijest ako ste odlučili ići tim putem. Može potrajati neko vrijeme, ali ne više od minute da vidite jeste li uspjeli. Zapamtite da je vjerojatno osjetljivo na velika i mala slova.

19. Konačno. Kopirajte url gdje ste zamijenili naziv svog događaja (na 17) i spremite ga na sigurno mjesto. Ovo će vam uskoro trebati.

20. Ponovite 1-12. U 6 ćemo ovaj put koristiti "Stand". Na 10 umjesto toga odaberite 'isključi'.

21. Ponovite 13-18 ako želite, ali možete pobjeći s URL-om koji ste kopirali na 19, ali sada promijenite mjesto na kojem ste napisali "Sjedite" i zamijenite sa "Stani". Ovo možete testirati u web pregledniku. Trebalo bi pisati 'Čestitamo! Otpustili ste događaj na štandu '. Tada je utikač trebao biti isključen.

Korak 8: (Kôd) Programiranje ESP32

(Kôd) Programiranje ESP32
(Kôd) Programiranje ESP32

Ovaj korak možete preskočiti ako vam je ugodno učitavati skice iz Arduino IDE -a na svoju ESP32 ploču. Ne zaboravite samo postaviti particiju od 2mb za aplikaciju barem budući da skica teži nešto više od uobičajenog ograničenja od 1,2 MB.

Postoji mnogo sjajnih vodiča, a neke od njih preporučujem:

circuitdigest.com/microcontroller-projects…

Ali ipak, da niste toliko izgubljeni, razložit ću nekoliko važnih ključnih točaka.

- ESP32 nije Arduino ploča, ali ga još uvijek može programirati Arduino IDE. S jednostavnim Arduino kodom. No, ipak ćete morati konfigurirati IDE za rad s ESP32.

- Morat ćete instalirati neke biblioteke putem 'Upravitelja dodatnih ploča' prema želji. Ovo je URL koji trebate zalijepiti:

-(izborno, može pomoći) Na Alati-> Upravljanje bibliotekama… -> (pronađite esp BLE biblioteku)

- u Tools, sada biste trebali imati dugačku listu ESP uređaja, preporučujem ESP32 dev modul

- (VAŽNO) Odaberite (nema Ota 2mb aplikacije/2mb spifova) u upravitelju particija. Ovaj korak je važan jer aplikacija postaje prilično teška kao proizvod korištenja WiFi i http veze kao i BLE skenera.

Ako ste sve učinili kako treba, trebali biste moći programirati ESP32. Sada je proces takvog postupanja sličan arduinu na nekim pločama. Priključite ga, odaberite odgovarajuću ploču, USB priključak i gotovi ste. No, u mnogim drugim slučajevima morat ćete nastaviti

Korak 9: (Kôd) Prenesite kôd na ESP32

(Kôd) Prenesite kôd na ESP32
(Kôd) Prenesite kôd na ESP32

U redu, ako ste ovdje, to znači da ste uspješno prenijeli skicu na ploču ESP32, po mogućnosti blink.ino skicu.

Evo, u prilogu je glavni kod, možete ga pronaći i na GitHub repo -u. Morate zamijeniti sljedeće:

SSID - Vaše ime za WiFi

PSK - Vaša lozinka za WiFi

sit - URL sa "Sit" iz IFTTT API -ja koji ste napisali ranije

stand - URL sa "Stand" iz IFTTT api -a koji ste ranije napisali

Sada približite okidač uređaju ploči, a zatim učitajte kôd. Zatim otvorite Serijski monitor (baud 115200) nakon uspješno učitanog koda.

Ako ovo namjeravate koristiti s bilo kojom vrstom BLE uređaja, preskočite sljedeći korak.

NAPOMENA: ako dobijete poruke o grešci memorije, to je zato što zadane postavke ostavljaju samo 1 MB memorije (od prisutnih 4 MB) za ESP sirovi kod. Ostavlja dio za nekoliko stvari kao opciju za programiranje bežičnim putem. Obično radim sledeće:

- u Tools, sada biste trebali imati dugačku listu ESP uređaja, preporučujem ESP32 dev module- Odaberite 'no Ota 2mb app/2mb spifs' u upravitelju particija.

To mi daje dvostruki memorijski prostor, potreban za ovu aplikaciju.

Korak 10: (Kôd) Prenesite kôd na ESP32 *opcionalno *

(Kôd) Prenesite kôd na ESP32 *opcionalno *
(Kôd) Prenesite kôd na ESP32 *opcionalno *

Evo škakljivog dijela koji se spominje u koraku "Postavite okidač". Monitor će prikazati MAC adresu (trebala bi izgledati kao ##: ##: ##: ##: ## gdje je#broj ili slovo od a do f), proizvođačev kod i RSSI (negativan broj). Ovdje se morate malo poigrati da pronađete koji je vaš uređaj. Obično ga stavljam pored ploče tako da jasno vidim koji je najmanji broj. Poništio sam odabir polja 'autoscroll' kako bih mogao kopirati vrijednosti.

  • Ako se radi o Mac adresi, ispunite 'myDevice' s njom. Zatim raskomentirajte red #96 i komentar #95
  • Ako je to ime, ispunite 'myDevice' s njim. Zatim raskomentirajte red #97 i komentar #95
  • Ako je to MaufactureData, za sada nemate sreće, ja još uvijek razvijam taj dio.

Za dodavanje podrške za uređaje may trebali biste moći kopirati uslovni iskaz bilo na #96 ili #97 i postaviti ih jedno pored drugog u ovoj sintaksi:

if ((uvjet1) || (uvjet2) || (uvjet3)) {

U skladu s tim dodajte još varijabli (myDevice1, myDevice2, myDevice3).

Korak 11: Postavite ESP i kalibrirajte

Postavite ESP i kalibrirajte
Postavite ESP i kalibrirajte

Ovo je najvažniji dio postavljanja. Pažljiv prolazak kroz ovaj proces bit će razlika u tome što će raditi poput magije ili će vam samo zadati jake glavobolje.

U ovom trenutku kôd koji ste postavili radi sa parametrima koje sam lično testirao i svakodnevno koristim sa telefonom na stolu; to ne znači da će i vama uspjeti. Zato morate sami izvršiti kalibraciju.

1. Postavite ESP32 ploču na njeno konačno FIKSNO mjesto. Ako iz nekog razloga pomaknete položaj vašeg ESP32, vjerojatno biste to trebali ponoviti. To će vam osigurati općenito dobro iskustvo.

1. (dodatno) imajte na umu da ćete pri tome morati imati mogućnost povezivanja sa računarom. Ako ne možete jer ste na radnoj površini, morat ćete izvršiti pokušaj i grešku imajući na umu da svako ispitivanje mora biti približno identično u položaju, uređaju za pokretanje i drugim faktorima koji se mogu računati.

2. Otvorite Serial Monitor sa kodom koji radi.

Kod će prema zadanim postavkama putem serijskog monitora objaviti RSSI (indikaciju primljene jačine signala) svakog pronađenog Bluetooth uređaja (ili samo uređaja koji odgovaraju vašim parametrima). Poigrajte se malo sa svojim glavnim uređajem za akciju (uređajem za aktiviranje). Morate odrediti koje pragove želite koristiti. Pažljivo prilagođavanje ove konfiguracije će

3. Kada odredite pragove, zamijenite ih ovdje:

  • near_thrsh
  • far_thrsh

4. Ponovo učitajte kôd, testirajte i ponavljajte dok ne pronađete optimalne performanse.

Nekoliko stvari koje treba uzeti u obzir:

1. Želite oko 20db razlike između pragova. Ako je near_thrsh postavljeno na 50, tada je poželjno da je far_thrsh 70 ili više. Ako je razlika prekratka, možda ćete pronaći neke udaljenosti ili mjesta na kojima se ploča non -stop uključuje i isključuje. Povećanjem ove razlike izbjeći ćete ovo neželjeno ponašanje. Lično sam otkrio da je marža od 20 db dovoljno dobra.

2. Na kalibracijskim testovima, koliko god je to moguće, to će pomoći u određivanju najboljih performansi.

3. Proučite razred u redu 82 koda; evo gdje je sva logika urađena. Kôd je ipak dobro komentiran. Slobodno pitajte na GitHub -u!

Korak 12: Čestitamo! Završio si

Javite mi u komentarima sve prijedloge ili ako imate problema. Ne zaboravite provjeriti GitHub ako je vaš problem već riješen!