Arduino, FSR, LED e tempi

No ok lo ammetto, la cosa è ben più complicata del titolo del post.
Sto lavorando ad un progetto piuttosto bizzarro: un "letto" che avverte, ad un generica persona che condivide la stanza con noi (sorella/fratello/studente/blabla), a che stadio del sonno stiamo. Di conseguenza se si può permettere di fare rumore o meno ecc ecc.
Dunque, partiamo dalla teoria, analizzando il sonno in relazione al movimento.

Gli stadi del sonno sono 5: Stadio W (la veglia) + Stadi 1,2,3,4. In questi stadi, a livello muscolare, c'è attività ma mano a mano che si cambia stadio questa diminuisce sempre più (ovvero: allo stadio 4 ci sarà poco movimento, se non quello della gambina, o di cambio posizione).
Dopodichè, si ha la fase REM (ovvero dopo 90 minuti) che un po' tutti conosciamo. Insomma, non ci muoviamo manco a pagarci.

La durata del sonno: la media è di 7,5/6,5 ore.
Analizzando più da vicino, possiamo scoprire il magico mondo della durata degli stadi.
C'è chi "conta" dalla Veglia, chi dallo Stadio 1. Fatto sta che:
dopo 10 minuti si entra nello stadio 2
dopo 15 minuti si entra nello stadio 3
dopo 40 minuti si entra nello stadio 4
Facendo un po' il conto siamo arrivati a: 60 minuti. Aggiungendo 30 minuti belli e buoni tra veglia e stadio uno si arriva alla FASE REM (ovvero dopo ben 90 minuti da quando ci siamo ficcati sotto le coperte)
dopo 20/30 minuti della fase REM si ricomincia dallo stadio 1.

Forse è meglio un'immagine ma...è il mio primo messaggio :smiley: forse più tardi.

Bene. Passiamo al nostro caro Arduy, sapendo che IO personalmente non sono mai stata una cima in matematica e che di linguaggio C ne so e ne capisco molto meno. Di conseguenza mi scuso sin da ora se il mio scrivere non è poi così tecnico, ANZI.

Innanzitutto volevo chiedere: secondo voi altri, è possibile realizzare una cosa del genere? Fare in modo che Arduino riesca a rilevare tutte queste cose?
Ovviamente dovrò usare tanti LED e quei tanto famosi FSR che ho trovato solo in inglese (Force Sensing Resistors).
In sostanza, ecco le "mie" istruzioni che vorrei che Arduy seguisse:

1 Arduino si aziona SOLO quando tutti gli FSR (sparsi per il materasso) percepiscono un peso. Quindi non quando una persona sta seduta sul letto, ma quando è distesa.
2 attivato, Arduino riceverà impulsi dai sensori: la persona sul letto si sta muovendo ma non si è ancora addormentata. in questo momento (suppongo) dovrà registrare il tempo.
3 quando il peso sui sensori si sarà stabilizzato (es. dopo 40 minuti i sensori non avvertono "cambiamento" di posizione della persona), arduino comunica attraverso un LED ROSSO che il tipo si sta addormentando.
4 dopo 90 minuti (quindi + 50 minuti ai 40 iniziali) Arduino avvisa che si è entrati nella fase REM che dura all'incirca 20/30 minuti, attraverso il LED VERDE
5 di nuovo, dopo i 20/30 minuti il tipo si muoverà e ancora una volta entra negli stadi non rem, quindi si accenderà il LED ROSSO.

E tutto si ripete. Non saranno solo due LED ma penso che, per ora, sapere come farlo fungere con due led sia il livello base. Poi, un giorno, aumenteremo la dose.

A me la cosa sembra tanto impossibile da realizzare, a dirla tutta...ma non si sa mai..Anche perchè Arduino dovrebbe anche "capire" se la persona si è svegliata di soprassalto per un incubo, di conseguenza "resettare" tutto il timer e ricominciare da zero...è fattibile?

Scusate se non sono riuscita a essere più sintetica :frowning:

eccola!

:-/

Ciao Sara, il progetto sembra interessante quanto strano.
Premetto che, a mio avviso, leggendo il post mi son chiesto "quali sensori usare"?
Mi spiego: fare una cosa del genere con Arduino non penso sia complessissimo ma... quali sensori usi?
Se ti basi tutto sul tempo (da quanto è fermo, da quanto si è mosso, da quanto...) è un po' difficile fare un qualcosa di attendibile e troppo soggetto da colui/colei che è sdraiato...
Se utilizzi un apparecchio con una logica come quella da te esposta su di me, ad esempio, non funziona.
Per quanto mi riguarda, dopo due secondi che ho appoggiato la testa sul cuscino sono in fase REM e quindi...
Prova a pensare a qualche sensore più adatto e poi ne riparliamo. Potrebbe essere un progetto interessante.

Grazie per l'interesse caro!

Basare tutto il progetto sul tempo penso sia abbastanza inutile, o per lo meno verrebbe a mancare tutta l'idea di fondo. Anche perché stiamo parlando del dormire, e non è solo "tempo" ma è anche "movimento". Come tu stesso dici: non potrebbe uscirci qualcosa di attendibile.
Gli unici sensori a cui ho pensato sono questi:

Dici che non vanno bene?
Per quanto riguarda, invece, il tuo entrare in fase REM dopo un minuto ..beh è impossibile: anche se ti sembra di entrare in quella fase di sonno pesantissimo, in realtà solo dopo 90 minuti ci arrivi. Ho lottato a lungo contro questo problema, mi sono documentata su diversi libri e pare proprio che sia una cosa matematica! Tutti noi abbiamo questi "passaggi" e li rispettiamo con una puntualità e un rigore assurdi.

Ritornando ai sensori: i force sensitive resistors si chiamano in inglese, non ho la più pallida idea di quale sia il nome in italiano..ma penso siano questi i più adatti no? Cosa ne dici?

Non ho assolutamente idea se ti possa servire me su robot-italy vendono un ricevitore interfacciabile con arduino che riceve il segnale del battito cardiaco dalle strisce dei cardiofrequenzimetri polar.

Ci vedrei abbinato anche un accelerometro per rilevare la velocita di movimento del torace per rilevare la frequenza del respiro.

A quanto avevo capito lui vorrebbe creare qualcosa relativo al materasso, e non alla persona che vi dorme (in modo che funzioni sempre?) ma i sensori che proponi sono interessanti...

@federico: esattamente. Alla fine di tutto il risultato sarà un materasso/proteggi materasso, qualcosa di apparentemente comune ma con la tecnologia di arduino. Pollice alzato per i sensori?

@tinman66: aaa che cose complesse! :stuck_out_tongue: non penso possano essermi utili per i progetto. Darò comunque un’occhiata al sito!

Che dire.
Si, se ti sei documentata ed hai visto che le fasi di sonno sono determinate da un certo periodo direi che gli FSR (penso che in italiano si chiamino sensori di forza resistivi) vadano bene.
Ma domanda.
Se sono in fase REM e mi giro nel letto (può capitare no?).
Come faccio a dire ad Arduino che mi sono mosso ma in REM e non che son passato in altra fase?
Non so: mi sembra davvero riduttivo solo il sensore di forza.

Beh innanzitutto se ti muovi in fase REM, il movimento è davvero impercettibile. Arduino è come se ignorasse questi movimenti lievi e veloci durante le varie fasi. Nel momento in cui, però, dalla fase REM ti stai svegliando magari per un brutto sogno e quindi cominci a muoverti di più, arduino si "resetta".

Hai fatto bene a fare questa domanda, perché è uno dei punti che tocca approndire per la programmazione di Arduino.
Dici che sono riduttivi solo questi sensori? A me in mente non viene nulla! Solo codice, codice, codice.

ciao

gli fsr potrebbero non essere la soluzione piu adatta perche sono precisi data una superfice specifica ma non credo lavorino bene su cose come i corpi (che hanno un peso distribuito)

per assurdo un sensore fatto con la spugnetta nera che si usa per impacchettare i chip essendo morbido può essere messo nel cuscino. metterei anche un accelerometro per sentire i movimenti.

per la struttura del codice dovreste imparare cos'è una "macchina a stati finiti " (FSM) che poi è un modo fighetto per dire che il vostro software ha diverse modalità e si passa da una modalità all'altra quando avviene un evento.

questo vi permette di implementare la sequenza che descrivete nella prima email.

m

Credo sia gestibile a livello di codice. Se sei in fase rem e ti muovi impercettibilmente allora il segnale viene ignorato, se ti muovi violentemente ma una sola volta ogni x secondi (ora nn so ogni quanto tempo e' comune che uno si muova), potrebbe rientrare in una gestione dei movimenti occasionali e quindi scartato l'avvenimento rispetto al generale della fase...

Allora vediamo un po':
macchina a stati finiti? ok è un inizio :slight_smile: grazie mille, approfondirò! Per la storia dei sensori: volevamo distribuirli per tutto il materasso, così da rilevare il peso di tutto il corpo. Troppo artificiosa come cosa?

@federico: hai centrato in pieno. Non c'è proprio una regola che ti dice che ogni tot secondi ti muovi, ma il concetto generale è quello che hai descritto in quelle due righe!

Usare questi ?:

http://www.babysicuro.com/pictures/it/documents/Babysense%20manual%20final3.PDF

waaa grandioso! :smiley:
chissà che diavolo di sensori hanno dentro. Grazie per l'utilissimo link, do un'occhiata, mi informo bene..magari scopro nuovi sensori o semplicemente nuovi modi per utilizzarli!!
:wink: