Archivi categoria: Informatica

Articoli informali su argomenti da tastiera

Arduino, il Watchdog

Giocando con Garagino ho scoperto che i carichi induttivi (leggi motori elettrici) o anche alimentatori Switching di dubbia qualità creano “spurie” che interferiscono con il corretto funzionamento di Arduino. Di fatto lo mandano in “tilt” anche se non ho ancora capito se il problema “entra” nel micro controllore dall’alimentazione (passando per 2 alimentatori switching con condensatori vari di livellamento e varistori) oppure dalla connessione i2c che uso per pilotare i relay.

Fatto sta che si inchioda e resta li, a far righette senza senso sul bel display rosso.

L’unica soluzione che sono riuscito a trovare per poterlo utilizzare un po più serenamente e’ il  Watchdog.

Questo “cane da guardia” non e’ altro che un timer che deve essere resettato ogni tot tempo dal programma in esecuzione, se questo non avviene il timer riavvia il micro controllore.

Questo meccanismo è solitamente implementato in hardware ed è presente sul microcontrollore ATMega328 cuore di arduino UNO e familia.

Per utilizzare il Watchdog bisogna inserire la libreria wdt.h

I tempi di reset del Watchdog sono:

Tempo reset Parola Chiave
15mS WDTO_15MS
30mS WDTO_30MS
60mS WDTO_60MS
120mS WDTO_120MS
250mS WDTO_250MS
500mS WDTO_500MS
1 Secondi WDTO_1S
2 Secondi WDTO_2S
4 Secondi WDTO_4S
8 Secondi WDTO_8S

Nel  setup() abilito il watchdog specificando il tempo di reset scrivendo:

In pratica se entro 8 secondi non resetto il time del watchdog questo riavvia il micro che probabilmente si e’ impallato.

Per resettarlo:

In pratica… se so’ che nessuna delle atività svolte dal programma dura 8Secondi… lo resetto ogni volta che ricomincia il loop e ciao, se si impalla si riavvia.

Beh, forse e’ meglio scegliere con piu’ cura dove posizionare il wdt reset() ma ci siamo capiti 🙂

bash scripting

Ormai molti anni fa,dopo aver usato tantissimo  Windows, ormai assuefatto dall’uso dei bei bottoni colorati, decisi di provare ad installare linux.

Al 3-4 tentativo finalmente mi riusci di avere un sistema operativo funzionante. La magia della riga di comando mi attrasse come solo il QBASIC fece molti anni prima.

Ho trovato una serie di tutorial per utilizzare la BASH e cioè la shell più usata su i sitemi linux.

Un giorno forse li guarederò pure.

Kicad, maledette librerie

Kicad e’ bellissimo, tranne per le librerie.

Questo e’ il mio parere, probabilmente dovuto al fatto che lo uso molto poco.

Per questo mi segno qui un paio di cose:

Il file dove si salvano i nomi delle librerie e’ fp-lib-table e su ubruttu si trova in ~/.config/kicad oltre che nella cartella del progetto.

Le mie librerie con i file per il 3d sono in ~/my-bin/kicad-lib/ e devo modificare i percorsi relativi in modo che facciano puntare li library modules e il 3D.

Utile solo per me… ma cosi non lo perdo

Passaggio ad HTTPS su hosting tophost

Un giorno ti svegli ed è ora di rinnovare il tuo dominio.

Con un costo ancora abbordabile decidi per un miglioramento Delle prestazioni e acquisti il topweb plus di tophost.

Leggi che comporta solo il cambio dei DNS e che al limite per WordPress servirà un plugin e due righe nuove nel file .httpacces.

Facciamolo!

Due giorni per sistemare e far funzionare il sito.

Detto questo.. in pratica non so ancora cosa sia successo e adesso racconto.

Ho pagato l’upgrade da topweb a topweb plus e atteso tutti i tempi indicati dal gestore prima di attivare la richiesta per l’HTTPS.

WordPress si e’ subito impallato.

Ho pensato ad un problema di DNS e cosi ho controllato ma sembrava tutto a posto. Ho risolto cambiando la password al DB associato a WordPress con il PANNELLO DI CONTROLLO di TopHost e successivamente modificando il file di conf. di WordPress.

Ho aggiunto nel contempo le linee di codice suggerite da TopHost e , dopo un po’, magicamente tutto ha ricominciato a funzionare.

Dico dopo un po’ perchè è andata proprio cosi… non ha funzionato subito e cominciavo un po a scocciarmi.

Il mio pensiero personale e’ che i DNS non siano aggiornati subito ma sia stato necessario il mio “intervento” con il cambio della password per far partire il loro sistema di “trasferimento”.

GaraGINO

Dopo la ristrutturazione dell’appartamento dove abito mi sono cimentato con il garage.Chi non vorrebbe un po’di domotica in garage?Ecco.

Se guardate bene noterete un ARDUINO nano, un modulo RTC, un modulo I2C attaccato al display LCD 16×2

La parte di alimentazione inizialmente era stata pensata con un semplice regolatore di tensione LM7805 ma facendo accendere tutti i relay insieme mi sono reso conto che il sistema diventava instabile e il display calava vistosamente. Poi vedrete come ho risolto.

Questo modulo creato in un contenitore da barra DIN raggruppa tutti i cavi di ingresso dai pulsanti posti sulle pareti del garage e tutte le uscite  verso gli attuatori utilizzando i miei moduli per la connessione I2C.

La connessione dei pulsanti e’ semplice, i pulsanti una volta premuti mandano a terra il piedino corrispondente.

Le uscite invece comandano un modulo 8 relay standard, ne ho scelto uno opto-isolato e ho deciso per le seguenti attivazioni:

  1. Accensione e spegnimento prese
  2. Trasformatore per strisce led
  3. che quindi alimenta le  strisce di LED lato basculante
  4.  e/o anche le strisce di LED lato bancone
  5. Le luci di cortesia cioè dei faretti.
  6. Compressore
  7. La funzione pulsante per apertura bascula
  8. Ventilatore

Dopo un po’ di prove ho optato anche per altre modifice hardware.

La prima è quella già menzionata del reparto alimentazione.

La seconda consiste nella realizzazione di un pannello di 8 led controllati anche questi  con un modulo PCF8574

Dopo di che si e’ evoluto pure il programma di gestione, sono infatti passato da un programma nato per essere semplice e snello a circa 1500 righe di codice con un utilizzo della RAM di arduino di quasi il 70%.

Al momento (non credo che la sua storia sia finita 🙂 ) fa tutto quello che mi ero prefissato all’inizio del progetto e “quasi” tutto quello che poi mi e’ venuto in mente che avrebbe potuto fare.

E’ nelle mie intenzioni fare le cose per bene, prevedo quindi pure un manuale di istruzioni 🙂

 

cron e crontab

Cron su linux e’ potente, e’ quel servizio che permette di eseguire comandi pianificandoli nel tempo. Il comando per impostarlo e’ semplicemente crontab.

Online si trovano mille e una guide per usarlo al meglio.

Qui solo un sunto sunto sunto.

  1. crontab -l               Mostra le impostazioni attuali
  2. crontab -e             Edita il file delle impostazioni

Esempi:

# Esegue 5 minuti dopo mezzanotte, ogni giorno
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1

# Esegue alle 14:15 il primo giorno di ogni mese
15 14 1 * * $HOME/bin/monthly

#Esegue ogni 5 minuti tra le 4 e le 6

*/5 4-6 * * * /home/user”