]> git.piffa.net Git - arduino/blob - var/lezioni.rst_original
first commit
[arduino] / var / lezioni.rst_original
1 ===================================
2 Argomenti per Lezioni Arduino Base
3 ===================================
4
5
6   :Author: Andrea Manni
7   :Copyright: GFDL
8   :Version: 0.9
9
10 .. sectnum::
11
12 .. contents:: Indice degli argomenti
13 .. |date| date::
14
15 Generato il |date| con: http://docutils.sourceforge.net/rst.html
16
17
18 Note: this is the first draft befor ispell check.
19
20 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.
21
22 Il corso
23 ==========
24
25 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.
26
27 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.
28
29 Contesto
30 ------------
31
32 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.
33
34 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.
35
36 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.
37
38 Finalita'
39 -----------
40
41 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.
42
43
44 Durante lo svolgimento del corso i partecipanti imparerranno a programmare in Arduino C in ambiente Gnu/Linux utilizzando una breadboard e diversi input/output. 
45
46
47 Introduzione
48 ================
49
50 - Cos'e' un microcontroller (tutto compreso, memoria calcolo inputr-outpt)/ attuatore
51 - Cenni alle classi di elaboratori
52 - Cos'e' l'informatica e la programmazione
53 - Elettronica e elettronica digitale
54
55 Perche' l'informatica ha bisogno di un attuatore: interazione con il reale.
56 Elettronica digitale: vantaggi di usare un sofware (esempio di un bottone, logica booleana): cablatura instantanea, aggiunta di features.
57
58
59 Avvertenze
60 ---------------
61
62 Precauzioni per non danneggiare la scheda durante l'uso:
63
64 * Applicare materiale isolante (fondo in polistirolo) sotto alla scheda.
65 * Applicare isolante al connettore USB per staccare il cavo senza statica.
66 * Solo la porta 13 ha una resistenza integrata, per tutte le altre usare una resistenza da ''~300 ohms''.
67
68 Precauzioni per non danneggiare la scheda durante l'uso:
69
70 * Applicare materiale isolante (fondo in polistirolo) sotto alla scheda.
71 * Applicare isolante al connettore USB per staccare il cavo senza statica.
72 * Solo la porta 13 ha una resistenza integrata, per tutte le altre usare una resistenza da ~300.
73 * Non usare Arduino come un trasformatore!
74
75
76 Blink
77 --------
78
79 Analisi di un sketch:
80
81 - Struttura (setup, loop, input output)
82 - Fondamenti di programmazione: i 4 elementi base (fare descrizione completa dopo aver fatto cicli - INPUT).
83
84 - Dichiarazione di variabili: LED
85 - Funzioni per cambio di stato: digitalWrite / delay - output
86
87
88 Pratica
89 ~~~~~~~~~
90
91 # Fare accendere il LED per 1/10 di secondo
92 # Far spegnere il LED per 1/10 di s.
93
94 Descrivere una instruzione
95
96
97 * Far accendere il LED per 1/10 di secondo e un secondo
98
99 Questa e' una sequenza di istruzioni, accenno alle funzioni, es delay() .
100
101
102
103
104 Verifica e compilazione
105 ------------------------
106
107 Codice sorgente e codice oggetto, compilazione del codice.
108 Controllo formale, preprocessor (#define constantName value).
109
110 Eseguire procedure manualmente con makefile, visualizzazione codice oggetto.
111
112
113
114 Input
115 =====
116
117 Esempio con un imput, primo esempio con un bottone che fa accendere un LED.
118
119 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*).
120
121 Cicli Condizionali
122 ----------------------
123
124 Eventualmente usare un generatore random (esercizio per testa / croce) per introdurre i cicli condizionali.
125
126
127 Ottimizzazioni
128 ---------------
129
130 .. NOTE:: 
131     Questa parte andra' affrontata dopo i motori (servo inclusi).
132
133
134 De-bouncing, multitasking con millis(), identificare il cambio di stato.
135
136
137 Sensori: dilatare i tempi di lettura, utilizzare valori medi di pu' letture (smoothing), calibrazione dei sensori utilizzando seraile e riferimenti.
138
139
140
141 Eventuali
142 ~~~~~~~~~~
143
144 Transformazioni di input: da fot-sensore a piezo: Pitch follower 
145
146
147
148 Analisi ulteriore
149 ==================
150
151 Introdurre i data types
152
153
154 Cicli iterativi: for - while
155
156
157 Seriali
158 ========
159
160 Inviare dati via seriale per debugging.
161
162 Output
163 ========
164
165 LED, motori, servomotori, piezo, seriale.
166
167 PWM
168 -----------
169
170 Esmpio con un ''byte'' di ''brightness++" per aumentare la luminosita' di un LED.
171 Introdurre eventualmente i cicli ''for'' .
172
173
174 Funzioni
175 -----------
176
177 Creare una funzione con un ciclo for per aumentare / diminuire la luminosita' in base a un parametro passato alla funzione.
178
179
180
181 Piezo
182 -------
183
184 Emettere suoni e melodie tramite un trasduttore piezoelettrico.
185 - Onde sonore: frequenze e pitch.
186 - Sketch di esempi in Digital
187
188
189 (Sketches in multiple tabs, array).
190 Pitch follower: transformazione input fi un sensore photo -> onde sonore tramite piezo.
191
192
193 Calibrare l'input
194 ------------------
195
196 Calibrare l'input di un potenziometro / sensore: identificare valori minimi, massimi, offset e stabilire una formula: ''Range = (1024 - offset) *  1024 / (1024 - offset) '' .
197
198 Utilizzare ''map()'' per fare la stessa cosa. Caso specifico: cinversione tra ''1024 <-> 256'' : usare un fattore 4.
199
200
201 Usare un sensore di luminosita'
202 -------------------------------
203
204 Utilizzare come sorgente di imput la resistenza rilevata da un sensore di luminosita', mappare l'input del sensore su un LED PWM / seriale.
205
206
207
208
209 Motori
210 ========
211
212 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.
213
214
215 Servo motori
216 --------------
217
218 Differenze rispetto a un motore DC, scopi di utilizzo.
219 Caratteristichei: coppia, velocita', peso, alimentazione.
220 Funzionamento: analogici e digitali, riduttori plastici e metallici, bearings.
221
222 Skretch Base e Knob. Utilizzare librerie esterne.
223
224 - http://handyboard.com/hb/faq/hardware-faqs/dc-vs-servo/
225
226
227 Motori passo-passo
228 -----------------------
229
230 Funzionamento, caratteristiche di utilizzo (consumo - coppia), campi di utilizzo (automazione power tools), differenze rispetto a servo (controllo posizione) e motori normali.
231
232
233 Motori brushless
234 -----------------
235
236 Differenze e caratteristiche rispetto ai motori a spazzole.
237 Uso di una ESC, BEC. 
238
239
240 Caratterstiche generali
241 -------------------------
242
243 Potenza, KV, voltaggio utilizzabile, amper massimi, potenza / peso, efficenza.
244
245
246
247 Elettronica di base
248 =====================
249
250 Si dovranno introdurre:
251
252 - Legge di Ohm
253 - Serie e parallelo, in particolare per batterie e resistenze
254 - Caratteristiche e uso dei LED: come calcolare resistenze necessarie
255 - Uso di transistor per motori DC
256
257
258 Eventuale: saldature
259 --------------------
260
261 Guida di base alle piccole saldature: cavi intrecciato, cavi dritti, PCB. Dissaldare.
262
263
264 Approfondimenti
265 ------------------
266
267 Resistenze: resistivita' in base a sezione e lunghezza: effetti su sere e parallelo.
268 (Fisica) Semiconduttori: resistenze -> diodi -> transistor : cenni sul funzionamento in base ai possibili range di spostamento degli elettroni.
269
270
271 Linux
272 =======
273
274 Argomenti specifici per utilizzare integrare Arduino in ambiente Linux.
275
276 - Installazione
277 - Leggere informazioni da seriale (redirezione INPUT, verso un file, screen), mandare informazioni (echo, cat)
278 - Eventuale: editor alternativi, compilazione e upload manuale (creare un make file).
279
280
281 Scratch
282 -----------
283
284 Installare Scratch per arduino.
285
286 - http://webtechie.be/2014/05/08/scratch-and-arduino-on-linux/
287 - http://s4a.cat/
288
289
290 Bibliografia
291 ============
292
293 Testi consigliati, non richiesti.
294
295 - Beginning C for Arduino: Learn C Programming for the Arduino 
296 - Practical Electronics for Inventors
297 - Arduino Language Reference
298 - Getting Started With Arduino 2nd Edition
299 - Arduino for Dummies
300
301 Risorse on line
302 ----------------
303
304 - http://arduino.cc/en/Reference/HomePage
305 - http://www.ladyada.net/learn/arduino/index.html
306 - https://learn.adafruit.com/series/learn-arduino
307 - https://wiki.archlinux.org/index.php/arduino
308 - http://arduinoprincipiante.blogspot.it/2013/04/presentazione.html
309
310
311
312
313 Utilizzi
314 ---------
315
316 - Input tramite manipolazione oggetti fisici.
317 - Stazioni per rilevamento dati: metereologiche, movimento.
318 - Attuatori per controllo numerico applicato a vari strumenti (stampanti 3D, frese , laser).
319 - Device per lettura di sensori da utilizzare con smartphones - computer
320 - Adattatore per sensori verso IoT
321 - Attuatore per device IoT: arduino - wifi - rele = accensione / spegnimento
322 - RFID per device domenstici: smartphone in contesti diversi = diversi profili
323 - Interfaccia input per tutti gli scenari in cui non si puo' usare un touch screeen / tastiera
324 - Domotica: irrigazione, controllo temperatura ambienti e acqua.
325 - Robotica: integrazione di apparecchiature di sorveglianza, robot domestici (aspirapolvere) e da giardino (macchine agricole unmanned in miniatura).
326 - Controllo droni, gyro, GPS, viewpoint. Ardupilot http://diydrones.com/notes/ArduPilot 
327 - Prototipi per maccine di dimensioni performance superiori.
328
329
330 Progetti
331 ----------
332
333 - Chorus – United Visual Artists: http://www.elmsly.com/Chorus-United-Visual-Artists 
334 - Ardupilot http://diydrones.com/notes/ArduPilot
335