สารบัญ:

ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk: 5 ขั้นตอน
ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk: 5 ขั้นตอน

วีดีโอ: ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk: 5 ขั้นตอน

วีดีโอ: ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk: 5 ขั้นตอน
วีดีโอ: เริ่มพัฒนาระบบ IoT ด้วย ESP32 และ Blynk ตอนที่ 1 2024, มิถุนายน
Anonim
ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk
ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk
ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk
ตรวจสอบโรงงานโดยใช้ ESP32 Thing และ Blynk

ภาพรวม

เป้าหมายของโครงการนี้คือการสร้างอุปกรณ์ขนาดกะทัดรัดที่สามารถตรวจสอบสภาพของกระถางได้ อุปกรณ์นี้ช่วยให้ผู้ใช้สามารถตรวจสอบระดับความชื้นในดิน ระดับความชื้น อุณหภูมิ และอุณหภูมิที่ "ให้ความรู้สึกเหมือน" จากสมาร์ทโฟนโดยใช้แอป Blynk นอกจากนี้ ผู้ใช้จะได้รับอีเมลแจ้งเตือนเมื่อเงื่อนไขไม่เหมาะสมสำหรับโรงงาน ตัวอย่างเช่น ผู้ใช้จะได้รับการแจ้งเตือนให้รดน้ำต้นไม้เมื่อระดับความชื้นในดินลดลงต่ำกว่าระดับที่เหมาะสม

ขั้นตอนที่ 1: ข้อกำหนด

ความต้องการ
ความต้องการ
ความต้องการ
ความต้องการ
ความต้องการ
ความต้องการ

โปรเจ็กต์นี้ใช้สิ่ง Sparkfun ESP32, เซ็นเซอร์ DHT22 และเซ็นเซอร์ความชื้นในดินอิฐอิเล็กทรอนิกส์ นอกจากนี้ จำเป็นต้องมีเครือข่าย wifi และแอป Blynk ควรสร้างกล่องกันน้ำเพื่อบรรจุสิ่งของ ESP32 ในขณะที่ตัวอย่างนี้ใช้เต้ารับมาตรฐานสำหรับแหล่งพลังงาน การเพิ่มแบตเตอรี่แบบชาร์จไฟได้ แผงโซลาร์เซลล์ และตัวควบคุมการชาร์จจะทำให้อุปกรณ์ใช้พลังงานหมุนเวียนได้

ขั้นตอนที่ 2: Blynk

Blynk
Blynk
Blynk
Blynk
Blynk
Blynk

หากต้องการเป็นให้ดาวน์โหลดแอป Blynk และสร้างโครงการใหม่ จดบันทึกโทเค็นการพิสูจน์ตัวตน -- จะถูกใช้ในรหัส สร้างวิดเจ็ตการแสดงผลใหม่ในแอป Blynk และเลือกหมุดเสมือนที่เกี่ยวข้องซึ่งกำหนดไว้ในโค้ด ตั้งค่าช่วงเวลารีเฟรชที่จะพุช แต่ละวิดเจ็ตควรกำหนดพินเสมือนของตัวเอง

ขั้นตอนที่ 3: Arduino IDE

Arduino IDE
Arduino IDE

ดาวน์โหลด Arduino IDE ทำตามคำแนะนำในการดาวน์โหลดสำหรับไดรเวอร์ของ ESP32 และการสาธิตเพื่อให้แน่ใจว่ามีการเชื่อมต่อ wifi ดาวน์โหลดไลบรารี Blynk และ DHT ที่รวมอยู่ในโค้ด กรอกโทเค็นการตรวจสอบสิทธิ์ รหัสผ่าน wifi ชื่อผู้ใช้ wifi และอีเมลในรหัสสุดท้าย ใช้รหัสสาธิตสำหรับเซ็นเซอร์ความชื้นในดินเพื่อค้นหาค่าต่ำสุดและสูงสุดสำหรับประเภทของดิน บันทึกและแทนที่ค่าเหล่านี้ในโค้ดสุดท้าย แทนที่ค่าต่ำสุดสำหรับอุณหภูมิ ความชื้นในดิน และความชื้นของพืชในรหัสสุดท้าย อัปโหลดรหัส

ขั้นตอนที่ 4: สร้างมัน

สร้างมัน
สร้างมัน
สร้างมัน
สร้างมัน
สร้างมัน
สร้างมัน

ขั้นแรก ให้เชื่อมต่อเซ็นเซอร์ความชื้นในดินกับ 3.3V กราวด์ และพินอินพุต 34 โปรดทราบว่าสวิตช์นี้ถูกกำหนดเป็น A เนื่องจากจะใช้การตั้งค่าแอนะล็อกสำหรับเซ็นเซอร์นี้ ถัดไป เชื่อมต่อเซ็นเซอร์ DHT กับ 3.3V, กราวด์ และพินอินพุต 27 เซ็นเซอร์ DHT22 ต้องการตัวต้านทาน 10K Ohm ระหว่าง VCC และพินข้อมูลขาออก อย่าลืมตรวจสอบไดอะแกรม DHT เพื่อให้แน่ใจว่าได้ต่อสายอย่างถูกต้อง กำหนดค่า ESP32 ภายในตู้กันน้ำที่มีเซ็นเซอร์ความชื้นในดินและเซ็นเซอร์ DHT เหนือพื้นผิว เชื่อมต่อกับแหล่งพลังงานและเพลิดเพลินกับข้อมูลสภาพแวดล้อมของโรงงานของคุณ

ขั้นตอนที่ 5: รหัส

//รวมห้องสมุด

#define BLYNK_PRINT ซีเรียล

#รวม #รวม #รวม #รวม "DHT.h"

//ข้อมูลเซ็นเซอร์ DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // พินดิจิตอลเชื่อมต่อกับเซ็นเซอร์ DHT DHT dht (DHTPIN, DHTTYPE); // เริ่มต้นเซ็นเซอร์ DHT

//กำหนดพินอินพุตและเอาต์พุต

int soil_sensor = 34; //กำหนดหมายเลขพินอินพุตแบบอะนาล็อกที่เชื่อมต่อกับเซ็นเซอร์ความชื้น

int output_value;//กำหนดเป็น output

int moisturelevel;//กำหนดเป็นเอาต์พุต

แจ้ง int = 0; //กำหนดการแจ้งเตือนเป็น0

int หน่วงเวลา = 60000L; //ตั้งเวลาให้รันรับข้อมูลทุกๆ นาที หรือ 60,000 miliseconds

//ตั้งค่าขั้นต่ำสำหรับพืช

int min_moisture = 20; int min_temperature =75; int min_humidity = 60;

// คุณควรได้รับ Auth Token ในแอป Blynk

char auth = "Auth_Token_Here";

// ข้อมูลรับรอง WiFi ของคุณ

ถ่าน ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

ตัวจับเวลา BlynkTimer;

// ฟังก์ชันนี้จะส่งเวลาการทำงานของ Arduino ทุกวินาทีไปยัง Virtual Pin (5)

// ในแอพ ความถี่ในการอ่านของ Widget ควรตั้งไว้ที่ PUSH ซึ่งหมายความว่า // คุณกำหนดความถี่ในการส่งข้อมูลไปยัง Blynk App

โมฆะเซ็นเซอร์ () //ฟังก์ชั่นหลักในการอ่านเซ็นเซอร์และกดเพื่อ blynk

{ output_value = analogRead (soil_sensor); // อ่านสัญญาณแอนะล็อกจาก soil_sensor และกำหนดเป็น output_value // แผนที่ output_vlaue จาก min ค่าสูงสุดเป็น 100, 0 และจำกัดระหว่าง 0, 100 // ใช้โค้ดตัวอย่างและมอนิเตอร์แบบอนุกรมเพื่อค้นหาค่าต่ำสุดและ ค่าสูงสุดสำหรับเซ็นเซอร์แต่ละตัวและชนิดของดินสำหรับการสอบเทียบระดับความชื้นที่ดีขึ้น = ข้อจำกัด (map(output_value, 1000, 4095, 100, 0), 0, 100); ลอย h = dht.readHumidity(); // อ่านความชื้นลอย t = dht.readTemperature(); // อ่านอุณหภูมิเป็นเซลเซียส (ค่าเริ่มต้น) float f = dht.readTemperature(true); // อ่านอุณหภูมิเป็นฟาเรนไฮต์ (isFahrenheit = true) // คำนวณดัชนีความร้อนใน Fahrenheit (ค่าเริ่มต้น) float hif = dht.computeHeatIndex(f, h); // ตรวจสอบว่าการอ่านล้มเหลวและออกก่อนกำหนดหรือไม่ (เพื่อลองอีกครั้ง) ถ้า (isnan (h) || isnan (t) || isnan (f)) { Serial.println (F ("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!")); กลับ; } // สิ่งนี้เชื่อมต่อ vales กับพินเสมือนที่กำหนดไว้ในวิดเจ็ตในแอป Blynk Blynk.virtualWrite (V5, moisturelevel); // ส่งระดับความชื้นไปยังพินเสมือน 5 Blynk.virtualWrite (V6, f);// ส่งอุณหภูมิไปยังเสมือน พิน 6 Blynk.virtualWrite(V7, h);// ส่งความชื้นไปยังพินเสมือน 7 Blynk.virtualWrite(V8, hif);// ส่งดัชนีความร้อนไปยังพินเสมือน 8

ถ้า (แจ้ง==0)

{ if (moisturelevel <= min_moisture) // ถ้าระดับความชื้นเท่ากับหรือต่ำกว่าค่าต่ำสุด { Blynk.email("Email_Here", "Plant Monitor", "Water Plant!"); // ส่งอีเมลไปที่โรงงานน้ำ } ล่าช้า (15000); // อีเมล Blynk ต้องห่างกัน 15 วินาที หน่วงเวลา 15,000 มิลลิวินาที if (f <= min_temperature) // หากอุณหภูมิเท่ากับหรือต่ำกว่าค่าต่ำสุด { Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // ส่งอีเมลแจ้งว่าอุณหภูมิต่ำ

}

ล่าช้า (15000); // อีเมล Blynk ต้องห่างกัน 15 วินาที หน่วงเวลา 15,000 มิลลิวินาที if (h <= min_humidity) // ถ้าความชื้นเท่ากับหรือต่ำกว่าค่าต่ำสุด { Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // ส่งอีเมลแจ้งว่าความชื้นต่ำ } แจ้งเตือน = 1; timer.setTimeout (การหน่วงเวลา *5, รีเซ็ตการแจ้งเตือน); // คูณการหน่วงเวลาด้วยจำนวนนาทีที่ต้องการระหว่างอีเมลเตือนซ้ำ } }

ถือเป็นโมฆะ resetNotified() // เรียกฟังก์ชันเพื่อรีเซ็ตความถี่ของอีเมล

{ แจ้ง = 0; }

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); // ดีบักคอนโซล Blynk.begin(auth, ssid, pass); // เชื่อมต่อกับ blynk timer.setInterval (การหน่วงเวลา, เซ็นเซอร์); // ตั้งค่าฟังก์ชันที่จะเรียกทุกนาทีหรือตั้งค่าการหน่วงเวลาเป็น dht.begin(); // เรียกใช้เซ็นเซอร์ DHT }

//วนเป็นโมฆะควรมีเพียง blynk.run และ timer

วงเป็นโมฆะ () { Blynk.run (); // เรียกใช้ blynk timer.run(); // เริ่มต้น BlynkTimer }

แนะนำ: