Innehållsförteckning:

Närvarosensor: 12 steg
Närvarosensor: 12 steg

Video: Närvarosensor: 12 steg

Video: Närvarosensor: 12 steg
Video: Как сделать шестерню на токарном станке. 2024, November
Anonim
Närvarosensor
Närvarosensor

Bärbara enheter är vanligtvis BLE -aktiverade enheter. Det är vanligt att de regelbundet annonserar vissa data längs dess MAC -adress. Vi använder en ESP för att skanna dessa data och utlösa en händelse via internet när den hittar en specifik MAC -adress. Denna speciella implementering är för en enda användare på en smart kontakt ansluten till en lampa. Men den kan också användas med en uppsättning registrerade enheter med alla typer av IOT -aktiverade enheter.

Tillbehör

  1. ESP32
  2. (tillval) TECKIN WiFi -väggkontakt S10
  3. BLE -aktiverad enhet av något slag

Steg 1: Definiera ditt scenario

Definiera ditt scenario
Definiera ditt scenario

För utlösaren kan du använda de flesta av de moderna bärbara enheterna. Detta kan vara en Apple Watch, ett mi fit -band, en telefon eller till och med en egen DIY -bärbar dator baserad på en ESP32.

Förmodligen ett av de viktigaste stegen. Du måste tänka framåt i tre saker:

1. Vilken bärbar enhet eller enhet som kommer att vara trigger för närhetssensorn.

2. Vad ska trigga sensorn (detta görs genom IFTTT).

3. När sensorn ska trigga

I det här exemplet kommer jag att använda min Apple Watch för att utlösa en smart kontakt för att tända en lampa när jag sitter vid mitt skrivbord.

I denna handledning kommer vi att titta på en smart plug från TECKIN. Du kan hitta den på amazon till ett bra pris. Den är också kompatibel med Alexa och google Home. Stort värde!

Steg 2: (Intro) Ställ in utlösare - flera användare

Om du vill konfigurera så att den fungerar för alla personer med en BLE -aktiverad enhet tillräckligt nära din sensor, hoppa sedan över nästa steg. Detta är ganska användbart, är inställningen jag personligen använder. Tänk på att den här sensorn lätt kan hackas eller utnyttjas för att utlösa så att jag inte skulle lita mycket på en säkerhetsstativpint; bara för en praktisk (dvs. jag vill inte att den ska triggas av min dator eftersom den alltid kommer att ligga bredvid sensorn).

Steg 3: (Intro) Set Trigger - Limited Users

Det här steget varierar mycket beroende på din inställning. För att begränsa vilka enheter som kan utlösa sensorn har du många vägar att begränsa:

- BLE MAC -adress (motsvarar IP -adressen på ett wifi -nätverk. Anledningen till att den inte garanterar säkerhet eftersom det inte är modulens riktiga MAC -adress. På iOS -enheter ändras den varje gång du startar om bluetooth, inte så kul)

- Tillverkarkod (bättre alternativ, men inget sätt att begränsa specifika enheter från samma tillverkare/modell)

- Namn, Service UIDD (sällsynt men det bästa alternativet, mestadels DIY -wearables eller kanske en Android -app)

Några anteckningar:

1. Om det är en iOS -enhet:

- Du har några viktiga fördelar och nackdelar. Pro, de överför effektnivån vid vilken det är reklamdata. Det är användbart i kalibreringsfasen, du kommer att upptäcka att det är användbart att använda en Apple Watch eftersom den sänder vid 24db, iPhones och de flesta enheter sänder vid 12db.

CON, du måste hitta lösningar. Den annonserade MAC -adressen (huvudmetoden för identifiering) ändras varje gång Bluetooth -signalen startas om, vilket innebär att du måste ladda upp koden varje gång … inte kul. Du kan använda tillverkarens data som kan variera mellan modellerna. Detta innebär att du kan begränsa så att den känner av "all iPhone 8".

2. Om det är en Android -enhet:

- Jag har personligen ingen Android -enhet. Men det finns förmodligen många applikationer som kan fixa MAC -adressen eller till och med lägga till ett personligt namn (om det är den vägen du vill gå). På iOS -enheter finns det en app "nrf connect" som kan göra detta. Men det är inte ihållande, vilket betyder att om du låser skärmen eller byter appar.. konfigurationen försvinner om ett par sekunder.

3. En annan ESP32. (din bästa insats)

- En enkel kod som denna kan implementeras i en enhet som den här; ett esp32 -drivet smartband. Koden är faktiskt ett exempel från ESP BLE -biblioteket BLE_IBeacon.ino. Jag har inte testat det så mycket eftersom mitt smarta band skickar, kommer förmodligen att lägga upp uppdateringar snart.

Steg 4: (Setup) - IFTTT

(Setup) - IFTTT
(Setup) - IFTTT

Ok, så i det här skedet bör du förmodligen ta alla desicions av ditt arbetsflöde. Du har din utlösande enhet, du har en plats att placera ESP med en trådlös anslutning till internet och du har en åtgärd i åtanke som IFTTT kan automatisera.

IFTTT är kraftfullt; oavsett om det bara är att skicka en enkel avisering till din enhet, vill du att en tweet ska skickas eller slå på en glödlampa med en smart kontakt. I denna handledning kommer vi att implementera den sista med TECKIN smarta kontakter som är kompatibla med IFTTT. Hur som helst, ladda ner IFTTT -appen eller gå till webben IFTTT.com och skapa ett konto.

Det är det för nu!

Om du bara vill skicka ett meddelande eller något annat än Smart Life -kontakten kan du hoppa över nästa steg.

Steg 5: (Setup) IOT -enhet *valfritt *

Ladda ner appen "Smart Life" från PlayStore (android) eller AppStore (iOS). Instruktionerna är ganska raka fram, även om processen är lite knepig. Jag fick reda på det i scanningsfasen (när den blå knappen blinkade) den stannade någon gång, sedan tryckte jag manuellt på den för att slå på och av ett par gånger. Det hjälpte mig. Hur som helst; installationen av den här kontakten är inget annorlunda med vår applikation så om du redan äger en och har den ansluten till din app bör du vara redo att gå.

OBS: Du måste kunna slå på och av strömbrytaren från appen innan du går vidare från det här steget. Det betyder att du har konfigurerat den smarta kontakten korrekt.

IFTTT -appen ska synkronisera med appen "Smart Life" sömlöst, förmodligen föranleda en autentisering medan en händelse skapas i nästa steg.

Steg 6: (Setup) IFTTT Webhook Api *Erfarna användare *

(Setup) IFTTT Webhook Api *Erfarna användare *
(Setup) IFTTT Webhook Api *Erfarna användare *

Om du inte har använt innan IFTTT -appen och inte är så bekväm med några tekniska termer, hoppa över det här steget för detaljerad guide (med foton) i nästa steg.

1. Skapa en ny händelse.

2. Ställ in "detta" för att vara en webhook -API. Skriv ner namnet du ställde in på evenemanget.

3. Ställ in "det" till önskat beteende. För smartpluggen, sök smart life och välj "slå på".

4. Välj din smarta kontakt och tryck på finish.

5. Leta efter "webhooks" -kortet på startskärmen. När du har tryckt på den trycker du på "få mer" längst ner.

6. Pressdokumentation. Detta visar dig din api -nyckel tillsammans med en URL -byggare och testare.

7. Använd URL -byggaren med namnet du skrev på #2. Kopiera det och skriv ner.

8. Upprepa om du vill att ett beteende ska utlösas när närvarosensorn inte längre är aktiv. I vårt fall upprepa #3 men välj "stäng av". Vid #2 borde namnet också vara annorlunda den här gången.

Om du är klar hoppa över nästa steg.

Steg 7: (Setup) IFTTT Webhook Api *För nybörjare med foton *

(Setup) IFTTT Webhook Api *För nybörjare med foton *
(Setup) IFTTT Webhook Api *För nybörjare med foton *
(Setup) IFTTT Webhook Api *För nybörjare med foton *
(Setup) IFTTT Webhook Api *För nybörjare med foton *
(Setup) IFTTT Webhook Api *För nybörjare med foton *
(Setup) IFTTT Webhook Api *För nybörjare med foton *

Detaljerad guide *fotoguiden ska likna Android och på webben *

IFTTT är ett enkelt arbetsflöde, om "detta händer" då "det händer". Du måste skapa en ny, 1. tryck på "få mer" i appen så visas en lista.

2. Rätt nedanför sökfältet a säger "gör dina egna applets från grunden", tryck på plustecknet.

3. Tryck på "detta" plustecken

I vårt fall kommer "detta" att vara ett api -samtal via internet. Ett API -samtal är en konsultation till en URL, ungefär som när du skriver en google -sökning och webbadressen är google.com/(en lång rad tecken). För att skapa api: (efter att ha tryckt på "detta")

4. Sök "webhooks"

5. Välj det enda alternativet

6. Ge ditt evenemang ett namn (i det här exemplet använder vi "Sit"). Skriv ner detta namn, mycket viktigt.

7. Tryck på Skapa utlösare

Ok! vi är närmare, nu till "den" delen. För denna handledning kommer vi att ställa in "det" för att slå på Smart -kontakten. Men du kan välja allt från IFTTT. Ett bra sätt att testa installationen är att välja "aviseringar" som skickar ett meddelande till din telefon varje gång sensorn utlöser (eller API: et ringer, även från en webbläsare: användbart för testning!)

8. Tryck på "det" plustecknet

9. Sök "Smart Life" (eller "aviseringar")

10. Tryck på "slå på" (du måste upprepa dessa steg för att skapa en annan händelse att stänga av när du lämnar)

11. Om du har båda apparna och kontakten korrekt konfigurerad bör du se din kontakt i rullgardinsmenyn 'vilken enhet/grupp.

12. Välj Skapa åtgärd och avsluta.

Nu ska du se att händelsen är ansluten. Nu måste vi få api -URL: en. För detta:

13. Gå till IFTTT -startskärmen

14. Hitta Webhooks -kort

15. Välj "Få mer"

16. Knacka på knappen Dokumentation. Du bör se en webbsida med din nyckel.

17. Fyll i namnet på ditt evenemang på platshållarna "{event}" (kom ihåg punkt 6)

18. Gå längst ner på sidan och tryck på "Testa det"

Det du förmodligen borde se är en grön banner "händelse har utlösts" och du bör se om det fungerade eller inte. I vårt fall ska kontakten sättas på. Eller så borde du se ett meddelande om du bestämde dig för att gå den vägen. Det kan ta lite tid, men inte mer än en minut att se om du lyckades. Kom ihåg att det förmodligen är skiftlägeskänsligt.

19. Slutligen. Kopiera webbadressen där du bytte namn på din händelse (kl. 17) och spara den någonstans säkert. Du behöver det här snart.

20. Upprepa 1-12. Vid 6 kommer vi att använda "Stand" den här gången. Vid 10 väljer du "stäng av" istället.

21. Upprepa 13-18 om du vill, men du kan komma undan med webbadressen som du kopierade vid 19, men ändra nu platsen där du skrev "Sitt" och ersätt med "Stand". Du kan testa detta i en webbläsare. Det ska stå 'Grattis! Du har avlossat Stand -evenemanget '. Då skulle kontakten ha stängts av.

Steg 8: (Kod) Programmering av ESP32

(Kod) Programmering av ESP32
(Kod) Programmering av ESP32

Du kan hoppa över det här steget om du känner dig bekväm med att ladda upp skisser från Arduino IDE till ditt ESP32 -kort. Kom bara ihåg att ställa in en partition på 2mb för appen åtminstone eftersom skissen väger lite mer än 1,2mb vanlig gräns.

Det finns många bra handledning där ute, här är några som jag rekommenderar:

circuitdigest.com/microcontroller-projects…

Men ändå, så du är inte så förlorad, jag kommer att bryta ner några viktiga viktiga punkter.

- ESP32 är inte ett Arduino -kort men det kan fortfarande programmeras av Arduino IDE. Med enkel Arduino -kod. Men du måste fortfarande konfigurera IDE för att fungera med ESP32.

- Du måste installera några bibliotek via "Extra boards manager" efter önskemål. Detta är webbadressen du ska klistra in:

-(valfritt, kan hjälpa) På Verktygs-> Hantera bibliotek … -> (hitta esp BLE -bibliotek)

- på Tools bör du nu ha en lång lista med ESP -enheter, jag rekommenderar ESP32 dev -modul

- (VIKTIGT) Välj (ingen Ota 2mb app/2mb spifs) i partitionshanteraren. Detta steg är viktigt eftersom appen blir ganska tung som en produkt av att använda både wifi/http -anslutningar och en BLE -skanner.

Om du gjorde allt rätt borde du kunna programmera ESP32. Nu är processen att göra det lik arduino i vissa brädor. Anslut den, välj matchande kort, USB -porten och du är klar. Men i många andra fall måste du fortsätta

Steg 9: (Kod) Ladda upp koden till ESP32

(Kod) Ladda upp koden till ESP32
(Kod) Ladda upp koden till ESP32

Ok, om du är här betyder det att du har laddat upp en skiss till ESP32 -kortet, helst blink.ino -skissen.

Nu, här är huvudkoden bifogad, du kan också hitta den på GitHub -repo. Du måste byta ut följande:

SSID - Ditt wifi -namn

PSK - Ditt wifi -lösenord

sit - URL: en med "Sit" från IFTTT -API: et du skrev tidigare

stand - URL: en med "Stand" Från IFTTT -API: et du skrev tidigare

Få nu din utlösarenhet nära styrelsen och ladda sedan upp koden. Öppna sedan Serial Monitor (baud 115200) efter att koden har laddats.

Om du planerar att använda detta med någon typ av BLE -aktiverad enhet hoppa över nästa steg.

OBS: om du får minnesfelmeddelanden beror det på att standardinställningarna bara lämnar 1 mb minne (av 4 mB närvarande) för ESP -råkoden. Det lämnar en portion för några saker som ett alternativ att programmera över luften. Jag brukar göra följande:

- på Verktyg bör du nu ha en lång lista med ESP-enheter, jag rekommenderar ESP32 dev-modul-Välj 'ingen Ota 2mb app/2mb spifs' i partitionshanteraren.

Detta ger mig dubbel minnesutrymme, som behövs för den här applikationen.

Steg 10: (Kod) Ladda upp koden till ESP32 *valfritt *

(Kod) Ladda upp koden till ESP32 *tillval *
(Kod) Ladda upp koden till ESP32 *tillval *

Här är den knepiga delen som nämns vid steget "Ställ in avtryckaren". Monitorn matar ut MAC -adressen (ska se ut som ##: ##: ##: ##: ## där#antingen är ett tal eller en bokstav från a till f), tillverkarkoden och RSSI (ett negativt tal). Här måste du leka lite för att hitta vilken som är din enhet. Jag brukar lägga den bredvid brädan så att jag tydligt kan se vilket som är det minsta antalet. Jag avmarkerar rutan "autoscroll" så att jag kan kopiera värdena.

  • Om det är Mac -adressen fyller du 'myDevice' med den. Avmarkera sedan rad #96 och kommentarsrad #95
  • Om det är namnet fyller du 'myDevice' med det. Avmarkera sedan rad #97 och kommentarsrad #95
  • Om det är MaufactureData du har tur för tillfället, utvecklar jag fortfarande den delen.

För att lägga till support för enheter kan du kunna kopiera villkorligt uttalande antingen på #96 eller #97 och placera dem bredvid varandra i denna syntax:

om ((villkor1) || (villkor2) || (villkor3)) {

Lägg till fler variabler (myDevice1, myDevice2, myDevice3) i enlighet därmed.

Steg 11: Placera ESP och kalibrera

Placera ESP och kalibrera
Placera ESP och kalibrera

Detta är den viktigaste delen av installationen. Att noggrant gå igenom denna process kommer att vara skillnaden i att det fungerar som magi eller bara ger dig stark huvudvärk.

Vid denna tidpunkt fungerar koden du laddade upp med de parametrar som jag personligen har testat och använder dagligen med min telefon på mitt skrivbord; det betyder inte att det kommer att fungera för dig också. Så du måste göra kalibreringen själv.

1. Placera ESP32 -kortet på dess sista FIXED -plats. Om du av någon anledning flyttar positionen för din ESP32, bör du förmodligen göra detta igen. Detta kommer att garantera dig en bra upplevelse överlag.

1. (extra) kom ihåg att du måste kunna ansluta till din dator medan du gör detta. Om du inte kan eftersom du är på en stationär dator måste du göra prov och fel med tanke på att varje försök måste vara nära identiska när det gäller positionering, utlösarenhet och andra faktorer som kan komma att räknas.

2. Öppna Serial Monitor med koden igång.

Koden skickar som standard via seriell övervakning RSSI (indikation på mottagen signalstyrka) för varje hittad Bluetooth -enhet (eller bara de enheter som matchar dina parametrar). Lek lite med din huvudsakliga enhet (utlösande enhet). Du måste bestämma vilka trösklar du vill använda. Noggrann justering av denna konfiguration kommer

3. När du bestämmer trösklarna ersätt dem här:

  • nära_thrsh
  • far_thrsh

4. Ladda upp koden igen, testa och upprepa tills du hittar optimal prestanda.

Några saker att tänka på:

1. Du vill ha cirka 20db skillnad mellan trösklarna. Om near_thrsh är satt till 50 är det önskvärt att far_thrsh är 70 eller mer. Om skillnaden är för kort, kan du hitta några avstånd eller platser där styrelsen utlöser och stänger av non -stop. Om du ökar denna skillnad kommer du att undvika detta oönskade beteende. Jag fann personligen att 20db marginal är tillräckligt bra.

2. Vid kalibreringstest av verkliga scenarier så mycket som möjligt, hjälper detta till att avgöra den bästa prestandan.

3. Studera klassen på rad 82 i koden; här är där all logik görs. Koden är dock välkommenterad. Fråga gärna på GitHub!

Steg 12: Grattis! Du är färdig

Låt mig veta i kommentarerna till eventuella förslag eller om du upplever problem. Kom ihåg att kontrollera GitHub om ditt problem redan är löst!

Rekommenderad: