Vereenvoudig bewegingsdetectie met de ATtiny1627 Curiosity Nano
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2022-02-23
De behoefte aan bewegingsdetectie blijft toenemen in tal van industriële, commerciële, huishoudelijke en embedded toepassingen. Het probleem is dat voor bewegingsdetectie dure digitale sensoren nodig zijn die moeilijk te interfacen zijn. Bovendien moeten, zodra de gegevens zijn ontvangen, nog algoritmen worden ontwikkeld om de beweging te detecteren, hetgeen een niet-triviale onderneming is.
Verschillende oplossingen kunnen beweging waarnemen, maar infraroodoplossingen (IR) zijn het populairst. Ontwikkelaars kunnen kiezen voor een actieve oplossing die gebruikelijk is in veel stand-alone digitale sensoren, maar duurder en complexer is om te implementeren. Het alternatief is gebruik te maken van passieve infraroodsensoren (PIR's), die minder duur zijn en eenvoudiger kunnen worden aangesloten. Een PIR biedt een analoge interface waarmee de meeste microcontrollers kunnen communiceren.
Dit artikel bespreekt de basisprincipes van bewegingsdetectie alvorens te laten zien hoe ontwikkelaars aan de slag kunnen met bewegingsdetectie met behulp van een PIR aangesloten op Microchip's DM080104 ATtiny 1627 Curiosity Nano. Vervolgens wordt een alternatief geboden voor de ontwikkeling van complexe algoritmen voor bewegingsdetectie, waarbij gebruik wordt gemaakt van technieken voor machinaal leren (ML). Tips en trucs om te beginnen zijn inbegrepen.
Grondbeginselen van bewegingsdetectie
Er zijn veel sensortechnologieën die beweging kunnen detecteren, maar IR wordt het meest gebruikt. IR-sensors zijn actief of passief. Actieve sensors bestaan uit een IR LED zender en een fotodiode-ontvanger. Actieve sensors detecteren het IR dat door voorwerpen wordt weerkaatst en gebruiken vervolgens het ontvangen IR om te detecteren of het voorwerp of object is bewogen. Afhankelijk van de toepassing kan de actieve sensor meerdere fotodiodes bevatten om de bewegingsrichting te zien. Door bijvoorbeeld te detecteren welke IR-signalen achterlopen of voorlopen, kunnen vier fotodiodes worden gebruikt om directieve bewegingen te detecteren, zoals links, rechts, vooruit, achteruit, omhoog en omlaag.
Passieve infrarood sensors kunnen geen IR zenden, alleen ontvangen. Een PIR-sensor maakt gebruik van het IR dat door het betrokken voorwerp wordt uitgezonden om de aanwezigheid van dat voorwerp en de daarmee gepaard gaande beweging te detecteren. Een huisbeveiligingssysteem zal bijvoorbeeld vaak bewegingssensors hebben die IR-stralen detecteren die door een mens of dier worden uitgezonden en bepalen of het dier zich door het gezichtsveld beweegt. Afbeelding 1 toont wat een analoge PIR-sensor zou kunnen detecteren onder verschillende omstandigheden, zoals geen IR, IR aanwezig, stabiel, en uitgaand (afgesneden).
Afbeelding 1: PIR-sensors maken gebruik van het IR dat wordt uitgezonden door voorwerpen om hun aanwezigheid en beweging te detecteren. De verschillende detectiestadia worden getoond: geen IR, IR aanwezig, stabiel, en uit (cut off). (Bron afbeelding: Microchip Technology)
Bij de keuze van het juiste type IR-sensor voor een toepassing moeten ontwikkelaars de afwegingen met betrekking tot de volgende parameters zorgvuldig overwegen:
- Kosten van de sensor
- Verpakking
- Microcontroller-interface
- Opsporingsalgoritme en rekenkracht
- Sensorbereik en energieverbruik
Laten we eens kijken naar een voorbeeld van een PIR bewegingsdetectiesysteem dat gebruik maakt van de ATtiny1627.
Inleiding tot de ATtiny1627 Curiosity Nano
Een interessante microcontroller (MCU) oplossing voor bewegingsdetectie is de ATtiny1627 van Microchip Technology. Deze 8-bit MCU heeft een ingebouwde 12-bit analoog-digitaal-omzetter (ADC) die kan worden oversampled tot 17 bits. Hij bevat ook een programmeerbare versterker (PGA) waarmee de gevoeligheid kan worden aangepast. De combinatie van deze twee kenmerken kan een goedkoop bewegingsdetectiesysteem opleveren dat geschikt is voor vele toepassingen.
De beste goedkope oplossing om te beginnen is het gebruik van het DM080104 ATtiny1627 Curiosity Nano-ontwikkelingsbord (Afbeelding 2). Het ontwikkelingsbord bevat een AVR MCU die werkt tot 20 megahertz (MHz) met 16 kilobytes (Kbytes) flash, 2 Kbytes SRAM en 256 bytes EEPROM. Het bord bevat een programmer, LED en gebruikersschakelaar. Het meest intrigerende is misschien wel dat het bord zo is ontworpen dat hij gemakkelijk kan worden aangesloten via headers voor snelle prototyping, of dat hij rechtstreeks kan worden gesoldeerd op een prototype- of productiebord.
Afbeelding 2: De ATtiny1627 Curiosity Nano heeft een ingebouwde 8-bit programmeerbare AVR MCU die draait op snelheden tot 20 MHz met 16 Kbytes flash, 2 Kbytes SRAM, en 256 bytes EEPROM. Het ontwikkelingsbord kan eenvoudig op een grotere basisplaat worden gesoldeerd of gejumperd om prototyping en productiesystemen te vergemakkelijken. (Bron afbeelding: Microchip)
Het bord wordt ook geleverd met een paar extra functies die nuttig kunnen zijn voor ontwikkelaars. Ten eerste heeft het twee logic analyzer kanalen, DGI en GPIO. Deze kanalen kunnen worden gebruikt om de microcontroller te debuggen en te beheren. Ten tweede kunnen ontwikkelaars gebruik maken van een ingebouwde virtuele COM-poort (CDC) voor het debuggen of loggen van berichten. Ten slotte kunnen verschillende hulpmiddelen worden gebruikt om de software te schrijven en te implementeren. Ontwikkelaars kunnen bijvoorbeeld Microchip Studio 7.0 gebruiken, een GCC-compiler, of MPLAB X, die ofwel GCC ofwel de XC8-compiler gebruikt.
Er zijn ook ongeveer een dozijn code repositories die Microchip ondersteunt met diverse voorbeelden voor de ATtiny1627. Deze code repositories hebben voorbeelden variërend van PIR bewegingsdetectie, temperatuur metingen, analoge conversies, en nog veel meer.
Bouwen van een testbank voor bewegingsdetectie
Het is eenvoudig en niet al te duur om een testbank voor bewegingsdetectie in bedrijf te stellen. De onderdelen die nodig zijn om een testbank te bouwen omvatten:
- De DM080104 ATtiny1627 Curiosity Nano
- De AC164162T Curiosity Nano Adapter
- MIKROE-3339 PIR-sensor van MikroElektronika
We hebben al gekeken naar de ATtiny1627 Curiosity Nano. De Curiosity Nano Adapter biedt een draagbord voor de ATtiny1627 Curiosity Nano die kan worden gebruikt voor rapid prototyping (Afbeelding 3). Bovendien zijn er drie uitbreidingssleuven voor MIKROE-clickborden samen met toegankelijke headers voor het scannen van signalen of het toevoegen van aangepaste hardware.
Afbeelding 3: De Curiosity Nano Adapter heeft drie uitbreidingssleuven voor MIKROE click boards, samen met headers voor toegang tot signalen en het toevoegen van aangepaste hardware. (Bron afbeelding: Microchip)
Tot slot biedt de MIKROE-3339 PIR-sensor, afgebeeld in figuur 4, de KEMET PL-N823-01 passieve IR-sensor in een eenvoudige, uitbreidbare vorm die rechtstreeks kan worden aangesloten op de Curiosity Nano Adapter. Het is belangrijk op te merken dat de MIKROE-3339 enige aanpassing vereist wanneer deze wordt gebruikt met de Microchip-voorbeelden voor bewegingsdetectie. Deze wijzigingen zijn te vinden op pagina 10 van Microchip's AN3641-toepassingsnotitie, "Laag vermogen, kostenefficiënte PIR-bewegingsdetectie met behulp van de tinyAVR® 2-familie".
Afbeelding 4: Het MIKROE-3339-clickbord biedt een KEMET PL-N823-01 PIR-sensor in een gemakkelijk te prototypen vorm. (Bron afbeelding: MikroElektronika)
PIR-bewegingsdetectiesoftware
Er zijn verschillende opties die ontwikkelaars kunnen gebruiken om hun software-oplossingen voor bewegingsdetectie te creëren. De eerste oplossing is het gebruik van de voorbeeldmaterialen die door Microchip in AN3641 worden verstrekt. De code repository voor de voorbeeld software voor bewegingsdetectie kan worden gevonden op Github.
De toepassing verloopt in een paar fasen. Eerst initialiseert en verwarmt de toepassing de PIR-sensor. Ten tweede wordt een ADC interrupt service routine gebruikt om de PIR sensor periodiek te bemonsteren. Ten derde worden de ADC-gegevens gemiddeld. Tenslotte wordt een detectie-algoritme gebruikt om aan te geven of er beweging is waargenomen. Als er activiteit wordt gedetecteerd, gaat de LED op de kaart knipperen en wordt er een detectiesignaal via de seriële poort verzonden. De volledige programmaflow is te zien in Afbeelding 5.
Afbeelding 5: De grafiek geeft de softwareflow weer voor de bewegingsdetectietoepassing van Microchip. (Bron afbeelding: Microchip)
De tweede optie voor bewegingsdetectie is om gebruik te maken van de initialisatie en de ADC interrupt routine van de Microchip voorbeelden, maar in plaats van hun detectie-algoritme te gebruiken, ML te gebruiken. PIR-gegevens kunnen worden verzameld en vervolgens worden gebruikt om een neuraal netwerk te trainen. Het ML-model kan vervolgens worden geconverteerd om op de microcontroller te draaien met TensorFlow Lite voor microcontrollers, waarbij fixed-point wiskunde met 8-bit gewichten wordt gebruikt.
Het interessante van het gebruik van ML op deze manier is dat ontwikkelaars niet langer een algoritme hoeven te ontwerpen voor hun specifieke behoeften. In plaats daarvan kunnen zij de sensor gewoon bemonsteren onder de verwachte omstandigheden en gebruikssituaties die zij voor hun toepassing nodig hebben. ML stelt ontwikkelaars ook in staat hun modellen snel te schalen en aan te passen wanneer nieuwe gegevens beschikbaar komen.
Tips en trucs voor bewegingsdetectie met de ATtiny1627
Er zijn heel wat opties beschikbaar voor ontwikkelaars die aan de slag willen met bewegingsdetectie. "Tips en trucs" die ontwikkelaars in gedachten moeten houden om hun ontwikkeling te vereenvoudigen en te versnellen, zijn onder meer:
- Bouw een goedkoop prototype-platform met kant-en-klare onderdelen.
- Maak gebruik van het bewegingsdetectie voorbeeld van Microchip dat kan worden gevonden op GitHub.
- Ontwerp prototype-hardware met de ATtiny1627 Curiosity Nano-voetafdruk en soldeer het bord direct op de hardware om de eerste prototypen te vereenvoudigen.
- Voor kleinere, efficiëntere, geoptimaliseerde code gebruikt u de XC8-compiler van Microchip.
- Lees de AN3641 van Microchip, Energiezuinige, kostenefficiënte PIR-bewegingsdetectie met behulp van de tinyAVR® 2-familie voordat u een bewegingsdetectietoepassing start.
- Overweeg serieus ML te gebruiken voor het bewegingsdetectie algoritme.
Ontwikkelaars die deze "tips en trucs" volgen, zullen merken dat ze heel wat tijd en verdriet kunnen besparen bij het prototypen van hun toepassing.
Conclusie
Bewegingsdetectie wordt steeds meer toegepast in veel toepassingen, vooral wanneer no-touch nuttig is. Ontwikkelaars kunnen hun BOM-kosten minimaliseren en hun ontwerp vereenvoudigen door gebruik te maken van een PIR-sensor en een goedkope MCU. Zoals aangetoond is de ATtiny1627 een uitstekend startpunt, en Microchip biedt een breed scala aan tools en toepassingsnotities om ontwikkelaars op weg te helpen. Bovendien kan, om de complexiteit van de algoritme-ontwikkeling voor het detecteren van beweging te minimaliseren, ML worden gebruikt.
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.




