Isi kandungan:

IOT Dengan Rangkaian Selular Dengan ESP32: 23 Langkah
IOT Dengan Rangkaian Selular Dengan ESP32: 23 Langkah

Video: IOT Dengan Rangkaian Selular Dengan ESP32: 23 Langkah

Video: IOT Dengan Rangkaian Selular Dengan ESP32: 23 Langkah
Video: LED Control using Web Server - ESP32 (IoT project) 2024, Julai
Anonim
Image
Image
Demonstrasi
Demonstrasi

Hari ini kita akan membincangkan mengenai modem GPRS, atau lebih tepatnya, ESP32 dan penggunaannya dengan rangkaian telefon bimbit. Ini adalah sesuatu yang berfungsi dengan baik. Dengan menggunakan protokol MQTT, kami kemudian akan mengirim data ke papan pemuka Ubidots. Gunakan paparan ini untuk mendapatkan maklum balas rangkaian, selain SIM800L dan cip telefon bimbit. Oleh itu, dengan projek ini, kami akan menghantar data suhu dan kelembapan melalui GPRS dan MQTT, dan memvisualisasikan data dalam carta garis.

Langkah 1: Demonstrasi

Langkah 2: Perhimpunan

perhimpunan
perhimpunan

Langkah 3: Perhimpunan - Jadual

Perhimpunan - Jadual
Perhimpunan - Jadual

Langkah 4: Ubidots

Ubidots
Ubidots

Langkah 5: Perpustakaan SimpleDHT

Perpustakaan SimpleDHT
Perpustakaan SimpleDHT

Dalam Arduino IDE, pergi ke Sketch-> Include Library-> Manage Libraries…

Pasang SimpleDHT

Langkah 6: Perpustakaan PubSubClient

Perpustakaan PubSubClient
Perpustakaan PubSubClient

Di Arduino IDE, pergi ke Sketch-> Include Library-> Manage Libraries…

Pasang PubSubClient

Langkah 7: Perpustakaan TinyGSM

Perpustakaan TinyGSM
Perpustakaan TinyGSM

Dalam Arduino IDE, pergi ke Sketch-> Include Library-> Manage Libraries…

Pasang TinyGSM

Langkah 8: Perpustakaan TFT_eSPI

Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI

Di Arduino IDE, pergi ke Sketch-> Include Library-> Manage Libraries…

Pasang TFT_eSPI

Langkah 9: Perpustakaan TFT_eSPI

Perpustakaan TFT_eSPI
Perpustakaan TFT_eSPI

Tukar pin paparan di folder lib.

Penyematan berada dalam fail User_Setup.h di

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

Tukar lalai ini ke nilai berikut dalam gambar.

Langkah 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Log masuk ke Ubidots dengan akaun anda dan klik pada Peranti

Klik butang "+" di sudut kanan atas

Klik Kosong

Masukkan nama peranti. Perhatikan "label peranti", kerana ini akan digunakan dalam "topik" yang akan kita gunakan di.ino

Dalam senarai peranti, peranti yang baru anda buat akan muncul. Klik padanya.

Pada layar yang muncul, klik "Tambah Pemboleh Ubah." Munculan akan muncul. Klik "Raw."

Klik kotak teks, dan masukkan nama harta tanah.

Ia mesti tepat seperti apa yang akan kami kirimkan di json theino. Ulangi ini untuk harta tanah yang lain.

Kembali ke papan pemuka dengan mengklik logo Ubidots.

Di papan pemuka, klik "Tambah Widget baru"

Dalam senarai Widget, pilih "Paksi berganda"

Langkah 11: Menukar Data dalam.ino

Menukar Data dalam.ino
Menukar Data dalam.ino
Menukar Data dalam.ino
Menukar Data dalam.ino

Langkah 12: GPRS_ESP32_DHT.ino - Pernyataan dan Pemboleh ubah

GPRS_ESP32_DHT.ino - Pernyataan dan Pemboleh ubah
GPRS_ESP32_DHT.ino - Pernyataan dan Pemboleh ubah

#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-abcdefghijklmnopqrstuvwxyz0bos" (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" // URL do MQT mqtt: //things.ubidots.com "// Porta padrão do MQTT # tentukan MQTT_PORT 1883 // Pino onde está o DHT22 # tentukan DHT_PIN 27

Langkah 13: Menyematkan

Menyematkan
Menyematkan

// 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. Gunakan semper 1 HardwareSerial SerialGSM (1); TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passamos a url do server, porta // e o client GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / refresh foi feito uint32_t lastTime = 0; kelembapan apungan; // Suhu apungan Variável onde iremos armazenar o valor da umidade; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura

Langkah 14: Persediaan

persediaan tidak sah () {Serial.begin (115200); persediaanDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa e configura o modem GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

Langkah 15: SetupDisplay

batal 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 ("Persediaan Paparan Lengkap"); }

Langkah 16: PersediaanGSM

batal setupGSM () {display.println ("Persediaan GSM …"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); kelewatan (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Memulakan semula Modem GSM gagal"); kelewatan (10000); ESP.mulakan semula (); kembali; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("Gagal menyambung ke rangkaian"); kelewatan (10000); ESP.mulakan semula (); kembali; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Sambungan GPRS Gagal"); kelewatan (10000); ESP.mulakan semula (); kembali; } display.println ("Menetapkan Kejayaan GSM"); }

Langkah 17: ConnectMQTTServer

batal connectMQTTServer () {display.println ("Menyambung ke Pelayan MQTT …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se conexão juga bem sucedida display.println ("Connected"); } lain {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); kelewatan (10000); ESP.mulakan semula (); }}

Langkah 18: Gelung

gelung kosong () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconectou do MQTT server sekiranya (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos sudah lama tidak ditandatangani = millis (); // Se passou o interalo de envio if (now - LastTime> INTERVAL) {// Publicamos para o server mqtt publishMQTT (); // Mostramos os dados no show showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = sekarang; }}

Langkah 19: BacaDHT

batal bacaDHT () {float t, h; // Faz a leitura da umidade e temperatura e apenas atualiza sebagai variáveis se foi bem sucedido if (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {suhu = t; kelembapan = h; }}

Langkah 20: TerbitkanMQTT

batal terbitkanMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Terbitkan mesej:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Status 1 se sucesso ou 0 se deu erro}

Langkah 21: CreateJsonString

BuatJsonString
BuatJsonString

String createJsonString () {String data = "{"; jika (! isnan (kelembapan) &&! isnan (suhu)) {data + = "\" kelembapan / ":"; data + = Rentetan (kelembapan, 2); data + = ","; data + = "\" suhu / ":"; data + = Rentetan (suhu, 2); } data + = "}"; mengembalikan data; }

Langkah 22: ShowDataOnDisplay

batal showDataOnDisplay () {// Reset a posição do kursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Kelembapan:" + Rentetan (kelembapan, 2)); display.println ("Suhu:" + Rentetan (suhu, 2)); }

Langkah 23: Fail

Muat turun fail

INO

PDF

Disyorkan: