]> git.piffa.net Git - arduino/blob - sfinge/lezioni.rst
ac5dba766dc6a630bf9a5fda6cb0df577618a2d3
[arduino] / sfinge / lezioni.rst
1 ===================================
2 Argomenti per Lezioni Arduino Base
3 ===================================
4
5
6   :Author: Andrea Manni
7   :Copyright: GFDL
8   :Version: 0.1
9
10
11 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.
12
13
14 .. sectnum::
15
16 .. contents:: Indice degli argomenti
17 .. |date| date::
18
19 Generato il |date| con: http://docutils.sourceforge.net/rst.html
20
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, proponendosi di fornire le basi di elettronica, informatica e programmazione sia per orientarsi che per una prima interazione nell'innovativo mondo dell'elettronica digitale.
26
27 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).
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 e 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 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.
35
36 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'.
37
38 Finalita'
39 -----------
40
41 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.
42
43
44 Durante lo svolgimento del corso i partecipanti impareranno 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 software (esempio di un bottone, logica booleana): cablatura istantanea, aggiunta di features.
57
58
59 Avvertenze
60 ---------------
61
62 Precauzioni per non danneggiare la scheda durante l'uso:
63
64
65 * Applicare materiale isolante (fondo in polistirolo) sotto alla scheda.
66 * Applicare isolante al connettore USB per staccare il cavo senza statica.
67 * Solo la porta 13 ha una resistenza integrata, per tutte le altre usare una resistenza da ~300.
68 * Non usare Arduino come un trasformatore!
69
70
71 Blink
72 --------
73
74 Analisi di un sketch:
75
76 - Struttura (setup, loop, input output)
77 - Fondamenti di programmazione: i 4 elementi base (fare descrizione completa dopo aver fatto cicli - INPUT).
78
79 - Dichiarazione di variabili: LED
80 - Funzioni per cambio di stato: digitalWrite / delay - output
81
82
83 Pratica
84 ~~~~~~~~~
85
86 # Fare accendere il LED per 1/10 di secondo
87 # Far spegnere il LED per 1/10 di s.
88
89 Descrivere una istruzione
90
91
92 * Far accendere il LED per 1/10 di secondo e un secondo
93
94 Questa e' una sequenza di istruzioni, accenno alle funzioni, es delay() .
95
96
97
98
99 Verifica e compilazione
100 ------------------------
101
102 Codice sorgente e codice oggetto, compilazione del codice.
103 Controllo formale, preprocessor (#define constantName value).
104
105 Eseguire procedure manualmente con makefile, visualizzazione codice oggetto.
106
107
108
109 Input
110 =====
111
112 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!).
113 Pin fluttante, pull up e down con cavo. Metafora palo con fulmini e messa a terra.
114 Esempio con un input, primo esempio con un bottone che fa accendere un LED.
115
116
117 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*).
118
119 Cicli Condizionali
120 ----------------------
121
122 Eventualmente usare un generatore random (esercizio per testa / croce) per introdurre i cicli condizionali.
123
124
125 State
126 ------
127
128 Definire il concetto di state e stateless, sketch con iterruttore. Logica combinativa e logica sequenziale. Es. firewall IP, NAT machine.
129 Utilizzare PULLUP per poi usare resistenza interna.
130
131
132 INPUT_PULLUP
133 ------------
134
135 Utilizzare la resistenza interna da 20Hohms di Arduino.
136
137
138 Ottimizzazioni
139 ---------------
140
141 .. NOTE:: 
142     Questa parte andra' affrontata dopo i motori (servo inclusi).
143
144
145 De-bouncing, multitasking con millis(), identificare il cambio di stato.
146
147
148 Sensori: dilatare i tempi di lettura, utilizzare valori medi di piu' letture (smoothing), calibrazione dei sensori utilizzando seriale e riferimenti.
149
150
151
152 Eventuali
153 ~~~~~~~~~~
154
155 Trasformazioni di input: da sensore luminoso a piezo: Pitch follower 
156
157
158
159 Analisi ulteriore
160 ==================
161
162 Introdurre i data types
163
164
165 Cicli iterativi: for - while
166
167
168 Seriali
169 ========
170
171 Inviare dati via seriale per debugging.
172
173 Output
174 ========
175
176 LED, motori, servomotori, piezo, seriale.
177
178 PWM
179 -----------
180
181 Esempio con un ''byte'' di ''brightness++" per aumentare la luminosita' di un LED.
182 Introdurre eventualmente i cicli ''for'' .
183
184 RGB LED
185 ~~~~~~~~~
186
187 Utilizzare un LED RGB. Eventualmente introdurre esadecimali. Sketch con cicli iterativi e uno con input via seriale.
188
189 ShiftRegister
190 ~~~~~~~~~~~~~~~
191
192 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.
193
194 Funzioni
195 -----------
196
197 Creare una funzione con un ciclo for per aumentare / diminuire la luminosita' in base a un parametro passato alla funzione.
198
199
200
201 Piezo
202 -------
203
204 Emettere suoni e melodie tramite un trasduttore piezoelettrico.
205 - Onde sonore: frequenze e pitch.
206 - Sketch di esempi in Digital
207
208
209 (Sketches in multiple tabs, array).
210 Pitch follower: trasformazione input di un sensore photo -> onde sonore tramite piezo.
211
212
213 Calibrare l'input
214 ------------------
215
216 Calibrare l'input di un potenziometro / sensore: identificare valori minimi, massimi, offset e stabilire una formula: ''Range = (1024 - offset) *  1024 / (1024 - offset) '' .
217
218 Utilizzare ''map()'' per fare la stessa cosa. Caso specifico: inversione tra ''1024 <-> 256'' : usare un fattore 4.
219
220
221 Usare un sensore di luminosita'
222 -------------------------------
223
224 Utilizzare come sorgente di input la resistenza rilevata da un sensore di luminosita', mappare l'input del sensore su un LED PWM / seriale.
225
226
227
228
229 Motori
230 ========
231
232 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.
233
234
235 Servo motori
236 --------------
237
238 Differenze rispetto a un motore DC, scopi di utilizzo.
239 Caratteristiche: coppia, velocita', peso, alimentazione.
240 Funzionamento: analogici e digitali, riduttori plastici e metallici, bearings.
241
242 Sketch Base e Knob. Utilizzare librerie esterne.
243
244 - http://handyboard.com/hb/faq/hardware-faqs/dc-vs-servo/
245
246
247 Motori passo-passo
248 -----------------------
249
250 Funzionamento, caratteristiche di utilizzo (consumo - coppia), campi di utilizzo (automazione power tools), differenze rispetto a servo (controllo posizione) e motori normali.
251
252
253 Motori brushless
254 -----------------
255
256 Differenze e caratteristiche rispetto ai motori a spazzole.
257 Uso di una ESC, BEC. 
258
259
260 Caratteristiche generali
261 -------------------------
262
263 Potenza, KV, voltaggio utilizzabile, ampere massimi, potenza / peso, efficienza.
264
265
266
267 Elettronica di base
268 =====================
269
270 Si dovranno introdurre:
271
272 - Legge di Ohm
273 - Serie e parallelo, in particolare per batterie e resistenze
274 - Caratteristiche e uso dei LED: come calcolare resistenze necessarie
275 - Uso di transistor per motori DC
276
277
278 Eventuale: saldature
279 --------------------
280
281 Guida di base alle piccole saldature: cavi intrecciato, cavi dritti, PCB. Dissaldare.
282
283
284 Approfondimenti
285 ------------------
286
287 Resistenze: resistivita' in base a sezione e lunghezza: effetti su seriale e parallelo.
288 (Fisica) Semiconduttori: resistenze -> diodi -> transistor : cenni sul funzionamento in base ai possibili range di spostamento degli elettroni.
289
290
291 RaspberryPi
292 =============
293
294 TODO: la sezione su Rpi e' al momento in sviluppo!
295
296 - Differenze tra Rpi e Arduino
297 - interazione tra i due
298 - Quando usare Arduino o Rpi
299
300
301 Linux
302 =======
303
304 Argomenti specifici per utilizzare integrare Arduino in ambiente Linux.
305
306 - Installazione
307 - Leggere informazioni da seriale (redirezione INPUT, verso un file, screen), mandare informazioni (echo, cat)
308 - Eventuale: editor alternativi, compilazione e upload manuale (creare un make file).
309 - Seriale: lettura, loggin, scrittura.
310
311
312
313 Sketch
314 -----------
315
316 Installare sketch per Arduino.
317
318 - http://webtechie.be/2014/05/08/scratch-and-arduino-on-linux/
319 - http://s4a.cat/
320
321
322 Materiali consigliati
323 ========================
324
325 Materiali e strumenti utili per gli studenti:
326 - Multimetro
327 - Cacciavite piatto
328 - Nastro isolante
329 - Helping hand (senza lente di ingrandimento)
330 - Trasformatore regolabile 3-12v
331
332
333 Bibliografia
334 ============
335
336 Testi consigliati, non richiesti.
337
338
339 Arduino
340 ---------
341
342 - Arduino for Dummies : Come primo testo per principianti
343 - Programming Arduino Next Steps: Going Further with Sketches : secondo testo
344 - Arduino Projects for dummies : altro testo per progetti
345 - Beginning C for Arduino: Learn C Programming for the Arduino 
346 - Practical Electronics for Inventors
347
348 Elettronica
349 ------------
350
351 - Electronics for Dummies : primo testo semplice introduttivo
352 - Electronics All-in-One For Dummies : secondo testo / piu' approfondito
353 - Practical Electronics for Inventors : testo piu' avanzato
354
355 Programmazione
356 ----------------
357
358 - Beginning C for Arduino: Learn C Programming for the Arduino 
359 - The C Programming Language, 2nd Edition
360 - How to Think Like a Computer Scientist: Learning with Python
361 - Beginning Python: From Novice to Professional
362
363 Risorse on line
364 ----------------
365
366 - http://arduino.cc/en/Reference/HomePage
367 - http://www.ladyada.net/learn/arduino/index.html
368 - https://learn.adafruit.com/series/learn-arduino
369 - https://wiki.archlinux.org/index.php/arduino
370 - http://arduinoprincipiante.blogspot.it/2013/04/presentazione.html
371 - http://tronixstuff.com/tutorials/
372 - http://arduino-info.wikispaces.com/
373
374
375
376
377 Utilizzi
378 ---------
379
380 - Input tramite manipolazione oggetti fisici.
381 - Stazioni per rilevamento dati: metereologiche, movimento.
382 - Attuatori per controllo numerico applicato a vari strumenti (stampanti 3D, frese , laser).
383 - Device per lettura di sensori da utilizzare con smartphones - computer
384 - Adattatore per sensori verso IoT
385 - Attuatore per device IoT: arduino - WiFi - rele' = accensione / spegnimento
386 - RFID per device domestici: smartphone in contesti diversi = diversi profili
387 - Interfaccia input per tutti gli scenari in cui non si puo' usare un touch screen / tastiera
388 - Domotica: irrigazione, controllo temperatura ambienti e acqua.
389 - Robotica: integrazione di apparecchiature di sorveglianza, robot domestici (aspirapolvere) e da giardino (macchine agricole unmanned in miniatura).
390 - Controllo droni, gyro, GPS, viewpoint. Ardupilot http://diydrones.com/notes/ArduPilot 
391 - Prototipi per macchine di dimensioni performance superiori.
392
393
394 Progetti
395 ----------
396
397 - Chorus – United Visual Artists: http://www.elmsly.com/Chorus-United-Visual-Artists 
398 - Ardupilot http://diydrones.com/notes/ArduPilot
399