ARDWARE #2 Logica booleana con interruttori

Obiettivo: Conoscere la logica booleana (NOT, AND, OR) utilizzando semplici interruttori

Componenti elettronici:

  • Arduino
  • Alcuni led
  • Alcuni interruttori a scorrimento (slideswitch)
  • Delle resistenze (100 Ohm) per non fare bruciare i LED

TeoriaObiettivo di questa esperienza è ricreare i semplici operatori logici (OR e AND) utilizzando degli interruttori e Arduino come semplice generatore di tensione.

La logica booleana rappresenta quel ramo dell’algebra in cui le variabili possono assumere solamente due valori: vero e falso (valori che nelle discipline elettroniche diventano 1 e 0). Le principali operazioni logiche sono 3: AND (prodotto logico), OR (somma logica), NOT (complemento). Tali operazioni sono descritte da delle specifiche tabelle di verità.

NOT

L’operatore NOT restituisce il valore inverso a quello in entrata. In seguito è riportata la tabella di verità dell’operatore NOT nel caso di due entrate:

A NOT A
1 0
0 1

AND

L’operazione AND restituisce come valore 1 se tutti gli elementi hanno valore 1, mentre restituisce 0 in tutti gli altri casi. Tale operazione è anche detta prodotto logico. In seguito è riportata la tabella di verità dell’operatore AND nel caso di due entrate:

A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1

OR

L’operazione OR restituisce come valore 1 se almeno uno degli input ha valore 1. Tale operazione è anche detta somma logica. In seguito è riportata la tabella di verità dell’operatore OR nel caso di due entrate:

A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1

Nell’esempio trattato in questo articolo, sono stati utilizzati degli interruttori a scorrimento per realizzare semplici porte logiche AND e OR. Nello specifico, attraverso gli interruttori è possibile collegare/scollegare il LED alla alimentazione. Modificando la posizione dell’interruttore, il circuito si apre/chiude impedendo/permettendo il passaggio della corrente che permette di spegnere/accendere il LED.

Collegamento Circuitale:

Nella precedente rappresentazione sono riportati quattro differenti circuiti.

  • Circuito1: LED sempre acceso con resistenza per limitare il passaggio di corrente (utile ad evitare la rottura della lampada).
  • Circuito2: Utilizzo di un semplice interruttore a scorrimento per interrompere il flusso di corrente e accendere/spegnare il LED.
  • Circuito3: Realizzazione di una porta logica AND mediante la connessione serie di due interruttori. Nella seguente galleria di immagini sono riportate le differenti combinazioni di input per una porta logica AND realizzata con gli interruttori.

  • Circuito4: Realizzazione di una porta logica OR mediante la connessione parallelo di due interruttori. Nella seguente galleria di immagini sono riportate le differenti combinazioni di input per una porta logica OR realizzata con gli interruttori.

Codice:

Non serve codice.

Tinkercad:



Osservazioni:

  1. Prova a realizzare combinazioni di porte logiche utilizzando gli interruttori in serie o parallelo.




ARDWARE #1 I Led Arcobaleno

Obiettivo: Utilizzare Arduino come alimentatore per gestire 5 led arcobaleno (rosso, blu, arancione, giallo, verde)

Componenti elettronici:

  • Arduino
  • 5 led
  • 5 interruttori a scorrimento (slideswitch)
  • 5 resistenze (100 Ohm)

TeoriaObiettivo di questa esperienza è gestire 5 differenti led utilizzando Arduino come un semplice alimentatore. In questa esperienza, non c’è né codice né programmazione; i led sono gestiti nella vecchia maniera (old school) attraverso dei semplici interruttori che separano la lampada dalla rete di alimentazione.

Nell’esempio trattato in questo articolo, sono stati utilizzati degli interruttori a scorrimento i cui terminali sono collegati alla tensione di alimentazione (5 Volt) o alla massa (0 Volt). Modificando la posizione dell’interruttore, il morsetto centrale si collega ad una delle due tensioni di riferimento. Tale interruttore è collegato direttamente ad un LED (una semplice lampada che funziona con una tensione di 1,5 Volt). Una resistenza in serie al LED è indispensabile al fine di regolare la tensione e la corrente presente sulla lampada evitando di danneggiarla.

Collegamento Circuitale:

Codice:

Non serve codice.

Osservazioni:

  1. Il circuito non è completo, divertiti a completarlo.




ARDWARE #0 Come collegare le resistenze sulla Breadboard?

Obiettivo: Imparare come realizzare semplici circuiti resistiti sulla breadboard.

Pre-requisiti

Componenti elettronici:

  • Arduino
  • 2 resistori da 270 Ohm
  • 2 resistori da 150 Ohm

TeoriaObiettivo di questa esperienza è realizzare uno specifico circuito su breadboard utilizzando degli elementi resistivi e Arduino come alimentatore.

Osservando il circuito è facile riconoscere il collegamento serie degli elementi R1 e R2. Dove, R12 = R1+R2 = 300 Ohm

Il secondo collegamento circuitale osservabile è dato dal parallelo delle resistenze R12 e R4 = R12*R4/(R12+R4) = 142 Ohm

Infine è possibile calcolare la resistenza totale data dalla serie di R3 e R142 = 412 Ohm

Il precedente circuito può essere montato sulla breadboard utilizzando le seguenti modalità:

Esempio di collegamento Serie e Parallelo

Collegamento Circuitale:

Codice:

Non serve codice.

Verifica:

Utilizzare il metodo della resistenza equivalente per determinare le tensioni presenti su tutte le componenti resistive.




Le frecce dell’AUDI con Arduino

Obiettivo: Realizzare un sistema di controllo dei led che simula l’effetto delle frecce di un Audi. Le luci si accendono alla pressione di un pulsante.

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 8 Resistenze da 220 Ohm per i led
  • 4 LED
  • 2 Resistenza da 10KOhm per i pulsanti
  • 2 Pulsanti

Pre-requisiti:


LED e Pulsante


TeoriaCome abbiamo detto, lo scopo dell’esercitazione è quello di attivare due barre LED tramite la pressione di due pulsanti. Le barre simulano l’effetto freccia presente nelle auto Audi. La pressione del pulsante dà il comando di avvio della sequenza e, se si tiene premuto il pulsante, la sequenza rimane attiva.

Sarà necessario sistemare il codice in base a come viene montato il pulsante (se in pull-up o in pull-down)

Collegamento Circuitale:

Codice:

Il codice è basato sulla lettura del segnale del pulsante (nel nostro caso in pull-down) che, se premuto, attiva la relativa sequenza



Esperienza realizzata dalla classe 3 BMC del Dipartimento di Meccanica dell’ITIS “E.Mattei” di Urbino nell’AS 2022-23. Codice e Thinkercad realizzato da Giacomo Brancorsini




Utilizzare e Creare una Libreria per il Display a 7 Segmenti

Obiettivo: Utilizzare e creare una libreria (file header e cpp) per un Display a Sette Segmenti.

Puoi scaricare i file di libreria cliccando nel seguente link: https://www.arduinofacile.it/wp-content/uploads/2021/03/SevenSegment.zip
I file scaricati devono essere inseriti all’interno della cartella di progetto insieme al file .ino

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 1 Display a 7 Segmenti
  • 8 Resistenze

Pre-requisiti:


Creare funzioni con Arduino … per un Display a 7 Segmenti


Teoriala realizzazione di funzioni di libreria permette di facilitare l’operazione di riutilizzo del codice rendendo più veloce e più rapido lo sviluppo. Nel caso specifico la funzione di libreria implementata sarà costituta da un file header (.h) e da un file sorgente (.cpp).

Un file header è  un file di testo che contiene i prototipi dei metodi (funzioni) definite nel relativo file sorgente. Nel caso in questione il file header contiene anche la dichiarazione della classe “SevenSegment” utilizzata per modellare il display a sette segmenti.
Tale classe sarà caratterizzata da 10 attributi:

  • int pinA: il pin A del display a sette segmenti
  • int pinB: il pin B del display a sette segmenti
  • int pinC: il pin C del display a sette segmenti
  • int pinD: il pin D del display a sette segmenti
  • int pinE: il pin E del display a sette segmenti
  • int pinF: il pin F del display a sette segmenti
  • int pinG: il pin G del display a sette segmenti
  • int pinDP: il pin DP del display a sette segmenti
  • bool isCommonAnode: indica se il display è di tipo anodo comune oppure no

e da 11 metodi

  • void Print0(): metodo utilizzato per stampare il numero 0
  • void Print1(): metodo utilizzato per stampare il numero 1
  • void Print2(): metodo utilizzato per stampare il numero 2
  • void Print3(): metodo utilizzato per stampare il numero 3
  • void Print4(): metodo utilizzato per stampare il numero 4
  • void Print5(): metodo utilizzato per stampare il numero 5
  • void Print6(): metodo utilizzato per stampare il numero 6
  • void Print7(): metodo utilizzato per stampare il numero 7
  • void Print8(): metodo utilizzato per stampare il numero 8
  • void Print9(): metodo utilizzato per stampare il numero 9
  • void CountDown(): metodo utilizzato per eseguire il countdown.

Nel file sorgente viene invece riportata l’implementazione dei prototipi delle funzioni dichiarate nel file header.

Collegamento Circuitale:

Collegamento Circuitale

Codice:

Vengono in seguito riportate le tre porzioni di codice utilizzate per creare la funzione di libreria relativa al display a sette segmenti.

  • File Header: contiene la definizione della classe con i propri attributi (i.e., pinA, pinB, etc) ed i prototipi dei relativi metodi.



  • File Sorgente: contiene le implementazioni dei metodi riportati nel file header.



  • File Arduino: Utilizzato per fornire un esempio di come utilizzare la libreria per la gestione del display a sette segmenti.



Se tutti i file sono correttamente posizionati sullo stesso livello all’interno della cartella di progetto, due nuove tab compariranno nell’ambiente di sviluppo utilizzato per programmare Arduino. Attraverso queste tab sarà possibile visionare e modificare il file sorgente (.cpp) ed il file header (.h)

IDE con l’utilizzo della libreria SevenSegment.h




Pilotare le uscite GPIO di Raspberry tramite Server TCP/IP sviluppato in Java e client Android

Obiettivo: Accendere e spegnere tre LED tramite Raspberry via Server Java TCP/IP e Client Android.

Pilotare le uscite GPIO di Raspberry tramite Server TCP/IP sviluppato in Java e client Android

Componenti:

  • Raspberry Pi 3 Model B+ oppure Raspberry Pi 4
    Model B+
  • N.1 LED Rosso
  • N.1 LED Giallo
  • N.1 LED Verde
  • N.3 resistenze da 220 ohm

Teoria:

Alla base di questa esercitazione c’è Raspberry e la
libreria Pi4J.

Raspberry Pi 3 Model B+ è la versione finale della famiglia Raspberry Pi 3 (https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/).

Queste le caratteristiche:

  • Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz
  • 1GB LPDDR2 SDRAM
  • 4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
  • Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)
  • Extended 40-pin GPIO header
  • Full-size HDMI
  • 4 USB 2.0 ports
  • CSI camera port for connecting a Raspberry Pi camera
  • DSI display port for connecting a Raspberry Pi touchscreen display
  • 4-pole stereo output and composite video port
  • Micro SD port for loading your operating system and storing data
  • 5V/2.5A DC power input
  • Power-over-Ethernet (PoE) support (requires separate PoE HAT)

Raspberry Pi 4 Model B è l’ultima versione di Raspberry (https://www.raspberrypi.org/products/raspberry-pi-4-model-b/).

Queste le caratteristiche:

  • Processore
    1.5GHz quad-core 64-bit ARM Cortex-A72 CPU ( about 3x performance)
  • 1GB,
    2GB o 4GB di LPDDR4 SDRAM
  • Gigabit
    Ethernet
  • Dual-band
    802.11ac wireless rete
  • Bluetooth
    5.0
  • 2
    porte USB 3.0 e 2 porte USB 2.0
  • Supporto
    dual monitor, con risoluzione fino a 4K
  • VideoCore
    VI Graphics supporta OpenGL ES 3.x
  • 4Kp60
    hardware decode di HEVC video
  • Compatibilità
    con i precedenti prodotti Raspberry Pi

Ed infine la libreria to Pi4J (https://pi4j.com/1.2/index.html).

Questa
libreria ha lo scopo di fornire un’API di I/O orientata agli oggetti implementata
per i programmatori Java per accedere alle funzionalità di I/O complete della
piattaforma Raspberry Pi. Questo progetto astrae l’integrazione nativa di basso
livello e il monitoraggio degli interrupt per consentire ai programmatori Java
di concentrarsi sull’implementazione della logica di business dell’applicazione.

Come funziona il progetto:

Il progetto è suddiviso in 2 gruppi, il server e il client.

Il server viene realizzato tramite Raspberry sul quale viene
fatto girare il Server TCP/IP Multithreading.

Il server in base a semplici comandi tipo “ON RED”, “OFF RED”,
“BLINK RED”, “ON YELLOW”, “OFF YELLOW”, “BLINK YELLOW”, “ON GREEN”, “OFF GREEN”,
“BLINK GREEN” tutti ovviamente senza virgolette, accende, spegne e fa
lampeggiare i vari LED collegati alle porte GPIO di Raspberry.

Il client invece è realizzato tramite Android Studio.

Il client ha una Activity contenente due Editbox per
digitare l’indirizzo IP e la porta di funzionamento del server e 11 bottoni in
grado di eseguire la connessione, accendere, spegnere, far lampeggiare i LED e
disconnettersi dal server.

È possibile anche utilizzare Putty da un qualsiasi PC, connettersi in modalità RAW all’indirizzo di Raspberry e alla porta 1050.

Schema di funzionamento

Schema Server:

Schema di collegamento di Raspberry ai LED

Piedinatura delle GPIO di Raspberry

Schermata Client:

Codice Sorgente:

Istruzioni installazione PI4J scrittura Server, compilazione ed esecuzione

Download Server TCP/IP Java

Download Client Android

Istruzioni per eseguire il server all’accensione di Raspberry come servizio




Creare un richiamo per Birdwatching tramite Arduino e lettore MP3 DFPlayer Mini

Obiettivo: Far suonare dei file MP3 di versi di uccelli tramite Arduino e lettore MP3 DFPlayer Mini visualizzando il numero della traccia su un display TM1637 e il nome il volume e lo stato su un display LCD 16×2 I2C con possibilità di cambiare la traccia tramite telecomando IR

Creare un richiamo per Birdwatching tramite Arduino

Componenti:

  • Arduino UNO
  • 1 DFPlayer Mini
  • 1 TM1637
  • 1 Display LCD 16×2 I2C
  • 1 Trasmettitore IR
  • 1 Ricevitore IR

Teoria:

Alla
base di questa esercitazione c’è il modulo DFPlayer Mini

Sul sito del produttore è possibile studiare le principali informazioni che permettono di utilizzare in modo semplice il lettore.

Si possono notare il pinout a 16 pin di collegamento, necessario per interconnettere il DFPlayer mini a pulsanti per essere utilizzato senza microcontrollore, le alimentazioni, le uscite DAC per essere collegato ad un amplificatore esterno, e le uscite dirette ad un altoparlante.

Caratteristiche del modulo:

  • Frequenze di campionamento supportate (kHz): 8 /
    11.025 / 12/16 / 22.05 / 24/32 / 44.1 / 48
  • Uscita DAC a 24 bit, supporto per gamma dinamica
    90 dB, supporto SNR 85 dB
  • Supporta pienamente FAT16, file system FAT32,
    supporto massimo 32G della scheda TF, supporto 32G di disco U, 64M byte
    NORFLASH
  • Vasta varietà di modalità di controllo, modalità
    di controllo I/O, modalità seriale, modalità di controllo tramite pulsanti
  • Funzione di attesa sonora pubblicitaria, la
    musica può essere sospesa. quando la pubblicità è finita nella musica continua
  • Dati audio ordinati per cartella, supporta fino
    a 100 cartelle, ogni cartella può contenere fino a 255 canzoni
  • 30 livelli di volume regolabile, 6 livelli EQ
    regolabili

Modalità di controllo

Sempre sul sito del produttore sono possibili vedere le tre modalità di funzionamento del lettore DFPlayer Mini che sono: Modalità Seriale, AD KEY Mode, I/O Mode.

Noi utilizzeremo la Modalità Seriale per interconnettere Arduino al modulo DFPlayer Mini e al tempo stesso utilizzare anche altri moduli quali Diplay LCD I2C 16×2, Display TM1637, Ricevitore IR

Una nota aggiuntiva deve essere anche posta al ricevitore IR che ci permetterà di acquisire il codice dal trasmettitore IR in grado di far avviare il file MP3 desiderato, spostandoci tra i file MP3, avendo la possibilità di mettere in pausa e in play il suono, alzare e abbassare il volume.

Cosa sono gli Infrarossi

La
radiazione infrarossa è una forma di luce simile alla luce che vediamo tutto
intorno a noi. L’unica differenza tra la luce IR e la luce visibile è la
frequenza e la lunghezza d’onda. La radiazione infrarossa si trova al di fuori
della gamma della luce visibile, quindi gli esseri umani non possono vederla.

Poiché l’infrarosso è un tipo di
luce, la comunicazione IR richiede una linea visiva diretta dal ricevitore al
trasmettitore quindi non è possibile trasmettere attraverso muri o altri
materiali come WiFi o Bluetooth.

Un tipico sistema di
comunicazione a infrarossi richiede un trasmettitore IR e un ricevitore IR. Il
trasmettitore ha l’aspetto di un LED standard, tranne per il fatto che produce
luce nello spettro IR invece che nello spettro visibile. Se si osserva la parte
anteriore del telecomando di un televisore, si vedrà il LED del trasmettitore
IR.

Il ricevitore IR è un fotodiodo e un preamplificatore che converte la luce IR in un segnale elettrico. I diodi del ricevitore IR in genere hanno questo aspetto:

Nel nostro caso è stato usato questo modulo preso nei soliti KIT per Arduino:

Schema elettronico

Preparazione Scheda MicroSD

La MicroSD card potrà essere di dimensioni massime di 32Gb è deve essere formattata con filesystem Fat16 o Fat32 oppure se possedete un Mac OS X, selezionare ExFat e poi puoi copiare i file MP3 che desiderate.
E’ conveniente che i file audio siano numerati per definirne l’ordine di esecuazione prograssiva. Al termine del trasferimento, si potrà estrarre la SD Card dal computer per puoi inserla nel DFPlayer mini.

Micro SD

Struttura della MicroSD

Codice sorgente






Realizzare una Pila con una Patata

Obiettivo: Realizzare una Pila con una Patata ed accendere un LED.



Componenti elettronici:

  • 1 Patata
  • 1 moneta da 5 centesimi (rame)
  • 1 chiodo (zinco)
  • Cavi
  • 1 Led (opzionale – utilizzato per verificare il funzionamento della pila)
  • 1 Multimetro (opzionale – utilizzato per verificare il funzionamento della pila)

TeoriaDal punto di vista teorico, una pila è costituita da una soluzione elettrolitica nella quale sono immersi due differenti metalli (come ad esempio rame e zinco).
E’ importante considerare che ogni agrume possiede al proprio interno succhi che possono fungere da soluzioni elettrolitiche in quanto ricchi di ioni.
Per questo motivo, elementi come limoni, arance e patate possono essere facilmente trasformati in pile.

Procedimento:  Viene in seguito riportato un procedimento step by step per realizzare la pila utilizzando una patata

  • Prima di iniziare, fare pressione con i palmi delle mani sulla patata appoggiata sul tavolo in modo schiacciarla e rompere i legami interni che producono il succo (questo permette di generare più energia).
  • Introdurre alle due estremità della patata la moneta da 5 centesimi (è possibile anche utilizzare un chiodo di rame) ed il chiodo di zinco.
  • Evitare che all’interno della patata i due elementi conduttori si tocchino tra di loro.
  • Utilizzare il multimetro per determinare il livello di differenza di potenziale (tensione) prodotto.

Collegamento Circuitale:

Collegamento Circuitale


PersonalizzazioniE’ possibile collegare più patate in serie al fine di incrementare il livello di tensione.





Come utilizzare Android Explore IoT Kit con visualizzazione dati sul cloud

Obiettivo: Realizzare il primo sketch in grado di visualizzare dati sul Cloud

Come utilizzare Android Explore IoT Kit con visualizzazione dati sul cloud

Componenti:

  • Arduino MKR1010
  • MKT IoT Carrier, che a sua volta include:
    Sensore di temperatura
    Sensore di umidità
  • Cavo Micro USB

Link:


https://www.arduino.cc/
https://www.arduino.cc/education
https://create.arduino.cc/iot/things
https://create.arduino.cc/iot/dashboards/
https://create.arduino.cc/iot/dashboards/devices
https://create.arduino.cc/editor/




Come Utilizzare il Monitor Seriale per Determinare se un Pulsante Funziona

Obiettivo: Utilizzare il monitor seriale di Arduino per avviare una comunicazione dati Arduino-PC e comprendere se un pulsante funziona oppure no.

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • Pulsante
  • Resistenza (1kOhm)

Prerequisiti


LED e Pulsante


TeoriaNon essendo disponibile un debugger per il controllore Arduino, l’utilizzo del monitor seriale rappresenta l’unica valida alternativa per comprendere i malfunzionamenti del codice scritto.
Il monitor seriale è uno strumento integrato nell’IDE di Arduino e nella piattaforma Tinkercad per visualizzare i dati ricevuti mediante comunicazione seriale.
La comunicazione seriale è una modalità di comunicazione tra dispositivi digitali nella quale i bit sono trasferiti lungo un canale di comunicazione uno di seguito all’altro. Nel caso specifico, la comunicazione avviene tra il Computer ed Arduino.
Le istruzioni per inviare messaggi da Arduino al Personal Computer sono due: Serial.begin e Serial.println

L’Inizializzazione della comunicazione avviene mediante l’istruzione:

Serial.begin(9600);

Questa istruzione deve essere inserita all’interno del corpo del setup e permette di impostare la comunicazione seriale definendo la velocità della comunicazione in bits per second (baud). 

La comunicazione vera e propria avviene invece mediante l’istruzione:

Serial.println(“Il valore del pulsante risulta:”);

Serial.println(valButton);

Nel primo caso viene stampato nel monitor seriale il testo: “Il valore del pulsante risulta:”. Mentre nel secondo caso viene stampato il valore della variabile valButton.
L’impiego delle println permette di capire il valore delle variabili e determinare il corretto funzionamento del circuito.
E’ possibile visualizzare i dati inviati da Arduino al PC cliccando sullo specifico tasto:

Pulsante per aprire il monitor seriale

Collegamento Circuitale:

Collegamento Circuitale

Codice: A seguire viene riportato il codice utilizzato per determinare se un pulsante è stato premuto oppure no. Questo permette di comprendere se un pulsante è stato montato in modo corretto. Nello specifico il codice utilizza la variabile di stato “valButton” per determinare lo stato del pulsante (premuto/non premuto).
Attraverso l’istruzione Serial.println(valButton) è possibile stampare sul monitor il valore della variabile.