Arduo Memory Reminder Medicine

:slight_smile:
Trovato centipede! Centipede Shield V2 - Macetech Electronics Store

Prezzo interessante: 25$. Per l'evoluzione a 64 medicine, potrebbe tornare utile, pronta e già montata da applicare ad arduino !

Aggiornamento alla 05i:

  • aggiornati pin matrice led
  • rtc: aggiunti include necessari
  • rtc: ora il ds1307 è la sorgente di tempo
  • rtc: quando vengono aggiornate data e ora, viene aggiornato anche l'RTC
  • aggiornato pin altoparlante
  • pin lcd: da aggiornare... :stuck_out_tongue:

L'ho compilata ma (ovviamente) non provata.

A_M_R_05i.pde (30.4 KB)

:slight_smile:
Come al solito un buon lavoro tuxduino, ma purtroppo non ho potuto provare nulla, perchè ho impegato un pò per trovare la libreria "ds1307rtc.h", non è così semplice da trovare, ne esistono un pò di tipi ed infine ho usato una che si trova all'interno della "Time" del 05/09/2011. Sarebbe meglio se mi indicassi quale hai usato ed eventualmente dove trovarla, per non trovare eventualmente sorprese.

Domani aggiorno l'hardware e testo la tua R05i, però senza l'RTC che spero mi arrivi la prox week. (ne ho ordinati 3, insieme al PCF8574).

Per l'aggiornamento del display, secondo brunello, basta fare così:

la libreria e' la stessa, ma in versione I2C liquidCrystal_i2c.
Il bello e' che usa gli stessi comandi, quindi nessuna modifica agli sketch.

L'indirizzo lo dichiari nell'assegnazione

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20); // Set the LCD I2C address ( 0x38 per PCF8574A )

quindi, una volta montato con il PCF8574 , si cambiano queste istruzioni e tutto dovrebbe funzionare.

Che brutto, non avere un negozio/magazzino di elettronica vicino casa, dove acquistare i componenti.
Qui a Torino, una decina di anni fà ce ne erana almeno 4 grandi. Oggi è diventato tutto più difficile, i negozi/magazzino non esistono più, e gli altri negozietti, non hanno mai in emerito bip.... di quello che chiedi, e devono sempre ordinarlo.
Al contrario, li trovi su internet ma hai sempre il dilemma "e se il materiale arriva che non sono in casa?" oppure "e se dicono che hanno i componenti ed invece ti tocca aspettarli come in negozio, avendoli già pagati?" oppure "non arriveranno mai?".

Credo che questo ostacoli un pò lo sbroglio dei progetti, sia quelli amatoriali che non.
Ma con un pò di pazienza e tenacia, si riesce a risolvere lo stesso, anzi, durante questi tempi morti, si può far tesoro, riflettendo un pò sul progetto, cercando di pensare se si sta facendo bene.

Sorry, ma avevo bisogno di farti presente che il test completo non posso farlo fino alla prossima fornitura del materiale. =(
Mi sarebbe piaciuto poterti dare una risposta tempestiva, come la modifica che hai portato tu al firmware.

Un saluto.
Giuseppe

Non sto neanche a sottolineare più di tanto che per me non c'è nessun problema di tempo, si fa per il piacere di imparare "sporcandosi" le mani e dare una mano :slight_smile:

Per quanto riguarda al libreria per l'RTC, ho usato quella pubblicata insieme a Time. La libreria Time è distribuita come file .zip, all'interno del quale c'è anche DS1307.h. Nei progetti che ho fatto con l'rtc, ho sepmre usato quel file (per la cronaca, ho il modulo rtc di sparkfun, ma credo che non ci siano differenze con altre marche purché l'integrato sia lo stesso).

In merito ai pin dell'LCD, ho notato che sei stato costretto a collegarlo a pin diversi rispetto alla versione precedente. Non ho capito bene dallo schema come sono nominati i pin sul modulo LCD, quindi ho pensato che sarebbe stato più semplice e affidabile se l'aggiornamento dei pin nel codice l'avessi fatto tu :slight_smile:

Colgo infine l'occasione per riflettere sul fatto che nonostante l'overshoot :slight_smile: iniziale non sono riuscito a starti dietro in termini di funzionalità nel produrre una "mia" versione del programma, quindi forse è più corretto se come "main software developer" ti metti tu e a me affianchi la dicitura "additional development". Ma dico così per dire, non mi formalizzo :smiley:

:frowning:
Non vorrai mica farti da parte proprio ora tuxduino?
Tutti i consigli sono ben accetti, ed in particolare la tua conoscenza alla programmazione, diventa molto utile per lo sviluppo.
E' certo, che se ti interessa, come dici tu "sporcarti le mani" occorre trovare il compromesso, modificando step by step sia il codice che l'hardware, rispettando però "credo" l'interesse comune, cioè l'abilità ad utilizzare arduino nel miglior modo possibile e con la minima implementazione di dispositivi esterni.
Questo progetto, lo si sarebbe realizzato con un PC o con un tablet, alla modica cifra di 150-200 Euro. Troppo facile e banale! Esistono già applicazioni free di questo tipo, sia per android che per windows.

:roll_eyes: Io penso che il fatto di cercare di realizzare un qualcosa di nuovo ed utile a tutti senza dover spendere troppo in tecnologia e tempo di realizzazione hardware, diventi il motore che spinge alle persone come noi di arrivare a creare l'oggetto che un domani sia solo la base dell' espressione dell' open souce.

Insomma, l'obbiettivo principale è quello che io chiamo "semplicità di realizzazione", dove dietro, c'è un lavoro non indifferente di elaborazione software. Se aggiungiamo anche la semplicità al software, grazie alla tua conoscenza ed ai consigli della comunità, ecco che il progetto diventa interessante, non solo a noi, ma anche alla comunità per poter crescere a livello di conoscenza.

Dopo questo dettaglio, che ocorre ricordare ogni tanto e che pensavo fosse stato compreso da chi ha partecipato fino ad ora, ricordo che il progetto è libero "OPEN SOURCE", senza scopo di lucro ed a uso personale.

Ho voluto "regalare" condividere questo progetto alla comunità, come gli altri, sperando di poter risvegliare in qualcuno l'interesse al mondo open ed allo stesso tempo incuriosire i ragazzi che oggi intraprendono questa strada. Ultimamente se ne parla molto, ma in pochi lo praticano.

E come frase finale aggingerei: "( Il futuro oggi siamo noi. Proviamo a cambiarlo!)" :drooling_face:

Dopo questo chiarimento di pensiero, Vi informo che a breve, posterò nel sito del FABLABTorino, la nuova versione HD, R.1.1 che prenderà il posto della R.1.0, ma solo per liberare pin di arduino (quelli del display) nel caso ce ne sia bisogno, e la R.1.0a per rendere più chiaro lo schema e permettere a chiunque fosse interessato di costruirsi il dispositivo con un elenco dei componenti da me utilizzati.

Ricordo ancora, che Il software R1.0.x, potrà funzionare sia per la versione HD R.1.0 che per la R.1.1, salvo implememtazioni ai pin del display.

Un saluto a tutti. :wink:

Non vorrai mica farti da parte proprio ora tuxduino?

No, sono ancora qui :smiley:

Anzi noto con piacere che hai previsto un tasto ESC. Visto che siamo in fase di modifica, io ci metterei anche un left e un right. Tanto quella tastiera non è pensata per il "paziente", ma per la persona di supporto. Secondo me la programmazione di data/ora e allarmi risulterebbe più intuitiva con su/giu/dx/sx/esc/ok piuttosto che con solo su/giu/esc/ok.

Altra domanda: visto che si va per la strada dell'i2c port expander, pensi di abbandonare la tastiera analogica e di collegare i tasti appunto al pcf8574 ?

Bè , visto che le porte adc sono poche e preziose, conviene passare la tastiera in digitale, sulle porte fornite dal gpio, e salvare i pin analogici per usi futuri.

:roll_eyes:

Vi rispondo contemporaneamente: per le implementazioni importanti, credo si debba passare a main board più potenti e più capineti.
La tastiera analogica, è un buon rapporto qualità prezzo, anche se implica l'utilizzo di un analog. Passare alla tastiera con il PCF8574, fà si che si debba reperire in commercio anche questo. Dopo tutto il discorso del post precedente, Vi ricordo che questa release è di passaggio, quindi prevedere l'associazione a variabili tramite analogbutton dei pulsanti, da passre eventualmente in un secondo momento associandoli ad un digitalread I2C.
Per poter utilizzare oggi la release del software R.05i, che diventerà la R.1.0.0, senza grandi sforzi e cambiamenti HD, non conviene scomporsi troppo, essendoci il rischio di non far funzionare più nulla.
Basta quindi oggi ricablare l'HD esistente per far funzionare il tutto.

PS.: tuxduino, mi parlavi di flag dell' RTC per l'avvenuta R/W corretta, che lo si può gestire per usare l'orario di arduino in mancanza di questo?

Ecco la nuova release HD R.1.0a per utilizzare sia la R.0.5i che la R.1.0.0 del software che posterò non appena testata con l'implementazione della tastiera analogica. (provo ma non prometto nulla per la prox week)

quindi per adesso vuoi continuare ad usare l'lcd-keypad shield? (usavi quello no?)

:roll_eyes:
BrainBooster,

quindi per adesso vuoi continuare ad usare l'lcd-keypad shield? (usavi quello no?)

se dai un'occhiata allo schema, capirai che non ho usato alcuna shield, ma semplicemente un LCD nudo e puro, come tutti gli altri componenti.

L'idea di usare le shield, è per quelli che sperimentano il software e non vogliono perdere tempo nel cablaggio, perdendosi così anche il gusto di toccare con mano l'elettronica pura. (hobby) :wink:

BrainBooster:
quindi per adesso vuoi continuare ad usare l'lcd-keypad shield? (usavi quello no?)

Quello con lo shield sono io :slight_smile:

Premesso che sarei più propenso a mantenere la tastiera analogica (almeno per ora), non credo comunque che volendo usare l'i2c sarebbe necessario acquistare un keypad commerciale. Basterebbe collegare i pulsanti ai pin digitali del pcf8574 con dei pullup come si farebbe con i pin dell'arduino.

:smiley:
Anzi BrainBooster, giro anche a te la proposta, visto l'interessamento ed i consigli creativi, ti piacerebbe entrare a far parte della lista dei collaboratori del progetto come "Collaborator Hardware" ?

:roll_eyes:
certo tuxduino, ma l'integrato bisogna trovarlo e acquistarlo.

Comunque secondo mè, la semplicità è la miglior cosa, sia per perdita di tempo che per perdita di denaro, ed è quella che vorrei mantenere per il progetto, a meno che si decida di inserire una funzione particolare indispensabile, che comporterebbe la mancanza di pin, la quale al momento è tamponata dalla R.1.0a hardware.

Provo a ricapitolare:

  • tastiera analogica: elenco tasti definitivo (li mettiamo dx/sx o no?) e valori analogici per ciascun tasto (posso produrre io uno sketch di prova)
  • display serializzato i2c con pcf8574
  • rtc
  • eeprom i2c
  • matrice dei led pilotata direttamente dall'arduino come nella prima versione, solo con pin differenti come indicato nell'ultimo schema

:wink:
Così mi piaci tuxduino, diretto !!!

Provo a ricapitolare:

  • tastiera analogica: elenco tasti definitivo (li mettiamo dx/sx o no?) e valori analogici per ciascun tasto (posso produrre io uno sketch di prova)
  • display serializzato i2c con pcf8574
  • rtc
  • eeprom i2c
  • matrice dei led pilotata direttamente dall'arduino come nella prima versione, solo con pin differenti come indicato nell'ultimo schema

Per la versione del firmware RSW1.0.0 si drovrà ottenere quanto segue su hardware RHD1.0a:

  • Tastiera analogica senza tasti sx e dx ma con ESC ed ACK che si possono definire
    (NB. i tasti sono 5 + 1, "UP,DW,ESC,ENT,ACK + RST" utilizzando l' AnalogButtons library )

  • il display si può predisporre per la serializzazione, ma con l'opzione di utilizzarlo o meno, tenendo al momento buona la R.1.0a hardware

  • RTC con flag per verificarne la presenza o meno, il device dovrà comunque funzionare in assenza con il clock interno con data ed ora di default al reset di arduino

  • EEPROM I2C esterna per archiviare tutte le assunzioni del medicinale (da implementare anche la parte di visualizzazione) che verrà inserita non appena la RSW1.0.0 del software è funzionante (Es. sulla RSW1.0.1)

  • matrice a led pilotata direttamente da arduino come la R.05i

:%

Pausa forzata causa lavoro... :frowning: Tra qualche giorno arrivano i mux-demux i2c. L'integrazione col resto del sw non dovrebbe essere difficile...

:stuck_out_tongue:
Un ben ritrovati a tutta la comunity !
Tornato da una trasferta più lunga del solito, mi sono rimesso al lavoro, iniziando a testare la R.1.0 sia SW che HD.
La revisione è in fase di test, l'hardware utilizzato è quello postato in precedenza ed il software è la versione R05i aggiornata da tuxduino con la sistemazione dei pin display e l'inserimento del controllo tastiera analogica.

Il display è ok, ma ho ancora qualche problemino con la tastiera analogica, che in fase di test singolo, funziona, mentre inserita nello scketch deve essere collocata in modo corretto il richiamo.

L'RTC non sono riuscito ancora a reperirlo, mentre la rom esterna si.

Appena sistemato il tutto, posterò la nuova release.

Un saluto a tutti.

Giuseppe G. :wink:

:stuck_out_tongue: Un saluto a tutti.

E' pronta la Relese 1.0.1 del firmware per il nuovo device. Dopo un pò di tentativi e ricerche, ho deciso di eliminare la libreria "AnalogButton" che occupava 2k in compilazione ed inserito una piccola funzione per gestire i 5 tasti.

=( Mi manca però una piccola info. =(

Qualcuno mi sà indicare come verificare se è presente il circuito RTC (DS1307) all'avvio, in maniera da poter gestire sempre l'orario da arduino, anche senza la shield RTC, così da potersi svincolare dall'autocorrezione dell'ora data dalla libreria?

Ora, accade che se non è presente la shield RCT, al riavvio, si blocca sull'istruzione "setSyncProvider(RTC.get);" che viene richiamata nel setup, e quando parte, ogni tanto, l'ora si riporta al 1999.

Grazie anticipatamente.
Giuseppe G.

Ciao, la funzione setSyncProvider() può avere successo o fallire. Per saperlo si deve leggere il valore di una variabile di stato che ora a memoria mi sfugge. Nel caso in cui il "sync" sia fallito, l'ora andrebbe esplicitamente impostata ad un valore prefissato. Se non si fa questo, la data e l'ora possono assumere valori casuali.

Comunque secondo me l'RTC dovrebbe essere parte integrante dell'hardware. IMHO, of course :slight_smile: