สถานีตรวจอากาศ IoT อื่น: 8 ขั้นตอน
สถานีตรวจอากาศ IoT อื่น: 8 ขั้นตอน
Anonim
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง
สถานีตรวจอากาศ IoT อีกแห่ง

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

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

เกี่ยวกับ Stevenson Screen มีออนไลน์มากมายที่สามารถพิมพ์ 3 มิติได้เช่น https://www.thingiverse.com/thing:1718334. ฉันจะสร้างสิ่งนี้สำหรับคำแนะนำนี้

Stevenson Screen คือ "ที่พักพิงของเครื่องมือคือที่พักพิงหรือสิ่งที่แนบมากับเครื่องมืออุตุนิยมวิทยาที่ป้องกันการตกตะกอนและการแผ่รังสีความร้อนโดยตรงจากแหล่งภายนอก ในขณะที่ยังคงปล่อยให้อากาศหมุนเวียนรอบตัวได้อย่างอิสระ" (วิกิพีเดีย).

อะไหล่

  • Wemos LolIn - NodeMCU v3 (1.43 ดอลลาร์สหรัฐ)
  • BME280 (เซ็นเซอร์อุณหภูมิ ความดัน และความชื้น) (2.40 ดอลลาร์สหรัฐ)
  • 6V 1000mA แผงโซลาร์เซลล์ (USD 9.96)
  • 5 โวลต์ 1A Micro USB 18650 แบตเตอรี่ลิเธียมชาร์จโมดูล + ป้องกัน Dual ฟังก์ชั่น TP4056 (USD 0.99)
  • แบตเตอรี่ NiMH แบบรีชาร์จขนาด 4x 1.2V ได้
  • ที่ใส่แบตเตอรี่ (4x AA, วางเคียงข้างกันและสิ้นสุด)
  • ปลั๊กขั้วต่อไมโคร USB ตัวผู้
  • เคเบิ้ลไทร์
  • ถั่วปีก 3x
  • ไม้เท้าหรือไม้กวาด
  • อีพ็อกซี่และ/หรือซุปเปอร์กาว (เมื่อมองย้อนกลับไป ซิลิคอนอาจทำงานได้ดีกว่า)

ซอฟต์แวร์

  • แอพ Blynk
  • Google ชีต (หากต้องการเข้าถึงข้อมูลย้อนหลัง)
  • EasyEDA (สำหรับการวาดแผนผัง)
  • Arduino IDE

เครื่องมือ

  • หัวแร้ง
  • ประสาน
  • ท่อหดความร้อน
  • เครื่องพิมพ์ 3 มิติ
  • ปืนกาว

ขั้นตอนที่ 1: การพิมพ์ 3 มิติ - Stevenson Screen

การพิมพ์ 3 มิติ - Stevenson Screen
การพิมพ์ 3 มิติ - Stevenson Screen
การพิมพ์ 3 มิติ - หน้าจอสตีเวนสัน
การพิมพ์ 3 มิติ - หน้าจอสตีเวนสัน
การพิมพ์ 3 มิติ - Stevenson Screen
การพิมพ์ 3 มิติ - Stevenson Screen

ดังที่ได้กล่าวไปแล้ว ดาวน์โหลดไฟล์จาก https://www.thingiverse.com/thing:1718334 และพิมพ์บิตที่ต้องการ คำแนะนำในการประกอบยังอยู่ในลิงค์ด้านบน ฉันได้ทำการแก้ไขบางอย่าง (ดูหมายเหตุด้านล่าง)

ชิ้นส่วนที่พิมพ์ได้แก่

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL แนบด้านบน)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL แนบด้านบน)

ลำดับการประกอบคือ:

  • ร้อยรู
  • ขันเกลียวแท่ง M3 เข้ากับซ็อกเก็ตเกลียว
  • Top_Cover
  • Solid_Plate
  • Middle_Rings
  • เลื่อนใน Sensor_Grid
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • My_Solar_Cell_Mounts ถูกเคลือบด้วยอีพอกซีที่ด้านบนของ Top_Cover

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

เมื่อเสร็จแล้ว เซ็นเซอร์จะถูกตั้งโปรแกรมให้อ่านค่าต่อไปนี้ทุกๆ 60 นาที:

  • อุณหภูมิ
  • ความชื้น
  • ความดัน

หมายเหตุ

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

ขั้นตอนที่ 2: วงจร

The Circuit
The Circuit
The Circuit
The Circuit

เชื่อมต่อวงจรตามที่แสดงในแผนผัง ติดตั้ง LoLin และ BME280 บนตาข่ายที่พิมพ์ 3 มิติตามที่แสดงในภาพ

BME280 -> LiLon

  • VCC -> 3.3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (จำเป็นเพื่อปลุกคอนโทรลเลอร์ให้ตื่นจากโหมดหลับลึก แต่ต้องเชื่อมต่อหลังจากอัปโหลดโค้ดไปยังคอนโทรลเลอร์แล้วเท่านั้น)

บันทึก

ฉันมีความท้าทายในการหาแบตเตอรี่ LiLon ที่เหมาะสม ด้วยเหตุผลบางอย่างฉันไม่ประสบความสำเร็จในการเปิดเครื่องผ่าน VIN ฉันจึงขับเคลื่อนดังนี้:

  • เอาต์พุตจาก TP4056 ถูกต่อเข้ากับขั้วต่อ USB ตัวผู้ จากนั้นเสียบเข้ากับช่องเสียบ USB ของบอร์ดเพื่อจ่ายไฟ
  • B- และ B+ บน TP4056 เชื่อมต่อกับที่ใส่แบตเตอรี่ AA ซึ่งถือแบตเตอรี่ NiMH

ขั้นตอนที่ 3: IoT - Blynk

IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk

"Blynk เป็นแพลตฟอร์ม IoT ที่ไม่เชื่อเรื่องฮาร์ดแวร์ด้วยแอปมือถือที่ปรับแต่งได้ คลาวด์ส่วนตัว กลไกจัดการกฎ และแดชบอร์ดการวิเคราะห์การจัดการอุปกรณ์" โดยทั่วไปจะช่วยให้คุณสามารถจัดการและตรวจสอบเซ็นเซอร์ระยะไกลได้อย่างปลอดภัยจากทุกที่ในโลกผ่านทางอินเทอร์เน็ต ในขณะที่บริการเชิงพาณิชย์ แต่ละบัญชีมาพร้อมกับเครดิตฟรี 2,000 เครดิต เครดิตช่วยให้คุณสามารถเชื่อมโยงมาตรวัด จอแสดงผล การแจ้งเตือน ฯลฯ กับเซ็นเซอร์หรือเซ็นเซอร์ของคุณ แม้ว่าราคาการสมัครรับข้อมูลจะอยู่นอกช่วงงบประมาณของมือสมัครเล่น แต่เครดิตฟรีก็เพียงพอแล้วสำหรับโปรเจ็กต์ง่ายๆ แบบนี้

ในการเริ่มใช้บริการ คุณจะต้องดาวน์โหลดแอป Blynk ลงในโทรศัพท์/อุปกรณ์ของคุณก่อน สร้างและบัญชี (หรือเข้าสู่ระบบด้วยบัญชีที่มีอยู่) แล้วสร้างโครงการใหม่ดังนี้:

  • เลือกฮาร์ดแวร์ของคุณ
  • ตั้งชื่อโครงการของคุณ (ในกรณีนี้ฉันใช้ "Weather Station"
  • คลิก "สร้าง"
  • จากนั้นคุณจะได้รับรหัสรับรองความถูกต้องทางอีเมล

คุณไม่จำเป็นต้องเพิ่มวิดเจ็ตที่จำเป็น ด้วยเครดิตฟรี 2,000 ของฉันฉันได้เพิ่มสิ่งต่อไปนี้:

  • 3 เกจ
  • 1 ซุปเปอร์ชาร์ท

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

เมื่อตั้งค่าเสร็จแล้ว สามารถกดปุ่มเล่นที่ด้านบนขวาเพื่อเริ่มสะสมวันที่ได้

ดูข้อมูลเพิ่มเติมได้ที่

docs.blynk.cc/#getting-started.

ขั้นตอนที่ 4: รหัส - การเตรียม Arduino IDE

จะต้องเพิ่มไลบรารีต่อไปนี้ใน Arduino IDE เพื่อให้โครงการนี้เสร็จสมบูรณ์:

  • https://github.com/adafruit/Adafruit_BME280_Library (ต้องการเซ็นเซอร์อุณหภูมิ ความดัน และความชื้น)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (ช่วยให้คุณเข้าถึงบอร์ด ESP8266)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (ห้องสมุด Blynk)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (HTTPSRRedirect จำเป็นสำหรับการเชื่อมต่อกับ Google ชีต)

สำหรับคำแนะนำในการติดตั้งไลบรารี่สำหรับ Arduino IDE โปรดไปที่

การตั้งค่าฮาร์ดแวร์ของฉันมีดังนี้:

  • บอร์ด: NodeMCU 1.0 (โมดูล ESP-12E)
  • ความเร็วในการอัพโหลด: 115200

เมื่อใช้โค้ดที่แนบมาในขั้นตอนต่อไปนี้ โปรดอ้างอิงความคิดเห็นในโค้ดเกี่ยวกับการเพิ่มสิ่งต่อไปนี้เสมอ

  • Wifi SID
  • รหัสผ่าน Wifi
  • Blynk คีย์การให้สิทธิ์
  • รหัสสคริปต์ของ Google
  • คีย์การแชร์ Google ชีต

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

ฉันต่อสู้เป็นเวลานานเพื่อให้เซ็นเซอร์ BME280 ของฉันทำงาน จนกระทั่งฉันพบตัวอย่างที่มีบรรทัดต่อไปนี้

สถานะ = bme.begin(0x76); //ที่อยู่ I2C ของเซ็นเซอร์ที่ฉันใช้คือ 0x76

ดูเหมือนว่าฉันต้องตั้งค่าที่อยู่เซ็นเซอร์ เมื่อฉันทำสิ่งนี้แล้วมันก็ใช้ได้ดี

Blynk มีส่วนต่อประสานผู้ใช้มือถือที่ดีมาก แต่ก็มีข้อ จำกัด ดังต่อไปนี้:

  • เครดิตฟรีเพียง 2,000 โปรเจ็กต์ที่ต้องการมากกว่านั้นต้องมีการสมัครสมาชิกรายเดือนที่มีราคาแพง (เว้นแต่คุณจะโฮสต์และดูแลเซิร์ฟเวอร์ Blynk ของคุณเอง)
  • เว้นแต่คุณจะโฮสต์เซิร์ฟเวอร์ Blynk ของคุณเอง คุณจะไม่สามารถส่งออกข้อมูลในอดีตได้

ด้วยเหตุผลข้างต้น ฉันได้พิจารณาวิธีที่ฉันสามารถรวมกระบวนการรวบรวมข้อมูลของฉันลงใน Google ชีตได้อย่างไร นี้จะครอบคลุมในส่วนถัดไป

ขั้นตอนที่ 6: รหัส - Google ชีต

รหัส - Google ชีต
รหัส - Google ชีต
รหัส - Google ชีต
รหัส - Google ชีต
รหัส - Google ชีต
รหัส - Google ชีต

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

ข้อจำกัดหลักของวิธีนี้มีดังนี้:

  • ไม่มีส่วนต่อประสานผู้ใช้มือถือที่ดี
  • Google ชีตสามารถมีเซลล์ได้สูงสุด 400,000 เซลล์ สำหรับโครงการนี้ นี่ไม่ใช่ปัญหาใหญ่เพราะจะใช้เวลาเพียง 11 ปีกว่าจะถึงขีดจำกัดนี้

Google ชีตได้รับการตั้งค่าดังนี้

สร้าง Google ชีตที่มีสองแผ่น

แผ่นที่ 1: ข้อมูล

แผ่นข้อมูลต้องมี 4 คอลัมน์ ได้แก่ วันที่/เวลา อุณหภูมิ ความชื้น ความดัน (คอลัมน์ A ถึง D) จัดรูปแบบคอลัมน์อย่างเหมาะสม เช่น คอลัมน์ A จะเป็น " วันที่ เวลา " เพื่อให้วันที่และเวลาปรากฏในเซลล์

แผ่นที่ 2: แดชบอร์ด

สร้างแผ่น Dashboard ตามรูปภาพที่แนบมา โดยป้อนสูตรตามรายการด้านล่าง:

  • B2: =counta(Data!B:B)-1
  • B3: =B1+TIMEVALUE(CONCATENATE("00:", Text(G7, "0")))
  • B6: =query(Data!A2:D, "เลือกลำดับ B โดย A desc จำกัด 1")
  • C6: =query(Data!A2:D, "เลือกลำดับ C โดย A desc จำกัด 1")
  • D6: =query(Data!A2:D, "เลือกลำดับ D โดย A desc จำกัด 1")
  • B8: =query(Data!A2:D, "Select A order by B desc จำกัด 1")
  • C8: =query(Data!A2:D, "Select A order by C desc จำกัด 1")
  • D8: =query(Data!A2:D, "Select A order by D desc จำกัด 1")
  • B9: =query(Data!A2:D, "Select B order by B desc จำกัด 1")
  • C9: =query(Data!A2:D, "เลือกลำดับ C โดย C desc จำกัด 1")
  • D9: =query(Data!A2:D, "เลือกลำดับ D โดย D desc จำกัด 1")
  • B11: =query(Data!A2:D, "เลือก A โดยที่ B ไม่ใช่ลำดับว่างโดย B asc จำกัด 1")
  • C11: =query(Data!A2:D, "เลือก A โดยที่ C ไม่ใช่ลำดับว่างโดย C asc จำกัด 1")
  • D11: =query(Data!A2:D, "เลือก A โดยที่ D ไม่ใช่ลำดับว่างโดย D asc จำกัด 1")
  • B12: =query(Data!A2:D, "เลือก B โดยที่ B ไม่ใช่ลำดับว่างโดย B asc จำกัด 1")
  • C12: =query(Data!A2:D, "เลือก C โดยที่ C ไม่ใช่ลำดับว่างโดย C asc จำกัด 1")
  • D12: =query(Data!A2:D, "เลือก D โดยที่ D ไม่ใช่ลำดับว่างโดย D asc จำกัด 1")
  • G3: =4+B2*4+29+17
  • G4: =(G2-G3)/G2
  • G6: =G2/4 G8: =G7*G6
  • G9: =(G8/60)/24
  • G10: =G9/365
  • G11: =(((((G2-G3)/4)*G7)/60)/24/365)

Google ชีตมีเซลล์ได้สูงสุด 400,000 เซลล์ ซึ่งใช้ร่วมกับข้อเท็จจริงที่ว่าการอ่านแต่ละครั้งใช้ 4 เซลล์ เพื่อคำนวณว่าเหลือพื้นที่ว่างเท่าใดและเมื่อไรจะหมด

อาจเป็นไปได้ที่จะปรับปรุงสูตรเหล่านี้ ฉันทำสองสิ่งที่นี่ นั่นคือ เรียนรู้เกี่ยวกับสูตรการสืบค้นแล้วจึงเขียนสูตรบางอย่างเพื่อช่วยให้ฉันจำตรรกะที่อยู่เบื้องหลังพวกเขาได้

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

ตอนนี้เราต้องการ Google Script ที่จะช่วยให้เราเขียนข้อมูลของเราได้โดยการเรียก URL

การสร้างสคริปต์

ใน URL ของ Google ชีต ให้จดคีย์ระหว่าง " d/ " และ " /edit " นี่คือ -Your-Google-Sheet-Sharing-Key- ของคุณ และจะต้องใช้ในโค้ดด้านล่าง

ถัดไปไปที่เครื่องมือ > ตัวแก้ไขสคริปต์ และสร้าง Google App Script โดยวางโค้ดในไฟล์ GS ที่แนบมา อัปเดต var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); เพื่อสะท้อนคีย์การแบ่งปันของคุณ

ตอนนี้เผยแพร่สคริปต์โดยไปที่ เผยแพร่ > ปรับใช้เป็นเว็บแอป

คัดลอก URL ของเว็บแอปปัจจุบันและบันทึกไว้ที่ใดที่หนึ่งตามที่คุณต้องการเพื่อแยก GScriptID (-Your-Google-Script-ID–) GScriptID คือสตริงระหว่าง " s/ " และ " /exec? " ตรวจสอบให้แน่ใจว่า "ทุกคน แม้กระทั่งไม่ระบุชื่อ" สามารถเข้าถึงแอปได้ ในระหว่างกระบวนการนี้ คุณจะถูกขอให้ให้สิทธิ์บางอย่าง เป็นสิ่งสำคัญที่คุณให้สิ่งเหล่านี้

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

คุณสามารถทดสอบสคริปต์ได้โดยไปที่ https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12 ทุกครั้งที่คุณรีเฟรชลิงก์นี้ ควรเพิ่มรายการใหม่ลงใน Google ชีต

ข้อมูลข้างต้นนี้นำมาจากบทช่วยสอนต่อไปนี้: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/ บทช่วยสอนนี้ล้าสมัย ดังนั้นโค้ด Arduino ที่เกี่ยวข้องในหัวข้อถัดไปจึงมีการเปลี่ยนแปลงเพื่อรองรับไลบรารี HTTPSRedirect ล่าสุด

รหัส Arduino

ดูรหัสที่แนบมา

ขั้นตอนที่ 7: รหัส - Blynk & Google ชีต

เพื่อให้ได้ประโยชน์สูงสุดจากทั้งสองโลก เราสามารถรวมรหัสสำหรับทั้ง Blynk และ Google ชีต

ดูรหัสที่แนบมา

ขั้นตอนที่ 8: ความคิดเห็นสุดท้าย

ความคิดเห็นสุดท้าย
ความคิดเห็นสุดท้าย
ความคิดเห็นสุดท้าย
ความคิดเห็นสุดท้าย

ไม่มีสิ่งใดข้างต้นเป็นความคิดของฉัน แต่เป็นโครงการที่สร้างขึ้นจากความคิดและผลงานของผู้อื่น ฉันสนุกกับการดึงมันมารวมกันที่เดียว โดยใช้เทคโนโลยีและเครื่องมือต่างๆ เพื่อสร้างโปรเจ็กต์ที่สนุกและใช้ได้จริง ฉันชอบเรียนรู้วิธีจัดเก็บการอ่านใน Google ชีตเป็นพิเศษ สำหรับสิ่งนี้ฉันขอขอบคุณ ElectronicsGuy (Sujay Phadke)

อัปเดต

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

แนะนำ: