Domotica Device Arduino
From Aino Wiki
Sito ufficiale
Il materiale qui raccolto viene da molte fonti ma soprattutto dal libro "Il manuale di Arduino" di Paolo Aliverti.
Contents
Doc
- Arduino, lezioni: maffucci.it
- Arduino, Alfabeto: maffucci.it
- Elettronica: maffucci.it
- Elettricità progettiarduino.com
- Guide Arduino andreaaspesi
- Collegare Arduino al WiFi e controllarlo da Android: allafinedelpalo gianlucaghettini
- IL LINGUAGGIO C in Arduino: Language reference
Info
Uno
Uno R3
Il microcontrollore di Arduino Uno R3 è ATmega328 creato da Atmel con la famiglia megaAVR (precedentemente era della Microchip Technology acquisita da Atmel nel 2016).
- Scheda e documentazione ufficiale: store.arduino.cc
Tech specs
| Microcontroller | ATmega328P |
| Operating Voltage | 5V |
| Input Voltage (recommended) | 7-12V |
| Input Voltage (limit) | 6-20V |
| Digital I/O Pins | 14 (of which 6 provide PWM output) |
| PWM Digital I/O Pins | 6 |
| Analog Input Pins | 6 |
| DC Current per I/O Pin | 20 mA |
| DC Current for 3.3V Pin | 50 mA |
| Flash Memory | 32 KB (ATmega328P) of which 0.5 KB used by bootloader |
| SRAM | 2 KB (ATmega328P) |
| EEPROM | 1 KB (ATmega328P) |
| Clock Speed | 16 MHz |
| LED_BUILTIN | 13 |
| Length | 68.6 mm |
| Width | 53.4 mm |
| Weight | 25 g |
Uno R4
Tech specs
| Board | Name | Arduino® UNO R4 WiFi |
| SKU | ABX00087 | |
| Microcontroller | Renesas RA4M1 (Arm® Cortex®-M4) | |
| USB | USB-C® | Programming Port |
| Pins | Digital I/O Pins | 14 |
| Pins | Analog input pins | 6 |
| DAC | 1 | |
| PWM pins | 6 | |
| Communication | UART | Yes, 1x |
| I2C | Yes, 1x | |
| SPI | Yes, 1x | |
| CAN | Yes 1 CAN Bus | |
| Power | Circuit operating voltage | 5 V (ESP32-S3 is 3.3 V) |
| Input voltage (VIN) | 6-24 V | |
| DC Current per I/O Pin | 8 mA | |
| Clock speed | Main core | 48 MHz |
| ESP32-S3 | up to 240 MHz | |
| Memory | RA4M1 | 256 kB Flash, 32 kB RAM |
| ESP32-S3 | 384 kB ROM, 512 kB SRAM | |
| Dimensions | Width | 68.85 mm |
| Length | 53.34 mm | |
Doc ufficiale:
- scheda e documentazione: store.arduino.cc
- manuali, esempi, etc. FONDAMENTALE docs.arduino.cc
- usare la matrice di LED: docs.arduino.cc matrice
Caratteristiche
- Può esser alimentato da USB mediante una tensione da 5V o da una presa a jack da 5mm (che è nell'angolo opposto alla presa USB) con una tensione che può andare da 5V fino a 20V (anche se è consigliabile non superare i 12V) sarà poi ridotta a 5V da un regolatore interno. NOTA con Arduino Uno R4 invece, può essere alimentato fino a 24V sia dal jack che dal pin VIN che sono entrambe collegati.
- Massimo carico di corrente: 40mA / 50mA
- Massima tensione supportata dai pin di Arduino è 5V. La tensione fornita da Arduino non è mai 5V ma qualcosa di meno 4.88mV.
- Arduiono Uno legge i segnali analogici ma non può produrli ma su alcune schede come Arduino Zero, Arduiono Due e quelle della famiglia MKR (progettati per IoT, internet delle cose) è possibile intervenire sui "passi" utilizzabili usando l'istruzione
AnalogWrite(). Arduino UNO R4 può usare il pin A0 come uscita analogica. - i pin di arduino possono rilevare impulsi che vanno dai 10 microsecondi a quasi 3 minuti.
- Arduino non è in grado di restituire data ed ora ma sarà possibile collegare un ulteriore chip chiamato RTC che funziona da orologio grazie ad una batteria tampone.
- il tasto Reset riavvia Arduino nel senso che è come se Arduino fosse appena acceso.
I PIN
- i pin vanno sempre dichiarati nella sezione
setup()dello sketch. - il limite di corrente dei pin e di qualche decina di milliampere e per questo motivo NON è possibile collegarvi un relè o un motore (es. si potrenno usere dei transistor).
| Modello | Corrente per I/O Pin 5V | Corrente per I/O Pin 3.3V |
|---|---|---|
| Arduino Uno R3 | DC Current: 20 mA | DC Current: 50 mA |
| Arduino Uno R4 Minima e WiFi |
DC Current: 8 mA | . |
- il pin Vin (il primo del gruppo Power) è collegato direttamente all'ingresso di alimentazionee si può utilizzare per prelevare una tensione che può esser più elevata dei 5V della USB nel caso Arduino sia alimentato mediante la presa a jack.
- il pin AREF può leggere tensioni comprese tra 0 e 5V che trasformerà in un numero tra 0 e 1023. Questo valore servirà opportunamente nell'elaborazione eseguita dallo sketch.
- Sull'Arduino Uno R4 c'è un nuovo pin, VRTC, esso è usato per fornire corrente al scopo di mantenere l'orario attivo, infatti, si può collegare una batteria da 1.5V a 3.3V collegando il positivo sul VRTC ed il negativo sul pin accanto GND. Accanto al GND c'è il pin OFF che può esser usato per "spegnere" la scheda, basterà mandarlo in corto col pin GND; questo NON funziona in caso di alimentazione da USB ma solo usando il pin VIN o il jack di alimentazione.
- Sull'Arduino Uno R4 il pin analogico A0 può essere usato come uscita analogica (DAC, Digital Analog Converter) questo anche sui nuovi dispositivi ovvero si può usare per generare segnali analogici.
Per essere utilizzati vanno dichiarati nella sezione setup() delo skech.
Pin digitali
Sulla DX della scheda e che vanno da 0 a 13, sono pin GPIO (General Purpose Input\Output) hanno la funzione di assumere lo stato 0 (tensione a 0V = LOW) o 1 (tensione a 5V = HIGH). Alcuni hanno accanto alla label una tilde ~ sono quelli PWM (Pulse with modulation) ovvero che possono assumere alternativamente 0V o 5V in un intervallo di tempo fisso a piacere.
- i pin 0 e 1 sono condivisi con la porta seriale collegata alla USB e quindi se sono utilizzati potrebbero interferire con l'upload dello skech.
- il pin 13 ha in più la funzione di accendere il led L di Arduino quando è in stato HIGH (tensione a 5V).
- sia sull'Uno R3 che R4 i 4 pin da D10 a D13 sono utilizzabili anche per le connessioni mediante il protocollo SPI (Serial Peripheral Interface), sul R4 per le comunicazioni SPI si posson usare anche i Pin 1, 3 e 4 che sono sulla destra della matrice led.
Pin analogici
Sulla SX della scheda e che vanno da A0 a A5.
Nelle comunicazioni I2C, il pin A0 coincide col pin SDA (dati seriali) ed il pin A1 col SCL (clock seriale).
Normalmente i pin analogici sono usati per leggere segnali ad esempio usando il comando analogRead(numero_porta_analogioca);. Questa funzione restituirà dei valori corrispondenti la tensione (da 0 a 5V) su uno dei pin da A0 a A5 e sarà un valore da 0 e 1023. Notare che il valore di tensione più piccolo sarà 5V/1024 ovvero 0.0048V
NOTE
- I pin da A0 a A5 possono essere usati in caso di necessità come pin digitali ma con i numeri che vanno da 14 a 19. Pertanto come nei casi dei pin digitali avremo:
void setup() { pinMode(16, INPUT); //Per poter usare il pin analogico A3 come il digitale 16 in modalità INPUT }
- Arduino Uno R4 consente di usare il pin A0 come uscita analogica.
Nano
Nano ESP32
Pagina ufficiale: qui
Tech spec
| Board | Name | Arduino® Nano ESP32 |
| SKU | ABX00092 | |
| Microcontroller | u-blox® NORA-W106 (ESP32-S3) | |
| USB connector | USB-C® | |
| Pins | Built-in LED Pin | 13 |
| Built-in RGB LED pins | 14-16 | |
| Digital I/O Pins | 14 | |
| Analog input pins | 8 | |
| PWM pins | 5 | |
| External interrupts | All digital pins | |
| Connectivity | Wi-Fi® | u-blox® NORA-W106 (ESP32-S3) |
| Bluetooth® | u-blox® NORA-W106 (ESP32-S3) | |
| Communication | UART | 2x |
| I2C | 1x, A4 (SDA), A5 (SCL) | |
| SPI | D11 (COPI), D12 (CIPO), D13 (SCK). Use any GPIO for Chip Select (CS) | |
| Power | I/O Voltage | 3.3 V |
| Input voltage (nominal) | 6-21 V | |
| Source Current per I/O Pin | 40 mA | |
| Sink Current per I/O Pin | 28 mA | |
| Clock speed | Processor | up to 240 MHz |
| Memory | ROM | 384 kB |
| SRAM | 512 kB | |
| External Flash | 128 Mbit (16 MB) | |
| RAM | 8MB (NORA-W106-10B) | |
| Dimensions | Width | 18 mm |
| Length | 45 mm | |
Nano 33 IoT
Scheda commerciale qui- Usa solo tensioni a 3.3V
Tech spec
| Microcontroller | SAMD21 Cortex®-M0+ 32bit low power ARM MCU (datasheet) |
| Radio module | u-blox NINA-W102 (datasheet) |
| Secure Element | ATECC608A (datasheet) |
| Operating Voltage | 3.3V |
| Input Voltage (limit) | 21V |
| DC Current per I/O Pin | 7 mA |
| Clock Speed | 48MHz |
| CPU Flash Memory | 256KB |
| SRAM | 32KB |
| EEPROM | none |
| Digital Input / Output Pins | 14 |
| PWM Pins | 11 (2, 3, 5, 6, 9, 10, 11, 12, 16 / A2, 17 / A3, 19 / A5) |
| UART | 1 |
| SPI | D11 (COPI), D12 (CIPO), D13 (SCK). Use any GPIO for Chip Select (CS). |
| I2C | A4 (SDA), A5 (SCL) |
| Analog Input Pins | 8 (ADC 8/10/12 bit) |
| Analog Output Pins | 1 (DAC 10 bit) |
| External Interrupts | All digital pins (all analog pins can also be used as interrput pins, but will have duplicated interrupt numbers) |
| LED_BUILTIN | 13 |
| USB | Native in the SAMD21 Processor |
| IMU | LSM6DS3 (datasheet) |
| Length | 45 mm |
| Width | 18 mm |
| Weight | 5 gr (with headers) |
Nano
Il clone è anche chiamato Arduino Mini ATmega328.
Pagina ufficiale Arduino: qui
La scheda offre 20 pin digitali di input\output (da D0 a D13), 8 pin analogici (da A0 a A7, opzionalmente possono essere comunque usati come digitali), 6 pin di PWM output, porta di comunicazione\alimentazione mini-B-USB. Ha funzione di splep mode. Master/Slave SPI Serial Interface.
I pin usati col protocollo di comunicazione seriale sincrona SPI dedicati alla comunicazione con altri dispositivi SPI sono:
- D10 (SS) (Slave Select): Seleziona il dispositivo slave con cui comunicare. Su Nano, può essere usato anche come pin digitale generico.
- D11 (MOSI) (Master Out Slave In): Trasmette dati dal Master (Arduino) allo Slave.
- D12 (MISO) (Master In Slave Out): Riceve dati dallo Slave al Master.
- D13 (SCK) (Serial Clock): Genera il segnale di clock per sincronizzare la comunicazione.
Come usarli
- Collega i dispositivi: I pin SCK, MOSI, MISO e GND vanno collegati a tutti i dispositivi SPI in parallelo.
- Seleziona gli slave: Ogni dispositivo slave deve avere il proprio pin Slave Select (SS) collegato a un pin digitale diverso su Arduino (es. D2, D3, D4, ecc.) per selezionarlo individualmente.
- Utilizza la libreria: Includi la libreria SPI.h nel tuo sketch Arduino e inizializza la comunicazione con SPI.begin().
Tech specs
| Microcontroller | ATmega328 |
| Architecture | AVR |
| Operating Voltage | 5 V |
| Flash Memory | 32 KB of which 2 KB used by bootloader |
| SRAM | 2 KB |
| Clock Speed | 16 MHz |
| Analog IN Pins | 8 |
| EEPROM | 1 KB |
| DC Current per I/O Pins | 20 mA (I/O Pins) |
| Input Voltage | 7-12V |
| Digital I/O Pins | 22 (6 of which are PWM) |
| PWM Output | 6 |
| Power Consumption | 19 mA |
| PCB Size | 18 x 45 mm |
| Weight | 7 g |
| Product Code | A000005 |
GIGA
(Compatibile) MEGA2560 R3
Scheda compatibile MEGA2560 R3 (CH340), marca VANCOM, dichiarata come compatibile con Arduino ATmega2560-16AU, Archiviazione Espandibile da 32GB/128GB/64GB/16GB/8GB tramite Slot per Scheda TF, Alimentazione USB-C Power Delivery, Velocità Orologio 16Mhz, RAM 16Mhz, Memoria Flash 16Mhz.| Caratteristica | Valore |
|---|---|
| Chip microcontrollore | ATmega2560 |
| Frequenzqa operativa | 16 MHz |
| Memoria flash | 256 KByte |
| SRAM | 8 KByte |
| EEPROM | 4 KByte |
| Alimentazione e I/O | USB-C 5V |
| Alimentazione esterna | 7 - 12 V al pin VIN |
Installazione IDE di sviluppo
L'amiente di sviluppo naturale è "Arduino IDE" ma ben presto ci si accorgerà che è limitante rispetto ad altri strumenti come Visual Studio Code corredato da apposite estensioni per gli sviluppi, vedere guida interna qui VS Code start. L'IDE standard può esser comunque usato per eventuali verifiche in ambiente "naturale" e casi particolari.
Configurazione
In Windows Arduino collegato alla porta USB è riconosciuto come porta COM, questo e verificabile lanciando "Device Manager".
ATTENZIONE dopo aver lanciato Arduino IDE di si dovrà associare:
- il dispositivo da Tools\Board\Arduino AVR Boards\Arduino Uno (o altro della famiglia etc)
- la porta COMx così come trovato impostato in Device Manager. Da Tools\Port scegliere la porta nuova spuntata in Device Manager.
Arduino Cloni
Le schede Arduino non ufficiali potrebbero non esser riconosciute da Windows e sarà necessario installare il driver per il chip CH340.
Per installare il driver:
- Scaricare il pacchietto dal sito wchl-ic.com qui, eseguire il setup e cliccare su INSTALL.
- Se il sistema operativo ha già i drivers necessari un popup lo notificherà
- Riavviare il computer se necessario
Troubleshooting:
- Verificare che il cavo USB sia corretto (ce ne sono alcuni usabili SOLO per la carica, altri sono anche per DATI), eventualmente cambiare porta per ulteriore verifica.
- Installare il pacchetto "Arduino XXX platform" da Arduino IDE Board Manager.
- Verificare Device Manager di Windows se si aggiorna col le info del dispositivo ed individuare la nuova porta (Deve essere tra le porte COM), potrebbe chiamarsi anche "USB Serial Device (COMx)"
Sketch
Sono i programmi di Arduino scritti in linguaggio C++ e ne seguono le regole. Di default ogni nuovo programma è preimpostato come segue:
void setup()
{
}
void loop()
{
}
Ogni programma DEVE avere le due procedure (o funzioni void): setup() e loop()!
Cloud
Arduino da la possibilità, nativa su alcune schede che banalmente hanno il WiFi con il microcontrollore ESP32, di controllare il proprio dispositivo dal cloud. Questo da, ad esempio, la possibilità di controllare il proprio Arduino e la sua applicazione da cellulare quindi non solo si potrà pilotare la propria creazione direttamente ma anche indirettamente da cellulare attraverso il cloud.
Presupposto è che sia installato sul proprio computer l'Arduino Agent.
Step necessari
Usando una semplicità brutale gli step sono i seguenti:
- Configurare il proprio dispositivo:
- Accedere ad Arduino Cloud
- Associare la scheda Arduino (es. ESP32, MKR) e creare della variabili cloud
- Caricare lo sketch apprpropriato sulla scheda tramite l'apposito IDE assicurandosi prima che effettivamente il dispositivo sia connesso al cloud.
- Creare una Dashboard
- Nella sezione "Dashboard" di Arduino Cloud (o piattaforma scelta), aggiungi widget (slider, pulsanti, grafici).
- Associa ogni widget alle variabili che hai definito per il tuo dispositivo (es. un pulsante alla variabile luce).
- Usare l'App dullo smartphone
- Scarica l'app ufficiale (es. Arduino IoT Remote per Android/iOS).
- Accedi con lo stesso account.
- L'app mostrerà automaticamente le tue dashboard e i tuoi dispositivi configurati, permettendoti di monitorare e controllare tutto in tempo reale.
Kit
Starter Kit
Componenti e datasheet Arduino uno R3
1 Projects Book (170 pages),
1 Arduino Uno,
1 USB cable,
1 Breadboard 400 points,
70Solid core jumper wires,
1 Easy-to-assemble wooden base,
1 9v battery snap,
1 Stranded jumper wires (black),
1 Stranded jumper wires (red),
6 Phototransistor,
3 Potentiometer 10kOhms,
10Pushbuttons,
1 Temperature sensor [TMP36],
1 Tilt sensor,
1 alphanumeric LCD (16x2 characters),
1LED (bright white),
1 LED (RGB),
8 LEDs (red),
8 LEDs (green),
8 LEDs (yellow),
3 LEDs (blue),
1 Small DC motor 6/9V,
1Small servo motor,
1 Piezo capsule [PKM22EPP-40<a data-tabindex-counter="1" data-tabindex-value="none" href="https://www.arduino.cc/documents/datasheets/piezoCapsule.pdf" target="_blank" rel="noreferrer noopener">],
1 H-bridge motor driver [L293D],
1 Optocouplers [4N35],
2 Mosfet transistors [IRF520],
3 Capacitors 100uF,
5 Diodes [1N4007],
3 Transparent gels (red, green, blue),
1 Male pins strip (40x1),
20 Resistors 220 Ohms,
5Resistors 560 Ohms,
5 Resistors 1 kOhms,
5 Resistors 4.7 kOhms,
20 Resistors 10 kOhms,
5Resistors 1 MOhms,
5 Resistors 10 MOhms
Note
Differenze nella famiglia Adrduino
- Su Arduino Uno R3 a differenza dei nuovi modelli è possibile accedere subito alla seriale mentre sui nuovi occorre attendere impostando dei delay ed attendere che la porta sia pronta.
while (!Serial);
(Mappa e Link)
Arduino indice | Integrazioni tipiche | Arduino Progetti
C++ Info fondamentali | Domotica | ESP32 indice | ESP8266 | Dizionario Elettronica | Elettronica | Elettronica Appunti
Parole chiave:
