=================================== Arduino Base: Lezioni =================================== :Author: Andrea Manni :Copyright: GFDL :Version: 1.0 Traccia degli argomenti del corso base su Arduino Make++ tenuto in Ottobre 2015 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 .. contents:: Indice degli argomenti .. |date| date:: Generato il |date| con: http://docutils.sourceforge.net/rst.html Lunedi' 28 Dicembre ============================= Multitasking ---------------- Multitasking: utilizzare un RTOS col Framework Arduino su Cortex M4: - http://energia.nu/guide/multitasking/ - http://www.ti.com/lit/ug/slau597a/slau597a.pdf - http://hackaday.com/2014/06/23/multitasking-on-the-msp430f5529-launchpad/ Altri link a progetti simili standard: - http://www.freertos.org/ - RTOS + HAL : http://www.chibios.org/dokuwiki/doku.php Seriali ----------- - Connessioni analogiche e connesioni digitali. - Connessioni parallele e seriali - Connessioni sincrone e asincrone Link: https://learn.sparkfun.com/tutorials/serial-communication Cenni a TTL ligic: valori standard per definire i voltaggi per 0 / 1: https://learn.sparkfun.com/tutorials/logic-levels Esercizi: - http://lab.piffa.net/sketchbook_andrea/serial/analog_rx_1/ - http://lab.piffa.net/sketchbook_andrea/serial/analog_tx_1/ - http://lab.piffa.net/sketchbook_andrea/serial/serial_2_rx/ - http://lab.piffa.net/sketchbook_andrea/serial/serial_2_tx/ Dalla IDE Arduino: - https://www.arduino.cc/en/Tutorial/ASCIITable - https://www.arduino.cc/en/Tutorial/ReadASCIIString LED RGB ------------- Info e guide: - http://www.maffucci.it/2014/09/27/arduino-lezione-09-uso-di-led-rgb-parte-1/ - https://learn.adafruit.com/adafruit-arduino-lesson-3-rgb-leds/overview Eercizi: - Tutti: http://lab.piffa.net/sketchbook_andrea/RGB_LED/ Terminato il corso ricordatevi di iscrivervi al Forum di discussione: - http://forum.piffa.net/ Con l'anno nuovo ci si potra' organizzare per ritrovarsi nel laboratorio per esercitarsi e condividere progetti. I programmi dei prossimi corsi saranno pubblicati su http://lab.piffa.net/ Lunedi' 21 Dicembre ============================= Informatica ------------ Tipi di dati (data types): byte - int - long , signed e unsigned. Link su: Introduction to types (part 1) - http://www.ladyada.net/learn/arduino/lesson4.html Multitasking --------------- - Eseguire diversi task contemporaneamente: problemi dell'uso della funzione delay(): sketch: sketchbook_andrea/multitasking/blink_0 - Utilizzo della funzione ``millis()`` per coordinare diverse istruzioni: sketch - sketchbook_andrea/multitasking/BlinkWithoutDelay_1/ - sketchbook_andrea/multitasking/BlinkWithoutDelay_2_led/ - Isolare il codice di ogni task in una funzione: sketchbook_andrea/multitasking/BlinkWithoutDelay_2_led/ - Passare un argomento a una funzione: variabili locali e globali: sketchbook_andrea/multitasking/BlinkWithoutDelay_4_argomento/ Giovedi' 16 dicembre ============================= Informatica ---------------- Refactoring: passare dal codice http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_0/blink_0.ino alla versione rozza http://lab.piffa.net/sketchbook_andrea/programming/loops/loop_0_rider/loop_0_rider.ino alla versione con array e ciclo iterativo: http://lab.piffa.net/sketchbook_andrea/programming/loops/loop_1_array_loop/loop_1_array_loop.ino * Array, generale e uso in for loops https://www.arduino.cc/en/Reference/Array * http://www.tutorialspoint.com/cprogramming/c_arrays.htm Elettronica ---------------- Bottoni in pull-down, esercizio: http://lab.piffa.net/sketchbook_andrea/piezo/piezo_2_keyboard/ Arduino ---------------- Includere un file: * https://www.arduino.cc/en/Reference/Include * https://www.arduino.cc/en/Hacking/BuildProcess Musica ~~~~~~~~~~~~~~~~~ Utilizzo della funzione tone() per effetti sonori e musica. Trasposizione da notazione musicale a codice eseguibile da Arduino. Creare uno strumento musicale con una scala pentatonica, utilizzare delle melodie sequenziali. Lunedi' 14 dicembre ============================= Elettronica --------------- Stati di un bottone: creare un circuito in cui viene tracciato lo stato di un bottone (sensore ) e in base all'input dell'utente si modifica lo stato di un attuatore (output, un LED). Circuiti analizzati: - http://lab.piffa.net/schemi/circuito_led_button_bb.png - http://lab.piffa.net/schemi/button_1_bb.png Sketches: - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_3/ - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_4_state/ - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_4_state_and_condition/ Links: - https://www.arduino.cc/en/Tutorial/StateChangeDetection Debounce: introduzione al problema generale, soluzione semplice tramite un delay. Non e' stato ancora visto il debounce tramite la funzione millis(). Piezo ------ Piezoelettricita': concetti di base e funzionamento. Utilozzo di un piezo in output analogico (PWM) per seguire l'input analogico di una fotoresistenza. Links: - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino - http://www.dummies.com/how-to/content/how-to-make-an-instrument-with-the-arduino.html Pull UP --------- Utilizzo di un bottone in stato di Pull-UP, utilizzo della resistenza interna di Arduino. - https://learn.sparkfun.com/tutorials/pull-up-resistors/what-is-a-pull-up-resistor - https://www.arduino.cc/en/Tutorial/DigitalPins - http://www.ladyada.net/learn/arduino/lesson5.html Giovedi' 10 dicembre ============================= input analogico e pwm: mappatura di un input analogico su un output analogico: - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_4_analog_input/pwm_4_analog_input.ino photoresistenza --------------------------- - resistenza in serie: resistivita' e conduttivita': https://en.wikipedia.org/wiki/electrical_resistivity_and_conductivity . aumentare la conduttivita' mettendo le resistenze in parallelo. - calibrazione sensore con map() - calibrazione automatica - constrain() per impostare un range - input analogico: sensore di luminosita', fotoresistenza. sketches: - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analoginput_1/ - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analoginput_2_serial/ - basic/analog_input/photo_[3,4,5]. .. note:: se volete vedere i vari elenchi di materiali presi in considerazioni per i corsi avanzati potete consultare gli elenchi: - Kit completo: http://lab.piffa.net/kit_full.html - Materiali per laboratorio: http://lab.piffa.net/laboratorio.html Lunedi' 7 Dicembre ============================== Informatica ----------------- Operatori binari per operazioni e comparativi: - http://lab.piffa.net/sketchbook_andrea/programming/operators/operator_1_basic/- http://lab.piffa.net/sketchbook_andrea/programming/operators/operator_2_comparison/ Operatori logici boleani ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cenni introduttivi. - http://lab.piffa.net/sketchbook_andrea/programming/operators/operator_3_logic/operator_3_logic.ino Tipi di dati ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Byte. 8 bit. Differenza con integer. Grandezze analogiche ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analogico e digitale. Conversioni, bitrate, perdita di dati. Elettronica ----------------- Potenziometri, trimmer, differenze. Resistenze in serie. Arduino: PIN analogici ---------------------------- Uso dei pin input analogici con un potenziometro: - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analogInput_1/ - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analogInput_2_serial/ PWM ~~~~~~~ Simulazione di output analogici tramite PWM. Introduzione, diuty cycle, 8bit di profondita. Utilizzo del data type ``bit`` per pilotare un PWM. - http://arduino.cc/en/Tutorial/PWM - http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM Esercizi: - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_0_stati/ - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_1_while_byte/ - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_1_soluzione_doppio_while_byte/ Giovedi' 3 Dicembre ====================================== Informatica ----------------- Introduzione alla riga di comando: standard input,output, comandi di base (whoami, hostname, pwd, ls, cd). Utenti di sistema e superutente. Guide: * http://linuxcommand.org/learning_the_shell.php * http://www.techspot.com/guides/835-linux-command-line-basics/ Git: introduzione, clonare e aggiornare un archivio. * Guida di git: http://git-scm.com/documentation * Italiano: http://www.html.it/articoli/git-in-pochi-passi-2/ * Per un archivio online gratis: https://github.com/ Programmazione ----------------- Cicli condizionali, esercizi: * http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_1/ * http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_2_serial_debug/ Guide: http://www.maffucci.it/2012/04/10/appunti-di-programmazione-su-arduino-controllo-di-flusso/ Elettronica ----------------- Ripasso su legge di Ohm, potenza e consumo di un circuito e dei singoli componenti. Arduino: specifiche tecniche relative alla gestione energetica: http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations . Bottone momentaneo, DPST poli e throw, sensore libero come antenna, pull down. Per gli interruttori e le resistenze in PULL DOWN / UP potete dare un’occhiata anche agli schemi sul tutorial all’URL: - http://www.ladyada.net/learn/arduino/lesson5.html - http://playground.arduino.cc/CommonTopics/PullUpDownResistor - https://www.arduino.cc/en/Tutorial/Button . Lunedi' 30 Novembre ============================== Arduino: debug seriale ----------------------------- Utilizzare la seriale per debug: funzioni print, println e flush . Bound Rate: BPS, velocita' di trasferimento dati. Sketch di esempio utilizzato: http://lab.piffa.net/sketchbook_andrea/basic/serial_debug/serial_hello_world/serial_hello_world.ino Links: - http://www.ladyada.net/learn/arduino/lesson4.html Programmazione: Cicli iterativi ---------------------------------- Ciclo while, esercizio: http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_4_ciclo_while/ Cicli For ---------- Cicli for e operatore ternario. - http://arduino.cc/en/Reference/for Esercizio: - http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_4_1_ciclo_for/ Programmazione ~~~~~~~~~~~~~~~~~~~ - Variabili e costanti, utilizzo della memoria. - DEFINE e const: utilizzo delle costanti Elettronia: legge di Ohm ------------------------- Legge di Ohm, calcolare resistenze per LED in un circuito. - http://playground.arduino.cc/Italiano/Led - Concetti generali di elettronica: http://ishtar.df.unibo.it/em/elet/cover.html Elettronia: LED ------------------------- Introduzione ai LED e alle resistenze. - http://www.ladyada.net/learn/arduino/lesson3.html Giovedi' 26 Novembre: seconda lezione ====================================== Il primo esercizio base, Blink, e' ampiamente trattato su una moltitudine di siti internet e manuali, vi lascio in proposito un paio di links: - http://www.maffucci.it/2010/11/17/arduino-lezione-02-facciamo-lampeggiare-un-led/ - http://arduino.cc/en/Tutorial/Blink - https://learn.adafruit.com/adafruit-arduino-lesson-1-blink/overview Programmazione ------------------ - Esercizio Blink, 4 parti: commenti - dichiarazione variabili - funzione setup - funzione loop. - istruzioni e sequenze di istruzioni. - Singola Istruzione termina con puntoe 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() - funzioni con argomenti: passare valori alle funzioni Se volete rivedere i listati dello sketch Blink visti in aula: - http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_1_variabili/ - http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_2_funzioni/ - http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_3_funzioni_argomenti/ Elettronica ---------------- Circuito elettrico: sempre tre elementi (fonte di energia, carico, circuito), elettroni e carica elettrica, carico, circuito aperto e chiuso, corto circuito. - 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. - LED: catodo / anodo, diodo Lunedi' 23 Novembre: prima lezione ====================================== Linux ---------------------------------------- - Free software e Open Hardware: condivisione del lavoro. - Portabilita', multiarch, flessibilita' - Distribuzioni linux, integrazione sistema operativo. 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 Programmazione ------------------------ * Esercizio Blink 0: http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_0/blink_0.ino * istruzioni e sequenze di istruzioni. * Singola Istruzione termina con puntoe virgola. * Partire dalla funzione digitalWrite(), modificare i tempi e ripetere: sequenze di istruzioni. Rimandi a ripasso su informatica di base ---------------------------------------------------------------- - Informatica di base: http://doc.andreamanni.com/informatica_base.html - Sistemi operativi: http://doc.andreamanni.com/sistemi.html I testi consigliati per il corso li trovate su: http://lab.piffa.net/lezioni.html#bibliografia