Trasformare shield Rele in WiFi

Salve ragazzi. Ho una shield Rele con 8 rele 5v.

Ho allegato la foto. Per il momento la piloto da Arduino, però mi chiedevo se potevo montarci su il WiFi e pilotarla dall'Arduino (che ha lo shield Ethernet montato).

Se si mi potreste dire di cosa ho bisogno ?

Hardware e sicuramente anche software ?

Cattura.PNG

Un altro Arduino collegato a quella board, al quale aggiungere un modulo WiFi ESP, oppure una WeMosD1 (che la programmi con l'IDE di Arduino con lo stesso linguaggio)?

Esatto, come dice DocDoc

grazias guys. Grazie mille quindi ricapitolando prendendo questa Wemos D1 mini, posso montarci il firmware che ho attualmente implementato per il mio arduino e collegarla direttamnete su questa shield rele. Cosi Recupero praticamente tutti i pin di Arduino che potrei utilizzare per altri scopi.

Grazie.

Un consiglio per alimentare il tutto i 5V li devo mettre sulla shield o sulla Wemos e poi lei alimenterà la shiedl?

bircastri:
Un consiglio per alimentare il tutto i 5V li devo mettre sulla shield o sulla Wemos e poi lei alimenterà la shiedl?

Dall'alimentatore (5V 1A) parti con due coppie, con una coppia alimenti la scheda relé (GND e Vcc), con l'altra alimenti la WeMos (GND e 5V), in questo modo le correnti delle bobine dei relé non transiteranno mai attraverso la logica di controllo.

Altrimenti, in questo specifico caso, tra le due alternative che proponi è meglio alimentare prima la scheda relé e poi da questa la WeMos, così eventuali disturbi si richiudono nel percorso relé -> alimentatore e, di nuovo, non transita nulla attraverso la logica, che ha una sua regolazione locale a 3.3V per cui la perfetta stabilità dei 5V non è indispensabile. Non fa comunque male mettere anche un elettrolitico 100..470µF 16V il più vicino possibile tra GND e 5V della WeMos.

bircastri:
grazias guys. Grazie mille quindi ricapitolando prendendo questa Wemos D1 mini, posso montarci il firmware che ho attualmente implementato per il mio arduino e collegarla direttamnete su questa shield rele.

Si, esatto, ma occhio alle differenze tra le WeMos e Arduino.
Non sono molte, ma devi comunque modificare il codice per i nomi dei pin, devi indicare ad esempio il pin digitale 10 con il simbolo D10 e non solo 10 (es. "pinMode(D10,OUTPUT);").

Arrivata ieri la shield. L ho subito montata e provato a sviluppare il firmware. Una cosa. Ho provato un semplice sketch dei blink dei rele.

Ho letto che questa ha 11 PIN digitali, ma posso configurarne solo 7 corretta come cosa ??? In buona sostanza, posso comandare solamente 7 rele ?

in buona sostanza, posso comandare solamente 7 rele ?

Perchè dici questo ?
Ci sono dei pin che al'accensione devono essere in un certo stato, ma non mi sembra questo il tuo caso

void setup() {
    Serial.begin(115200);
  // put your setup code here, to run once:
  pinMode(D0, OUTPUT);   
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);  
  pinMode(D4, OUTPUT);
  pinMode(D5, OUTPUT);
  pinMode(D6, OUTPUT);
  pinMode(D7, OUTPUT);
  pinMode(D8, OUTPUT);

  digitalWrite(D0, HIGH);
  digitalWrite(D1, HIGH);
  digitalWrite(D2, HIGH);
  digitalWrite(D3, HIGH);
  digitalWrite(D4, HIGH);
  digitalWrite(D5, HIGH);
  digitalWrite(D6, HIGH);
  digitalWrite(D7, HIGH);
  digitalWrite(D8, HIGH);

  Serial.println("setup terminato");
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(D0, HIGH);
  Serial.println("D0");
  delay(1000);
  
  digitalWrite(D1, HIGH);
  Serial.println("D1");
  delay(1000);
  
  digitalWrite(D2, HIGH);
  Serial.println("D2");
  delay(1000);
  
  digitalWrite(D3, HIGH);
  Serial.println("D3");
  delay(1000);
  
  digitalWrite(D4, HIGH);
  Serial.println("D4");
  delay(1000);
 
  digitalWrite(D5, HIGH);
  Serial.println("D5");
  delay(1000);
  
  digitalWrite(D6, HIGH);
  Serial.println("D6");
  delay(1000);
  
  digitalWrite(D7, HIGH);
  Serial.println("D7");
  delay(1000);
  
  digitalWrite(D8, HIGH);
  Serial.println("D8");
  delay(1000);



   digitalWrite(D0, LOW);
  
  delay(1000);
  digitalWrite(D1, LOW);
  
  delay(1000);
  digitalWrite(D2, LOW);
  
  delay(1000);
  digitalWrite(D3, LOW);
  
  delay(1000);
  digitalWrite(D4, LOW);
  
  delay(1000);
  digitalWrite(D5, LOW);
  
  delay(1000);
  digitalWrite(D6, LOW);
  
  delay(1000);
  digitalWrite(D7, LOW);
  
  delay(1000);
  digitalWrite(D8, LOW);
  delay(1000);
}

Ho scritto questo semplice codice per vedere se riesco a far accendere tutti i Rele. Ma riesco ad accenderne solo 7 di 8.
Probabile sbagli io qualcosa ?

vedo che attivi 9 uscite, quale pin sarebbe quello che non ti va' ?

D4 e D8, se ti può essere utile, quando carico lo sketch sulla relay shield IL Rele collegato al pin D4 blinca sempre

D4 deve funzionare
D8 ha il problema che all'accensione non puo' essere a livello HIGH ( come infatti è collegata alla scheda rele), altrimenti non fa' il Boot

confermo quanto detto il PIN d4 ed il pin d8 non vanno. Ti dirò di più provando a collegare un relè al PIN D8, sembra vedo sulla shield il led rosso ma il relè non scatta.

Ho provato a rimuovere dal codice nel setup il digitalPin HIGH al pin D8

Non credo di aver capito bene (non ho una D1 Mini sottomano altrimenti avrei provato, ho solo 2 D1 "vecchie"), ma nella documentazione c'è scritto:

D0 IO GPIO16
D1 IO, SCL GPIO5
D2 IO, SDA GPIO4
D3 IO, 10k Pull-up GPIO0
D4 IO, 10k Pull-up, BUILTIN_LED GPIO2
D5 IO, SCK GPIO14
D6 IO, MISO GPIO12
D7 IO, MOSI GPIO13
D8 IO, 10k Pull-down, SS GPIO15

Come vedi, D4 ha un pull-up, mentre D8 ha un pull-down. Se la scheda relè ha suoi pulldown questo dà problemi sicuramente (sicuro di non avere problemi anche con la D3?).
Il D8 non puoi usarlo, come ti ha detto giustamente brunello.

Quindi a mio avviso potresti usare A0 come uscita digitale al posto della D4, oppure se vuoi proprio usare D4, ti dovrebbe bastare mettere una piccola resistenza pullup (diciamo 1k non meno).

ecco probabilmente avete spiegato il problema. Quindi potrei provare ad utilizzare A0 faccio subito una prova.

vi ringrazio

Allora finalmente ci sono riuscito. In pratica l'errore principale era dovuto al tipo di shield che utilizzamo non D1 Mini ma D1. Adesso riesco a controllare i PIN 0 1 2 3 5 6 7.

Mi potresti dire come utilizzare come pin digitale il pin A0 ??? cosi sarei apposto

Per non generare confusione non dovresti usare il termine shield per qualsiasi scheda (io non capivo di cosa parlavi).

Le shield sono solo quelle che si innestano su Arduino UNO o Mega, come queste: shield relé e shield WiFi.

Tutte le altre sono solo schede, o hanno un loro nome (tipo WeMos, scheda relé optoisolati ecc).

Deve funzionare anche il D4

e il pin A0 è solo ADC. non è polivalente come su Arduino

brunello22:
Deve funzionare anche il D4

Dubito. :slight_smile: Da più parti lamentano problemi proprio tra WeMos (ESP) e le schede relè su quel pin, e la causa pare essere nel fatto che il D4 ha un suo pull-up interno da 10k e che quel GPIO2 è utilizzato in fase di boot.

Per usare D4 ho letto (non ho una WeMos D1 per fare la prova) che dovrebbe bastare mettere una resistenza pullup più piccola (diciamo 1k).

Per A0 hai ragione invece, è solo Analog input sul WeMos, per cui o mette la pullup

Cio' che dici, @DocDoc è corretto solo se lui usasse una scheda relè con ingresso a Bjt, ma visto che sta usando una scheda con ingresso su Opto, ( vedi disegno sotto ) il PullUp ( oltre che dalla resistenza da 10K saldata sulla Wemos ) è garantito anche dal tipo di ingresso della scheda relè
Quindi DEVE funzionare

fsq9akws.jpg