Author: Andrea Manni Copyright: GFDL Version: 0.1
Appunti e materiali per le lezioni del corso base su Arduino e Raspberry Pi. Questo documento e’ da considerarsi come una traccia degli argomenti considerati e non il manuale definitivo delle lezioni.
Indice degli argomenti
Generato il 2015-03-30 con: http://docutils.sourceforge.net/rst.html
Il corso di base di Arduino e’ rivolto a chi si approccia per la prima volta al mondo dei makers, proponendosi di fornire le basi di elettronica, informatica e programmazione sia per orientarsi che per una prima interazione nell’innovativo mondo dell’elettronica digitale.
Obbiettivo del corso e’ partire dalla piattaforma Arduino come primo approccio all’elettronica digitale, lavorare su quelle basi di elettronica, informatica e programmazione che permetteranno poi di sviluppare anche sulle altre soluzioni come RasPi. Le varie tematiche verranno affrontate dagli studenti con prototipi funzionanti, circuiti elettrici nei quali vari tipi di sensori saranno connessi al microcontroller Arduino che elaborera’ questi dati per poi interagire con il mondo reale comandando vari tipi di attuatori (ad es. motori, luci LED, altoparlanti).
Negli anni recenti molto e’ cambiato nel panorama dell’elettronica, la contaminazione con gli ambienti aperti del settore informatico e la disponibilita’ di sistemi miniaturizzati a basso costo ha reso disponibili nuove piattaforme come Arduino o RaspBerryPi, soluzioni economiche e flessibili.
Grazie a queste ed altre tecnologie e alla cultura dei Makers oggi sono alla portata dell’hobbista soluzioni che, per via degli alti costi e dell’esclusivita’ delle varie implementazioni, fino a pochi anni fa erano esclusiva dell’automazione industriale.
Il Free Software, Open Source e Open Hardware, Crowdfounding hanno rivoluzionato l’elettronica con una serie di dispositivi che hanno portato la creativita’ elettronica nella disponibilita’ dei makers, partendo dai micro cotroller piu’ semplici ed economici come Arduino fino a veri e propri micro computer come Raspberry Pi basati su Gnu/Linux. Soluzioni flessibili ed economiche che a loro volta permettono la costruzione di nuovi strumenti come le stampanti 3D, offrendo ad un vasto pubblico la possibilita’ di dedicarsi a robotica, domotica, veicoli autonomi. Una nuova generazione di harware aperto da rendere smart con il software libero, per costruirsi oggetti sempre piu’ connessi tra loro e ricchi di funzionalita’.
Tutta questa flessibilita’ e disponibilita’ puo’ pero’ disorientare chi si approccia a queste tecnologie, sia chi e’ ai primi passi che coloro che magari hanno precedenti esperienze con solo alcune delle discipline che si amalgamano con Arduino. Scopo del corso e’ quindi stabilire delle fondamenta di informatica e elettronica per poi poter crescere sia con Arduino che indirizzarsi verso le alre soluzioni.
Durante lo svolgimento del corso i partecipanti impareranno a programmare in Arduino C in ambiente Gnu/Linux utilizzando una breadboard e diversi input/output.
Perche’ l’informatica ha bisogno di un attuatore: interazione con il reale. Elettronica digitale: vantaggi di usare un software (esempio di un bottone, logica booleana): cablatura istantanea, aggiunta di features.
Precauzioni per non danneggiare la scheda durante l’uso:
Analisi di un sketch:
# Fare accendere il LED per 1/10 di secondo # Far spegnere il LED per 1/10 di s.
Descrivere una istruzione
Questa e’ una sequenza di istruzioni, accenno alle funzioni, es delay() .
Codice sorgente e codice oggetto, compilazione del codice. Controllo formale, preprocessor (#define constantName value).
Eseguire procedure manualmente con makefile, visualizzazione codice oggetto.
Pin in modalita’ input: leggere ground e +5 (con buffer di protezione: se il pin e’ OUTPUT LOW e viene attacato a +5 va in corto!). Pin fluttante, pull up e down con cavo. Metafora palo con fulmini e messa a terra. Esempio con un input, primo esempio con un bottone che fa accendere un LED.
Invertire il circuito del bottone / parametro della luminosita’ per spiegare i vantaggi dell’elettronica digitale rispetto a elettronica “cablata” (cenni a PWM, varie letture degli eventi di click).
Eventualmente usare un generatore random (esercizio per testa / croce) per introdurre i cicli condizionali.
Definire il concetto di state e stateless, sketch con iterruttore. Logica combinativa e logica sequenziale. Es. firewall IP, NAT machine. Utilizzare PULLUP per poi usare resistenza interna.
Utilizzare la resistenza interna da 20Hohms di Arduino.
Nota
Questa parte andra’ affrontata dopo i motori (servo inclusi).
De-bouncing, multitasking con millis(), identificare il cambio di stato.
Sensori: dilatare i tempi di lettura, utilizzare valori medi di piu’ letture (smoothing), calibrazione dei sensori utilizzando seriale e riferimenti.
Trasformazioni di input: da sensore luminoso a piezo: Pitch follower
Inviare dati via seriale per debugging.
LED, motori, servomotori, piezo, seriale.
Esempio con un ‘’byte’’ di ‘’brightness++” per aumentare la luminosita’ di un LED. Introdurre eventualmente i cicli ‘’for’’ .
Utilizzare un LED RGB. Eventualmente introdurre esadecimali. Sketch con cicli iterativi e uno con input via seriale.
Eventuale: utiulizzare uno shift register per aumentare le porte di uscita con LED. La realizzazione del circuito e’ relativamente laboriosa, eventualmente portarne uno gia’ fatto. Usare piu’ listati (4 disponbili) sullo stesso circuito, ottimo per i binari.
Creare una funzione con un ciclo for per aumentare / diminuire la luminosita’ in base a un parametro passato alla funzione.
Emettere suoni e melodie tramite un trasduttore piezoelettrico. - Onde sonore: frequenze e pitch. - Sketch di esempi in Digital
(Sketches in multiple tabs, array). Pitch follower: trasformazione input di un sensore photo -> onde sonore tramite piezo.
Calibrare l’input di un potenziometro / sensore: identificare valori minimi, massimi, offset e stabilire una formula: ‘’Range = (1024 - offset) * 1024 / (1024 - offset) ‘’ .
Utilizzare ‘’map()’’ per fare la stessa cosa. Caso specifico: inversione tra ‘‘1024 <-> 256’’ : usare un fattore 4.
Utilizzare come sorgente di input la resistenza rilevata da un sensore di luminosita’, mappare l’input del sensore su un LED PWM / seriale.
Utilizzo di un motore 5v ~14mAh direttamente su Arduino tramite un transistor e diodo. Variare la velocita’ tramite PWM e un ciclo for, utilizzare un potenziometro come input analogico per variare la velocita’, trovare il valore minimo di carico per attivare il motore tramite debugging seriale.
Differenze rispetto a un motore DC, scopi di utilizzo. Caratteristiche: coppia, velocita’, peso, alimentazione. Funzionamento: analogici e digitali, riduttori plastici e metallici, bearings.
Sketch Base e Knob. Utilizzare librerie esterne.
Funzionamento, caratteristiche di utilizzo (consumo - coppia), campi di utilizzo (automazione power tools), differenze rispetto a servo (controllo posizione) e motori normali.
Differenze e caratteristiche rispetto ai motori a spazzole. Uso di una ESC, BEC.
Potenza, KV, voltaggio utilizzabile, ampere massimi, potenza / peso, efficienza.
Si dovranno introdurre:
Guida di base alle piccole saldature: cavi intrecciato, cavi dritti, PCB. Dissaldare.
Resistenze: resistivita’ in base a sezione e lunghezza: effetti su seriale e parallelo. (Fisica) Semiconduttori: resistenze -> diodi -> transistor : cenni sul funzionamento in base ai possibili range di spostamento degli elettroni.
TODO: la sezione su Rpi e’ al momento in sviluppo!
Argomenti specifici per utilizzare integrare Arduino in ambiente Linux.
Installare sketch per Arduino.
Materiali e strumenti utili per gli studenti: - Multimetro - Cacciavite piatto - Nastro isolante - Helping hand (senza lente di ingrandimento) - Trasformatore regolabile 3-12v
Testi consigliati, non richiesti.