=================================== Argomenti per Lezioni Arduino Base =================================== :Author: Andrea Manni :Copyright: GFDL :Version: 0.9 .. sectnum:: .. contents:: Indice degli argomenti .. |date| date:: Generato il |date| con: http://docutils.sourceforge.net/rst.html Note: this is the first draft befor ispell check. Appunti e materiali per lezioni del corso base su Arduino. Questo documento e' da considerarsi come una traccia degli argomenti considerati e non il manuale definitivo delle lezioni. Il corso ========== Il corso di base di Arduino e' rivolto a chi si approccia per la prima volta al mondo dei makers, fornendo le basi di elettronica, informatica e elettronica per orientarsi e poter iniziare a interagire nell'innovativo mondo dell'elettronica digitale. Obbiettivo del corso e' utilizzare la piattaforma Arduino come primo approccio all'elettrinica digitale, potendo cosi' lavorare sulle basi di elettronica, informatica e programmazione. Le varie tematiche verrano affrontate praticamente dagli studenti con prototipi funzionanti basati sull'elaborazione delle informazioni fornite da vari tipi di sensori al microcontroller Arduino che elaborera' i dati per comandare vari tipi di attuatori come motori, luci LED, altoparlanti. Contesto ------------ Negli anni recenti molto e' cambiato nel panorama dell'elettronica, la contaminazione con gli ambienti aperti del settore informatico, 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 oggi sono alla portata dell'hobbista soluzioni che fino a pochi anni fa erano esclusiva dell'automazione industriale, per via degli alti costi e dell'esclusivita' delle varie implementazioni. Oggi il Free Software, Open Source e Open Hardware, Crowdfounding hanno rivoluzionato l'elettronica con una serie di dispositivi che hanno riportato la creativita' elettronica nella disponibilita' dei makers, dai micro cotroller come Arduino a nuovi strumenti come le stampanti 3D permettono a un vasto pubblico di dedicarsi a robotica, domotica e a tutte le ultime innovazioni tecnologiche. Finalita' ----------- Tutta questa flessibilita' e disponibilita' di nuove soluzioni puo' pero' disorientare chi si approccia a queste soluzioni, sia per chi e' ai primi passi che per 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 con le altre tecnologie alla moda. Durante lo svolgimento del corso i partecipanti imparerranno a programmare in Arduino C in ambiente Gnu/Linux utilizzando una breadboard e diversi input/output. Introduzione ================ - Cos'e' un microcontroller (tutto compreso, memoria calcolo inputr-outpt)/ attuatore - Cenni alle classi di elaboratori - Cos'e' l'informatica e la programmazione - Elettronica e elettronica digitale Perche' l'informatica ha bisogno di un attuatore: interazione con il reale. Elettronica digitale: vantaggi di usare un sofware (esempio di un bottone, logica booleana): cablatura instantanea, aggiunta di features. Avvertenze --------------- Precauzioni per non danneggiare la scheda durante l'uso: * Applicare materiale isolante (fondo in polistirolo) sotto alla scheda. * Applicare isolante al connettore USB per staccare il cavo senza statica. * Solo la porta 13 ha una resistenza integrata, per tutte le altre usare una resistenza da ''~300 ohms''. Precauzioni per non danneggiare la scheda durante l'uso: * Applicare materiale isolante (fondo in polistirolo) sotto alla scheda. * Applicare isolante al connettore USB per staccare il cavo senza statica. * Solo la porta 13 ha una resistenza integrata, per tutte le altre usare una resistenza da ~300. * Non usare Arduino come un trasformatore! Blink -------- Analisi di un sketch: - Struttura (setup, loop, input output) - Fondamenti di programmazione: i 4 elementi base (fare descrizione completa dopo aver fatto cicli - INPUT). - Dichiarazione di variabili: LED - Funzioni per cambio di stato: digitalWrite / delay - output Pratica ~~~~~~~~~ # Fare accendere il LED per 1/10 di secondo # Far spegnere il LED per 1/10 di s. Descrivere una instruzione * Far accendere il LED per 1/10 di secondo e un secondo Questa e' una sequenza di istruzioni, accenno alle funzioni, es delay() . Verifica e compilazione ------------------------ Codice sorgente e codice oggetto, compilazione del codice. Controllo formale, preprocessor (#define constantName value). Eseguire procedure manualmente con makefile, visualizzazione codice oggetto. Input ===== Esempio con un imput, primo esempio con un bottone che fa accendere un LED. Invertire il circuito del bottone / parametro della lminosita per spiegare i *vantaggi dell'elettronica digitale* rispetto a elettronica "cablata" (cenni a PWM, varie letture degli eventi di *click*). Cicli Condizionali ---------------------- Eventualmente usare un generatore random (esercizio per testa / croce) per introdurre i cicli condizionali. Ottimizzazioni --------------- .. NOTE:: 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 pu' letture (smoothing), calibrazione dei sensori utilizzando seraile e riferimenti. Eventuali ~~~~~~~~~~ Transformazioni di input: da fot-sensore a piezo: Pitch follower Analisi ulteriore ================== Introdurre i data types Cicli iterativi: for - while Seriali ======== Inviare dati via seriale per debugging. Output ======== LED, motori, servomotori, piezo, seriale. PWM ----------- Esmpio con un ''byte'' di ''brightness++" per aumentare la luminosita' di un LED. Introdurre eventualmente i cicli ''for'' . Funzioni ----------- Creare una funzione con un ciclo for per aumentare / diminuire la luminosita' in base a un parametro passato alla funzione. Piezo ------- 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: transformazione input fi un sensore photo -> onde sonore tramite piezo. Calibrare l'input ------------------ 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: cinversione tra ''1024 <-> 256'' : usare un fattore 4. Usare un sensore di luminosita' ------------------------------- Utilizzare come sorgente di imput la resistenza rilevata da un sensore di luminosita', mappare l'input del sensore su un LED PWM / seriale. Motori ======== 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 debuggin seriale. Servo motori -------------- Differenze rispetto a un motore DC, scopi di utilizzo. Caratteristichei: coppia, velocita', peso, alimentazione. Funzionamento: analogici e digitali, riduttori plastici e metallici, bearings. Skretch Base e Knob. Utilizzare librerie esterne. - http://handyboard.com/hb/faq/hardware-faqs/dc-vs-servo/ Motori passo-passo ----------------------- Funzionamento, caratteristiche di utilizzo (consumo - coppia), campi di utilizzo (automazione power tools), differenze rispetto a servo (controllo posizione) e motori normali. Motori brushless ----------------- Differenze e caratteristiche rispetto ai motori a spazzole. Uso di una ESC, BEC. Caratterstiche generali ------------------------- Potenza, KV, voltaggio utilizzabile, amper massimi, potenza / peso, efficenza. Elettronica di base ===================== Si dovranno introdurre: - Legge di Ohm - Serie e parallelo, in particolare per batterie e resistenze - Caratteristiche e uso dei LED: come calcolare resistenze necessarie - Uso di transistor per motori DC Eventuale: saldature -------------------- Guida di base alle piccole saldature: cavi intrecciato, cavi dritti, PCB. Dissaldare. Approfondimenti ------------------ Resistenze: resistivita' in base a sezione e lunghezza: effetti su sere e parallelo. (Fisica) Semiconduttori: resistenze -> diodi -> transistor : cenni sul funzionamento in base ai possibili range di spostamento degli elettroni. Linux ======= Argomenti specifici per utilizzare integrare Arduino in ambiente Linux. - Installazione - Leggere informazioni da seriale (redirezione INPUT, verso un file, screen), mandare informazioni (echo, cat) - Eventuale: editor alternativi, compilazione e upload manuale (creare un make file). Scratch ----------- Installare Scratch per arduino. - http://webtechie.be/2014/05/08/scratch-and-arduino-on-linux/ - http://s4a.cat/ Bibliografia ============ Testi consigliati, non richiesti. - Beginning C for Arduino: Learn C Programming for the Arduino - Practical Electronics for Inventors - Arduino Language Reference - Getting Started With Arduino 2nd Edition - Arduino for Dummies Risorse on line ---------------- - http://arduino.cc/en/Reference/HomePage - http://www.ladyada.net/learn/arduino/index.html - https://learn.adafruit.com/series/learn-arduino - https://wiki.archlinux.org/index.php/arduino - http://arduinoprincipiante.blogspot.it/2013/04/presentazione.html Utilizzi --------- - Input tramite manipolazione oggetti fisici. - Stazioni per rilevamento dati: metereologiche, movimento. - Attuatori per controllo numerico applicato a vari strumenti (stampanti 3D, frese , laser). - Device per lettura di sensori da utilizzare con smartphones - computer - Adattatore per sensori verso IoT - Attuatore per device IoT: arduino - wifi - rele = accensione / spegnimento - RFID per device domenstici: smartphone in contesti diversi = diversi profili - Interfaccia input per tutti gli scenari in cui non si puo' usare un touch screeen / tastiera - Domotica: irrigazione, controllo temperatura ambienti e acqua. - Robotica: integrazione di apparecchiature di sorveglianza, robot domestici (aspirapolvere) e da giardino (macchine agricole unmanned in miniatura). - Controllo droni, gyro, GPS, viewpoint. Ardupilot http://diydrones.com/notes/ArduPilot - Prototipi per maccine di dimensioni performance superiori. Progetti ---------- - Chorus – United Visual Artists: http://www.elmsly.com/Chorus-United-Visual-Artists - Ardupilot http://diydrones.com/notes/ArduPilot