جدول المحتويات:

إنترنت الأشياء مع الشبكة الخلوية مع ESP32: 23 خطوة
إنترنت الأشياء مع الشبكة الخلوية مع ESP32: 23 خطوة

فيديو: إنترنت الأشياء مع الشبكة الخلوية مع ESP32: 23 خطوة

فيديو: إنترنت الأشياء مع الشبكة الخلوية مع ESP32: 23 خطوة
فيديو: تقنيات شبكات إنترنت الأشياء 1- إنترنت الأشياء (1-2) - ثاني ثانوي 2024, يوليو
Anonim
Image
Image
برهنة
برهنة

سنناقش اليوم مودم GPRS ، أو بالأحرى ESP32 واستخدامه مع شبكة الهاتف الخلوي. هذا شيء يعمل بشكل جيد جدا. باستخدام بروتوكول MQTT ، سنرسل البيانات بعد ذلك إلى لوحة معلومات Ubidots. استخدم في هذا التجميع شاشة لعرض ملاحظات الدائرة ، بالإضافة إلى SIM800L وشريحة الهاتف الخلوي. من خلال هذا المشروع ، سنرسل بيانات درجة الحرارة والرطوبة عبر GPRS و MQTT ، ونعرض البيانات في مخطط خطي.

الخطوة 1: العرض التوضيحي

الخطوة 2: التجميع

المجسم
المجسم

الخطوة 3: التجميع - الجدول

جدول التجميع
جدول التجميع

الخطوة 4: 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: / Users / \ Documents / Arduino / libraries / TFT_eSPI

قم بتغيير هذه الإعدادات الافتراضية إلى القيم التالية في الصورة.

الخطوة 10: Ubidots

أبيدوتس
أبيدوتس
أبيدوتس
أبيدوتس
أبيدوتس
أبيدوتس

سجّل الدخول إلى Ubidots باستخدام حسابك وانقر على الأجهزة

انقر فوق الزر "+" في الزاوية اليمنى العليا

انقر فوق فارغ

أدخل اسم الجهاز. لاحظ "تسمية الجهاز" ، حيث سيتم استخدامها في "الموضوع" الذي سنستخدمه في.ino

سيظهر الجهاز الذي أنشأته للتو في قائمة الأجهزة. انقر عليه.

في الشاشة التي تظهر ، انقر فوق "إضافة متغير". ستظهر نافذة منبثقة. انقر على "الخام".

انقر فوق مربع النص ، وأدخل اسم الخاصية.

يجب أن يكون بالضبط ما سنرسله في ملف json الخاص بـ.ino. كرر هذا للممتلكات الأخرى.

ارجع إلى لوحة القيادة بالنقر فوق شعار Ubidots.

في لوحة التحكم ، انقر فوق "إضافة أداة جديدة"

في قائمة الأدوات ، اختر "محور مزدوج"

الخطوة 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-abcdefghijklmnopqrstuv3" (esp32_gprs é o nome do dispitivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispitivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQERVER 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) ؛ مودم TinyGsmGSM (SerialGSM) ؛ TinyGsmClient gsmClient (modemGSM) ؛ // Cliente MQTT ، passamos ، url do server ، a porta // e o client GSM PubSubClient client (MQTT_SERVER ، MQTT_PORT ، gsmClient) ؛ // Tempo em que o último envio / تحديث foi feito uint32_t lastTime = 0 ؛ الرطوبة العائمة // Variável onde iremos armazenar o valor da umidade درجة حرارة الطفو ؛ // Variável onde iremos armazenar o valor da tematura SimpleDHT22 dht؛ // Objeto que realizará a leitura da umidade e temperature

الخطوة 14: الإعداد

إعداد باطل () {Serial.begin (115200) ؛ setupDisplay () ؛ // Inicializa e configura o عرض الإعداد GSM () ؛ // Inicializa e configura o مودم GSM connectMQTTServer () ؛ // Conectamos ao mqtt server // Espera 2 segundos e limpamos o تأخير العرض (2000) ؛ display.fillScreen (TFT_BLUE) ؛ display.setCursor (0، 0)؛ }

الخطوة 15: SetupDisplay

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 (صحيح ، صحيح) ؛ // Ativa quebra de linha display.setTextSize (1) ؛ display.setCursor (0، 0، 2) ؛ // Posicção x، y e fonte do texto display.println ("اكتمال عرض الإعداد") ؛ }

الخطوة 16: SetupGSM

إعداد باطلGSM () {display.println ("إعداد GSM…") ؛ // Inicializamos a series onde está o modem SerialGSM.begin (9600، SERIAL_8N1، 4، 2، false) ؛ تأخير (3000) ؛ // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()) ؛ // Inicializa o modem if (! modemGSM.restart ()) {display.println ("فشل إعادة تشغيل مودم GSM") ؛ تأخير (10000) ؛ ESP.restart () ، إرجاع؛ } // Espera pela rede if (! modemGSM.waitForNetwork ()) {display.println ("Failed to connect to network")؛ تأخير (10000) ؛ ESP.restart () ، إرجاع؛ } // Conecta à rede gprs (APN، usuário، senha) if (! modemGSM.gprsConnect (""، ""، "")) {display.println ("فشل اتصال GPRS") ؛ تأخير (10000) ؛ ESP.restart () ، إرجاع؛ } display.println ("Setup GSM Success")؛ }

الخطوة 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("الاتصال بخادم MQTT …") ؛ // Se conecta ao 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 (client.state ()) ؛ تأخير (10000) ؛ ESP.restart () ، }}

الخطوة 18: التكرار

حلقة باطلة () {// Faz a leitura da umidade e temperatura readDHT () ؛ // Se desconectou do server MQTT if (! client.connected ()) {// Mandamos conectar connectMQTTServer () ؛ } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis ()؛ // Se passou o interalo de envio if (now - lastTime> INTERVAL) {// Publicamos para o server mqtt publishMQTT () ؛ // Mostramos os dados no display showDataOnDisplay () ؛ // Atualizamos o tempo em que foi feito o último envio lastTime = now؛ }}

الخطوة 19: ReadDHT

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) {temperature = t؛ الرطوبة = ح ؛ }}

الخطوة 20: انشر MQTT

النشر باطل MQTT () {// 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 (TOPIC، msg.c_str ()) ؛ Serial.println ("الحالة:" + سلسلة (الحالة)) ؛ // الحالة 1 se sucesso ou 0 se deu erro}

الخطوة 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {String data = "{"؛ إذا كانت (! isnan (الرطوبة) &&! isnan (درجة الحرارة)) {data + = "\" humidity / ":"؛ البيانات + = الخيط (الرطوبة ، 2) ؛ البيانات + = "،" ؛ البيانات + = "\" درجة الحرارة / ":" ؛ البيانات + = سلسلة (درجة الحرارة ، 2) ؛ } البيانات + = "}" ؛ عودة البيانات }

الخطوة 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reseta a posição do cursor e mostra umidade e temperature lidas display.setCursor (0، 0، 2)؛ display.println ("الرطوبة:" + سلسلة (الرطوبة ، 2)) ؛ display.println ("درجة الحرارة:" + سلسلة (درجة حرارة ، 2)) ؛ }

الخطوة 23: الملفات

قم بتنزيل الملفات

انا لا

بي دي إف

موصى به: