Chi di noi non si è chiuso fuori casa almeno una volta?
E quante volte questo ci ha costretto a sostituire la serratura?
E ancora…quante volte abbiamo lasciato il pc incustodito, anche se per pochi minuti, rischiando di non trovarlo al nostro ritorno?
Purtroppo sono piuttosto frequenti incidenti che riguardano dimenticanze dall’esito catastrofico o addirittura tragico (si pensi ai casi recenti di figli piccoli dimenticati in macchina). L’idea alla base del KeyRem è quella di avere un dispositivo, o meglio un sistema di dispositivi, che riduca la possibilità che si verifichino questi eventi.
Il principio è piuttosto semplice: un sistema in grado di segnalare all’utente che si sta allontanando da una persona o un oggetto considerato prezioso. La parola prezioso assume qui il significato, non di pregiato, bensì di indispensabile, di valore.
Estendiamo il concetto di tag a quello di un dispositivo che non è solo in grado di identificare in maniera univoca un oggetto o una persona ma anche di elaborare dati su dove si trovi o quale azione stia intraprendendo. Immaginiamo poi di poter “taggare” gli oggetti e le persone in modo che il tag sia parte dell’oggetto stesso (portachiavi) o che si muova in maniera solidale ala persona (ad esempio perché inserito nei vestiti).
Inizialmente Alice (A) è fuori casa, ha con se il mazzo di chiavi (K). Entrando in casa entrambi i tag si registrano presso H (=house).
Più tardi Alice decide di uscire, ma dimentica di prendere le chiavi, rischiando di rimanere chiusa fuori. Ricordiamo che K è un oggetto che dipende da altri e non può essere lasciato incustodito. Nel momento in cui H rileva l’allontanarsi di A da K, invia un segnale di allarme che fa si che il dispositivo inserito nella giacca di Alice inizi a suonare ricordandole che ha dimenticato qualcosa di importante. Tuttavia Alice rimane libera di muoversi all’interno della casa (Docking Area) senza dover portare con se le chiavi. Ciascun dispositivo è essenzialmente costituito da un microcontrollore e un’antenna. Tuttavia, per rendere ciascun dispositivo più versatile possibile, abbiamo previsto la presenza di più blocchi opzionali.
Ad esempio il blocco per rilevare il movimento non è necessario per oggetti che non si muovono (es chiavi), allo stesso modo il blocco allarme non ha significato se il tag è montato su un oggetto o su una persona non in grado di interpretarne il segnale. Il gate block serve a notificare al uC che un varco è stato oltrepassato. Per la realizzazione dei tag abbiamo scelto di utilizzare materiale a basso costo e soprattutto facilmente reperibile (vincolo imposto dai tempi di realizzazione).
La scelta del microcontrollore da usare è stata inoltre guidata dalla necessità di essere in grado di scrivere software rapidamente; da qui la scelta di Arduino per la quantità di materiale, esempi e know-how reperibile in rete.
Il software può funzionare secondo più modalità, ma essenzialmente agisce come server o come client. Funzionando come server, raccoglie i dati inviati dai vari tag presenti e usa queste informazioni per stimare la distanza tra questi ed eventualmente decidere se è stato violato un vincolo sulla distanza minima richiesta tra oggetto dipendente e oggetto autonomo.
Come client invia il suo identificativo (più eventuali informazioni sulle accelerazioni a cui è sottoposto) corredato del valore dell’intensità del segnale. Per stabilire se attivare il segnale di allarme si osservano le variazioni di distanza che superano una certa soglia e che sono contemporanee a movimenti del tag.
La distanza di un dispositivo è ottenuta a partire dalla potenza del segnale ricevuto. Anche se questa è decisamente imprecisa ed inutilizzabile ai fini della localizzazione del dispositivo, è sufficiente a stimare se questo si trova dentro o fuori la docking area. Gli algoritmi per rilevare il movimento sono essenzialmente basati sul superamento di determinate soglie delle misure di accelerazione nei tre assi.
Abbiamo inoltre considerato la possibilità di usare l’algoritmo del Dead Reckoning per ricostruire gli spostamenti fatti dal tag e stimare la sua posizione effettiva all’interno della docking area, tuttavia questo richiede la presenza di un sistema di navigazione inerziale.
Keep in sight: ideale per tenere d’occhio il figlio in un luogo pubblico. Allarme appena questo si allontana dalla distanza predefinita.
Due dispositivi, il dispositivo non autonomo registra le variazioni di accelerazioni nei 3 assi e invia lo stato al dispositivo autonomo. Il dispositivo autonomo calcola (stima) la distanza sulla base degli spostamenti relativi e la potenza del segnale e stabilisce se notificare cambiamento.
Alert Me: la modalità più semplice, avverte che si sta dimenticando le chiavi.
Tre dispositivi: la docking area funziona da controllore, riceve i dati degli spostamenti e stima le distanze, se i vincoli non sono rispettati invia segnale d’allarme
Not alone: funzionamento simile ad Alert Me ma considera più dispositivi Autonomi.
C (car) è il controllore. Fa in modo che A o B mantengano la distanza minima da D, eventualmente comanda il segnale d’allarme all’ultimo dispositivo (tra A e B) che lascia da solo D.
Data la natura delle distanze in gioco (tra i 50 cm e 2/3 metri) non è possibile usare tag passivi,
questo comporta svantaggi su tutti i fronti, in particolare su quelli della miniaturizzazione e dei consumi, oltre che dei costi.
L’impiego di varchi permette di individuare in maniera più precisa dove si trovino i vari dispositivi e quali siano le azioni che stanno per intraprendere (es: varco sulla porta di casa, sulla macchina, ecc…) tuttavia realizzare un sistema che non si basi su questi ha numerosi vantaggi.
1) Non sono necessarie modifiche alle infrastrutture esistenti (si mette il dispositivo in macchina senza necessità di installazioni complesse).
2) Permette una maggiore versatilità dovuta all’impiego del medesimo HW per funzioni diverse (eventualmente a seguito di una ri-config software).
Introdurre un sistema per rilevare i movimenti dei dispositivi può essere utile come indicazione del fatto che l’utente sta uscendo dall’area monitorata. Naturalmente complica il software e rende necessario l’uso di un microcontrollore su ogni dispositivo
La scelta di Arduino, come già accennato, è stata guidata essenzialmente dalla necessità di avere un uC facile da programmare. Va comunque considerato l’aspetto dei consumi, l’uso di uC a 32 bit aumenta le richieste di energia, e di conseguenza riduce le possibilità di miniaturizzazione

Note implementative per sviluppi futuri:
Le schede ST discovery sono molto economiche (considerato che sono già dotate di accelerometri) tuttavia non è facile reperire ambienti di programmazione open source o free per poterle utilizzare. La sfida qui è riuscire ad utilizzarle limitando i consumi.
Conclusa la fase di sperimentazione sarebbe auspicabile progettare schede e circuiti dedicati, che fanno uso di PIC (bassisimo costo e grande disponibilità). Il Dead Reckoning si basa sul rilevamento accurato di spostamenti una volta nota la direzione. Per capire in quale direzione si sta muovendo il dispositivo è fondamentale dotarlo di un sistema di navigazione inerziale.

Leave a comment