Πίνακας περιεχομένων:

IOT Με δίκτυο κινητής τηλεφωνίας με ESP32: 23 βήματα
IOT Με δίκτυο κινητής τηλεφωνίας με ESP32: 23 βήματα

Βίντεο: IOT Με δίκτυο κινητής τηλεφωνίας με ESP32: 23 βήματα

Βίντεο: IOT Με δίκτυο κινητής τηλεφωνίας με ESP32: 23 βήματα
Βίντεο: Πώς να παρακολουθήσετε και να ελέγξετε το ESP32 από οπουδήποτε στον κόσμο με το RemoteXY IoT Cloud 2024, Ιούλιος
Anonim
Image
Image
Επίδειξη
Επίδειξη

Σήμερα θα συζητήσουμε για το μόντεμ GPRS, ή μάλλον, το ESP32 και τη χρήση του με το δίκτυο κινητής τηλεφωνίας. Αυτό είναι κάτι που λειτουργεί πολύ καλά. Χρησιμοποιώντας το πρωτόκολλο MQTT, στη συνέχεια θα στείλουμε δεδομένα στον πίνακα ελέγχου του Ubidots. Χρησιμοποιήστε σε αυτό το συγκρότημα μια οθόνη για ανατροφοδότηση του κυκλώματος, επιπλέον του SIM800L και ένα τσιπ κινητού τηλεφώνου. Με αυτό το έργο, επομένως, θα στείλουμε δεδομένα θερμοκρασίας και υγρασίας μέσω GPRS και MQTT και θα απεικονίσουμε τα δεδομένα σε ένα γράφημα γραμμών.

Βήμα 1: Επίδειξη

Βήμα 2: Συναρμολόγηση

Συνέλευση
Συνέλευση

Βήμα 3: Συναρμολόγηση - Πίνακας

Συναρμολόγηση - Τραπέζι
Συναρμολόγηση - Τραπέζι

Βήμα 4: Ubidots

Ubidots
Ubidots

Βήμα 5: Βιβλιοθήκη SimpleDHT

Βιβλιοθήκη SimpleDHT
Βιβλιοθήκη SimpleDHT

Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…

Εγκαταστήστε το SimpleDHT

Βήμα 6: Βιβλιοθήκη PubSubClient

Βιβλιοθήκη PubSubClient
Βιβλιοθήκη PubSubClient

Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…

Εγκαταστήστε το PubSubClient

Βήμα 7: Βιβλιοθήκη TinyGSM

Βιβλιοθήκη TinyGSM
Βιβλιοθήκη TinyGSM

Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…

Εγκαταστήστε το TinyGSM

Βήμα 8: Βιβλιοθήκη TFT_eSPI

Βιβλιοθήκη TFT_eSPI
Βιβλιοθήκη TFT_eSPI

Στο Arduino IDE, μεταβείτε στο Sketch-> Include Library-> Manage Libraries…

Εγκαταστήστε το TFT_eSPI

Βήμα 9: Βιβλιοθήκη TFT_eSPI

Βιβλιοθήκη TFT_eSPI
Βιβλιοθήκη TFT_eSPI

Αλλάξτε τις καρφίτσες της οθόνης στο φάκελο lib.

Η καρφίτσα βρίσκεται στο αρχείο User_Setup.h στο

C: / Χρήστες / \ Έγγραφα / Arduino / βιβλιοθήκες / TFT_eSPI

Αλλάξτε αυτές τις προεπιλογές στις ακόλουθες τιμές στην εικόνα.

Βήμα 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Συνδεθείτε στο Ubidots με το λογαριασμό σας και κάντε κλικ στο Devices

Κάντε κλικ στο κουμπί "+" στην επάνω δεξιά γωνία

Κάντε κλικ στην επιλογή Κενό

Εισαγάγετε το όνομα της συσκευής. Σημειώστε την "ετικέτα συσκευής", καθώς αυτή θα χρησιμοποιηθεί στο "θέμα" που θα χρησιμοποιήσουμε στο.ino

Στη λίστα των συσκευών, θα εμφανιστεί η συσκευή που μόλις δημιουργήσατε. Κάντε κλικ σε αυτό.

Στην οθόνη που εμφανίζεται, κάντε κλικ στο "Προσθήκη μεταβλητής". Θα εμφανιστεί ένα αναδυόμενο παράθυρο. Κάντε κλικ στο "Raw".

Κάντε κλικ στο πλαίσιο κειμένου και εισαγάγετε το όνομα της ιδιότητας.

Πρέπει να είναι ακριβώς αυτό που θα στείλουμε στο json του.ino. Επαναλάβετε αυτό για την άλλη ιδιότητα.

Επιστρέψτε στον πίνακα ελέγχου κάνοντας κλικ στο λογότυπο Ubidots.

Στον πίνακα ελέγχου, κάντε κλικ στο "Προσθήκη νέου γραφικού στοιχείου"

Στη λίστα Widgets, επιλέξτε "Διπλός άξονας"

Βήμα 11: Αλλαγή δεδομένων στο.ino

Αλλαγή των δεδομένων σε.ino
Αλλαγή των δεδομένων σε.ino
Αλλαγή των δεδομένων σε.ino
Αλλαγή των δεδομένων σε.ino

Βήμα 12: GPRS_ESP32_DHT.ino - Δηλώσεις και μεταβλητές

GPRS_ESP32_DHT.ino - Δηλώσεις και μεταβλητές
GPRS_ESP32_DHT.ino - Δηλώσεις και μεταβλητές

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

Βήμα 13: Καρφίτσωμα

Καρφίτσωμα
Καρφίτσωμα

// Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com o modem. Χρησιμοποιήστε το semper 1 HardwareSerial SerialGSM (1). TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passamos a url do server, 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; υγρασία πλωτήρα? // Variável onde iremos armazenar o valor da umidade float temperature? // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura

Βήμα 14: Ρύθμιση

void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Εγκατάσταση και διαμόρφωση του μόντεμ GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000)? display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Βήμα 15: SetupDisplay

void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpa o display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o 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"); }

Βήμα 16: SetupGSM

void setupGSM () {display.println ("Ρύθμιση GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); καθυστέρηση (3000)? // Περισσότερες πληροφορίες για το μόντεμ Serial.println (modemGSM.getModemInfo ()); // Inicializa ή modem if (! ModemGSM.restart ()) {display.println ("Η επανεκκίνηση του μόντεμ GSM απέτυχε"); καθυστέρηση (10000)? ESP.restart (); ΕΠΙΣΤΡΟΦΗ; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Αποτυχία σύνδεσης στο δίκτυο"); καθυστέρηση (10000)? ESP.restart (); ΕΠΙΣΤΡΟΦΗ; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Αποτυχία σύνδεσης GPRS"); καθυστέρηση (10000)? ESP.restart (); ΕΠΙΣΤΡΟΦΗ; } display.println ("Επιτυχία εγκατάστασης GSM"); }

Βήμα 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("Σύνδεση σε διακομιστή MQTT …"); // Μπορείτε να συνδέσετε τη συσκευή σας οριστικά εάν (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 (client.state ()); καθυστέρηση (10000)? ESP.restart (); }}

Βήμα 18: Βρόχος

void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Σχετικά με τον διακομιστή MQTT εάν (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Se passou o intervalo de envio if (now - lastTime> INTERVAL) {// Publicamos para o server mqtt publishedMQTT (); // Mostramos os dados χωρίς εμφάνιση showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = τώρα; }}

Βήμα 19: ReadDHT

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) {θερμοκρασία = t; υγρασία = h? }}

Βήμα 20: PublishMQTT

void publishedMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Δημοσίευση μηνύματος:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (ΘΕΜΑ, msg.c_str ()); Serial.println ("Status:" + String (status)); // Status 1 se sucesso ou 0 se deu erro}

Βήμα 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"; εάν (! isnan (υγρασία) &&! isnan (θερμοκρασία)) {data+= "\" υγρασία / ":"; δεδομένα+= συμβολοσειρά (υγρασία, 2); δεδομένα+= ","; δεδομένα+= "\" θερμοκρασία / ":"; δεδομένα+= συμβολοσειρά (θερμοκρασία, 2); } data+= "}"; επιστροφή δεδομένων? }

Βήμα 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Υγρασία:" + Χορδή (υγρασία, 2)); display.println ("Θερμοκρασία:" + Χορδή (θερμοκρασία, 2)); }

Βήμα 23: Αρχεία

Κατεβάστε τα αρχεία

ΕΓΩ ΔΕΝ

PDF

Συνιστάται: