جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
في هذا التجميع ، لدينا بطاقة SD متصلة بـ ESP8266. نضع DHT22 ، الذي يقيس درجة الحرارة والرطوبة ويرسل هذه المعلومات إلى بطاقة SD.
في الدائرة ، تظهر الرطوبة 43.40 ودرجة الحرارة 26.80. في كل مرة تظهر فيها الرسالة "فتح الملف بنجاح" ، يكون ذلك بسبب تشغيلها مرة واحدة في الحلقة. ما يحدث في هذا السيناريو هو كما يلي: تتم كتابة القيم فقط في ملف السجل ، وبالتالي ، فإن رسالة "فتح الملف بنجاح" ليست سوى رسالة استشارية ، ولا يتم تسجيلها.
الخطوة 1: WiFi ESP8266 NodeMcu ESP-12E
نحن هنا بالتفصيل المكون الذي نستخدمه ، في هذه الحالة NodeMCU ESP12 ، جنبًا إلى جنب مع ورقة البيانات الخاصة بهذا الجهاز.
الخطوة الثانية: مستشعر الرطوبة
في التسلسل ، أعرض تفاصيل حول هذا المكون الآخر ، DHT22 ، مع التثبيت الخاص به.
الخطوة 3: وحدة بطاقة SD
هذه هي وحدة بطاقة SD الخاصة بنا. كما ترون من pinout ، فإنه مع اتصال SPI.
الخطوة 4: التجميع
يعتمد مخطط التجميع على القارئ DHT22 و NodeMCU ESP12. اخترت هذا الأخير لأنه يحتاج إلى قدر معقول من IOs. وبالتالي ، فإن ESP01 سيعمل أيضًا لهذا التجميع.
الخطوة 5: المكتبات
بالنسبة لهذا التجميع ، تحتاج إلى مكتبة DHT الخاصة بـ Arduino IDE نفسها. ما عليك سوى الانتقال إلى "Sketch> Include Library> Manage Libraries" أثناء تنزيل DHT. عليك أن تفعل الشيء نفسه لمكتبة SD.
الخطوة 6: كود المصدر
الكود المصدري المستخدم في التجميع بسيط ، وهو فقط لإظهار أن بطاقة SD قيد التشغيل. يجب عليك إدخال كل التعقيد لاحقًا ، ولكن يمكنك استخدام ميزات أخرى لا حصر لها. ومع ذلك ، هذا لا ينطبق على هذا المثال.
// biblioteca responsável pela comunicação com o Cartão SD # include // biblioteca responsável pela comunicação com o sensor DHT22 #include // pino de dados do DHT será ligado no D6 do esp #define DHTPIN D2 // tipo do sensor #define DHTTYPE // المورِّد يفعل objeto para comunicar com o sensor DHT dht (DHTPIN ، DHTTYPE) ؛ // pino ligado ao CS do módulo SD Card #define CS_PIN D8 ؛
اقامة
في وظيفة الإعداد ، سنبدأ اتصال الكائن مع المستشعر ، وكذلك تهيئة بطاقة SD.
إعداد باطل () {Serial.begin (9600) ؛ Serial.print ("Inicializando o cartão SD …") ؛ // inicializa o objeto para comunicarmos com o sensor DHT dht.begin () ؛ // verifica se o cartão SD está presente e se pode ser inicializado if (! SD.begin (CS_PIN)) {Serial.println ("Falha، verifique se o cartão está presente.")؛ // programa encerrrado return؛ } // se chegou aqui é porque o cartão foi inicializado corretamente Serial.println ("Cartão inicializado.") ؛ }
حلقة
في الحلقة ، نقرأ الرطوبة والرطوبة ودرجة الحرارة. هذا يشبه إلى حد كبير لغة سي القياسية.
// faz a leitura da umidade float umidade = dht.readHumidity () ؛ Serial.print ("Umidade:") ؛ Serial.println (أوميداد) ؛ // faz a leitura da temperatura تعويم درجة الحرارة = dht.readTemperature () ؛ Serial.print ("تمبراتورا:") ؛ Serial.println (درجة الحرارة) ؛ ملف dataFile = SD.open ("LOG.txt" ، FILE_WRITE) ؛ // se o arquivo foi aberto corretamente، escreve os dados nele if (dataFile) {Serial.println ("O arquivo foi aberto com sucesso.")؛ // formatação no arquivo: linha a linha >> UMIDADE | TEMPERATURA dataFile.print (umidade) ؛ dataFile.print ("|") ؛ dataFile.println (درجة الحرارة) ؛ // fecha o arquivo após usá-lo dataFile.close () ؛ } // se o arquivo não pôde ser aberto os dados não serão gravados. آخر {Serial.println ("Falha ao abrir o arquivo LOG.txt")؛ } // interalo de espera para uma nova leitura dos dados. تأخير (2000) ؛ }