Inhoudsopgave:

IOT met mobiel netwerk met ESP32 - Ajarnpa
IOT met mobiel netwerk met ESP32 - Ajarnpa

Video: IOT met mobiel netwerk met ESP32 - Ajarnpa

Video: IOT met mobiel netwerk met ESP32 - Ajarnpa
Video: Connect ESP32 to WiFi - ESP32 Beginner's Guide 2024, Juli-
Anonim
Image
Image
Demonstratie
Demonstratie

Vandaag zullen we het hebben over de GPRS-modem, of beter gezegd, de ESP32 en het gebruik ervan met het mobiele telefoonnetwerk. Dit is iets dat heel goed werkt. Met behulp van het MQTT-protocol sturen we vervolgens gegevens naar het Ubidots-dashboard. Gebruik in deze assembly een display voor feedback van het circuit, naast de SIM800L en een mobiele telefoonchip. Met dit project zullen we daarom temperatuur- en vochtigheidsgegevens via GPRS en MQTT verzenden en de gegevens visualiseren in een lijndiagram.

Stap 1: Demonstratie

Stap 2: Montage

samenkomst
samenkomst

Stap 3: Montage - Tafel

Montage - Tafel
Montage - Tafel

Stap 4: Ubidots

Ubidots
Ubidots

Stap 5: SimpleDHT-bibliotheek

SimpleDHT-bibliotheek
SimpleDHT-bibliotheek

Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …

Installeer SimpleDHT

Stap 6: PubSubClient-bibliotheek

PubSubClient-bibliotheek
PubSubClient-bibliotheek

Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …

Installeer PubSubClient

Stap 7: TinyGSM-bibliotheek

TinyGSM-bibliotheek
TinyGSM-bibliotheek

Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …

Installeer TinyGSM

Stap 8: TFT_eSPI-bibliotheek

TFT_eSPI-bibliotheek
TFT_eSPI-bibliotheek

Ga in de Arduino IDE naar Sketch-> Include Library-> Manage Libraries …

Installeer TFT_eSPI

Stap 9: TFT_eSPI-bibliotheek

TFT_eSPI-bibliotheek
TFT_eSPI-bibliotheek

Wijzig de weergavepinnen in de lib-map.

Het vastzetten bevindt zich in het User_Setup.h-bestand in

C: / Users / \ Documents / Arduino / libraries / TFT_eSPI

Wijzig deze standaardwaarden in de volgende waarden in de afbeelding.

Stap 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Log in op Ubidots met uw account en klik op Apparaten

Klik op de "+" knop in de rechterbovenhoek

Klik op Leeg

Voer de apparaatnaam in. Let op het "apparaatlabel", aangezien dit zal worden gebruikt in het "onderwerp" dat we zullen gebruiken in.ino

In de lijst met apparaten verschijnt het apparaat dat u zojuist hebt gemaakt. Klik erop.

Klik op het scherm dat verschijnt op 'Variabele toevoegen'. Er verschijnt een pop-up. Klik op "Rauw".

Klik op het tekstvak en voer de naam van de eigenschap in.

Het moet precies zijn wat we in de json van de.ino zullen sturen. Herhaal dit voor de andere eigenschap.

Ga terug naar het dashboard door op het Ubidots-logo te klikken.

Klik in het dashboard op "Nieuwe widget toevoegen"

Kies in de lijst met widgets "Dubbele as"

Stap 11: De gegevens wijzigen in.ino

De gegevens in.ino. wijzigen
De gegevens in.ino. wijzigen
De gegevens in.ino. wijzigen
De gegevens in.ino. wijzigen

Stap 12: GPRS_ESP32_DHT.ino - Declaraties en variabelen

GPRS_ESP32_DHT.ino - Declaraties en variabelen
GPRS_ESP32_DHT.ino - Declaraties en variabelen

#define TINY_GSM_MODEM_SIM800 //Gebruiksmodem #include #include #include #include #include //Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" //define TINY_GSM_MODEM_SIM800 (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" //id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" //URLdefine MTTVER_SERL define MTTQ_SERL define MTTQ_SERL mqtt://things.ubidots.com" //Porta padrão do MQTT #define MQTT_PORT 1883 //Pino onde está o DHT22 #define DHT_PIN 27

Stap 13: Vastzetten

Vastzetten
Vastzetten

//Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI(); //Interval entre os envios e refresh da tela #define INTERVAL 10000 //Canal serial que vamos usar para comunicarmos com o modem. Gebruik semper 1 HardwareSerial SerialGSM(1); TinyGsm-modemGSM (SerialGSM); TinyGsmClient gsmClient(modemGSM); // Client MQTT, passamos een url do-server, een porta //e o cliente GSM PubSubClient-client (MQTT_SERVER, MQTT_PORT, gsmClient); //Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; vlotter vochtigheid; //Variável onde iremos armazenar o valor da umidade float-temperatuur; //Variável onde iremos armazenar of valor da temperatura SimpleDHT22 dht; //Objeto que realizará a leitura da umidade e temperatura

Stap 14: Instellen

void setup() { Serial.begin(115200); setupDisplay(); //Inicializa e configura o display setupGSM(); //Initialiseren en configureren van modem GSM connectMQTTServer(); //Conectamos oa mqtt-server // Espera 2 segundos en limpamos o weergavevertraging (2000); display.fillScreen(TFT_BLUE); display.setCursor(0, 0); }

Stap 15: Display instellen

void setupDisplay(){ display.init(); display.setRotatie(1); display.fillScreen(TFT_BLUE); //Limpa of display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); //Coloca of texto como branco com fundo azul display.setTextWrap (true, true);//Ativa quebra de linha display.setTextSize(1); display.setCursor(0, 0, 2); //Posicção x, y e fonte do texto display.println ("Setup Display Complete"); }

Stap 16: GSM instellen

void setupGSM(){ display.println("Setup GSM…"); //Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); vertraging (3000); //Mostra informação sobre o modem Serial.println(modemGSM.getModemInfo()); //Inicializa o modem if (!modemGSM.restart()) { display.println ("Herstarten van GSM-modem mislukt"); vertraging (10000); ESP.herstart(); opbrengst; } //Espera pela rede if (!modemGSM.waitForNetwork()) { display.println("Kan geen verbinding maken met netwerk"); vertraging (10000); ESP.herstart(); opbrengst; } //Conecta à rede gprs (APN, usuário, senha) if (!modemGSM.gprsConnect("", "", "")) { display.println("GPRS-verbinding mislukt"); vertraging (10000); ESP.herstart(); opbrengst; } display.println("Setup GSM succesvol"); }

Stap 17: ConnectMQTTServer

void connectMQTTServer() { display.println("Verbinding maken met MQTT Server…"); //Se conecta oa device que definimos if (client.connect(DEVICE_ID, TOKEN, "")) { //Se a conexão foi bem sucedida display.println("Connected"); } else { //Se ocorreu algum erro display.print("error = "); display.println(klant.staat()); vertraging (10000); ESP.herstart(); } }

Stap 18: Loop

void loop() {//Faz a leitura da umidade e temperatura readDHT(); //Se desconectou doen server MQTT if (!client.connected()) { //Mandamos sluit aan op connectMQTTServer(); } //Tempo decorrido desde o boot em milissegundos unsigned long now = millis(); //Se passou o intervalo de envio if (nu - lastTime > INTERVAL) {//Publicamos para o server mqtt publishMQTT(); //Mostramos zonder weergave showDataOnDisplay(); //Atualizamos o tempo em que foi feito o último envio lastTime = nu; } }

Stap 19: LeesDHT

void readDHT(){ float t, h; //Faz a leitura da umidade e temperatura e apenas atualiza as variáveis se foi bem sucedido if (dht.read2(DHT_PIN, &t, &h, NULL) == SimpleDHTERrSuccess) { temperatuur = t; vochtigheid = uur; } }

Stap 20: PublishMQTT

void publishMQTT() {//Cria o json que iremos enviar para o server MQTT String msg = createJsonString(); Serial.print("Publiceer bericht: "); Serial.println(msg); //Publicamos no tópico int status = client.publish (TOPIC, msg.c_str()); Serial.println ("Status: " + String (status));//Status 1 volgt op 0 volgende fout }

Stap 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString() { String data = "{"; if(!isnan(vochtigheid) && !isnan(temperatuur)) { data+="\"vochtigheid\":"; data+=String(vochtigheid, 2); gegevens+=", "; data+="\"temperatuur\":"; data+=String(temperatuur, 2); } gegevens+="}"; gegevens retourneren; }

Stap 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reset een positie van de cursor en de meeste temperatuur en lidas display.setCursor (0, 0, 2); display.println ("Vochtigheid: " + String (vochtigheid, 2)); display.println ("Temperatuur: " + String (temperatuur, 2)); }

Stap 23: Bestanden

Download de bestanden

INO

PDF

Aanbevolen: