Il modulo GPIO (General Purpose Input Output) è un PCB aggiuntivo e opzionale che può essere collegato all'Original Prusa MK4/S, MK3.9/S, o MK3.5/S.
Il modulo offre maggiori funzionalità consentendo il controllo di dispositivi esterni tramite connessioni ai pin della scheda GPIO, che possono funzionare sia in modalità INPUT che OUTPUT. Questa sua versatilità offre un'ampia serie di potenziali casi d'uso.
Condividi e discuti i tuoi progetti con gli altri membri della Community Prusa sul nostro forum ufficiale. Abbiamo creato una sezione GPIO dedicata.
Il modulo può controllare l'otturatore di una fotocamera in un momento preciso, rendendolo ideale per creare time-lapse visivamente perfetti, in cui ogni immagine viene catturata nello stesso esatto momento.
Oltre a controllare l'otturatore di una fotocamera, il modulo può essere utilizzato per diverse altre applicazioni. Ad esempio, può attivare l'illuminazione esterna per illuminare l'area di stampa in fasi specifiche del processo di stampa, garantendo condizioni di luce ottimali per i controlli di qualità o le fotografie. Inoltre, può essere configurato per attivare le ventole di raffreddamento o altri dispositivi periferici, come estrattori o allarmi, in base all'esecuzione di G-code personalizzati durante le stampe, contribuendo a mantenere condizioni operative ottimali e a migliorare la sicurezza e l'efficienza dell'ambiente di stampa 3D.
Un altro importante caso d'uso è l'integrazione di una tastiera macro, dove ogni pressione di un tasto può attivare l'esecuzione di specifici comandi G-code. Questa configurazione consente un rapido controllo manuale delle funzioni della stampante, come l'avvio o la pausa di una stampa, la regolazione delle temperature o lo spostamento della testina di stampa in una posizione esatta. La possibilità di attivare azioni personalizzate con la semplice pressione di un tasto può snellire notevolmente i flussi di lavoro, rendendo il modulo di espansione GPIO uno strumento versatile e indispensabile per chi vuole personalizzare e ottimizzare la propria configurazione di stampa 3D.
Se da un lato la possibilità di attivare il G-code tramite gli ingressi GPIO aggiunge grande flessibilità, dall'altro comporta limitazioni e potenziali rischi. Un uso improprio o una tempistica sbagliata dei comandi G-code possono interferire con il processo di stampa, causando errori di stampa o addirittura danni alla stampante. È fondamentale testare accuratamente qualsiasi configurazione G-code personalizzata in un ambiente controllato prima di implementarla nei lavori di stampa effettivi per evitare conseguenze indesiderate.
Gli schemi sono open source e sono disponibili alla nostra pagina Open Source at Prusa Research.
- Assicurati che la stampante si sia raffreddata a temperatura ambiente e spegnila.
- Apri il coperchio del box xBuddy rimuovendo le quattro viti M3x6.
- Collega il cavo GPIO alla porta I2C.
- Chiudi il coperchio della scatola di xBuddy.
- Assicurati che il GPIO non tocchi alcuna parte metallica del box xBuddy o del suo coperchio.
- Buon divertimento con il tuo progetto!
La scheda dispone di 8 pin, numerati da 0 a 7. I pin 0-3 possono essere usati come output mentre i pin 4-7 possono funzionare sia come ingresso che come uscita. Ogni pin è di tipo open-drain quando viene utilizzato come uscita, cioè è controllato da un transistor che collega il pin alla massa (0 V) quando è attivo. Quando il pin è inattivo, rimane “ floating ”, ovvero non è collegato ad alcuna tensione specifica, ma grazie alle resistenze di pull-up interne, la tensione sul pin può aggirarsi intorno ai 3,3 V.
The behavior of the pins in an open-drain state when used as outputs can be explained as follows:
- Pin impostato su 0 (LOW): Il pin è spento e si trova in uno stato " floating ", cioè non è collegato ad alcuna tensione specifica. In questo stato, la tensione sul pin può fluttuare e non è ben definita, a meno che non sia stabilizzata da un resistore pull-up.
Questo stato " floating " può far sì che il pin rilevi disturbi o interferenze elettriche casuali, causando un comportamento indesiderato se non viene gestito correttamente.
- Pin impostato su 1 (HIGH): Il pin è acceso e collegato alla massa (0 V), facendo scendere la tensione sul pin a 0 V. Questo stato è univoco e non comporta alcuna ambiguità nel rilevamento del segnale.
Quando i pin vengono utilizzati come ingressi, sono in grado di rilevare il livello di tensione applicato. Lo stato dell'ingresso è influenzato dalla presenza di resistenze pull-up, che possono contribuire a garantire una tensione costantemente alta (3,3 V) quando non viene applicata nessun'altra sorgente di tensione.
La scheda consente di collegare resistenze pull-up esterne tramite i ponticelli a saldare contrassegnati da JP4 a JP7. Questi ponticelli si trovano al centro della scheda e sono collegati ai pin corrispondenti:
- JP4 è connesso al Pin 4
- JP5 è connesso al Pin 5
- JP6 è connesso al Pin 6
- JP7 è connesso al Pin 7
I ponticelli a saldare da JP7 a JP4 possono essere utilizzati per collegare resistenze pull-up integrate, che assicurano che i pin rimangano a una tensione elevata (3,3 V) quando non sono attivamente pilotati verso il basso da una sorgente esterna o dallo stato di uscita del pin. Queste resistenze pull-up hanno un valore di 10K ohm, che è un valore standard per fornire una tensione stabile senza un eccessivo assorbimento di corrente. Se non viene collegato alcun resistore al ponticello di saldatura, il pin potrebbe rimanere in uno stato flottante, causando potenzialmente un comportamento instabile. JP sta per “jumper” e se non viene collegato alcun resistore, non crea alcuna resistenza.
Per gli utenti meno esperti, è importante capire che le uscite open-drain non producono intrinsecamente una tensione elevata (3,3 V), ma consentono una connessione a terra (0 V). Le resistenze di pull-up sono necessarie per garantire che il pin rimanga ad alta tensione quando viene spento o utilizzato come ingresso. Se non viene gestita correttamente, una tensione " floating " può far sì che il pin raccolga disturbi elettrici, causando commutazioni indesiderate o l'instabilità del sistema.
Informazioni generali
Quella che segue è una sequenza di comandi G-code personalizzati utilizzati per controllare la scheda GPIO. Questo permette di configurare gli stati di uscita, leggere gli stati di ingresso e gestire altre impostazioni avanzate della scheda attraverso le istruzioni G-code, integrandole perfettamente con il flusso di lavoro della stampante 3D.
Controllo Pin via G-Code
Per controllare i pin di uscita della scheda GPIO, è possibile utilizzare i seguenti comandi G-code:
- Imposta modalità pin (Output o Input)
M262 P B- P<0-7>: Seleziona il numero del pin da configurare (da 0 a 7).
- B<0 or 1>: Imposta la modalità del pin.
- 0 - configura il pin come output
- 1 - configura il pin come ingresso.
- Esempio: M262 P0 B0 - Configura il pin 0 come pin di output.
- Stato di scrittura su un pin di output
M264 P B<0 or 1>
- P<0-7>: Seleziona il numero di pin su cui scrivere (da 0 a 7).
- B<0 or 1>: Scrivi 0 per impostare il pin su LOW, o 1 per impostare il pin su HIGH.
- Esempio: M264 P0 B1 - Imposta il pin di uscita 0 su HIGH (1).
- Stato di commutazione del pin di output
M265 P
- P<0-7>: Seleziona il numero di pin da commutare (da 0 a 7).
- Questo comando inverte lo stato attuale del pin selezionato.
- Esempio: M265 P0 - Commuta il pin 0.
- Impostazione avanzata del registro (per utenti esperti)
M267 R<1-3> B<0-255>
- R<1-3>: Seleziona il registro da configurare:
- 1: Registro di Output.
- 2: Registro delle polarità.
- 3: Registro di configurazione.
- B<0-255>: Imposta il valore da scrivere nel registro selezionato.
- Esempio: M267 R3 B255 - Configura il registro di configurazione con il valore 255 (tutti i pin sono impostati come input).
- R<1-3>: Seleziona il registro da configurare:
Per leggere lo stato dei pin o impostare le configurazioni, utilizza i seguenti comandi G-code:
- Leggi lo stato del Pin
M263 P
- P<0-7>: Seleziona il numero di pin da cui leggere (da 0 a 7).
- Il valore restituito indica se il pin è HIGH (1) o LOW (0).
- Esempio: M263 P6 - Legge lo stato del pin 6 (restituisce 32 per HIGH o 0 per LOW).
- Lettura dell'intero registro di input
M261 A B S