Arduino multifunzione

ciao.
Vorrei realizzare questa cosa con Arduino ma siccome non ho le competenze necessarie chiedo a voi .
Faccio un elenco delle funzioni che vorrei implementare con Arduino :

SEZIONE SVEGLIA

  • svegliarsi per alzarsi la mattina con un brano musicale scelto a caso da un elenco di file
    musicali in memoria (ogni volta viene scelto un file musicale diverso . avevo pensato ad una
    radiosveglia ma credo che sia meglio cosi ).
  • programmazione allarmi giornaliera o settimanale (cioè facoltà di scegliere in quali giorni far
    suonare la sveglia) .
  • aggiornamento automatico dell'ora legale - ora solare
  • batteria tampone in caso di blackout energia (in questo caso credo sia meglio la sveglia con
    cicalino per consumare poca energia e non rischiare di azzerare la batteria tampone)

SEZIONE AUDIO

  • lettore audio con uscita che va al DAC esterno .
  • quattro tasti per la riproduzione , preciso però che ogni tasto corrisponde a un singolo e
    UNICO file musicale . quindi in tutto 4 file musicali , naturalmente sono diversi tra loro .
  • ogni tasto ha la funzione loop infinito (quando il brano finisce si riavvia automaticamente).
  • quando arriva l'ora della sveglia, il loop automatico deve essere disattivato per consentire
    l'attivazione dell'allarme.

non ho mai programmato Arduino e in generale non ho conoscenze di programmazione ma conosco i principi dell' elettronica .
forse esiste già un progetto simile da cui prendere spunto ?
ciao , grazie

Buongiorno e benvenuto :slight_smile: ,

essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà, quindi ti consiglio di farla al più presto. :wink:

Ciao.
Direi che è tutto fattibile e forse nemmeno troppo difficile se hai un minimo di dimestichezza... ma se parti da zero forse è meglio partire con una cosa alla volta.
Hai già qualcosa?
Arduino? Quale?
Display? (come pensavi di visualizzare l'ora?)
RTC?
Pulsanti?
Altro?

quello che ho io è un Funduino uno . penso sia un clone .
display non saprei , quello piu economico . mi serve solo vedere l'ora .
RTC non c'è l'ho e non saprei cosa prendere , non l'ho mai usato .
paulsati ? cosa intendi ?
ho dimenticato la funzione regolazione ora e minuti nel caso sia necessario x qualche motivo modificarla perche sballata .
che formati file audio legge ?
è possibile mandare il file audio via I2s al DAC ?

Funduino uno (che non conosco ma presumo sia un clone di arduino uno) direi che va bene.
Come display puoi partire dai più semplici tipo TM1637 oppure LCD 16x2 (o il 20x4 che funziona nello stesso modo).
Come RTC puoi usare il DS1307 (vedi anche qui) oppure il DS3231 (vedi anche qui), entrambi molto economici.
Per la regolazione dell'ora devi prevedere una sorta di "periferica di input", tipo un tastierino o dei pulsanti.
Per l'audio ci sono delle schedine che riproducono gli mp3, ma qui cominci già a complicare le cose.
Io partirei con display e rtc più qualche pulsante per visualizzare e regolare l'ora. Poi penserai ad aggiungere il resto.

Altro paziente per il reparto "Sindrome di Gundam" :laughing:

Scherzi a parte, per uno che afferma

questo è un progetto piuttosto impegnativo. Non aspettarti risultati nell'immediato perché prima di vedere qualcosa funzionante, dovrai acquisire le conoscenze di programmazione minime studiando e sperimentando.

possiedo gia questo display
https://www.datasheets360.com/pdf/-44045753272665375
c116l01ybw00
va bene ?
qual' è il linguaggio piu facile in assoluto ?

Il display dalle immagini su google sembra un normale lcd, ma su questo non sono molto ferrato, quindi meglio che aspetti pareri più autorevoli.
Per il linguaggio... Non ho capito la domanda. Intendi linguaggio per programmare arduino? Non è che hai molta scelta... Direi che il modo più semplice è usare l'ide di arduino.

lasciamo in sospeso per il momento l'aspetto software.
a livello hardware come si implementa la funzione :

  • aggiornamento automatico dell'ora legale - ora solare

temo che non si implementi, non in HW
si tratta di una impostazione SW

... se fai un po' di ricerche, qui nella sezione Italiana del forum, troverai alcune discussioni, con tanto di codice sorgente, per implementare la funzione che ti dice se è attiva l'ora legale o meno.

A livello hardware non c'è alcun RTC che lo faccia.

Guglielmo

questo lo fa ?
https://www.renesas.com/in/en/document/dst/isl12022ma-datasheet

SI, onestamente non lo avevo mai visto :no_mouth: (... anzi, grazie per la segnalazione) ... vedo che accetta dei parametri che devi dare tu dall'esterno e poi lui, in base ad essi, calcola se è ora legale o meno.

Osservo però...

  1. costa quanto 3 moduli RTC con DS3231 (che sono tra i più precisi)
  2. ne vale la pena? ... per quattro righe di codice che fanno lo stesso controllo? :roll_eyes:
  3. ti sai fare da solo lo stampato dove applicarlo? Perché non credo esistano schedine già fatte con quel chip (è in case SOIC 20)...
  4. non mi sembra esistano librerie Arduino per quel chip e devi gestire il tutto tu via I2C e libreria wire

Guglielmo

Ho ritrovato il codice in un vecchio post ...

byte dstOffset (byte d, byte m, unsigned int y, byte h) {
  /* This function returns the DST offset for the current time.
    This is valid for the EU, for other places see
    http://www.webexhibits.org/daylightsaving/i.html

    Results have been checked for 2012-2030 (but should work since
    1996 to 2099) against the following references:
    - http://www.uniquevisitor.it/magazine/ora-legale-italia.php
    - http://www.calendario-365.it/ora-legale-orario-invernale.html
  */

  // Day in March that DST starts on, at 2 am in Italy
  byte dstOn = (31 - (5 * y / 4 + 4) % 7);

  // Day in October that DST ends  on, at 3 am in Italy
  byte dstOff = (31 - (5 * y / 4 + 1) % 7);

  if ((m > 3 && m < 10) ||
      (m == 3 && (d > dstOn || (d == dstOn && h >= 2))) ||
      (m == 10 && (d < dstOff || (d == dstOff && h <= 2))))
    return 1;
  else
    return 0;
}

Gli passi giorno, mese, anno (4 cifre) e ora e ti ritorna 1 se c'è l'ora legale o 0 se non c'è.

Detto questo ti ricordo che:

Il Parlamento europeo ha approvato l'abolizione dell'ora legale con 410 voti a favore, 192 contrari e 51 astensioni.

Il tutto nasce sotto la spinta di alcuni paesi (Finlandia e Lituania in primis) e forte di un referendum online che ha visto ben l'84% dei cittadini votare per l'eliminazione del cambio dell'ora.

... quindi ... non si sa poi se si continuerà ad usare o meno ... :roll_eyes:

Guglielmo

Non conoscevo questa sindrome, ma dalla ricerca su Google direi che è una sindrome molto diffusa!

Come sono i linguaggi visuali ?

Dipende cosa intendi ... i vari Visual C/C++, Visual basic, Visual Studio di Microsoft o i linguaggi di programmazione "grafici" in cui il programma si scrive disegnando?

Guglielmo

quelli grafici tipo ardublock

non ho conoscenze di programmazione

qual' è il linguaggio piu facile in assoluto ?

lasciamo in sospeso per il momento l'aspetto software

Come sono i linguaggi visuali ?
quelli grafici tipo ardublock

Ho l'impressione, bada bene, solo un'impressione, magari sbagliata, che tu stia sottovalutando cosa significa scrivere un programma, e che immagini esista "una scorciatoia" o una via "più facile", ma così non è.

Nessun linguaggio o IDE o ambiente visuale penserà al posto tuo creando la logica adatta a ottenere il risultato che vorresti. Quindi da questo punto di vista non esistono linguaggi più facili.

Certo ci sono sottoinsiemi di linguaggi specializzati per usi strettamente specifici (vedi quelli per i PLC), ma che a fronte di una maggiore "semplicità" nello stretto ambito specifico, poi non permettono di fare niente altro.

Ma per un linguaggio general purpose, come il C/C++ di Arduino, usare un ambiente visuale piuttosto che testuale, o un IDE piuttosto che un altro, è solo una questione sintattica o di comodità/gusto personali, non rende la programmazione, nel senso di progettazione, più semplice.

Vedi anche la spiegazione a circa metà pagina da «A margine, la programmazione prevede» di questo post.

ciao e grazie x le risposte . ho 2 domande .
ho visto in giro che ci sono tanti moduli tipo questo :
https://sparks.gogo.co.nz/jq6500/index.html
e sembrano tutti uguali .
leggono file wav o Mp3 usando i tasti in modalità ADkey . mi pare di capire però che le uscite passano x un amplificatore interno e quindi non è possibile usare un DAC esterno come volevo io . in piu non so se hanno la funzione loop continuo . voi sicuramente ne conoscete tanti di questi moduli e ne saprete dirmi .
l'idea è quella di usare il modulo per il comparto audio in modo da fare la programmazione solo x il comparto sveglia riducendo parecchio .
seconda domanda : se prendo programmi gia esistenti in rete e li dispongo uno dietro l'altro può funzionare ?
per esempio per l'ora legale ho trovato questo :

mi resterebbe solo quello x programmare la sveglia e spegnere il player audio