Simplificați detectarea mișcării utilizând ATtiny1627 Curiosity Nano

By Jacob Beningo

Contributed By DigiKey's North American Editors

Nevoia de detectare a mișcării continuă să crească în multe aplicații industriale, comerciale, casnice și integrate. Problema este că detectarea mișcării poate necesita senzori digitali costisitori, pentru care interfațarea poate fi dificilă. În plus, după primirea datelor, algoritmii încă trebuie dezvoltați pentru a detecta mișcarea, ceea ce nu este un efort trivial.

Există mai multe soluții care pot detecta mișcarea, dar soluțiile cu infraroșu (IR) sunt cele mai populare. Dezvoltatorii pot alege o soluție activă, care este comună în cazul multor senzori digitali autonomi, dar care este mai scumpă și mai complex de implementat. Alternativa este utilizarea senzorilor pasivi cu infraroșu (PIR), care sunt mai puțin costisitori și care au o interfațare mai simplă. Un PIR oferă o interfață analogică la care se pot conecta majoritatea microcontrolerelor.

Acest articol prezintă elementele pentru detectarea mișcării, apoi arată cum dezvoltatorii pot începe să utilizeze detectarea mișcării folosind un PIR conectat la DM080104 ATtiny 1627 Curiosity Nano de la Microchip. Apoi, se prezintă o alternativă la dezvoltarea de algoritmi complecși pentru detectarea mișcării, care folosesc tehnicile de învățare automată (ML). Sunt incluse sfaturi și trucuri pentru a începe.

Principiile fundamentale de detectare a mișcării

Există mai multe tehnologii de detecție care pot detecta mișcarea, dar cea mai utilizată este cea IR. Senzorii IR sunt fie activi, fie pasivi. Senzorii activi includ un emițător IR cu led și un receptor cu fotodiodă. Senzorii activi detectează radiațiile infraroșii reflectate de obiecte și apoi utilizează radiațiile infraroșii primite pentru a detecta dacă subiectul sau obiectul s-a mișcat. În funcție de aplicație, senzorul activ poate conține mai multe fotodiode pentru a vedea direcția mișcării. De exemplu, prin detectarea semnalelor IR care sunt în urma sau înaintea lor, pot fi utilizate patru fotodiode pentru a detecta mișcări direcționale precum spre stânga, dreapta, înainte, înapoi, sus și jos.

Senzorii pasivi cu infraroșu nu pot transmite radiații infraroșii, ci doar să le primească. Un senzor PIR utilizează radiațiile infraroșii transmise de subiectul/obiectul de interes pentru a detecta prezența acestuia și orice mișcare asociată cu acesta. De exemplu, un sistem de securitate pentru locuințe va avea adesea senzori de mișcare care detectează radiațiile infraroșii emise de un om sau de un animal și determină dacă acesta se deplasează prin câmpul său vizual. Figura 1 arată ce ar putea detecta un senzor PIR analogic în diferite condiții, cum ar fi absența IR, prezența IR, stabilitatea și părăsirea (întreruperea).

Imaginea senzorilor PIR care utilizează IR emis de subiecți sau obiecteFigura 1: senzorii PIR utilizează radiațiile IR emise de subiecți sau obiecte pentru a detecta prezența și mișcarea acestora. Sunt reprezentate diferitele stadii de detecție: fără IR, IR prezent, stabil, și părăsire (întrerupere). (Sursă imagine: Microchip Technology)

Atunci când selectează tipul de senzor IR potrivit pentru o aplicație, dezvoltatorii trebuie să ia în considerare cu atenție compromisurile referitoare la următorii parametri:

  • Costul senzorului
  • Ambalajul
  • Interfața microcontrolerului
  • Algoritmul de detecție și puterea de calcul
  • Raza de acțiune a senzorilor și consumul de energie

Să examinăm un exemplu de sistem de detectare a mișcării PIR care utilizează ATtiny1627.

Prezentarea ATtiny1627 Curiosity Nano

O soluție interesantă de microcontroler (MCU) pentru detectarea mișcării este ATtiny1627 de la Microchip Technology. Acest MCU pe 8 biți are încorporat un convertor analog-digital (ADC) pe 12 biți care poate fi supraeșantionat la 17 biți. De asemenea, acesta conține un amplificator de câștig programabil (PGA) care poate regla sensibilitatea. Combinarea acestor două caracteristici poate oferi un sistem de detectare a mișcării cu costuri reduse, potrivit pentru multe aplicații.

Cea mai bună soluție ieftină pentru a începe este utilizarea plăcii de dezvoltare DM080104 ATtiny1627 Curiosity Nano (Figura 2). Placa de dezvoltare conține un MCU AVR care rulează până la 20 megahertzi (MHz) cu 16 kiloocteți (Kbytes) de memorie flash, 2 Kbytes de SRAM și 256 de octeți de EEPROM. Placa include un programator, un led și un comutator al utilizatorului. Poate cel mai interesant este faptul că placa este proiectată pentru a fi conectată cu ușurință prin intermediul unor conectori pentru prototipuri rapide sau poate fi lipită direct pe o placă de prototip sau de producție.

Imagine cu ATtiny1627 Curiosity Nano de la MicrochipFigura 2: ATtiny1627 Curiosity Nano are încorporată o unitate MCU AVR programabilă pe 8 biți care funcționează la viteze de până la 20 MHz, cu 16 Kbytes de memorie flash, 2 Kbytes de SRAM și 256 de octeți de EEPROM. Placa de dezvoltare poate lipită sau conectată prin șuntare la o placă de bază mai mare pentru a facilita prototiparea și sistemele de producție. (Sursă imagine: Microchip)

În plus, placa vine cu câteva caracteristici suplimentare care pot fi utile pentru dezvoltatori. În primul rând, are două canale de analizor logic, DGI și GPIO. Aceste canale pot fi utilizate pentru depanarea și gestionarea microcontrolerului. În al doilea rând, dezvoltatorii pot utiliza un port COM virtual (CDC) integrat pentru depanare sau pentru înregistrarea mesajelor. În cele din urmă, pot fi utilizate mai multe instrumente pentru a scrie și a implementa software-ul. De exemplu, dezvoltatorii pot utiliza Microchip Studio 7.0, un compilator GCC, sau MPLAB X, care utilizează fie GCC, fie compilatorul XC8.

Există, de asemenea, aproximativ o duzină de depozite de cod pe care Microchip le susține cu diverse exemple pentru ATtiny1627. Aceste depozite de coduri au exemple care variază de la detectarea mișcării PIR, măsurători de temperatură, conversii analogice și multe altele.

Construirea unui banc de testare pentru detectarea mișcării

Instalarea și punerea în funcțiune a unui banc de testare pentru detectarea mișcării este simplă și nu foarte costisitoare. Componentele necesare pentru a construi un banc de testare includ:

Am văzut deja ATtiny1627 Curiosity Nano. Adaptorul Curiosity Nano oferă o placă suport pentru ATtiny1627 Curiosity Nano, care poate fi utilizată pentru prototipuri rapide (Figura 3). În plus, acesta oferă trei fante de expansiune pentru MIKROE click boards, împreună cu reglete accesibile pentru a analiza semnalele sau pentru a adăuga hardware personalizat.

Imaginea adaptorului Curiosity Nano de la MicrochipFigura 3: adaptorul Curiosity Nano are trei fante de expansiune pentru MIKROE click boards, împreună cu conectori pentru accesarea semnalelor și adăugarea de hardware personalizat. (Sursă imagine: Microchip)

În cele din urmă, senzorul PIR MIKROE-3339, prezentat în Figura 4, oferă senzorul IR pasiv KEMET PL-N823-01 într-o formă simplă și extensibilă, care poate fi conectat direct la adaptorul Curiosity Nano. Este important de reținut că MIKROE-3339 necesită unele modificări atunci când este utilizat cu exemplele de la Microchip pentru detectarea mișcării. Aceste modificări pot fi găsite la pagina 10 din Nota de aplicație AN3641 de la Microchip, „Detectarea mișcării cu PIR de putere joasă și rentabil, folosind familia de produse tinyAVR® 2”.

Imagine cu MikroElektronika MIKROE-3339 click boardFigura 4: MIKROE-3339 click board oferă un senzor KEMET PL-N823-01 PIR într-o formă ușor de prototipat. (Sursă imagine: MikroElektronika)

Software pentru detectarea mișcării PIR

Există mai multe opțiuni pe care dezvoltatorii le pot folosi pentru a-și crea soluții software pentru detectarea mișcării. Prima soluție este utilizarea materialelor de exemplu furnizate de Microchip în AN3641. Depozitul de cod pentru exemplul de software de detectare a mișcării poate fi găsit pe Github.

Aplicarea are loc în câteva etape. În primul rând, aplicația inițializează și încălzește senzorul PIR. În al doilea rând, o rutină de serviciu de întrerupere ADC este utilizată pentru a eșantiona periodic senzorul PIR. În al treilea rând, se calculează media datelor ADC. În cele din urmă, se utilizează un algoritm de detecție pentru a semnala dacă a fost detectată o mișcare. Dacă se detectează activitate, ledul integrat va clipi și un semnal de detecție va fi trimis prin portul serial. Fluxul complet al programului poate fi văzut în Figura 5.

Imagine a fluxului software pentru aplicația de detectare a mișcării de la Microchip (faceți clic pentru a mări imaginea)Figura 5: diagrama reprezintă fluxul software pentru aplicația de detectare a mișcării de la Microchip. (Sursa imaginii: Microchip)

A doua opțiune pentru detectarea mișcării este utilizarea inițializării și a rutinei de întrerupere ADC din exemplele Microchip, dar în loc să folosiți algoritmul lor de detecție, folosiți ML. Datele PIR pot fi colectate și apoi utilizate pentru a antrena o rețea neuronală. Modelul ML poate fi apoi convertit pentru a fi rulat pe microcontroler cu TensorFlow Lite pentru microcontrolere, utilizând matematică în virgulă fixă cu ponderi pe 8 biți.

Ceea ce este interesant în legătură cu utilizarea ML în acest mod este faptul că elimină necesitatea ca dezvoltatorii să proiecteze un algoritm pentru nevoile lor specifice. În schimb, aceștia pot doar să eșantioneze senzorul în condițiile preconizate și în cazurile de utilizare de care au nevoie pentru aplicația lor. De asemenea, ML permite dezvoltatorilor să își extindă și să își ajusteze rapid modelele pe măsură ce noi date devin disponibile.

Sfaturi și trucuri pentru detectarea mișcării folosind ATtiny1627

Există o mulțime de opțiuni disponibile pentru dezvoltatorii care sunt interesați să înceapă utilizarea detectării mișcării. „Sfaturile și trucurile” pe care dezvoltatorii ar trebui să le aibă în vedere pentru a simplifica și accelera dezvoltarea lor includ următoarele:

  • Construiți o platformă de prototipare cu costuri reduse, folosind piese din comerț.
  • Folosiți exemplul de detectare a mișcării de la Microchip, care poate fi găsit pe GitHub.
  • Proiectați prototipuri hardware cu amprenta ATtiny1627 Curiosity Nano și lipiți direct placa pe hardware pentru a simplifica prototipurile inițiale.
  • Pentru un cod mai mic, mai eficient și mai optimizat, utilizați compilatorul XC8 de la Microchip.
  • Citiți Detectarea mișcării cu PIR de putere joasă și rentabil folosind familia de produse tinyAVR® 2 pentru AN3641 de la Microchip înainte de a începe o aplicație de detectare a mișcării.
  • Luați serios în considerare utilizarea ML pentru algoritmul de detectare a mișcării.

Dezvoltatorii care urmează aceste „sfaturi și trucuri” vor descoperi că economisesc destul de mult timp și energie mentală atunci când își prototipează aplicația.

Concluzie

Detectarea mișcării devine o caracteristică obișnuită în multe aplicații, în special în cazul în care comenzile tactile nu sunt benefice. Dezvoltatorii își pot reduce la minimum costurile BOM și își pot simplifica proiectarea prin utilizarea unui senzor PIR și a unui MCU cu costuri reduse. După cum s-a arătat, ATtiny1627 este un punct de plecare excelent, iar Microchip oferă o gamă largă de instrumente și note de aplicații pentru a-i ajuta pe dezvoltatori să pornească pe acest drum. În plus, pentru a minimiza complexitatea dezvoltării algoritmului de detectare a mișcării, se poate utiliza ML.

DigiKey logo

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.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors