Semplificare il rilevamento del movimento usando ATtiny1627 Curiosity Nano

Di Jacob Beningo

Contributo di Editori nordamericani di DigiKey

La necessità di rilevare il movimento continua ad aumentare in molte applicazioni industriali, commerciali, domestiche ed embedded. Il problema è che il rilevamento del movimento può richiedere costosi sensori digitali che sono difficili da interfacciare. Inoltre, una volta ricevuti i dati, gli algoritmi devono sapere come rilevare il movimento, il che è un'impresa non banale.

Diverse soluzioni possono rilevare il movimento, ma quelle basate sugli infrarossi (IR) sono le più comuni. Gli sviluppatori possono scegliere una soluzione attiva comune in molti sensori digitali indipendenti, ma più costosa e complessa da implementare. L'alternativa è sfruttare i sensori a infrarossi passivi (PIR), meno costosi e più semplici da interfacciare. Un PIR fornisce un'interfaccia analogica alla quale può interfacciarsi la maggior parte dei microcontroller.

Questo articolo discute i fondamenti del rilevamento del movimento prima di mostrare come gli sviluppatori possono iniziare usando un PIR collegato al DM080104 ATtiny 1627 Curiosity Nano di Microchip. Mostra poi un'alternativa allo sviluppo di algoritmi complessi per il rilevamento del movimento che sfrutta le tecniche di apprendimento automatico (ML). Sono inclusi anche alcuni suggerimenti per iniziare.

Nozioni di base sul rilevamento del movimento

Ci sono molte tecnologie che possono rilevare il movimento, ma l'IR è la più usata. I sensori IR sono attivi o passivi. I sensori attivi comprendono un trasmettitore LED IR e un ricevitore a fotodiodo. I sensori attivi percepiscono l'IR riflesso dagli oggetti e poi usano l'IR ricevuto per rilevare se il soggetto o l'oggetto si è mosso. A seconda dell'applicazione, il sensore attivo può contenere diversi fotodiodi per vedere la direzione del movimento. Ad esempio, rilevando quali segnali IR sono in ritardo o in anticipo, possono essere utilizzati quattro fotodiodi per rilevare il movimento direzionale come sinistra, destra, avanti, indietro, su e giù.

I sensori a infrarossi passivi non possono trasmettere l'IR, ma solo riceverlo. Un sensore PIR utilizza l'IR trasmesso dal soggetto/oggetto di interesse per rilevare la sua presenza e qualsiasi movimento associato. Ad esempio, un sistema di sicurezza domestica avrà spesso dei sensori di movimento che rilevano l'IR emesso da un essere umano o animale e determinano se si sta muovendo nel suo campo visivo. La Figura 1 mostra ciò che un sensore PIR analogico potrebbe rilevare in varie condizioni come nessun IR, IR presente, stabile e in uscita (defilamento).

Immagine dei sensori PIR che utilizzano l'IR emesso dai soggetti o dagli oggettiFigura 1: I sensori PIR utilizzano l'IR emesso da soggetti o oggetti per rilevare la loro presenza e il loro movimento. I vari stadi di rilevamento sono mostrati: nessun IR, IR presente, stabile e in uscita (defilamento). (Immagine per gentile concessione di Microchip Technology)

Per selezionare il giusto tipo di sensore IR per un'applicazione, gli sviluppatori devono considerare attentamente i compromessi relativi ai seguenti parametri:

  • Costo del sensore
  • Confezionamento
  • Interfaccia del microcontroller
  • Algoritmo di rilevamento e potenza di calcolo
  • Portata del sensore e consumo energetico

Esaminiamo un esempio di sistema di rilevamento del movimento PIR che utilizza ATtiny1627.

Introduzione di ATtiny1627 Curiosity Nano

Un'interessante soluzione di microcontroller (MCU) per il rilevamento del movimento è ATtiny1627 di Microchip Technology. Questo MCU a 8 bit ha un convertitore analogico/digitale (ADC) integrato a 12 bit che può essere sovracampionato a 17 bit. Contiene anche un amplificatore a guadagno programmabile (PGA) che può regolare la sensibilità. La combinazione di queste due caratteristiche può fornire un sistema di rilevamento del movimento a basso costo adatto a molte applicazioni.

La migliore soluzione a basso costo per iniziare è la scheda di sviluppo DM080104 ATtiny1627 Curiosity Nano (Figura 2). La scheda di sviluppo contiene un MCU AVR che funziona fino a 20 MHz con 16 kB di flash, 2 kB di SRAM e 256 byte di EEPROM. La scheda include un programmatore, un LED e un interruttore utente. Forse la cosa più intrigante è che la scheda è progettata per essere facilmente connessa tramite basette per la prototipazione rapida o può essere saldata direttamente su un prototipo o una scheda di produzione.

Immagine della scheda ATtiny1627 Curiosity Nano di MicrochipFigura 2: ATtiny1627 Curiosity Nano ha un MCU AVR programmabile a 8 bit che funziona a velocità fino a 20 MHz con 16 kB di flash, 2 kB di SRAM e 256 byte di EEPROM. La scheda di sviluppo può essere facilmente saldata o ponticellata su una basetta più grande per facilitare la prototipazione e i sistemi di produzione. (Immagine per gentile concessione di Microchip)

La scheda è anche offerta con alcune caratteristiche aggiuntive che possono essere utili agli sviluppatori. In primo luogo, ha due canali per l'analizzatore logico, DGI e GPIO. Questi canali possono essere utilizzati per il debug e la gestione del microcontroller. In secondo luogo, gli sviluppatori possono sfruttare una porta COM virtuale (CDC) sulla scheda per il debug o la registrazione dei messaggi. Infine, si possono utilizzare diversi strumenti per scrivere e distribuire il software. Ad esempio, gli sviluppatori possono usare Microchip Studio 7.0, un compilatore GCC o MPLAB X, che usa GCC o il compilatore XC8.

Sono anche disponibili circa una dozzina di repository di codice che Microchip supporta con vari esempi per ATtiny1627. Questi repository di codice hanno esempi che vanno dal rilevamento del movimento PIR, misurazioni di temperatura, conversioni analogiche e molto altro.

Creare un banco di prova per il rilevamento del movimento

Creare un banco di prova per il rilevamento del movimento è semplice e non troppo costoso. I componenti necessari per tale banco di prova includono:

Abbiamo già visto ATtiny1627 Curiosity Nano. La scheda Curiosity Nano è una scheda di supporto per ATtiny1627 Curiosity Nano che può essere utilizzata per la prototipazione rapida (Figura 3). Inoltre, fornisce tre slot di espansione per le click board MIKROE insieme a basette accessibili per i segnali di o per aggiungere hardware personalizzato.

Immagine della scheda Curiosity Nano di MicrochipFigura 3: La scheda Curiosity Nano ha tre slot di espansione per le click board MIKROE insieme alle basette per accedere ai segnali e aggiungere hardware personalizzato. (Immagine per gentile concessione di Microchip)

Infine, il sensore PIR MIKROE-3339, mostrato nella Figura 4, fornisce il sensore IR passivo PL-N823-01 di KEMET in una forma semplice ed espandibile che può essere collegata direttamente alla scheda Curiosity Nano. È importante notare che MIKROE-3339 richiede alcune modifiche quando viene utilizzato con gli esempi di Microchip per il rilevamento del movimento. Queste modifiche si trovano a pagina 10 della nota applicativa AN3641 di Microchip "Low-Power, Cost-Efficient PIR Motion Detection using the tinyAVR® 2 Family".

Immagine della click board MIKROE-3339 di MikroElektronikaFigura 4: La click board MIKROE-3339 fornisce un sensore PIR KEMET PL-N823-01 in una forma facile da prototipare. (Immagine per gentile concessione di MikroElektronika)

Software di rilevamento del movimento PIR

Ci sono diverse opzioni a disposizione degli sviluppatori per creare soluzioni software di rilevamento del movimento. La prima soluzione consiste nell'uso dei materiali di esempio forniti da Microchip in AN3641. Il repository del codice per il software di rilevamento del movimento di esempio si trova su GitHub.

L'applicazione avviene in alcune fasi. In primo luogo, l'applicazione inizializza e riscalda il sensore PIR. In secondo luogo, è usata una routine di servizio di interrupt ADC per campionare periodicamente il sensore PIR. In terzo luogo, viene calcolata la media dei dati ADC. Infine, viene utilizzato un algoritmo di rilevamento per segnalare se il movimento è stato rilevato. Se viene rilevata un'attività, il LED su scheda lampeggia e un segnale di rilevamento viene inviato sulla porta seriale. Il flusso completo del programma è riportato nella Figura 5.

Immagine del flusso software per l'applicazione di rilevamento del movimento di Microchip (fare clic per ingrandire)Figura 5: Il grafico rappresenta il flusso software per l'applicazione di rilevamento del movimento di Microchip. (Immagine per gentile concessione di Microchip)

La seconda opzione per il rilevamento del movimento consiste nello sfruttare l'inizializzazione e la routine di interrupt ADC dagli esempi di Microchip, ma al posto dell'algoritmo di rilevamento, si usa l'apprendimento automatico. I dati PIR possono essere raccolti e poi utilizzati per addestrare una rete neurale. Il modello ML può quindi essere convertito per essere eseguito sul microcontroller con TensorFlow Lite for Microcontrollers, utilizzando la matematica a virgola fissa con pesi a 8 bit.

Ciò che è interessante in questo caso è che ML elimina la necessità per gli sviluppatori di progettare un algoritmo per le loro esigenze specifiche. Invece, possono semplicemente campionare il sensore nelle condizioni previste e nei casi d'uso di cui hanno bisogno per la loro applicazione. L'apprendimento automatico permette anche agli sviluppatori di scalare e adattare rapidamente i loro modelli quando diventano disponibili nuovi dati.

Suggerimenti e consigli per il rilevamento del movimento con ATtiny1627

Sono disponibili molte opzioni agli sviluppatori interessati a iniziare con il rilevamento del movimento. I suggerimenti da tenere a mente per gli sviluppatori consentono di semplificare e accelerare lo sviluppo e includono:

  • Costruire una piattaforma di prototipazione a basso costo usando componenti standard.
  • Sfruttare l'esempio di rilevamento del movimento di Microchip reperibile su GitHub.
  • Progettare prototipi hardware con l'ingombro ATtiny1627 Curiosity Nano e saldare direttamente la scheda sull'hardware per semplificare i prototipi iniziali.
  • Per un codice ottimizzato ed efficiente, usate il compilatore XC8 di Microchip.
  • Leggete il documento di Microchip AN3641 Low-Power, Cost-Efficient PIR Motion Detection Using the tinyAVR® 2 Family prima di iniziare un'applicazione di rilevamento del movimento.
  • Considerate seriamente l'utilizzo di ML per l'algoritmo di rilevamento del movimento.

Seguendo questi consigli, gli sviluppatori risparmieranno parecchio tempo nella prototipazione delle applicazioni.

Conclusione

Il rilevamento del movimento sta diventando una caratteristica comune in molte applicazioni, specialmente dove è vantaggioso non dover intervenire. Gli sviluppatori possono minimizzare i costi in distinta base e semplificare il design sfruttando un sensore PIR e un MCU a basso costo. Come mostrato, ATtiny1627 è un eccellente punto di partenza e Microchip fornisce una vasta gamma di strumenti e note applicative per aiutare gli sviluppatori a muovere i primi passi. Inoltre, l'apprendimento automatico consente di ridurre al minimo la complessità dello sviluppo dell'algoritmo per rilevare il movimento.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo è un consulente software embedded e attualmente lavora con clienti in più di una decina di paesi per trasformare radicalmente le loro attività migliorando la qualità dei prodotti, i costi e il time-to-market. Ha pubblicato più di 200 articoli sulle tecniche di sviluppo di software embedded, è un relatore e un istruttore tecnico e ha conseguito tre lauree, tra cui un master in ingegneria presso University of Michigan. Risponde all'indirizzo jacob@beningo.com, ha un sito web personale www.beningo.com e produce una Newsletter mensile Embedded Bytes cui è possibile iscriversi.

Informazioni su questo editore

Editori nordamericani di DigiKey