Conflitto pin tra più schede

Salve a tutti :slight_smile:
Sono uno studente di un istituto tecnico - indirizzo informatica, e sto creando il progetto per la maturità assieme ad un mio compagno.
Per ora siamo riusciti a creare una macchinina che si muove attraverso comandi inviati da un'applicazione creata da noi su android.
I componenti sono: un arduino Uno rev3, una Motor Drive Shield L293D (foto qua), e una scheda wireless basata su ESP8266 (manuale qua) mentre nessun segno di vita se usate insieme.
La scheda wireless usa infatti i pin 8 e 9 per tx ed rx, e gli stessi pin (e non solo) sono utilizzati dalla scheda che gestisce i motori.
Smanettando un po' abbiamo trovato una combinazione di jumper nella scheda wifi, che le fa funzionare entrambe, ma in modo un po' limitato. Spostando infatti il jumper della scheda wireless TX su D0(invece di D8) siamo riusciti a sostituire i pin 8,9 in 0,9.
Ora la Motor Shield funziona, ma ci sono dei motori che non funzionano, e altri che funzionano per metà.
Insomma vorremmo trovare una soluzione per questo conflitto tra pin, abbiamo seguito un po' lo schema dei pin settati nella libreria AFMotor.h ma con scarsi risultati..
L'ESP8266 la inizializziamo invece con: SoftwareSerial ESP8266(0, 9);
Inoltre il collegamento del jumper D0 lo abbiamo spostato sulla breadboard perchè se collegato non è possibile caricare il programma dall'ide (mentre con i pin 8 e 9 era possibile).
Speriamo che qualcuno che ha avuto tra le mani queste schede possa darci una mano :confused:
Grazie :smiley:
Qua delle foto delle nostre schede:

Prima di tutto corri a presentarti nell'apposita sezione.

Poi, per la scheda wireless puoi usare qualunque pin libero. Non mi intendo molto di motor shield, ma mi sembra che non usi i pin analogici, per cui puoi usare A0 e A1 se non li usi già per altro. Tieni presente che tutti i pin analogici sono usabili anche come digitali.

>AlessioCur: essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

AlessioCur:
siamo riusciti a sostituire i pin 8,9 in 0,9.
Ora la Motor Shield funziona, ma ci sono dei motori che non funzionano, e altri che funzionano per metà.

Io ho lo stesso motor shield, e confermo che usa molti pin, mi pare da D3 a D12 e non mi risulta che siano modificabili, per cui visto che la wireless consente di scegliere solo tra 8/9 o 0/1, per far convivere queste due shield non basta spostare solo il pin 8 ma devi liberare anche il 9, quindi sposti la motor sui pin 0 e 1 (rinunciando alla UART di Arduino).
Oppure cambia la UNO con una Mega (come ho fatto io per un progetto di braccio robotico a 5 assi, quindi oltre a quel motor shield ho anche un secondo driver).
Sono i problemi generali dell'uso di shield, sempre controllare prima dell'acquisto la loro compatibilià di pin, e qualora non fossero compatibili, tenere uno shield ed acquistare per l'altro una board esterna ("non shield" per internderci, ma collegabile mediante connessioni a filo), meno pratica per l'assemblaggio ma ti permette di adattarti al meglio.

docdoc:
Io ho lo stesso motor shield, e confermo che usa molti pin, mi pare da D3 a D12 e non mi risulta che siano modificabili, per cui visto che la wireless consente di scegliere solo tra 8/9 o 0/1, per far convivere queste due shield non basta spostare solo il pin 8 ma devi liberare anche il 9, quindi sposti la motor sui pin 0 e 1 (rinunciando alla UART di Arduino).
Oppure cambia la UNO con una Mega (come ho fatto io per un progetto di braccio robotico a 5 assi, quindi oltre a quel motor shield ho anche un secondo driver).
Sono i problemi generali dell'uso di shield, sempre controllare prima dell'acquisto la loro compatibilià di pin, e qualora non fossero compatibili, tenere uno shield ed acquistare per l'altro una board esterna ("non shield" per internderci, ma collegabile mediante connessioni a filo), meno pratica per l'assemblaggio ma ti permette di adattarti al meglio.

Grazie per la risposta, purtroppo quando abbiamo acquistato questi componenti non eravamo molto informati, era più una cosa "per provare" :confused:. Poi invece ce ne siamo abbastanza appassionati :grin:.
Scarto subito l'opzione del mega, al momento non ne possediamo uno e probabilmente non ci starebbe nella base.
In questo momento il progetto è a scuola quindi domani proveremo a sostituire i pin della Wifi shield in 0,1. (Scusa la domanda, so che i pin 0,1 corrispondo alla UART di Arduino, ma cosa ne comporta rinunciarci?)
Negli stessi pin della Motor Shield (da D3 a D12) abbiamo collegato un display a 16 pin, e non sembra dare problemi..possiamo tenerlo tranquillamente?
Nell'altro lato invece usiamo 3 delle entrate digitali(A0,A1 e A0 analogiche in 14,15,16) per dei sensori di tracking (riconoscono nero e bianco) per seguire quindi un percorso. Ma questo già funziona tutto perfettamente.
La base del nostro progetto è infatti di controllare attraverso lo smartphone le due modalità: Manuale, controllato dal telefono e Automatico, che segue una linea.
Una volta fatto questo proseguiremo con l'implementazione di un codice su Raspberry per la gestione dei comandi e altro, ma per ora pensiamo a questo :smiley:

Suggerisco allora di usare A3 e A4 (o A4 e A5) per lo shield, collegandoli con dei cavetti, ovviamente. Se usate 0 e 1 dovete rinunciare a visualizzare qualunque messaggio sul monitor seriale, unico strumento disponibile per il debugging :(.

SukkoPera:
Suggerisco allora di usare A3 e A4 (o A4 e A5) per lo shield, collegandoli con dei cavetti, ovviamente. Se usate 0 e 1 dovete rinunciare a visualizzare qualunque messaggio sul monitor seriale, unico strumento disponibile per il debugging :(.

Sisi ora capisco, ma come facciamo a collegare i pin della shield su A3 e A4 tenendole "sormontate"?

AlessioCur:
Scusa la domanda, so che i pin 0,1 corrispondo alla UART di Arduino, ma cosa ne comporta rinunciarci?

che non puoi più usare la comunicazione seriale col PC (aka: il "monitor seriale") quindi non puoi mettere nello sketch istruzioni come "Serial.print()". Inoltre per fare l'upload di una nuova versione dello sketch devi PRIMA disconnettere la shield dai pin 0 e 1 e POI puoi fre l'upload, e solo alla fine spegnere Arduino, reinserire la shield, e riaccendere.
Seccante, ma se non hai alternative...

Negli stessi pin della Motor Shield (da D3 a D12) abbiamo collegato un display a 16 pin, e non sembra dare problemi..possiamo tenerlo tranquillamente?

Non credo proprio. Sarà il solito LCD 16x2 immagino: puoi acquistare una schedina di interfaccia I2C che salderai dietro e con quella usi solo 2 pin, che tra l'altro sono quelli analogici A4 e A5 quindi eviti qualsiasi conflitto e te lo consiglio caldamente!
Dato che la schedina ha un costo di 3-4 Euro (vedi eBay) acquistarla separatamente in genere ti costa più di spedizione che altro (se prendi da rivenditori cinesi ti arriva quando sarai in pensione, sempre se ti arriva), secondo me fai prima a prendere direttamente un nuovo display con I2C da un rivenditore italiano a 5-6 Euro spedizione inclusa.

Non acquistate mai display senza interfaccina I2C, la differenza di costo è veramente irrisoria ma ne vale la pena.

docdoc:
che non puoi più usare la comunicazione seriale col PC (aka: il "monitor seriale") quindi non puoi mettere nello sketch istruzioni come "Serial.print()". Inoltre per fare l'upload di una nuova versione dello sketch devi PRIMA disconnettere la shield dai pin 0 e 1 e POI puoi fre l'upload, e solo alla fine spegnere Arduino, reinserire la shield, e riaccendere.
Seccante, ma se non hai alternative...

Non credo proprio. Sarà il solito LCD 16x2 immagino: puoi acquistare una schedina di interfaccia I2C che salderai dietro e con quella usi solo 2 pin, che tra l'altro sono quelli analogici A4 e A5 quindi eviti qualsiasi conflitto e te lo consiglio caldamente!
Dato che la schedina ha un costo di 3-4 Euro (vedi eBay) acquistarla separatamente in genere ti costa più di spedizione che altro (se prendi da rivenditori cinesi ti arriva quando sarai in pensione, sempre se ti arriva), secondo me fai prima a prendere direttamente un nuovo display con I2C da un rivenditore italiano a 5-6 Euro spedizione inclusa.

Non acquistate mai display senza interfaccina I2C, la differenza di costo è veramente irrisoria ma ne vale la pena.

Si è proprio il display presente nello starter kit.. per ora proviamo comunque ad usare 0,1 rinunciando comunque al monitor seriale, per capire se almeno i motori ora funzionano giustamente.
Per fare l'upload già ora dobbiamo togliere il jumper dal pin 0, per comodità abbiamo quindi trasportato il collegamento sulla breadboard (evitando quindi di staccare ogni volta la Motor Shield), quindi non penso sia un problema farlo anche per il pin 0.
Per sicurezza ci procureremo anche l'interfaccia I2C, o direttamente il monitor. Grazie intanto!

EDIT: Ho provato a sostituire il pin 0 nella scheda Wifi e non funziona! Non trova il modulo.
Inoltre non capisco perché non funzioni più nemmeno con 8 e 9 che sono quelli di default :o

L'obiettivo era farlo funzionare con 0,1 ma niente :frowning:
Ho provato con:
SoftwareSerial ESP8266(0, 1);
SoftwareSerial ESP8266(8, 9);
SoftwareSerial ESP8266(8, 1);
Ma nessuno, per ora sembra funzionare solo quello con 0,9

EDIT2: Allora l'8 e 9 non andavano perchè inizializzavo anche un motore ed andava in conflitto con i pin. Quindi funziona esclusivamente con 0,9..le altre non danno segni di vita :frowning:
Ho scoperto invece che il conflitto principale era proprio quello del display! Ora vanno anche gli altri motori infatti, e riusciamo a modificare la velocità mentre sono in funzione (prima non funzionava con un motore). Quindi ora c'è solo da capire se quel pin 9 può dare problemi o no..non vedo altre soluzioni.
Per il display tra qualche giorno ci arriva l'interfaccia I2C e dovremo essere a posto.
L'unico dubbio ora è: come alimentare il tutto?
Può bastare alimentare sia la Motor Shield sia l'Arduino con 4 batterie da 1,5V? (Quindi sono 4+4)
Grazie :wink:

Up :grin: