สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ในชุดประกอบนี้ เรามีการ์ด SD ที่เชื่อมต่อกับ ESP8266 เราใส่ DHT22 ซึ่งวัดอุณหภูมิและความชื้นและส่งข้อมูลนี้ไปยังการ์ด SD
บนวงจรแสดงความชื้น 43.40 และอุณหภูมิ 26.80 ทุกครั้งที่ขึ้นข้อความว่า "เปิดไฟล์สำเร็จ" เป็นเพราะว่ารันครั้งเดียวในลูป สิ่งที่เกิดขึ้นในสถานการณ์นี้มีดังนี้: เฉพาะค่าที่ถูกเขียนลงในล็อกไฟล์ ดังนั้น ข้อความ "เปิดไฟล์สำเร็จ" เป็นเพียงคำแนะนำเท่านั้น และจะไม่มีการบันทึก
ขั้นตอนที่ 1: WiFi ESP8266 NodeMcu ESP-12E
ในที่นี้ เราจะให้รายละเอียดส่วนประกอบที่เราใช้ ในกรณีนี้คือ NodeMCU ESP12 พร้อมกับแผ่นข้อมูลของอุปกรณ์นั้น
ขั้นตอนที่ 2: เซ็นเซอร์ความชื้น
ในลำดับนั้น ฉันแสดงรายละเอียดเกี่ยวกับส่วนประกอบอื่นนี้คือ DHT22 พร้อมการปักหมุดตามลำดับ
ขั้นตอนที่ 3: โมดูลการ์ด SD
นี่คือโมดูลการ์ด SD ของเรา ดังที่คุณเห็นจาก pinout มันคือการเชื่อมต่อ SPI
ขั้นตอนที่ 4: การประกอบ
แผนภาพการประกอบขึ้นอยู่กับเครื่องอ่าน DHT22, NodeMCU ESP12 ฉันเลือกอันหลังเพราะต้องการ IO ในปริมาณที่เหมาะสม ดังนั้น ESP01 จะทำงานสำหรับแอสเซมบลีนี้ด้วย
ขั้นตอนที่ 5: ห้องสมุด
สำหรับแอสเซมบลีนี้ คุณต้องมีไลบรารี DHT ของ Arduino IDE เอง เพียงไปที่ "ร่าง> รวมไลบรารี> จัดการไลบรารี" เมื่อคุณดาวน์โหลด 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 // กำหนดเซ็นเซอร์ DHTPIN D2 // tipo // ตัวสร้างทำ objeto para comunicar com o เซ็นเซอร์ 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 เซ็นเซอร์ DHT dht.begin(); // การยืนยันสำหรับการ์ด SD está นำเสนอ e se pode ser inicializado if (!SD.begin (CS_PIN)) { Serial.println ("Falha, verifique se o cartão está presente."); //โปรแกรม encerrrado กลับมา; } //se chegou aqui é porque o cartão foi inicializado corretamente Serial.println("Cartão inicializado."); }
ห่วง
ในลูป เราอ่านค่าความชื้น ความชื้น และอุณหภูมิ นี้เหมือนกับภาษา C มาตรฐานมาก
//faz a leitura da umidade float umidade = dht.readHumidity(); Serial.print("Umidade: "); Serial.println(อุมิดาเดะ); //faz a leitura da temperatura float temperature = 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 | dataFile.print (อุมิดาเดะ); 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"); } // ช่วงเวลาเดอ espera para uma nova leitura dos dados ล่าช้า (2000); }