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




App Inventor – Bluetooth HC06 – LED

Obiettivo: Realizzazione di una applicazione Android per la comunicazione Smartphone-Android mediante protocollo bluetooth per il comando di un singolo LED (ON/OFF).

Componenti:

  • Appinventor
  • QRDroid

TeoriaBluetooth è uno standard di trasmissione dati per reti senza fili. Questo protocollo è ampiamente utilizzato per la connessione tra i moderni smartphone e i differenti dispositivi casalinghi/industriali (amazon echo, altoparlanti, cuffie, etc). Nel caso specifico la comunicazione avviene mediante la realizzazione di una app tra Smartphone ed Arduino per il comando di un singolo LED.

Creazione della app (DESIGNER):

A seguire viene riportata una guida passo passo per la realizzazione della applicazione in questione. Prima di iniziare è opportuno scaricare i file necessari nella sezione “Componenti

  • Creazione di un nuovo progetto: attraverso il menu project creare un nuovo progetto cliccando su start new project. Denominare il progetto: BluetoothLED.

Creazione di un nuovo progetto

  • Inserimento degli elementi principali dell’applicativo: semplicemente trascinando gli elementi dalla palette (menu a sinistra) è possibile inserire i seguenti elementi: Listpicker (si trova in Palette/UserInterface), Button (si trova in Palette/UserInterface), Label (si trova in Palette/UserInterface).

Inserimento degli elementi principali

  • Adattare le dimensioni dei pulsanti: Per adattare le dimensioni dei singoli elementi cliccare su screen1 nel menu components, selezionare in seguito l’elemento (sempre nel menu componenti) e cliccare su width nel menu properties. Infine, selezionare l’opzione fill parent (riempe il contenitore genitore).

Adattare le dimensioni dei pulsanti

  • Modificare il testo: Per modificare il testo riportato nelle singole entità, cliccare sui differenti componenti nel menu componenti ed in seguito settare il testo attraverso il menu properties.

  • Componenti bluetooth e pulsante ON/OFF: Per completare l’applicativo vengono infine inseriti: il ClientBluetooth (si trova in Palette/Connectivity) e due pulsanti (ON/OFF). E’ importante considerare che a differenza degli altri elementi il modulo bluetooth non risulta visibile nella GUI perché componente non visibile

Componenti Bluetooth

Sviluppo dell’algoritmo (BLOCKS):

Terminata la creazione dell’interfaccia grafica è opportuno realizzare il codice associato all’applicazione. Per fare questo, cliccare in alto a destra sul pulsante BLOCKS.

  • Realizzazione del codice: Per gestire l’applicativo implementare la procedura riportata nella figura sottostante

Codice

Download dell’applicazione:

Per scaricare l’applicativo è necessario avere un cellulare Android con relativo lettore di QRCode. Pertanto, terminato lo sviluppo cliccare nel menu build -> App (provide QR code for APK)




App Inventor – Splash Screen

Obiettivo: Creazione di uno Splash Screen per la customizzazione delle proprie applicazioni

Componenti:

  • Logo
  • Suono Carino (Facoltativo)

Prerequisiti:

TeoriaAttraverso l’utilizzo di pagine temporizzate è possibile realizzare uno splash screen ovvero: una schermata di presentazione che molti programmi visualizzano al momento del loro avvio, recante in genere il nome e la versione del programma stesso, il logo del produttore e il copyright.h

Creazione della app:

A seguire viene riportata una guida passo passo per la realizzazione di uno splash screen, ovvero uno screen temporizzato che si apre al momento dell’avvio della applicazione contenente il logo aziendale/scolastico.

  • Creazione di un nuovo progetto: attraverso il menu project creare un nuovo progetto cliccando su start new project. Denominare il progetto: SS.

Creazione Progetto

  • Inserimento degli elementi principali dell’applicativo: semplicemente trascinando gli elementi dalla palette (menu a sinistra) è possibile inserire i seguenti elementi: Image (si trova in Palette/UserInterface), Sound (si trova in Palette/Media), Clock (si trova in Palette/Sensors). E’ importante considerare che a parte il pulsante, il clock non risulta visibile nella GUI perché componente non visibile.

Inserire elementi

  • Inserire il file di immagine: Per inserire il file di immagine cliccare su image1 nel menu components, cliccare su background in properties e uplodare il file di sfondo.

Inserire il file di immagine

  • Centrare l’immagine: Per centrare l’immagine, cliccare su image nel menu componenti ed in seguito settare la proprietà center negli allineamenti verticali ed orizzontali attraverso il menu properties

Centrare l’immagine

  • Creazione di un nuovo screen: Per inserire una seconda schermata cliccare su screen e premere su add new screen.

Creazione di un nuovo screen

Sviluppo dell’algoritmo (BLOCKS):

Terminata la creazione dell’interfaccia grafica è opportuno realizzare il codice associato all’applicazione. Per fare questo, cliccare in alto a destra sul pulsante BLOCKS

  • Associare un evento al clock: Per avviare uno nuovo screen è opportuno associare un evento al clock. Pertanto cliccare su clock1 ed in seguito trascinare nella schermata dei blocchi l’evento: “When Clock1 Timer”

Associare un evento al clock

  • Aprire un nuovo screen: Per aprire un nuovo screen cliccare su build e trascinare l’evento “Open another screen Screenname”. In seguito, inserire il nome dello screen da aprire facendo attenzione alle lettere maiuscole e minuscole.

Aprire un nuovo screen

  • Disabilitare il clock: E’ opportuno disabilitare il clock altrimenti il rischio è quello di aprire continuamente in modo automatico il nuovo screen. Pertanto cliccare su clock1 ed in seguito trascinare nella schermata dei blocchi il metodo: “Set Clock1.TimerEnabled” e settario al valore logico false.

Disabilitare il clock