Arduino Base: Lezioni

Author:Andrea Manni
Copyright:GFDL
Version:1.0

Traccia degli argomenti del corso base su Arduino Make++ tenuto da Febbraio 2016 al Lunedi’ e Giovedi’ in via Barchetta. Questo documento non costituisce un manuale per il corso ma solo una traccia degli argomenti trattati nelle varie giornate di lezione, i riferimenti per testi e risorse consigliati li trovate su: http://lab.piffa.net/testi.html

Generato il 2017-03-22 con: http://docutils.sourceforge.net/rst.html

Giovedi’ 15 Dicembre: ultima lezione

Multitasking

Gli esercizi succesivi della serie multitasking non sono stati guardati in aula, trattano vari passaggi di refactoring per passare dal codice procedurale nel loop a funzioni quanto piu’ possibile isolate per poi raggiungere come soluzione finale degli oggetti autonomi tramite l’analisi delle problematiche legate ai contesti (scope) locali / globali delle variabili utilizzate.

Per chi fosse interessato prettamente all’uso di millis() al posto della funzione delay() per rendere “non blocking” il codice ci sono alcuni esempi di PWM e luci in sequenza:

Se invece volete solo usare direttamente gli oggetti basati su millis potete usare la libreria common inclusa nello sketchbook_andrea.

Programmazione: Refactoring

Procedere per interventi minimali per ottimizzare il codice al fine di renderlo portabile / riutilizzabile in contesti diversi.

Elettronica

Primi esperimenti con transistor per poter pilotare tramite Arduino componenti che richiedono piu’ di 40ma di corrente: utilizzo di un LED a 150ma e dimostrazione di un segmento di una striscia di LED a 12v.

Schemi:

Per il software si puo’ usare un qualunque sketch per accendere un led da 20ma, anche gli ultimi visti con millis(). Anche un PWM dovrebbe funzionare con i componenti del Kit Base di Arduino.

Non sono stati trattati in modo esaustivo i transistor che verrano visti nel dettaglio dal corso intermedio in poi: http://wiki.piffa.net/index.php/Semiconduttori

Incontri successivi

Terminato il corso di Arduino Base ci si potra’ comunque incontrare in laboratorio per continuare ad esercitarsi, come riferimento possiamo tenere le serate dei Mercoledi’ dopo le 21:00 in cui si trovano anche gli aeromodellisti (per i quali Andrea sta preparando delle luci con Arduino). Chiedete conferma ai colleghi oppure direttamente allo staff di MakeitModena per avere conferma della disponibilita’ dei laboratori durante le feste natalizie: http://www.comune.modena.it/makeitmodena

Andrea gestisce il forum di discussione: http://forum.piffa.net/ che possiamo usare per organizzare gli incontri liberi per le prossime serate.

Nota

Non abbiamo fatto in tempo a compilare il test qualita’ di fine corso, se avete un attimo di tempo please lasciate qualche commento sul corso di base tramite il questionario finale sull’andamento del corso . Magari segnalatelo anche agli altri colleghi :)

Buone feste a tutti :)

Lunedi’ 12 Dicembre

Approfondimenti

Spunti per approfondimenti di argomenti accennati in aula che verranno approfonditi nei corsi intermedi

Programmazione

Oggi oltre allo struct e stato introdotto il paradigma della programmazione ad oggetti aggiungendo i metodi alle variabili dello struct. Questi argomenti non sono fondamentali e verranno trattati in modo esteso nei corsi sucessivi. Solo per chi ha maggiore dimestichezza con la programmazione e vuole rivedere gli esempi fatti:

Mercoledi’ 7 Dicembre

Input analogico e pwm: mappatura di un input analogico su un output analogico:

Fotoresistenza

  • calibrazione sensore con map()
  • calibrazione automatica
  • constrain() per impostare un range
  • input analogico: sensore di luminosita’, fotoresistenza.

Programmazione: Array

Introduzione agli Array: forme di dati strutturate. Dichiarazione, dimensionamento, indicizzazione zero indexed, estrazione dei dati, gestione tramite cicli iterativi.

Sketches utilizzati:

Reference avanzata:

Lunedi’ 5 Dicembre

Giovedi’ 1 Dicembre

Informatica

Git: introduzione, clonare e aggiornare un archivio.

Lunedi’ 28 Novembre

Programmazione

Cicli iterativi: automatizzare sequenze di istruzioni ripetitive.

Nota: non e’ stata ancora introdotta la struttura do - while . Prime considerazioni sulle differenze di utilizzo di un ciclo while (indefinito, perdurare di una situazione es. pressione di un bottone) e ciclo for (iterazione ben conosciuta e delimitata).

Variabili e costanti

Cicli condizionali

Programmi non deterministici, utilizzo di variabili esterne per modificare il flusso del programma: i cicli condizionali.

Differenza tra cicli while e cicli if per la gestione degli eventi.

Per gli interruttori e le resistenze in PULL DOWN / UP potete dare un’occhiata anche agli schemi sul tutorial all’URL:

Gli sketch che abbiamo utilizzato sono:

Nota

Non sono stati ancora introdotti gli strumenti per il Debug via seriale, ad es. http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_2_serial_debug/ - http://lab.piffa.net/sketchbook_andrea/basic/serial_debug/

Gli schemi per la breadboard:

Risorse

Per fondamenti di programmazione in ambiente Arduino si puo’ consultare on-line in italiano: http://www.alberti-porro.gov.it/wordpress/wp-content/uploads/2014/01/ProgrammareArduino.pdf

Un altro testo piu’ approfondito adatto a chi ha gia’ buone basi di programmazione o vuole cimentarsi comunque con una trattazione esaustiva: http://www.apress.com/9781484209417

Vedi sempre: http://lab.piffa.net/testi.html

Giovedi’ 24 Novembre

Elettronica

Legge di Ohm, calcolare resistenze per LED in un circuito.

Introduzione alle breadboard:

Realizzazione del primo circuito elettrico su breadboard alimentato da Arduino:

Presentazioni di varie soluzioni per alimentazione da banco dei propri circuiti: http://lab.piffa.net/accessori.html#alimentatori

Programmazione

Funzioni:

Lunedi’ 21 Novembre

Elettronica

Oggi sono stati distribuiti i kit Arduino da 5e, chi avesse problemi a usare la scheda con MS Windows puo’ usare il driver: http://www.5v.ru/zip/ch341ser.zip

Saldatura

Oggi e’ stata fatta un’esercitazione di saldatura elettronica, dalla preparazione delle schede microcontroller (piedinatura) a esercizi base per i principianti: congiunzione di cavi, congiunzione di 3 cavi, congiunzione a T, preparazione di blinker LEDs.

Tra i materiali visti:

Nota

Mercoledi’ sera dalle 21:00 alle 24:00 ci si trova in laboratorio con il gruppo di aereomodellismo (tra cui molti di Tetrapak), se vi interessa fare pratica con saldature e volete che Andrea porti un po’ di materiali contattatelo per email a andrea at piffa punto net.

Giovedi’ 17 Novembre

Linux Desktop

  • Introduzione all’Ambiente desktop KDE: https://www.kde.org/workspaces/plasmadesktop/
  • [ALT][F3] : impostazioni avanzate delle finestre: rimozione bordi, schermo intero, shortcut per finestre e applicazioni.
  • Spostare e ridimensionare le finestre con [ALT] + mouse
  • Desktop virtuali: [CTR][F2] , [CTR][F1]. Abilitare nel caso i desktop virtuali da “Virtual Desktops”.

CLI

I primi comandi: sintassi

  • ls, cd, pwd, whoami, sudo, git

Arduino

Arduino IDE: sistema integrato. Utilizzare IDE.

Tools -> serial / board

Barra strumenti - Short cuts

Ctrl + R      Verify
Ctrl + U      Upload
Ctrl + Shift + M      Serial Monitor
Menu Contestuale: cerca nella guida

Upload -> LED: rx tx power led

Programmazione

Primi sketch:

Argomenti:

  • Esercizio Blink, 4 parti: commenti - dichiarazione variabili - funzione setup() - funzione loop.
  • istruzioni e sequenze di istruzioni.
  • Singola Istruzione termina con punto e virgola.
  • Partire dalla funzione digitalWrite(), modificare i tempi e ripetere: sequenze di istruzioni.
  • Variabili: impostare i tempi di delay() con una variabile.
  • fare una funzione per rapido() - lento(), guardare loop() e setup()

Elettronica

Differenza di voltaggio, volt, elettricita’, amper, resistenza ohms.

  • elettricità ‘ : spostamento di carica per unita’ di tempo. ampere / coulomb. Metafora anelli di una catena.
  • voltaggio: differenza di potenziale, metafora con pressione acqua. 1 joule / ampere
  • Resistenze: mix chimico tra conduttore e semiconduttore. Limitano il passaggio di corrente.

Testo consigliato per il ripasso: http://www.amazon.co.uk/Electronics-All-One-For-Dummies/dp/0470147040

Componenti: Led:

Legge di Ohm, calcolare resistenze per LED in un circuito.

Lunedi’ 14 Novembre

Linux

  • Free software e Open Hardware: condivisione del lavoro.
  • Portabilita’, multiarch, flessibilita’

Architettura di un elaboratore

  • Schema CPU - RAM - HD STORAGE
  • CPU - BIT (word) e frequenza, features: multitasking
  • INPUT e OUTPUT = PC: tastiera monitor + rete, USB BT...
  • MCU: tutto integrato nel IC
  • INPUT OUTPUT: 20 {22) pin , 14 input / output, 6 analog input 10bit resolution 1024 values , 6 PWM output (8bit resolution).
  • Communication: serial in / outi (UART TTL), I2C + SPI (sarebbero i 2 pin MISO MOSI in piu’ per arrivare a 22).
  • http://arduino.cc/en/Main/arduinoBoardUno
  • Differenze con un PC: interazione con perifieriche (USB), multitasking, prestazioni per flussi di dati (da 8 a 32bit).
  • Software: firmware o sistema operativo. Arduino non ha un OS ma viene caricato direttamente un firmware con al massimo un bootloader allegato, RPi e’ un sistema linux completo, altri embedded possono usare soluzioni intermedie come FreeRTOS per MCU come ESP8266.
  • Comparativa tra vari arduino: http://arduino.cc/en/Products.Compare , http://www.makershed.com/pages/microcontroller-comparison

HardWare

  • Arduino: architettura di base e le varie schede della famiglia.
  • ATmega328 MCU, IC montato DIP / DLP (dual in line package) e non SMD (surface mounted), sostituibile. 20 / 22 pin utilizzabili: 14 digital in/out (6PWM), 6 analog input, USB, 2 ICSP, reset button.
  • Power: via USB, via l’entrata regolata (7-12v) con protezione di reverse polarity, i connettori POWER Vin non sono protetti.
  • 4 LED: power, RX, TX, LED (pin 13 con resistenza).

Software

Compilazione - sorgente (passaggi vari: precompilatore, linker) -> codice oggetto specifioc per CPU / Architettura. Upload (burn) codice su flash di arduino via USB. Poi USB come seriale (non possono lavorare assieme).

Arduino IDE

Primo approccio all’IDE Arduino.

  • Compilazione - sorgente (passaggi vari: precompilatore, linker) ->
  • codice oggetto specifico per CPU / Architettura. Upload (burn)
  • codice su flash di arduino via USB. Poi USB come seriale (non possono lavorare assieme).

Arduino IDE: sistema integrato. Utilizzare IDE.

Tools -> serial / board

Barra strumenti - Short cuts

Ctrl + R      Verify
Ctrl + U      Upload
Ctrl + Shift + M      Serial Monitor
Menu Contestuale: cerca nella guida

Upload -> LED: rx tx power led