Förenkla rörelsedetektering med ATtiny1627 Curiosity Nano
Bidraget med av DigiKeys nordamerikanska redaktörer
2022-02-23
Behovet av rörelsedetektering fortsätter att öka i många tillämpningar i hemmet och i industriella, kommersiella och inbyggda tillämpningar. Problemet är att rörelsedetektering kan kräva dyra digitala sensorer som är svåra att ansluta till. Dessutom, måste algoritmerna utvecklas för att upptäcka rörelsen när data väl har tagits emot, vilket är en inte helt enkel uppgift.
Flera lösningar kan känna av rörelser, men infraröda (IR) lösningar är de mest populära. Utvecklare kan välja en aktiv lösning som är vanlig i många fristående digitala sensorer, men som är dyrare och mer komplicerad att implementera. Alternativet är att dra nytta av passiva infraröda sensorer (PIR), som är billigare och enklare att använda. En PIR ger ett analogt gränssnitt som de flesta mikrokontroller kan kopplas till.
Artikeln går igenom grunderna för rörelsedetektering innan vi visar hur utvecklare kan komma igång med rörelsedetektering med hjälp av en PIR som är ansluten till DM080104 ATtiny 1627 Curiosity Nano från Microchip. Därefter visas ett alternativ till komplicerad utveckling av algoritmer för rörelsedetektering som drar nytta av tekniker för maskininlärning (ML). Tips och tricks för att komma igång ingår.
Rörelsedetekteringens grunder
Det finns många olika tekniker för detektering av rörelser, men IR är den vanligaste. IR-sensorer är antingen aktiva eller passiva. Aktiva sensorer består av en IR LED-sändare och en fotodiodmottagare. Aktiva sensorer känner av den IR som reflekteras från objektet och använder sedan den mottagna IR-strålningen för att upptäcka om personen eller objektet har rört sig. Beroende på tillämpning, kan den aktiva sensorn innehålla flera fotodioder för att se rörelseriktningen. Genom att upptäcka vilka IR-signaler som släpar efter eller kommer före, kan fyra fotodioder användas för att känna av riktningsrörelser som vänster, höger, framåt, bakåt, uppåt eller nedåt.
Passiva infraröda sensorer kan inte sända IR, utan enbart ta emot. En PIR-sensor använder den IR-strålning föremålet/objektet avger för att upptäcka dess närvaro och eventuell rörelse i samband med det. Ett säkerhetssystem för hemmet har till exempel ofta rörelsesensorer som känner av IR-strålning från en människa eller ett djur och avgör om det rör sig inom synfältet. Figur 1 visar vad en analog PIR-sensor kan upptäcka under olika förhållanden, t.ex. ingen IR, IR närvarande, stabilt och avgående (minskar).
Figur 1: PIR-sensorer använder den IR-strålning som personer eller föremål avger, för att upptäcka deras närvaro och rörelse. De olika detekteringsstadierna visas: ingen IR, IR närvarande, stabilt och avgående (minskar). (Bildkälla: Microchip Technology)
När man väljer rätt typ av IR-sensor för en tillämpning måste utvecklarna noga överväga kompromisserna i förhållande till följande parametrar:
- Sensorns pris
- Kapsling
- Gränssnitt för mikrokontroller
- Detekteringsalgoritm och processorkraft
- Sensorns räckvidd och energiförbrukning
Låt oss undersöka ett exempel på ett PIR-rörelsedetekteringssystem som använder ATtiny1627.
Introduktion av ATtiny1627 Curiosity Nano
En intressant lösning med mikrokontroller (MCU) för rörelsedetektering är ATtiny1627 från Microchip Technology. Denna 8-bitars mikrokontroller har en inbyggd 12-bitars analog-till-digitalomvandlare (ADC) som kan översampla till 17 bitar. Den innehåller även en programmerbar förstärkare (PGA) med justerbar känslighet. Genom att kombinera dessa två egenskaper kan man skapa ett billigt system för rörelsedetektering som passar för många tillämpningar.
Den bästa billiga lösningen för att komma igång är att använda utvecklingskortet DM080104 ATtiny1627 Curiosity Nano (figur 2). Utvecklingskortet innehåller en AVR-mikrokontroller som körs i upp till 20 MHz med 16 Kb flash-minne, 2 Kb SRAM och 256 byte EEPROM. Kortet innehåller en programmerare, en lysdiod och en omkopplare för användaren. Det som är mest spännande är att kortet är utformat för att enkelt kunna anslutas via kontakter för snabb prototypframställning, eller så kan det lödas direkt på ett prototyp- eller produktionskort.
Figur 2: ATtiny1627 Curiosity Nano har en inbyggd 8-bitars programmerbar AVR-mikrokontroller som körs i hastigheter på upp till 20 MHz med 16 KB flash-minne, 2 KB SRAM och 256 byte EEPROM. Utvecklingskortet kan enkelt lödas eller byglas på en större kopplingsplatta för att underlätta prototyptillverkning och produktionssystem. (Bildkälla: Microchip)
Kortet har även några ytterligare funktioner som kan vara till hjälp för utvecklare. För det första har det två kanaler för logikanalys, DGI och GPIO. Kanalerna kan användas för att felsöka och hantera mikrokontrollern. För det andra kan utvecklare använda en inbyggd virtuell COM-port (CDC) för felsökning eller loggning av meddelanden. Slutligen kan flera verktyg användas för att skriva och distribuera programvaran. Utvecklare kan exempelvis använda Microchip Studio 7.0, en GCC-kompilator, eller MPLAB X, som använder antingen GCC eller kompilatorn XC8.
Det finns även cirka ett dussin kodarkiv som Microchip stöder med olika exempel för ATtiny1627. Kodarkiven innehåller exempel på PIR-rörelsedetektering, temperaturmätning, analoga omvandlingar och mycket mer.
Bygga en testbänk för rörelsedetektering
Det är enkelt och inte särskilt dyrt att sätta igång en testbänk för rörelsedetektering. De komponenter som behövs för att bygga en testbänk är bland annat:
- DM080104 ATtiny1627 Curiosity Nano
- Adaptern AC164162T för Curiosity Nano
- PIR-sensorn MIKROE-3339 från MikroElektronika
Vi har redan tittat på ATtiny1627 Curiosity Nano. Adaptern för Curiosity Nano är ett baskort för ATtiny1627 Curiosity Nano som kan användas för snabb prototypframställning (figur 3). Den har dessutom tre expansionsplatser för MIKROE-klickkort samt tillgängliga kontakter för att kunna analysera signaler eller lägga till anpassad hårdvara.
Figur 3: Adaptern för Curiosity Nano har tre expansionsplatser för MIKROE-klickkort samt ledningar för att få tillgång till signaler och lägga till egen maskinvara. (Bildkälla: Microchip)
Slutligen tillhandahåller PIR-sensorn MIKROE-3339, som visas i figur 4, den passiva IR-sensorn KEMET PL-N823-01 i en enkel, expanderbar form som kan anslutas direkt till adaptern Curiosity Nano. Det är viktigt att notera att MIKROE-3339 kräver vissa ändringar när den används med Microchip-exemplen för rörelsedetektering. Ändringarna finns på sidan 10 i Microchips AN3641 tillämpningsnotering, "Kostnadseffektiv PIR-rörelsedetektering med låg effekt med familjen tinyAVR® 2".
Figur 4: Klickkortet MIKROE-3339 innehåller PIR-sensorn KEMET PL-N823-01 i en enkel prototypform. (Bildkälla: MikroElektronika)
Programvara för PIR-rörelsedetektering
Det finns flera alternativ som utvecklare kan använda för att skapa sina programvarulösningar för rörelsedetektering. Den första lösningen är att använda det exempelmaterial som Microchip tillhandahåller i AN3641. Kodförrådet för exempelprogramvaran för rörelsedetektering finns på Github.
Tillämpningen sker i några faser. Först initialiserar programmet PIR-sensorn och värmer upp den. För det andra används en ADC-avbrottsrutin för att regelbundet ta samplingar från PIR-sensorn. För det tredje beräknas medelvärde för ADC-data. Slutligen används en detekteringsalgoritm för att signalera om rörelse har detekterats. Om aktivitet detekteras kommer den inbyggda lysdioden att blinka och en detekteringssignal skickas via den seriella porten. Det fullständiga programflödet kan ses i figur 5.
Figur 5: Diagrammet visar mjukvaruflödet för Microchips program för rörelsedetektering. (Bildkälla: Microchip)
Det andra alternativet för rörelsedetektering är att utnyttja initialiserings- och ADC-avbrottsrutinen från Microchip-exemplen, men istället för att använda deras detekteringsalgoritm använder man maskininlärning. PIR-data kan samlas in och sedan användas för att träna ett neuralt nätverk. Maskininlärningsmodellen kan sedan omvandlas för att köras på mikrokontrollern med TensorFlow Lite for Microcontrollers, med hjälp av fastpunktsmatematik med 8-bitars viktningar.
Det intressanta med att använda maskininlärning på det här sättet är att utvecklarna inte behöver utforma en algoritm för sina specifika behov. Istället kan de bara ta samplingar från sensorn under de förväntade förhållandena och användningsfall som de behöver för sin tillämpning. Maskininlärning gör det också möjligt för utvecklare att snabbt skala och justera sina modeller när nya data blir tillgängliga.
Tips och tricks för rörelsedetektering med ATtiny1627
Det finns många alternativ för utvecklare som vill komma igång med rörelsedetektering. "Tips och tricks" som utvecklare bör ha i åtanke för att förenkla och påskynda utvecklingen är bland annat:
- Bygg en billig prototypplattform med hjälp av delar som finns på lager.
- Dra nytta av exemplet för rörelsedetektering från Microchip som finns på GitHub.
- Utforma prototyphårdvara med formatet ATtiny1627 Curiosity Nano och löd direkt på kortet på hårdvaran för att förenkla de första prototyperna.
- För mindre, effektivare och mer optimerad kod använder du kompilatorn XC8 från Microchip.
- Läs Microchips AN3641 Kostnadseffektiv PIR-rörelsedetektering med låg effekt med familjen tinyAVR® 2 innan du påbörjar en tillämpning med rörelsedetektering.
- Fundera seriöst på att använda maskininlärning för algoritmen för rörelsedetektering.
Utvecklare som följer dessa "tips och tricks" kommer att upptäcka att de sparar en hel del tid och frustration när de utvecklar en prototyp av sin tillämpning.
Sammanfattning
Rörelsedetektering blir en allt vanligare funktion i många tillämpningar, särskilt när det är bra att inte vidröra något. Utvecklare kan minimera kostnader för sina materiallistor och förenkla sin konstruktion genom att använda en PIR-sensor och en billig mikrokontroller. ATtiny1627 är en utmärkt utgångspunkt, och Microchip tillhandahåller ett stort antal verktyg och tillämpningsanvisningar för att hjälpa utvecklare att komma igång. Dessutom kan maskininlärning användas för att minimera komplexiteten i algoritmutvecklingen för att upptäcka rörelser.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




