Comandare GPIO del Raspberry Pi4 Con Windows 11

In questo articolo descrivo come un'applicazione WPF .NET6 che gira su Windows 11 installato sul Raspberry Pi4 può comandare i piedini GPIO per inviare dei comandi ad un Arduino che muove un motore passo passo.

Il RaspiDeck che ho costruito oltre a gestire i comandi dal client verso il server in realtà fa di più.

Gestisce i comandi dal server verso il client. In particolare alza una bandierina quando viene ricevuta una mail da Outlook (si, ho scritto un plugin per Outlook).

In questo articolo voglio descrivere come un'applicazione WPF .NET6 che gira su Windows 11 installato sul Raspberry Pi4 può comandare i piedini GPIO per inviare dei comandi ad un Arduino che muove un motore passo passo.

Il codice è sul "mio" GitHub.

Ho scritto una piccola app Wpf .NET che ha due soli tasti che hanno il compito di alzare o abbassare la bandierina.

La classe che ho utilizzato è la "GpioController" contenuta nel namespace "System.Device.Gpio".

Concettualmente è sempre la stessa storia:

  1. Si configura la modalità del piedino (input/output)
  2. Si legge o scrive nel o dal piedino

Nel codice su GitHub ho committato anche il codice per Arduino.

Semplicissimo anche lui.

Legge dal piedino 6, se è a livello logico alto fa girare il motore di 90 gradi in senso orario.

Legge dal piedino 7, se è a livello logico alto fa girare il motore di 90 gradi in senso antiorario.

 

Come anticipato, per poter utilizzare la classe "GpioController" è necessario qualche accortezza. Due per la precisione:

Le proprietà del progetto:

Il profilo di pubblicazione:

Dal punto di vista elettrico i collegamenti sono molto semplici.

Prima di tutto è necessario collegare la massa tra il Raspberry e l'Arduino.

Poi il GPIO 20 del Raspberry è da collegare al D6 dell'Arduino

Poi il GPIO 21 del Raspberry è da collegare al D7 dell'Arduino.

Breadboard

Ho provato a collegare direttamente il driver dello stepper al Raspberry, ma il motore girava troppo lentamente.

Probabilmente il problema è da ricercare nella velocità di gestione della porta del Raspberry con Windows 11 o forse in qualche collegamento errato :P

Se hai voglia di lasciarmi un commento mi trovi su Linkedin.