สารบัญ:

ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280: 7 ขั้นตอน (พร้อมรูปภาพ)
ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ESP32 Web Server with BME280 – Mini Weather Station 2024, พฤศจิกายน
Anonim
Image
Image
ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280
ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280
ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280
ESP32 WiFi Weather Station พร้อมเซ็นเซอร์ BME280

เพื่อนๆที่รักยินดีต้อนรับสู่การกวดวิชาอื่น! ในบทช่วยสอนนี้ เราจะสร้างโครงการสถานีตรวจอากาศที่เปิดใช้งาน aWiFi! เราจะใช้ชิป ESP32 ใหม่ที่น่าประทับใจพร้อมกับจอแสดงผล Nextion เป็นครั้งแรก

ในวิดีโอนี้ เราจะทำสิ่งนี้ ฉันรู้จักโครงการสถานีตรวจอากาศอีกโครงการหนึ่ง แต่คราวนี้เราใช้ชิป ESP32 ใหม่! เรายังใช้เซ็นเซอร์ BME280 ใหม่ ซึ่งวัดอุณหภูมิ ความชื้น และความกดอากาศ เมื่อเราเพิ่มพลังให้กับโปรเจ็กต์ มันจะเชื่อมต่อกับเครือข่าย WiFi และมันจะดึงข้อมูลการพยากรณ์อากาศสำหรับตำแหน่งของฉันจากเว็บไซต์ openweathermap จากนั้นจะแสดงการคาดการณ์บน 3.2” Nextion Touch Display พร้อมกับการอ่านจากเซ็นเซอร์! การอ่านจะได้รับการอัปเดตทุก ๆ สองวินาทีและการพยากรณ์อากาศทุก ๆ ชั่วโมง! อย่างที่คุณเห็น ในโครงการนี้ เราใช้เทคโนโลยีล่าสุดสำหรับผู้ผลิตในปัจจุบัน! หากคุณเป็นผู้เชี่ยวชาญ DIY คุณสามารถสร้างโครงการนี้ได้ภายในห้านาที

หากคุณเป็นมือใหม่ คุณต้องดูวิดีโอสักสองสามวิดีโอก่อนที่จะลองทำโครงการนี้ คุณสามารถค้นหาลิงก์ไปยังวิดีโอเหล่านี้ได้ในคำแนะนำนี้ ไม่ต้องกังวล

เริ่มกันเลย!

ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด

รับอะไหล่ทั้งหมด
รับอะไหล่ทั้งหมด

ในการสร้างโครงการนี้ เราจำเป็นต้องมีส่วนต่างๆ ดังต่อไปนี้:

  • บอร์ด ESP32 ▶
  • เซ็นเซอร์ BME280 I2C ▶
  • หน้าจอ Nextion ขนาด 3.2” ▶
  • เขียงหั่นขนมขนาดเล็ก ▶
  • สายบางเส้น ▶

ค่าใช้จ่ายของโครงการอยู่ที่ประมาณ 30 เหรียญ

แทนที่จะใช้ ESP32 เราสามารถใช้ชิป ESP8266 ที่ถูกกว่าได้ แต่ฉันตัดสินใจใช้ ESP32 เพื่อรับประสบการณ์กับมัน และดูว่าสิ่งใดใช้ได้ผลและไม่ได้ผล

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

Image
Image
ESP32
ESP32

นี่เป็นโครงการแรกที่ฉันเคยสร้างด้วยชิป ESP32 ใหม่

หากคุณไม่คุ้นเคย ชิป ESP32 เป็นตัวตายตัวแทนของชิป ESP8266 ยอดนิยมที่เราเคยใช้มาหลายครั้งแล้ว ESP32 เป็นสัตว์ร้าย! มันมีแกนประมวลผล 32 คอร์สองตัวที่ทำงานที่ 160MHz หน่วยความจำจำนวนมาก WiFi บลูทู ธ และคุณสมบัติอื่น ๆ อีกมากมายด้วยราคาประมาณ 7 $! ของวิเศษ!

โปรดดูบทวิจารณ์โดยละเอียดที่ฉันเตรียมไว้สำหรับบอร์ดนี้ ฉันได้แนบวิดีโอในคำแนะนำนี้ จะช่วยให้เข้าใจว่าเหตุใดชิปตัวนี้จะเปลี่ยนวิธีที่เราทำสิ่งต่างๆ ตลอดไป!

ขั้นตอนที่ 3: การแสดงผล Nextion

Image
Image
เซ็นเซอร์ BME280
เซ็นเซอร์ BME280

นอกจากนี้ นี่เป็นโครงการแรกที่ฉันสร้างด้วยหน้าจอสัมผัส Nextion

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

ฉันได้เตรียมคำแนะนำโดยละเอียดเกี่ยวกับการแสดงผล Nextion ซึ่งอธิบายในเชิงลึกถึงวิธีการทำงาน วิธีใช้งาน และข้อเสีย สามารถอ่านได้ที่นี่:

ขั้นตอนที่ 4: เซ็นเซอร์ BME280

เซ็นเซอร์ BME280
เซ็นเซอร์ BME280

BME280 ในเซ็นเซอร์ใหม่ที่ยอดเยี่ยมจาก Bosch

จนถึงตอนนี้ ฉันใช้เซ็นเซอร์ BMP180 ซึ่งสามารถวัดอุณหภูมิและความดันบรรยากาศได้ เซ็นเซอร์ BME280 สามารถวัดอุณหภูมิ ความชื้น และความดันบรรยากาศได้! เจ๋งแค่ไหน! เราต้องการเซ็นเซอร์เพียงตัวเดียวเพื่อสร้างสถานีตรวจอากาศที่สมบูรณ์!

นอกจากนั้น เซ็นเซอร์มีขนาดเล็กมากและใช้งานง่ายมาก โมดูลที่เราจะใช้ในวันนี้ใช้อินเทอร์เฟซ I2C เพื่อให้สื่อสารกับ Arduino ได้ง่ายมาก เราเพียงเชื่อมต่อพลังงานและสายไฟอีกสองเส้นเพื่อให้มันใช้งานได้

มีห้องสมุดจำนวนมากที่พัฒนาขึ้นสำหรับเซ็นเซอร์นี้ ดังนั้นเราจึงสามารถใช้มันในโครงการของเราได้อย่างง่ายดายมาก! ค่าใช้จ่ายของเซ็นเซอร์ประมาณ 5 เหรียญ สามารถรับชมได้ที่นี่ ▶

หมายเหตุ: เราต้องการเซ็นเซอร์ BME280 นอกจากนี้ยังมีเซ็นเซอร์ BMP280 ซึ่งไม่มีการวัดความชื้น ระวังการสั่งซื้อเซ็นเซอร์ที่คุณต้องการ

ขั้นตอนที่ 5: การเชื่อมต่อชิ้นส่วน

การเชื่อมต่อชิ้นส่วน
การเชื่อมต่อชิ้นส่วน
การเชื่อมต่อชิ้นส่วน
การเชื่อมต่อชิ้นส่วน
การเชื่อมต่อชิ้นส่วน
การเชื่อมต่อชิ้นส่วน

การเชื่อมต่อของชิ้นส่วนต่างๆ นั้นตรงไปตรงมาอย่างที่คุณเห็นจากแผนผัง

เนื่องจากเซ็นเซอร์ BME280 ใช้อินเทอร์เฟซ I2C เราจึงจำเป็นต้องเชื่อมต่อสองสายเพื่อสื่อสารกับ ESP32 ฉันได้ติดเซ็นเซอร์เข้ากับพิน 26 และ 27 ในทางทฤษฎีแล้ว พินดิจิทัลของบอร์ด ESP32 ทุกตัวสามารถใช้กับอุปกรณ์ต่อพ่วง I2C ได้ ในทางปฏิบัติ ฉันพบว่าหมุดบางตัวใช้งานไม่ได้เพราะถูกสงวนไว้สำหรับการใช้งานอื่นๆ พิน 26 และ 27 ใช้งานได้ดี!

ในการส่งข้อมูลไปยังจอแสดงผล เราต้องต่อสายเพียงเส้นเดียวเข้ากับพิน TX0 ของ ESP32 ฉันต้องงอหมุดแบบนี้เพื่อเชื่อมต่อสายตัวเมียของจอแสดงผลเนื่องจากบอร์ด ESP32 ใหญ่เกินไปสำหรับเขียงหั่นขนมนี้

หลังจากเชื่อมต่อชิ้นส่วนต่างๆ แล้ว เราต้องโหลดโค้ดไปที่ ESP32 และต้องโหลด GUI ไปที่จอแสดงผล Nextion หากคุณมีปัญหาในการอัปโหลดโปรแกรมไปยังบอร์ด ESP32 ให้กดปุ่ม BOOT ค้างไว้หลังจากกดปุ่มอัปโหลดบน Arduino IDE

ในการโหลด GUI ไปยังจอแสดงผล Nextion ให้คัดลอกไฟล์ WeatherStation.tft ฉันจะแชร์กับคุณไปยังการ์ด SD เปล่า ใส่การ์ด SD ลงในช่องเสียบการ์ด SD ที่ด้านหลังของจอแสดงผล จากนั้นเปิดเครื่องแสดงผล และ GUI จะถูกโหลด จากนั้นถอดการ์ด SD และเสียบปลั๊กอีกครั้ง

หลังจากโหลดโค้ดสำเร็จแล้ว โปรเจ็กต์จะเชื่อมต่อกับเครือข่าย WiFi จะได้รับข้อมูลพยากรณ์อากาศจากเว็บไซต์ openweathermap.org และจะแสดงค่าที่อ่านได้จากเซ็นเซอร์ มาดูด้านซอฟต์แวร์ของโครงการกัน

ขั้นตอนที่ 6: รหัสของโครงการ

รหัสโครงการ
รหัสโครงการ
รหัสโครงการ
รหัสโครงการ
รหัสโครงการ
รหัสโครงการ

ในการแยกวิเคราะห์ข้อมูลสภาพอากาศ เราจำเป็นต้องมีไลบรารี Arduino JSON ที่ยอดเยี่ยม เราจำเป็นต้องมีห้องสมุดสำหรับเซ็นเซอร์ด้วย

? ESP32 BME280: https://github.com/Takatsuki0204/BME280-I2C-ESP32? Arduino JSON:

มาดูโค้ดกันเลย

อันดับแรก เราต้องตั้งค่า SSID และรหัสผ่านของเครือข่าย WiFi ของเรา ต่อไป เราต้องป้อน APIKEY ฟรีจากเว็บไซต์ operweathermap.org ในการสร้างคีย์ API ของคุณเอง คุณต้องลงทะเบียนบนเว็บไซต์ การรับข้อมูลสภาพอากาศในปัจจุบันและการพยากรณ์นั้นฟรี แต่เว็บไซต์มีตัวเลือกเพิ่มเติมหากคุณยินดีจ่ายเงิน ต่อไปเราต้องหา id ของตำแหน่งของเรา ค้นหาตำแหน่งของคุณและคัดลอก ID ซึ่งสามารถพบได้ที่ URL ของตำแหน่งของคุณ

จากนั้นป้อนรหัสเมืองของคุณในตัวแปร CityID นอกจากนี้ ให้ป้อนระดับความสูงของเมืองของคุณในตัวแปรนี้ ค่านี้จำเป็นสำหรับการอ่านค่าความดันบรรยากาศที่แม่นยำจากเซ็นเซอร์

const char* ssid = "yourSSID";const char* password = "รหัสผ่านของคุณ"; สตริง CityID = "253394"; //สปาร์ตา, กรีซสตริง APIKEY = "yourAPIkey"; #define ALTITUDE 216.0 // ระดับความสูงใน Sparta ประเทศกรีซ

ตอนนี้เราพร้อมแล้วที่จะไปต่อ

ในตอนแรก เราเริ่มต้นเซ็นเซอร์และเชื่อมต่อกับเครือข่าย WiFi จากนั้นเราขอข้อมูลสภาพอากาศจากเซิร์ฟเวอร์

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

ในการอัปเดตจอแสดงผล เราเพียงแค่ส่งคำสั่งบางคำสั่งไปยังพอร์ตอนุกรมดังนี้:

เป็นโมฆะ showConnectingIcon () { Serial.println (); คำสั่งสตริง = "weatherIcon.pic=3"; Serial.print(คำสั่ง); endNextionCommand(); }

Nextion GUI ประกอบด้วยพื้นหลัง กล่องข้อความบางส่วน และรูปภาพที่เปลี่ยนแปลงตามการพยากรณ์อากาศ โปรดดูบทแนะนำการแสดงผล Nextion สำหรับข้อมูลเพิ่มเติม คุณสามารถออกแบบ GUI ของคุณเองได้อย่างรวดเร็วหากต้องการและแสดงสิ่งต่างๆ เพิ่มเติม

คุณสามารถหารหัสของโครงการที่แนบมากับคำแนะนำนี้ได้เช่นเคย

ขั้นตอนที่ 7: ความคิดและการปรับปรุงขั้นสุดท้าย

ความคิดสุดท้าย & การปรับปรุง
ความคิดสุดท้าย & การปรับปรุง

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

แน่นอนว่านี่เป็นเพียงจุดเริ่มต้นของโครงการเท่านั้น ฉันต้องการเพิ่มคุณสมบัติมากมาย เช่น กราฟ ฟังก์ชันการสัมผัสที่ขาดหายไป อาจเป็นจอแสดงผลที่ใหญ่ขึ้น และแน่นอนว่ากล่องพิมพ์ 3 มิติที่ดูสวยงาม ฉันจะออกแบบ GUI และไอคอนที่ดูดีขึ้นด้วย ฉันมีแนวคิดใหม่ ๆ ที่จะนำไปใช้!

ฉันชอบที่จะได้ยินความคิดเห็นของคุณเกี่ยวกับโครงการของวันนี้ คุณต้องการให้ฉันเพิ่มคุณสมบัติประเภทใดในโครงการ คุณชอบที่มันดู? คุณอยากเห็นวิวัฒนาการอย่างไร? กรุณาโพสต์ความคิดของคุณในส่วนความคิดเห็นด้านล่าง; ฉันชอบอ่านความคิดของคุณ!

การแข่งขันไร้สาย
การแข่งขันไร้สาย
การแข่งขันไร้สาย
การแข่งขันไร้สาย

รองชนะเลิศการแข่งขันไร้สาย

แนะนำ: