Programming help NodeMCU ESP8266
Posted: Sun Jan 26, 2020 10:03 am
Hello everyone!
I would like to carry out a project with my NodeMCU ESP8266 with 4 relays and 4 verification LEDs, in the sense of programming the ESP with Adafruit's MQTT protocol to control 4 relays and also associated with a status LED. Compiled everything and loaded in the esp does not go
I put below the code I used:
I hope you can help me
I also attach the photo of the project:
I would like to carry out a project with my NodeMCU ESP8266 with 4 relays and 4 verification LEDs, in the sense of programming the ESP with Adafruit's MQTT protocol to control 4 relays and also associated with a status LED. Compiled everything and loaded in the esp does not go
I put below the code I used:
Code: Select all
/*
Questo script è stato creato da Francesco Lombardo
e serve per poter comandare 4 Relè grazie al NodeMCU 1.0 (ESP8266 ESP-12E) e AdaFruit.io
che è un server MQTT OnLine al quale ci si può registrare
andando all'indirizzo: https://io.adafruit.com/
I pin utilizzati per attivare i relè sono i numeri 5,4,0,2 che corrispondono
sulla scheda a D1,D2,D3,D4 ed inoltre sono stati associato anche dei pin per
attivare dei led per verificarne lo stato di attivazione dei relè, ed i pin
utilizzati per i LED sono: 14,12,13,15 che corrispondono sull scheda a D5,D6,D7,D8.
Ho anche associato il servizio AdaFruit a IFTTT e GoogleAssistant per poter comandare
i Relè ache a distanza usando la voce
*/
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#define RELE_1 05 //Numero del 1^ pin di attivazione che comanda il relè 1
#define RELE_2 04 //Numero del 1^ pin di attivazione che comanda il relè 2
#define RELE_3 00 //Numero del 1^ pin di attivazione che comanda il relè 3
#define RELE_4 02 //Numero del 1^ pin di attivazione che comanda il relè 4
#define PIN_LED1 14 //Numero di pin del LED di identificazione attivazione del 1^ rele
#define PIN_LED2 12 //Numero di pin del LED di identificazione attivazione del 2^ rele
#define PIN_LED3 13 //Numero di pin del LED di identificazione attivazione del 3^ rele
#define PIN_LED4 15 //Numero di pin del LED di identificazione attivazione del 4^ rele
#define WLAN_SSID "NOME WIFI" //Nome del WiFi
#define WLAN_PASS "PASSWORD WIFI" //La password della connessione wifi
#define AIO_SERVER "io.adafruit.com" //Indirizzo del server MQTT
#define AIO_SERVERPORT 1883 //per il protocollo SSL usare la porta 8883
#define AIO_USERNAME "NOME UTENTE" //Username creato su Adafruit
#define AIO_KEY "PRIVATE KEY DI ADAFRUIT" //IO_key creata su Adafruit
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Subscribe Rele_1Feed = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/RELE_1"); //"RELE_1" è il nome del feed creato sul sito adafruit
Adafruit_MQTT_Subscribe Rele_2Feed = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/RELE_2"); //"RELE_2" è il nome del feed creato sul sito adafruit
Adafruit_MQTT_Subscribe Rele_3Feed = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/RELE_3"); //"RELE_3" è il nome del feed creato sul sito adafruit
Adafruit_MQTT_Subscribe Rele_4Feed = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/RELE_4"); //"RELE_4" è il nome del feed creato sul sito adafruit
void MQTT_connect();
void setup() {
Serial.begin(115200);
delay(10);
pinMode(RELE_1, OUTPUT);
pinMode(RELE_2, OUTPUT);
pinMode(RELE_3, OUTPUT);
pinMode(RELE_4, OUTPUT);
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
pinMode(PIN_LED3, OUTPUT);
pinMode(PIN_LED4, OUTPUT);
digitalWrite(RELE_1, LOW);
digitalWrite(RELE_2, LOW);
digitalWrite(RELE_3, LOW);
digitalWrite(RELE_4, LOW);
digitalWrite(PIN_LED1, LOW);
digitalWrite(PIN_LED2, LOW);
digitalWrite(PIN_LED3, LOW);
digitalWrite(PIN_LED4, LOW);
Serial.println(); Serial.println();
Serial.print("Connessione alla rete Wi-FI ");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("*");
}
Serial.println();
Serial.println("Wi-FI Connesso!");
Serial.println("IP del modulo ESP8266 : ");
Serial.println(WiFi.localIP());
mqtt.subscribe(&Rele_1Feed);
mqtt.subscribe(&Rele_2Feed);
mqtt.subscribe(&Rele_3Feed);
mqtt.subscribe(&Rele_4Feed);
}
uint32_t x=0;
void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &Rele_1Feed)
if (subscription == &Rele_2Feed)
if (subscription == &Rele_3Feed)
if (subscription == &Rele_4Feed) {
Serial.print(F("Dati ricevuti : "));
Serial.println((char *)Rele_1Feed.lastread);
Serial.println((char *)Rele_2Feed.lastread);
Serial.println((char *)Rele_3Feed.lastread);
Serial.println((char *)Rele_4Feed.lastread);
digitalWrite(RELE_1, (int)Rele_1Feed.lastread);
digitalWrite(RELE_2, (int)Rele_2Feed.lastread);
digitalWrite(RELE_3, (int)Rele_3Feed.lastread);
digitalWrite(RELE_4, (int)Rele_4Feed.lastread);
if(!strcmp((char *)Rele_1Feed.lastread, "RELE1_ON")) Attiva_rele_1();
if(!strcmp((char *)Rele_1Feed.lastread, "RELE1_OFF")) Disattiva_rele_1();
if(!strcmp((char *)Rele_2Feed.lastread, "RELE2_ON")) Attiva_rele_2();
if(!strcmp((char *)Rele_2Feed.lastread, "RELE2_OFF")) Disattiva_rele_2();
if(!strcmp((char *)Rele_3Feed.lastread, "RELE3_ON")) Attiva_rele_3();
if(!strcmp((char *)Rele_3Feed.lastread, "RELE3_OFF")) Disattiva_rele_3();
if(!strcmp((char *)Rele_4Feed.lastread, "RELE4_ON")) Attiva_rele_4();
if(!strcmp((char *)Rele_4Feed.lastread, "RELE4_OFF")) Disattiva_rele_4();
}
}
if(! mqtt.ping()) {
mqtt.disconnect();
}
}
void Attiva_rele_1() {
digitalWrite(RELE_1, HIGH);
digitalWrite(PIN_LED1, HIGH);
}
void Attiva_rele_2() {
digitalWrite(RELE_2, HIGH);
digitalWrite(PIN_LED2, HIGH);
}
void Attiva_rele_3() {
digitalWrite(RELE_3, HIGH);
digitalWrite(PIN_LED3, HIGH);
}
void Attiva_rele_4() {
digitalWrite(RELE_4, HIGH);
digitalWrite(PIN_LED4, HIGH);
}
void Disattiva_rele_1() {
digitalWrite(RELE_1, LOW);
digitalWrite(PIN_LED1, LOW);
}
void Disattiva_rele_2() {
digitalWrite(RELE_2, LOW);
digitalWrite(PIN_LED2, LOW);
}
void Disattiva_rele_3() {
digitalWrite(RELE_3, LOW);
digitalWrite(PIN_LED3, LOW);
}
void Disattiva_rele_4() {
digitalWrite(RELE_4, LOW);
digitalWrite(PIN_LED4, LOW);
}
void MQTT_connect() {
int8_t ret;
if (mqtt.connected()) {
return;
}
Serial.print("Connessione al server MQTT... ");
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) {
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Tentativo di connessione tra 5 secondi...");
mqtt.disconnect();
delay(5000);
retries--;
if (retries == 0) {
while (1);
}
}
Serial.println("MQTT connesso!");
}
I hope you can help me
I also attach the photo of the project: