Arduino (hardware): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
LiveRC : Annullate le modifiche di 80.23.145.14 (discussione), riportata alla versione precedente di M7 Etichetta: Annulla |
m clean up, replaced: ambiente di sviluppo integrato → ambiente di sviluppo integrato (3) |
||
Riga 19:
Arduino comprende una [[Piattaforma (informatica)|piattaforma]] [[hardware]] per il ''physical computing'' sviluppata presso l'[[Interaction Design Institute Ivrea|Interaction Design Institute]], un istituto di formazione post-dottorale con sede a [[Ivrea]], fondato da [[Olivetti]] e [[Telecom Italia]]<ref>{{Cita web|url=http://arduino.apogeolab.it/03-un-po-di-storia-di-arduino/|titolo=BetaBook, il manuale di Arduino: Cap. 3 - Un po’ di storia di Arduino|autore=Massimo Banzi|editore=[[Apogeo (casa editrice)|Apogeo]]|accesso=12 luglio 2011|urlmorto=sì|urlarchivio=https://web.archive.org/web/20120315231515/http://arduino.apogeolab.it/03-un-po-di-storia-di-arduino/|dataarchivio=15 marzo 2012}}</ref>.
La piattaforma fisica si basa su un [[circuito stampato]] che integra un [[microcontrollore]] con dei [[Piedino (elettronica)|pin]] connessi alle porte [[Input/output|I/O]], un [[regolatore di tensione]] e, quando necessario, un'interfaccia [[Universal Serial Bus|USB]] che permette la comunicazione con il computer utilizzato per programmare. A questo hardware viene affiancato un [[
Arduino può essere utilizzato per lo sviluppo di oggetti interattivi ''[[Stand-alone (informatica)|stand-alone]]'' e può anche interagire, tramite un collegamento e un opportuno codice, con software residenti su computer, come [[Adobe Flash]], [[Processing]], [[Max (software)|Max/MSP]], [[Pure Data]], [[SuperCollider]], [[Vvvv]].
La piattaforma hardware Arduino è distribuita agli [[Hobby|hobbisti]] in versione pre-assemblata, acquistabile in internet o in negozi specializzati. Tutti gli schemi e i file per programmi EDA sono disponibili per ciascuna scheda Arduino e sono regolarmente rilasciati dal Team Arduino sul sito arduino.cc. I siti che documentano l'Open Hardware annoverano Arduino fra le piattaforme Open Hardware, mentre il software, inclusi i bootloader, sono in Open Source su GitHub.<ref>{{Cita web|url=https://arduino.cc/en/Main/Hardware|titolo=Hardware|editore=Arduino.cc|lingua=en|accesso=10 maggio 2011}}</ref> Il rilascio in Open Hardware e Open Source di schemi e codice ha consentito lo sviluppo di prodotti Arduino-compatibili da parte di piccole e medie aziende in tutto il mondo ed è divenuto possibile scegliere tra un'enorme quantità di schede Arduino-compatibili. Tutti questi prodotti sono accomunati dal [[codice sorgente]] per l'[[
Grazie alla base software comune ideata dai creatori del progetto, la comunità Arduino ha potuto sviluppare programmi per connettere a questo hardware più o meno qualsiasi oggetto elettronico, computer, [[Sensore|sensori]], [[Schermo|display]] o [[Attuatore|attuatori]]. Dopo anni di sperimentazione, è oggi possibile fruire di un [[database]] di informazioni vastissimo.
Riga 33:
=== Differenze con Raspberry Pi ===
{{Vedi anche|Raspberry Pi}}
Arduino è spesso paragonato a [[Raspberry Pi]],{{Senza fonte}} tuttavia, vi sono notevoli differenze. Si tratta di due piattaforme basate su hardware profondamente diversi.
L'architettura delle schede Arduino si basa su microcontrollori, mentre le schede Raspberry Pi si basano su un SoC ([[System-on-a-chip|System on Chip]]) che ha al suo interno un microprocessore, un controllore grafico e la RAM necessari a eseguire un sistema operativo come [[Raspberry Pi OS|Raspbian]], una versione semplificata di [[Debian]].
L'architettura a microcontrollore di Arduino prevede che il programma da eseguire sia in [[memoria flash]] e pertanto non viene perso quando viene tolta l'alimentazione. Con Raspberry Pi, invece, viene caricato in RAM il sistema operativo che provvede all'esecuzione in [[multitasking]] di tutti i moduli e programmi previsti dalla configurazione. L'architettura a microcontrollore offre un controllo completo sui tempi di esecuzione del programma che, essendo l'unico codice in esecuzione, può essere progettato per applicazioni sensibili alla temporizzazione, come ad esempio la gestione dei motori nelle stampanti 3D. Con Raspberry Pi è invece possibile sfruttare la flessibilità del sistema operativo per svolgere funzioni complesse come un [[web server]] o un sistema di gestione dell’automazione domestica.
Nella pratica, le due architetture possono convivere all’interno di una medesima applicazione in modo complementare. A titolo esemplificativo, l’architettura Arduino pilota l’hardware di una stampante 3D, mentre un Raspberry Pi ne permette il controllo tramite interfaccia Web su Internet o [[Local area network|Lan]].
Dal punto di vista della programmazione, la piattaforma Arduino si programma con una versione semplificata di C++ attraverso il suo Arduino IDE; data la notevole diffusione, nel tempo sono nate soluzioni di programmazione alternative che includono microPython e TinyML. Raspberry Pi, invece, conta su tutti gli strumenti di programmazione disponibili con il sistema operativo Linux.
Le schede Arduino sono maggiormente orientate al collegamento di sensori e attuatori per i quali la comunità sviluppa e aggiorna costantemente le librerie software per il loro utilizzo, mentre Raspberry Pi ha una minore varietà di hardware aggiuntivo che, però, può essere più complesso grazie alle sue similitudini con l'architettura hardware di un pc.
Il dibattito su quale piattaforma sia meglio utilizzare è sempre vivace e in ultima analisi sono le caratteristiche del progetto che si vuole realizzare a rendere l'una o l'altra soluzione preferibile.<ref>{{Cita web|url=https://www.ionos.it/digitalguide/server/know-how/arduino-vs-raspberry-pi/|titolo=Arduino vs Raspberry Pi: le differenze|accesso=27 aprile 2022}}</ref>
In generale, per progetti [[STEM]] o per iniziare a sperimentare con hardware ed elettronica, la piattaforma Arduino è preferibile.
== Hardware ==
Riga 53:
Una scheda Arduino tipica consiste in un [[microcontrollore]] a 8-bit [[Atmel AVR|AVR]] prodotto dalla [[Atmel]] con l'aggiunta di componenti complementari per facilitare l'incorporazione in altri circuiti. Nelle schede vengono usati i [[circuito integrato|chip]] della serie [[megaAVR]], nello specifico i modelli ATmega8, ATmega168, ATmega328, ATmega1280 e ATmega2560.
Molte schede Arduino includono un [[regolatore lineare di tensione]] a 5 [[volt]] e un [[oscillatore a cristallo]] a 16
ANTONINA (2019). Le wearable technologies e la metafora dei sei cappelli per
pensare a supporto del seamless learning. PROFESSIONALITÀ, vol. Numero
4/II – 2019, p. 118-132, ISSN 0392-2790|rivista=|volume=|numero=}}</ref>, hanno un clock di 8
=== Schede Arduino ufficiali ===
Riga 73:
# Arduino Mini, una versione in miniatura facente uso di un ATmega168 a [[surface-mount technology|montaggio superficiale]];
# Arduino Nano, una versione ancor più piccola della Mini, utilizzante lo stesso controller ATmega168 [[surface-mount technology|SMD]] e alimentata tramite USB;
# LilyPad Arduino, un progetto minimalista per applicazione su indumenti, con lo stesso ATmega168 in versione [[surface-mount technology|SMD]];<ref name="LilyPad">[https://www.arduino.cc/en/Main/ArduinoBoardLilyPad LilyPad Arduino], dal sito ufficiale</ref> la scheda è circolare dal diametro di 50
# Arduino NG, con interfaccia USB per programmare e usare un ATmega8;
# Arduino NG plus, con interfaccia di programmazione USB, con un ATmega168;
Riga 105:
A livello concettuale, su tutte le schede i programmi vengono caricati attraverso la comunicazione su [[porta seriale]] [[RS-232]] con il microcontrollore. Le prime schede Arduino, da tempo fuori produzione, contenevano un semplice circuito che permetteva la conversione tra il livello della RS-232 e il livello dei segnali [[Transistor-transistor logic|TTL]]. Già nel 2007 viene introdotta la programmazione da PC e Mac tramite porta USB e convertitore USB-to-Serial, rendendo più semplice il processo.
Le versioni attuali di Arduino sono quasi tutte programmate via [[USB]]: a seconda del microcontrollore utilizzato l'interfacciamento USB è gestitito in modo nativo oppure tramite un circuito dedicato. Poche varianti di ridotte dimensioni o con caratteristiche intenzionalmente ridotte, come Arduino Mini e Arduino Lilypad, o la versione compatibile ''Boarduino'', usano un adattatore USB-seriale da collegare ai pin seriali della scheda.
=== Funzionalità di input/output ===
I microcontrollori, in generale, permettono di configurare la maggior parte dei propri pin come input o output attraverso l'impostazione di specifici [[Registri hardware|registri]]. Per semplificare in modo significativo l'utilizzo dei microcontrollori i progettisti di Arduino hanno deciso di aggiungere al linguaggio C++ delle funzioni di configurazione dei Pin e di definirne a priori il comportamento della maggior parte di essi. Quando un pin è configurato come input, il microcontrollore legge il livello di tensione e restituisce al programma il valore logico alto o basso (HIGH o LOW). Se il pin è configurato come output, il programma in esecuzione può portare il suo livello a 0V (LOW) o a 5V o 3.3V (HIGH). La corrente gestita da ciascun pin è limitata e ammonta a 20mA. Se un pin non viene configurato correttamente può avere un comportamento imprevedibile. Su tutte le schede recenti, due pin sono stati definiti per la comunicazione secondo il protocollo [[I²C|I2C]] che prevede un pin SDA e uno SCL: questo semplifica il collegamento dei dispositivi basati su questo standard, molto diffuso per tutta la componentistica automotive e degli smartphone.
=== Connettori I/O ===
Riga 471:
=== Alimentazione elettrica ===
L'alimentazione della scheda può avvenire con cavo USB, attraverso la porta USB del computer o attraverso la maggior parte degli alimentatori USB, oppure attraverso un alimentatore in corrente continua a 9 volt con connettore cilindrico (diametro 2,1
=== Schede Arduino compatibili ===
L'enorme quantità e l'estrema variabilità d'uso e di componenti rendono difficile definire univocamente una scheda Arduino-compatibile. Solitamente, essa contiene un [[Microcontrollore|microcontroller]] a 8, 16 o 32 bit [[Atmel AVR]], [[Circuito integrato|PIC]] o [[Architettura ARM|ARM]], con frequenza di clock variabile tra 1 e 96
=== La programmazione del microcontrollore ===
Riga 485:
=== Arduino Pro ===
In occasione del CES del 2020, Arduino presenta la prima scheda della nuova famiglia PRO.<ref>{{Cita web|url=https://ces.eetimes.com/arduino-portenta-for-the-iot-development/|titolo=Arduino Portenta for IoT Development|autore=Maurizio Di Paolo Emilio|sito=EETimes CES 2020 Coverage|data=2020-01-07|lingua=en-US|accesso=2022-10-29}}</ref> Con Portenta H7 Arduino si propone come fornitore di soluzioni per il mondo dell'industria e [[Internet delle cose|dell'IoT]], forte di oltre 30 milioni di utenti già familiari con il proprio ecosistema. Alla famiglia PRO appartengono alcune schede proposte anche in precedenza, caratterizzate dalla connettività wireless. Nel dettaglio, [https://www.arduino.cc/pro/ Arduino PRO] comprende:
# Portenta H7 - STMicroelectronics dual-core STM32H747 che include un Cortex® M7 a 480
# Portenta X8 - Scheda con processore NXP® i.MX 8M Mini con Linux preinstallato e microcontrollore STM32H747AII6 Dual ARM® Cortex® M7/M4 IC
# Nicla Sense ME - scheda di ridotte dimensioni con microcontrollore 64
# Nicla Vision - scheda di ridotte dimensioni per la visione computerizzata con microcontrollore STMicroelectronics STM32H747AII6, camera da 2 Megapixel e sensori
# Famiglia MKR - serie di schede dotate di funzionalità di comunicazione wireless secondo vari standard
Riga 496:
=== Arduino UNO Mini Limited Edition ===
[[File:UNO-mini-LE-Packaging-sml-1024x683.png|thumb|La scheda Arduino UNO Mini Limited edition e la sua confezione numerata e autografata]]
In occasione del raggiungimento di dieci milioni di Arduino UNO venduti, è stato sviluppato in [[tiratura]] limitata e con una confezione speciale autografata l'Arduino UNO Mini Limited Edition.<ref>{{Cita web|url=https://blog.arduino.cc/2021/11/24/introducing-the-arduino-uno-mini-limited-edition-pre-orders-now-open/|titolo=Blog Post sulla scheda commemorativa Arduino Uno Mini Limited Edition}}</ref> La scheda è stata ridotta a circa un quarto delle dimensioni originali, diventando 34,2 x 26,6
== Software ==
Riga 503:
[[File:Arduino_IDE_-_Blink.png|thumb|[[Screenshot]] dell'[[Integrated development environment|IDE]] di Arduino, che mostra un semplice codice di esempio]]
L'[[
Insieme all'IDE sono scaricati vari ''sketch'' di esempio, per introdurre l'utente alla programmazione della macchina; i temi sono molto basici: come gestire gli ingressi analogici e digitali, far accendere un LED in modo pulsante e variabile; si possono però anche affrontare problemi più complessi, come la gestione di un display [[LCD]] o di una scheda telefonica [[GSM]]<ref>{{cita web | url = https://arduino.cc/en/Tutorial/HomePage | titolo = Arduino Tutorials - Home Page | accesso = 11 gennaio 2015}}</ref>. Oltre alle librerie già incorporate (più di una decina), l'utente può aggiungerne con uno strumento di importazione compreso nell'IDE. Per vedere i risultati di uno sketch è attivabile dall'IDE una ''finestra seriale'' di monitoring, sulla quale far comparire l'output di istruzioni <code>Serial.print(parametro)</code> incorporate nello sketch stesso.
Riga 509:
=== Arduino IDE 2.0 ===
[[File:Ide-2-overview.png|thumb|L'interfaccia di Arduino IDE 2.0]]
Il primo [[Ambiente di sviluppo integrato|IDE]], basato su Java e giunto alla diciottesima release, ha accompagnato tutti gli sviluppatori sin dagli inizi. Gli stili di programmazione e la diffusione di altri linguaggi con i relativi IDE ha portato allo sviluppo di un nuovo IDE anche per Arduino. Arduino IDE 2.0 <ref>{{Cita web|url=https://docs.arduino.cc/software/ide-v2/tutorials/getting-started-ide-v2|titolo=Iniziare a usare Arduino IDE 2.0}}
=== Arduino CLI ===
Per dare maggiore libertà ai programmatori più esperti, Arduino ha introdotto Arduino CLI <ref>
=== WEB Editor ===
Con l'introduzione dell'Arduino Cloud <ref>{{Cita web|url=https://blog.arduino.cc/2021/05/03/say-hello-to-arduino-cloud-more-things-and-two-new-plans/|titolo=Presentazione di Arduino Cloud}}</ref>, è stato reso disponibile il WEB Editor <ref>
=== MicroPython e OpenMV IDE ===
Alcune schede Arduino sono in grado di utilizzare il linguaggio di programmazione [[MicroPython]], una versione ridotta e ottimizzata per funzionare sui [[Microcontrollore|microcontrollori]]. Questo linguaggio permette di accedere a tutte le funzionalità hardware delle schede ed è un'alternativa alla programmazione con il lilnguaggio Arduino che è una particolare versione semplificata di C++. Le schede attualmente compatibili sono Nano 33 BLE e BLE Sense, Nano RP2040 Connect e Portenta H7. Arduino IDE non supporta questo linguaggio e per questo va utilizzato OpenMV IDE, un ambiente di programmazione specifico che consente di scrivere e caricare i programmi sulle schede in modo paragonabile all'IDE tradizionale. Da notare che MicroPython è un [[linguaggio interpretato]] e il processo di esecuzione del codice è diverso rispetto agli sketch. Lo sketch viene [[Compilatore|compilato]] e trasformato in [[linguaggio macchina]] direttametne eseguibile dal microcontrollore; il programma, o [[script]], in MicroPython viene caricato sulla scheda dove in precedenza è stato caricato l'interprete che in tempo reale lo esegue. Per questo motivo le schede vanno preparate attraverso un processo specifico <ref>{{Cita web|url=https://docs.arduino.cc/learn/programming/arduino-and-python|titolo=Come caricare MicroPython sulle schede Arduino}}
=== Minibloq ===
|