สารบัญ:
- ขั้นตอนที่ 1: การเลือกส่วนประกอบ
- ขั้นตอนที่ 2: การก่อสร้าง
- ขั้นตอนที่ 3: รหัส – ไลบรารีเซ็นเซอร์พลังงานต่ำ ส่วนต่อประสานกับผู้ใช้ และ Arduino Sketch
- ขั้นตอนที่ 4: การวัดกระแสอุปทาน
- ขั้นตอนที่ 5: การจ่ายกระแสไฟทั้งหมดและอายุการใช้งานแบตเตอรี่
- ขั้นตอนที่ 6: ทางเลือกในการจัดหา – Solar Assist, แบตเตอรี่เท่านั้น, Solar Only
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: BLE พลังงานต่ำมากง่าย ๆ ใน Arduino ตอนที่ 2 - เครื่องวัดอุณหภูมิ / ความชื้น - Rev 3: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
อัปเดต: 23 พฤศจิกายน 2020 – เปลี่ยนแบตเตอรี่ AAA x 2 ก้อนครั้งแรกตั้งแต่วันที่ 15 มกราคม 2019 เช่น 22 เดือนสำหรับ 2xAAA AlkalineUpdate: 7 เมษายน 2019 – Rev 3 ของ lp_BLE_TempHumidity เพิ่มวันที่/เวลา โดยใช้ pfodApp V3.0.362+ และการควบคุมปริมาณอัตโนมัติเมื่อส่ง ข้อมูล
อัปเดต: 24 มีนาคม 2019 – Rev 2 ของ lp_BLE_TempHumidity เพิ่มตัวเลือกการลงจุดเพิ่มเติมและ i2c_ClearBus
เครื่องวัดความชื้นอุณหภูมิพลังงานต่ำมากคำแนะนำนี้เป็นส่วนที่ 2 จาก 3
ส่วนที่ 1 - การสร้างอุปกรณ์ BLE ที่ใช้พลังงานต่ำมากทำได้ง่ายด้วย Arduino ครอบคลุมการตั้งค่า Arduino เพื่อเข้ารหัสอุปกรณ์ที่ใช้พลังงานต่ำ nRF52 โมดูลการเขียนโปรแกรมและการวัดกระแสไฟ นอกจากนี้ยังครอบคลุมถึงตัวจับเวลาและตัวเปรียบเทียบพลังงานต่ำแบบพิเศษและอินพุตที่ถูกหักล้างและการใช้ pfodApp เพื่อเชื่อมต่อและควบคุมอุปกรณ์ nRF52
ส่วนที่ 2 – ตัวตรวจสอบความชื้นอุณหภูมิพลังงานต่ำมาก ตัวตรวจสอบนี้ครอบคลุมโดยใช้โมดูล Redbear Nano V2 และเซ็นเซอร์อุณหภูมิ/ความชื้น Si7021 เพื่อสร้างแบตเตอรี่พลังงานต่ำ / จอภาพพลังงานแสงอาทิตย์ นอกจากนี้ยังครอบคลุมถึงการปรับเปลี่ยนไลบรารี Si7021 ให้เป็นพลังงานต่ำ การปรับอุปกรณ์ BLE เพื่อลดการใช้ <25uA ในปัจจุบัน และการออกแบบการแสดงอุณหภูมิ/ความชื้นที่กำหนดเองสำหรับมือถือของคุณ
ส่วนที่ 3 – การเปลี่ยน Redbear Nano V2 ครอบคลุมโดยใช้โมดูลที่ใช้ nRF52 อื่นแทน Nano V2 ครอบคลุมการเลือกส่วนประกอบอุปทาน การสร้าง การถอดการป้องกันการเขียนโปรแกรมชิป nRF52 การใช้หมุด NFC เป็น GPIO ปกติ และการกำหนดบอร์ด nRF52 ใหม่ใน Arduino
คำแนะนำนี้เป็นแอปพลิเคชั่นที่ใช้งานได้จริงของส่วนที่ 1 การสร้างอุปกรณ์ BLE ที่ใช้พลังงานต่ำมากซึ่งทำได้ง่ายด้วย Arduino โดยการสร้างเครื่องตรวจสอบอุณหภูมิและความชื้น BLE พลังงานต่ำมาก จอภาพจะทำงานได้นานหลายปีด้วยเซลล์แบบเหรียญหรือแบตเตอรี่ AAA 2 ก้อน หรือนานกว่านั้นด้วยระบบช่วยพลังงานแสงอาทิตย์ บทช่วยสอนนี้ครอบคลุมการปรับพารามิเตอร์ BLE สำหรับการใช้พลังงานต่ำและวิธีเพิ่มพลังงานให้กับอุปกรณ์ของคุณจากแบตเตอรี่หรือแบตเตอรี่ + พลังงานแสงอาทิตย์หรือพลังงานแสงอาทิตย์เท่านั้น
นอกจากการแสดงอุณหภูมิและความชื้นในปัจจุบันแล้ว จอภาพยังเก็บค่าการอ่าน 10 นาทีล่าสุด 36 ชั่วโมง 10 นาที และ 10 วันล่าสุดของการอ่านรายชั่วโมง สิ่งเหล่านี้สามารถสร้างแผนภูมิได้บนมือถือ Android ของคุณและค่าที่บันทึกไว้ในไฟล์บันทึก ไม่จำเป็นต้องมีการเขียนโปรแกรม Android pfodApp จัดการทั้งหมดนั้น การแสดงผลและการสร้างแผนภูมิของ Android ถูกควบคุมโดยร่าง Arduino ของคุณอย่างสมบูรณ์ เพื่อให้คุณสามารถปรับแต่งได้ตามต้องการ
บอร์ด Redbear Nano V2 ใช้สำหรับส่วนประกอบ nRF52832 BLE และบอร์ดแยก Sparkfun Si7021 ใช้สำหรับเซ็นเซอร์อุณหภูมิ/ความชื้น ไลบรารีพลังงานต่ำที่ได้รับการดัดแปลงใช้กับ Si7021 PCB ขนาดเล็กได้รับการออกแบบมาเพื่อรองรับ NanoV2 และส่วนประกอบการจัดหา อย่างไรก็ตาม เนื่องจากไม่มีส่วนประกอบที่ติดตั้งบนพื้นผิว คุณจึงสร้างสิ่งนี้บนบอร์ด vero ได้อย่างง่ายดาย ครอบคลุมสามเวอร์ชั่นของพาวเวอร์ซัพพลาย i) Battery plus Solar Assist, ii) แบตเตอรี่เท่านั้น, iii) Solar เท่านั้น ตัวเลือก Solar Only ไม่มีที่เก็บแบตเตอรี่และจะทำงานเมื่อมีแสงบางส่วนเท่านั้น ไฟส่องสว่างในห้องสว่างหรือโคมไฟตั้งโต๊ะก็เพียงพอแล้ว
เค้าร่าง
โครงการนี้มี 4 ส่วนที่เกี่ยวข้องกัน:-
- การเลือกส่วนประกอบและการก่อสร้าง
- รหัส – ไลบรารีเซ็นเซอร์พลังงานต่ำ ส่วนต่อประสานกับผู้ใช้ และ Arduino Sketch
- การวัดกระแสไฟจ่ายและอายุการใช้งานแบตเตอรี่
- ทางเลือกในการจัดหา – Solar Assist, แบตเตอรี่เท่านั้น, Solar Only
ขั้นตอนที่ 1: การเลือกส่วนประกอบ
การเลือกส่วนประกอบ
ตามที่กล่าวไว้ในตอนที่ 1 – เคล็ดลับในการหาวิธีแก้ปัญหาที่ใช้พลังงานต่ำจริงๆ คือไม่ต้องทำอะไรเป็นส่วนใหญ่ ลดกระแสไฟผ่านตัวต้านทานแบบดึงขึ้น/ดึงลงภายนอกบนอินพุต และไม่มีส่วนประกอบเพิ่มเติมใดๆ โปรเจ็กต์นี้จะใช้เทคนิคแต่ละอย่างเพื่อให้ได้โซลูชันที่ใช้พลังงานต่ำ
ส่วนประกอบ nRF52832
ชิป nRF52832 สามารถทำงานโดยใช้แหล่งจ่ายไฟระหว่าง 1.7V ถึง 3.6V (แรงดันไฟฟ้าสูงสุดสัมบูรณ์ 3.9V) ซึ่งหมายความว่าคุณสามารถจ่ายไฟให้กับชิปได้โดยตรงจากเซลล์แบบเหรียญหรือแบตเตอรี่ AAA 2 ก้อน อย่างไรก็ตาม ควรเพิ่มตัวควบคุมแรงดันไฟฟ้าเพื่อป้องกันชิปจากไฟเกิน ส่วนประกอบพิเศษนี้มีค่าใช้จ่ายด้านพลังงาน แต่ในกรณีของบอร์ด NanoV2 ตัวควบคุมออนบอร์ด TLV704 จะกินไฟน้อยกว่า 5.5uA สูงสุด ปกติเพียง 3.4uA เท่านั้น สำหรับการใช้พลังงานพิเศษเพียงเล็กน้อยนี้ คุณจะได้รับการป้องกันสำหรับอินพุตจ่ายไฟสูงสุด 24V
ส่วนประกอบ Si7021
โดยทั่วไปแล้วเซ็นเซอร์ Si7021 จะดึง <1uA เมื่อไม่ได้ทำการวัด เช่น ในโหมดสแตนด์บาย และสูงสุด 4mA เมื่อส่งข้อมูลผ่าน I2C เนื่องจากเราไม่ได้ทำการวัดอย่างต่อเนื่อง 4mA จึงไม่ใช่ส่วนสำคัญของกระแสไฟจ่ายเฉลี่ย การอ่านมาก 30 วินาทีจะเพิ่มน้อยกว่า 1uA ให้กับกระแสไฟจ่ายเฉลี่ย ดูการวัดกระแสของอุปทานด้านล่าง
มีบอร์ดฝ่าวงล้อม Si7021 สองแบบที่พร้อมใช้งาน หนึ่งจาก Adafruit และอีกหนึ่งจาก Sparkfun การดูกระดานทั้งสองอย่างรวดเร็วจะบอกคุณว่ากระดาน Adafruit มีส่วนประกอบมากกว่ากระดาน Sparkfun มากมาย ดังนั้นคุณคงมีแนวโน้มที่จะเลือกกระดาน Sparkfun การดูแผนผังของแต่ละบอร์ดแสดงให้เห็นว่าบอร์ด Sparkfun เป็นเพียงเซ็นเซอร์เปล่าและตัวต้านทานแบบดึงขึ้น 4k7 สองตัว ในขณะที่บอร์ด Adafruit มี MIC5225 ออนบอร์ด ตัวควบคุมซึ่งโดยทั่วไปจะดึง 29uA ตลอดเวลา นี่เป็นสิ่งสำคัญเมื่อกระแสไฟที่เหลือทั้งหมดของวงจรมีค่า <30uA เนื่องจากเรามีตัวควบคุมสำหรับชิป nRF52832 อยู่แล้ว จึงไม่จำเป็นต้องมีส่วนประกอบพิเศษนี้ และ Si7021 สามารถใช้พลังงานจากแหล่งจ่าย 3.3V นั้นได้ ดังนั้นโครงการนี้จึงจะใช้กระดานฝ่าวงล้อม Si7021 จาก Sparkfun
ลดกระแสผ่านตัวต้านทานแบบดึงขึ้น/ดึงลงภายนอกบนอินพุต
ตัวต้านทานแบบดึงขึ้น 4K7 I2C ไม่ได้มีค่าสูงเป็นพิเศษ และจะดึง 0.7mA เมื่อดึงต่ำ นี่จะเป็นปัญหาหากพวกเขาอยู่ที่ไหนบนอินพุตสวิตช์ที่ต่อสายดินเป็นเวลานาน อย่างไรก็ตามในโครงการนี้ กระแสผ่านตัวต้านทานเหล่านี้จะลดลงโดยใช้อินเทอร์เฟซ I2C นานๆ ครั้งและเพียงช่วงเวลาสั้นๆ เท่านั้น โดยส่วนใหญ่แล้วสาย I2C ไม่ได้ใช้งานและมีสถานะสูง / สามสถานะ ดังนั้นจึงไม่มีกระแสไหลผ่านตัวต้านทานเหล่านี้
ขั้นตอนที่ 2: การก่อสร้าง
โปรเจ็กต์นี้สร้างขึ้นบน PCB ขนาดเล็ก แต่เนื่องจากไม่มีส่วนประกอบ SMD จึงสามารถสร้างขึ้นได้อย่างง่ายดายโดยใช้บอร์ด vero PCB ผลิตโดย pcbcart.com จากไฟล์ Gerber เหล่านี้ TempHumiditySensor_R1.zip PCB มีจุดประสงค์ทั่วไปเพียงพอที่จะใช้สำหรับโครงการ BLE อื่น ๆ
แผนผังแสดงไว้ด้านบน นี่คือเวอร์ชัน pdf
ส่วนรายการ
ค่าใช้จ่ายโดยประมาณต่อหน่วย ณ ธันวาคม 2018 ~ 62 ดอลลาร์สหรัฐ ไม่รวมค่าขนส่งและโปรแกรมเมอร์จากตอนที่ 1
- หมีแดง NanoV2 ~ US$17
- Sparkfun Si7021 กระดานฝ่าวงล้อม ~US$8
- เซลล์แสงอาทิตย์ขนาด 2 x 53 มม. x 30 มม. 0.15W 5V เช่น บินเกิน ~ US$1.10
- 1 x PCB TempHumiditySensor_R1.zip ~US$25 for 5 off www.pcbcart.com OR Vero board (strip copper) e.g. Jaycar HP9540 ~ AUD$5
- ไดโอด schottky 2 x 1N5819 เช่น Digikey 1N5819FSCT-ND ~US$1
- ตัวต้านทาน 1 x 470R 0.4W 1% เช่น Digikey BC3274CT-ND ~US$0.25
- หมุดส่วนหัวตัวผู้ 6 x 6 พิน เช่น Sparkfun PRT-00116 ~ US$1.5
- จัมเปอร์หญิงกับหญิงเช่น รหัส Adafruit: 1950 ~ US$2
- สกรูไนลอน 3 มม. x 12 มม. เช่น สกรู Jaycar HP0140 ~ AUD$3
- น็อตไนลอน 3 มม. x 12 มม. เช่น น็อตไนลอน Jaycar HP0146 ~AUD$3
- สก๊อตช์ เทปกาวติดถาวร Cat 4010 e.g. จากอเมซอน ~US$6.6
- ที่ใส่แบตเตอรี่ AAA x 2 เช่น แบตเตอรี่สำรอง Sparkfun PRT-14219 ~ 1.5 เหรียญสหรัฐ
- แบตเตอรี่อัลคาไลน์ขนาด AAA 750mA 2 ก้อน เช่น แบตเตอรี่อัลคาไลน์ Sparkfun PRT-09274 ~ 1.0 เหรียญสหรัฐ แบตเตอรี่เหล่านี้ควรมีอายุการใช้งาน >2 ปี ถ่านอัลคาไลน์ Energizer มีความจุสูงกว่า
- กล่องพลาสติก (ABS) 83 มม. x 54 มม. x 31 มม. เช่น Jaycar HB6005 ~AUD$3
- pfodApp ~US$10
- 1 x 22uF 63V ตัวเก็บประจุ ESR ต่ำ (อุปกรณ์เสริม) เช่น Jaycar RE-6342 ~AUD$0.5 หรือ Digikey P5190-ND ~US$0.25
การก่อสร้างตรงไปตรงมา ที่ใส่แบตเตอรี่และโซลาร์เซลล์ถูกยึดไว้กับกล่องพลาสติกด้วยเทปกาวสองหน้าสำหรับงานหนัก
สังเกตสายลิงค์ Gnd จาก CLK ถึง GND ในส่วนที่เสร็จแล้ว มีการติดตั้งโปรแกรม AFTER เพื่อป้องกันสัญญาณรบกวนบนอินพุต CLK ไม่ให้ทริกเกอร์ชิป nRF52 เข้าสู่โหมดดีบักกระแสสูง
ขั้นตอนที่ 3: รหัส – ไลบรารีเซ็นเซอร์พลังงานต่ำ ส่วนต่อประสานกับผู้ใช้ และ Arduino Sketch
ดาวน์โหลดรหัสไปรษณีย์ lp_BLE_TempHumidity_R3.zip และเปิดเครื่องรูดลงในไดเร็กทอรี Arduino Sketches ของคุณ คุณต้องติดตั้งไลบรารี lp_So7021 จากไฟล์ zip นี้ และติดตั้งไลบรารี pfodParser ด้วย
ไลบรารีเซนเซอร์กำลังต่ำ, lp_Si7021
ทั้ง Adafruit และ Sparkfun ให้การสนับสนุนไลบรารีเพื่อเข้าถึงเซ็นเซอร์ Si7021 อย่างไรก็ตาม ไลบรารีทั้งสองนั้นไม่เหมาะสำหรับการใช้พลังงานต่ำมาก ทั้งคู่ใช้การหน่วงเวลา (25) ในโค้ดเพื่อชะลอการอ่านเซ็นเซอร์ขณะทำการวัด ตามที่ระบุไว้ในส่วนที่ 1 ความล่าช้าเป็นสิ่งชั่วร้าย Arduino delay() ช่วยให้ไมโครโปรเซสเซอร์ทำงานโดยใช้พลังงานในขณะที่รอให้การหน่วงเวลาหมดเวลา นี่เป็นการฝ่าฝืนกฎข้อแรกของ BLE ที่ใช้พลังงานต่ำ ไม่ต้องทำอะไรเป็นส่วนใหญ่ ไลบรารี lp_Si7021 ที่แทนที่ แทนที่การหน่วงเวลาทั้งหมดด้วย lp_timers ซึ่งทำให้ไมโครโปรเซสเซอร์เข้าสู่โหมดสลีปในขณะที่รอให้เซ็นเซอร์ทำการวัดจนเสร็จ
ไลบรารี lp_Si7021 มีความแตกต่างกันมากน้อยเพียงใด การใช้ไลบรารีสนับสนุน SparkFun Si7021 ดั้งเดิมและการอ่านหนึ่งวินาทีโดยไม่มีการพิมพ์ซีเรียลใดๆ จะทำให้ดึงค่าเฉลี่ย ~1.2mA การแทนที่ไลบรารี Sparkfun ด้วยไลบรารี lp_Si7021 จะลดกระแสเฉลี่ยลงเหลือ ~10uA ซึ่งน้อยกว่า 100 เท่า ในโครงการนี้ อัตราการวัดที่เร็วที่สุดคือทุกๆ 30 วินาทีเมื่อเชื่อมต่อมือถือ ซึ่งส่งผลให้กระแสเซ็นเซอร์เฉลี่ยน้อยกว่า 1uA เมื่อไม่มีการเชื่อมต่อ BLE อัตราการวัดจะเป็น 1 ครั้งทุกๆ 10 นาที และกระแสไฟจ่ายของเซ็นเซอร์โดยเฉลี่ยจะเล็กน้อย
หน้าจอผู้ใช้
ด้านบนเป็นหน้าจอหลักและมุมมองแบบซูมของประวัติรายชั่วโมง 10 วัน พล็อตสามารถซูมและเลื่อนทั้งสองทิศทางได้โดยใช้สองนิ้ว
ส่วนต่อประสานผู้ใช้ถูกเข้ารหัสในแบบร่าง Arduino แล้วส่งไปยัง pfodApp ในการเชื่อมต่อครั้งแรกที่แคชไว้สำหรับการใช้งานซ้ำและการอัพเดท การแสดงผลแบบกราฟิกสร้างขึ้นจากการวาดภาพแบบดั้งเดิม ดูการควบคุม Arduino แบบกำหนดเองสำหรับ Android สำหรับบทแนะนำเกี่ยวกับวิธีสร้างการควบคุมของคุณเอง ไฟล์เทอร์โมมิเตอร์ RHGauge และปุ่มมีคำสั่งการวาดสำหรับรายการเหล่านั้น
หมายเหตุ: ไม่มีหากจอแสดงผลนี้สร้างขึ้นใน pfodApp จอแสดงผลทั้งหมดถูกควบคุมโดยโค้ดในร่าง Arduino ของคุณอย่างสมบูรณ์
เมธอด sendDrawing_z() ในแบบร่าง lp_BLE_TempHumidity_R3.ino กำหนดอินเทอร์เฟซผู้ใช้
เป็นโมฆะ senddraw_z () { dwgs.start (50, 60, dwgs. WHITE); // พื้นหลังเริ่มต้นเป็น WHITE หากละเว้นเช่น start (50, 60); parser.sendRefreshAndVersion(30000); // ขอ dwg ใหม่ทุก ๆ 30 วินาที สิ่งนี้จะถูกละเว้นหากไม่มีการตั้งค่าเวอร์ชัน parser // แตะปุ่มด้านบนเพื่อบังคับให้แสดงการอัปเดต dwgs.touchZone().cmd('u').size(50, 39).send(); dwgs.pushZero(35, 22, 1.5); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg ถึง 35, 22 และขยายขนาด 1.5 เท่า rhGauge.draw(); // วาดตัวควบคุม dwgs.popZero(); dwgs.pushZero(18, 33); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg ถึง 18, 33 สเกลคือ 1 (ค่าเริ่มต้น) thermometer.draw(); // วาดตัวควบคุม dwgs.popZero();
dwgs.pushZero (12.5, 43, 0.7); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg เป็น 12.5, 43 และมาตราส่วน 0.7
ชม8PlotButton.draw(); // วาดตัวควบคุม dwgs.popZero(); dwgs.pushZero(37.5, 43, 0.7); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg เป็น 37.5, 43 และขยายขนาด 0.7 วัน1PlotButton.draw(); // วาดตัวควบคุม dwgs.popZero();
dwgs.pushZero (12.5, 54, 0.7); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg เป็น 12.5, 54 และขยายขนาด 0.7
วัน3PlotButton.draw(); // วาดตัวควบคุม dwgs.popZero(); dwgs.pushZero(37.5, 54, 0.7); // ย้ายศูนย์ไปที่กึ่งกลางของ dwg เป็น 37.5, 54 และขยายขนาด 0.7 วัน10PlotButton.draw(); // วาดตัวควบคุม dwgs.popZero(); dwgs.end(); }
คำสั่ง pushZero เปลี่ยนจุดเริ่มต้นและมาตราส่วนสำหรับการวาดองค์ประกอบถัดไป ซึ่งช่วยให้คุณสามารถเปลี่ยนขนาดและตำแหน่งของปุ่มและมาตรวัดได้อย่างง่ายดาย
ในการเชื่อมต่อครั้งแรก การแสดงผลเริ่มต้นจะใช้เวลา 5 หรือ 6 วินาทีในการดาวน์โหลด ~800 ไบต์ที่กำหนดการแสดงผล pfodApp แคชการแสดงผล ดังนั้นการอัปเดตในอนาคตจะต้องส่งการเปลี่ยนแปลง วัดตำแหน่งและการอ่านเท่านั้น การอัปเดตเหล่านี้ใช้เวลาเพียงไม่กี่วินาทีในการส่ง 128 ไบต์ที่จำเป็นในการอัปเดตการแสดงผล
มีโซนสัมผัสที่ใช้งานอยู่ห้า (5) โซนที่กำหนดไว้ในจอแสดงผล แต่ละปุ่มมีหนึ่งปุ่มที่กำหนดไว้ในวิธี draw() ดังนั้นคุณสามารถคลิกเพื่อเปิดพล็อตที่เกี่ยวข้อง และครึ่งบนของหน้าจอได้รับการกำหนดค่าเป็นโซนสัมผัสที่สาม
dwgs.touchZone().cmd('u').ขนาด(50, 39).send();
เมื่อคุณคลิกบนหน้าจอเหนือปุ่มต่างๆ คำสั่ง 'u' dwg จะถูกส่งไปยังภาพร่างของคุณเพื่อบังคับให้มีการวัดใหม่และอัปเดตหน้าจอ โดยปกติเมื่อเชื่อมต่อ การอัปเดตจะเกิดขึ้นทุกๆ 30 วินาทีเท่านั้น การคลิกหรือรีเฟรชภาพวาดแต่ละครั้งจะบังคับให้มีการวัดใหม่ การตอบสนองจากร่าง Arduino ไปยัง pfodApp จะล่าช้าจนกว่าการวัดใหม่จะเสร็จสิ้น (~25mS) เพื่อให้สามารถส่งค่าล่าสุดในการอัพเดทได้
Arduino Sketch
Arduino Sketch, lp_BLE_TempHumidity_R3.ino เป็นเวอร์ชันปรับปรุงของภาพร่างตัวอย่างที่ใช้ในส่วนที่ 1 แบบร่าง lp_BLE_TempHumidity_R3.ino แทนที่เมนูด้วยภาพวาดที่แสดงด้านบน นอกจากนี้ยังเพิ่มการรองรับเซ็นเซอร์ lp_Si7021 และอาร์เรย์ข้อมูลเพื่อจัดเก็บการวัดย้อนหลัง 10 นาทีและรายชั่วโมง
ภาวะแทรกซ้อนหลักในร่าง lp_BLE_TempHumidity_R3.ino คือการจัดการการส่งข้อมูลการลงจุด เมื่อทำการวัดแล้ว readRHResults() จะจัดการการรวบรวมผลลัพธ์และบันทึกลงในอาร์เรย์ในอดีต อาร์เรย์มีความยาว 120 แต่เมื่อมีการส่งข้อมูล 30 จุดข้อมูลแรกจะอยู่ในช่วงเวลาที่ละเอียดกว่า
มีบางจุดที่ต้องดูแลเมื่อส่ง 200 จุดแปลงคี่เพื่อแสดง: -
- จุดข้อมูลแต่ละจุดมีความยาวประมาณ 25 ไบต์ ในรูปแบบข้อความ CSV ดังนั้น 150 จุดคือข้อมูล 3750 ไบต์ คลาส lp_BLESerial มีบัฟเฟอร์ 1536 ไบต์ โดย 1024 อันมีขนาดใหญ่พอสำหรับข้อความ pfod ที่ใหญ่ที่สุด อีก 512 ไบต์สงวนไว้สำหรับการส่งข้อมูล เมื่อข้อมูลประวัติเต็ม 512 ไบต์ การส่งข้อมูลเพิ่มเติมจะล่าช้าจนกว่าจะมีที่ว่างในบัฟเฟอร์
- เพื่อหลีกเลี่ยงไม่ให้ข้อมูลการลงจุดทำให้การอัพเดทการแสดงผลหลักช้าลง ข้อมูลการลงจุดจะถูกส่งเฉพาะในขณะที่หน้าจอการลงจุดแสดง เมื่อผู้ใช้สลับกลับไปที่หน้าจอหลัก การส่งข้อมูลโครงเรื่องจะหยุดชั่วคราว การส่งข้อมูลการลงจุดจะดำเนินต่อเมื่อผู้ใช้คลิกปุ่มการลงจุดเพื่อแสดงพล็อตอีกครั้ง
- โครงเรื่องทางประวัติศาสตร์เริ่มต้นจาก 0 (ตอนนี้) และย้อนเวลากลับไป หากไม่มีการวัดใหม่ตั้งแต่แสดงพล็อตล่าสุด ข้อมูลก่อนหน้าที่ดาวน์โหลดไปแล้วจะแสดงอีกครั้งทันที หากมีการวัดใหม่ ข้อมูลนั้นจะถูกเพิ่มลงในข้อมูลแปลงก่อนหน้า
- เมื่อเปิดจอภาพในครั้งแรก จะไม่มีการอ่านค่าในอดีตและ 0 จะถูกเก็บไว้ในอาร์เรย์ว่าเป็นการอ่านที่ไม่ถูกต้อง เมื่อพล็อตปรากฏขึ้น การอ่านที่ไม่ถูกต้องจะถูกข้ามไป ส่งผลให้พล็อตสั้นลง
เซลเซียสและฟาเรนไฮต์
แบบร่าง lp_BLE_TempHumidity_R3.ino จะแสดงและแปลงข้อมูลเป็นเซลเซียส ในการแปลงผลลัพธ์เป็นฟาเรนไฮต์ ให้แทนที่การเกิดขึ้นทั้งหมดของ
parser.print(เซ็นเซอร์. Temp_RawToFloat(..
กับ
parser.print(เซ็นเซอร์. CtoF(เซ็นเซอร์. Temp_RawToFloat(…
และแทนที่สัญลักษณ์ unicode degC ใน Octal \342\204\203 ด้วยสัญลักษณ์ degF \342\204\211
pfodApp จะแสดง Unicode ใด ๆ ที่มือถือสามารถแสดงได้
ดูการใช้อักขระที่ไม่ใช่ ASCII ใน Arduino สำหรับรายละเอียดเพิ่มเติม เปลี่ยนการตั้งค่า MIN_C, MAX_C ใน Thermometer.h สุดท้ายปรับจำกัดพล็อตได้ตามต้องการ เช่น เปลี่ยน |อุณหภูมิ C~32~8~deg C|
เพื่อพูด
|อุณหภูมิ F~90~14~deg F|
ขั้นตอนที่ 4: การวัดกระแสอุปทาน
การใช้ไลบรารี lp_Si7021 แม้แต่การวัดอุณหภูมิ/ความชื้นทุกๆ 10 วินาทีก็มีส่วนช่วย ~1uA กับกระแสไฟเฉลี่ยเท่านั้น ดังนั้นปัจจัยหลักในกระแสไฟของอุปทานและด้วยเหตุนี้อายุการใช้งานแบตเตอรี่จึงเป็นกระแสที่ใช้โดยการโฆษณา BLE และการเชื่อมต่อและการส่งข้อมูล.
เชื่อมต่อแผงอุณหภูมิ/ความชื้นกับโปรแกรมเมอร์ที่อธิบายไว้ในส่วนที่ 1 ดังที่แสดงไว้ด้านบน
เมื่อถอดปลั๊กเซลล์สุริยะและแบตเตอรี่ Vin และ Gnd จะเชื่อมต่อกับ Vdd และ Gnd ของโปรแกรมเมอร์ (สายสีเหลืองและสีเขียว) และ SWCLK และ SWDIO จะเชื่อมต่อกับ Clk และ SIO ของแผงส่วนหัวของโปรแกรมเมอร์ (สายสีน้ำเงินและสีชมพู)
ตอนนี้คุณสามารถตั้งโปรแกรม NanoV2 และวัดกระแสไฟจ่ายได้ตามที่อธิบายไว้ในส่วนที่ 1
ติดตั้งไลบรารี Si7021 พลังงานต่ำจากไฟล์ zip นี้ lp_Si7021.zip และติดตั้งไลบรารี pfodParser และเปิดเครื่องรูด lp_BLE_TempHumidity_R3.zip ลงในไดเร็กทอรีสเก็ตช์ Arduino และตั้งโปรแกรมบอร์ด Temp/Humditiy ด้วย lp_BLE_TempHumidity_R3.ino
ดังที่กล่าวไว้ข้างต้น การมีส่วนร่วมของเซ็นเซอร์คือ <1uA โดยเฉลี่ย ที่อัตราการวัดสูงสุดที่ใช้ในโครงการนี้ ดังนั้นพารามิเตอร์การโฆษณาและการเชื่อมต่อ BLE จึงเป็นปัจจัยกำหนดอายุการใช้งานแบตเตอรี่
พารามิเตอร์การโฆษณาและการเชื่อมต่อ BLE ที่ส่งผลต่อการใช้กระแสไฟ ได้แก่:-Tx Power, Advertising Interval, Max and Min Connection Intervals และ Slave Latency
หมายเหตุ: การใช้การเชื่อมต่อด้านบนจะมีตัวควบคุมสองตัว (2) ตัวหนึ่งตัวบนบอร์ด NanoV2 ผ่าน Vin และ MAX8881 บนแหล่งจ่ายของโปรแกรมเมอร์ ซึ่งหมายความว่ากระแสจ่ายที่วัดได้จะสูงกว่าจริง ~ 5uA เนื่องจากตัวควบคุมที่สอง ค่าที่เสนอด้านล่างคือกระแสที่วัดได้ลบด้วย 5uA พิเศษนี้
Tx Power
เอฟเฟกต์ Tx Power จะจ่ายกระแสไฟทั้งเมื่อเชื่อมต่อและเมื่อโฆษณา (ไม่ได้เชื่อมต่อ) โปรเจ็กต์นี้ใช้การตั้งค่าพลังงานสูงสุด (+4) และให้ช่วงที่ดีที่สุดและป้องกันเสียงรบกวนสูงสุดสำหรับการเชื่อมต่อที่เชื่อถือได้มากที่สุด คุณสามารถใช้เมธอด lp_BLESerial setTxPower() เพื่อเปลี่ยนการตั้งค่าพลังงาน ค่าที่ใช้ได้คือ กำลังเพิ่มขึ้น -40, -30, -20, -16, -12, -8, -4, 0 +4 คุณต้องเรียกใช้เมธอด lp_BLESerial begin() ก่อนที่คุณจะเรียก setTxPower() ดูแบบร่าง lp_BLE_TempHumidity_R3.ino
คุณสามารถทดลองโดยลด Tx Power ลงได้ แต่การประนีประนอมคือช่วงที่สั้นกว่าและการเชื่อมต่อหลุดมากขึ้นเนื่องจากการรบกวน ในโครงการนี้ Tx Power จะถูกปล่อยไว้ที่ค่าเริ่มต้นคือ +4 ดังที่คุณจะเห็นด้านล่าง แม้จะมีการตั้งค่านี้ กระแสไฟที่จ่ายต่ำมากก็ยังคงเป็นไปได้
ช่วงเวลาโฆษณา
สำหรับพลัง Tx ที่กำหนด เมื่อไม่มีการเชื่อมต่อ ช่วงเวลาการโฆษณาจะกำหนดปริมาณการใช้กระแสไฟเฉลี่ย ช่วงที่แนะนำคือ 500 ถึง 1000mS ที่นี่ 2000mS ถูกใช้ การประนีประนอมคือช่วงการโฆษณาที่ยาวขึ้นหมายความว่ามือถือของคุณจะหาอุปกรณ์และตั้งค่าการเชื่อมต่อช้าลง ภายใน ช่วงการโฆษณาถูกกำหนดเป็นทวีคูณของ 0.625mS ในช่วง 20mS ถึง 10.24 วินาที lp_BLESerial setAdvertisingInterval() วิธีการรับ mS เป็นอาร์กิวเมนต์ เพื่อความสะดวก สำหรับช่วงการโฆษณา +4 TxPower และ 2000mS ปริมาณการใช้ปัจจุบันคือ ~18uA สำหรับช่วงโฆษณา 1000mS คือ ~ 29uA Rev 2 ใช้ช่วงการโฆษณา 2000mS แต่ส่งผลให้การเชื่อมต่อช้า Rev 3 เปลี่ยนเป็นช่วงโฆษณา 1000mS เพื่อให้การเชื่อมต่อเร็วขึ้น
ช่วงเวลาการเชื่อมต่อสูงสุดและต่ำสุด
เมื่อสร้างการเชื่อมต่อแล้ว ช่วงเวลาการเชื่อมต่อจะกำหนดความถี่ที่มือถือติดต่อกับอุปกรณ์ lp_BLESerial setConnectionInterval() ให้คุณตั้งค่าสูงสุดและต่ำสุดที่แนะนำ อย่างไรก็ตาม อุปกรณ์เคลื่อนที่จะควบคุมช่วงการเชื่อมต่อจริง ๆ เพื่อความสะดวก อาร์กิวเมนต์ของ setConnectionInterval() อยู่ใน mS แต่ภายในช่วงการเชื่อมต่ออยู่ในหลาย 1.25mS ในช่วง 7.5mS ถึง 4sec
การตั้งค่าเริ่มต้นคือ setConnectionInterval(100, 150) เช่น ขั้นต่ำ 100mS ถึงสูงสุด 150mS การเพิ่มค่าเหล่านี้จะช่วยลดกระแสไฟจ่ายขณะเชื่อมต่อ แต่การประนีประนอมคือการส่งข้อมูลช้าลง การอัปเดตหน้าจอแต่ละครั้งจะใช้เวลาประมาณ 7 ข้อความ BLE ในขณะที่การวัดเต็ม 10 นาที 36 ชั่วโมงเต็มจะใช้เวลาประมาณ 170 ข้อความ BLE ดังนั้นการเพิ่มช่วงการเชื่อมต่อจะทำให้การอัปเดตหน้าจอช้าลงและพล็อตจะแสดงขึ้น
คลาส lp_BLESerial มีบัฟเฟอร์การส่ง 1536 ไบต์ และส่งเพียงหนึ่งบล็อกขนาด 20 ไบต์จากบัฟเฟอร์นี้ แต่ละช่วงการเชื่อมต่อสูงสุดเพื่อป้องกันน้ำท่วมลิงก์ BLE พร้อมข้อมูล นอกจากนี้ เมื่อส่งข้อมูลพล็อต แบบร่างจะส่งข้อมูลจนกว่า 512 ไบต์กำลังรอส่ง จากนั้นจึงชะลอการส่งข้อมูลเพิ่มเติมจนกว่าจะมีการส่งข้อมูลบางส่วน นี้หลีกเลี่ยงน้ำท่วมส่งบัฟเฟอร์ การควบคุมปริมาณการส่งนี้ทำให้การส่งข้อมูลไปยังอุปกรณ์พกพามีความน่าเชื่อถือ แต่ไม่ได้รับการปรับให้เหมาะสมสำหรับการส่งผ่านข้อมูลสูงสุด
ในโครงการนี้ ช่วงเวลาการเชื่อมต่อเหลือไว้เป็นค่าเริ่มต้น
เวลาในการตอบสนองของทาส
เมื่อไม่มีข้อมูลที่จะส่งไปยังมือถือ อุปกรณ์สามารถเลือกที่จะเพิกเฉยต่อข้อความการเชื่อมต่อบางส่วนจากมือถือได้ สิ่งนี้ช่วยประหยัด Tx Power และกระแสไฟจ่าย การตั้งค่า Slave Latency คือจำนวนข้อความการเชื่อมต่อที่จะละเว้น ค่าเริ่มต้นคือ 0 สามารถใช้เมธอด lp_BLESerial setSlaveLatency() เพื่อเปลี่ยนการตั้งค่านี้ได้
Slave Latency เริ่มต้นที่ 0 ให้กระแสไฟ ~50uA โดยไม่สนใจหน้าจออัปเดตทุก ๆ 30 วินาที แต่รวมถึงข้อความ keepAlive มาก 5 วินาที การตั้งค่า Slave Latency เป็น 2 ให้กระแสไฟที่เชื่อมต่อโดยเฉลี่ยอยู่ที่ ~ 25uA การตั้งค่า Slave Latency ที่ 4 ให้ ~20uA ดูเหมือนว่าการตั้งค่าที่สูงขึ้นจะไม่ลดกระแสของแหล่งจ่าย ดังนั้นจึงใช้การตั้งค่า Slave Latency ที่ 4
เมื่อเชื่อมต่อ pfodApp ทุก ๆ 30 วินาทีจะขออัปเดตการแสดงผล ซึ่งจะบังคับให้วัดค่าเซ็นเซอร์และส่งข้อมูลกลับเพื่ออัปเดตการแสดงผลแบบกราฟิก การอัปเดตนี้ส่งผลให้เพิ่ม ~66uA เป็นเวลา 2 วินาทีทุกๆ 30 วินาที นั่นคือค่าเฉลี่ย 4.4uA ในช่วง 30 วินาที การเพิ่มสิ่งนี้ลงใน 20uA ให้กระแสไฟการเชื่อมต่อเฉลี่ยที่ ~25uA
ขั้นตอนที่ 5: การจ่ายกระแสไฟทั้งหมดและอายุการใช้งานแบตเตอรี่
โดยใช้การตั้งค่าด้านบน ตามที่กำหนดไว้ใน lp_BLE_TempHumidity_R3.ino Total Supply จะปัจจุบันเมื่อเชื่อมต่อและอัปเดตการแสดงผลทุกๆ 30 วินาที ประมาณ 25uA เมื่อไม่ได้เชื่อมต่อ จะอยู่ที่ประมาณ 29uA
สำหรับการคำนวณอายุการใช้งานแบตเตอรี่ จะถือว่าใช้กระแสไฟต่อเนื่องที่ ~29uA
แบตเตอรี่หลายชนิดมีความจุและลักษณะแรงดันไฟฟ้าต่างกัน แบตเตอรี่ที่พิจารณาในที่นี้คือเซลล์แบบเหรียญ CR2032, เซลล์แบบเหรียญ CR2450 (N), อัลคาไลน์ AAA 2 ก้อน, ลิเธียม AAA x 2 และ LiPo
สรุปแบตเตอรี่
หากใช้ Solar Assist ให้เพิ่ม 50% ให้กับตัวเลขอายุการใช้งานแบตเตอรี่ (สมมติว่า 8 ชั่วโมงต่อวันแสง)
หมายเหตุ: ตัวเก็บประจุ 22uF LowESR (C1) นอกเหนือจากตัวเก็บประจุ NanoV2 22uF ที่อยู่บนบอร์ด จะเก็บกระแสไฟฟ้าของโซลาร์เซลล์แล้วจ่ายให้กับพัลส์กระแส TX มิฉะนั้นแบตเตอรี่จะจ่ายกระแส TX บางส่วน LowESR พิเศษ 22uF นี้เพิ่มประมาณ 10% ให้กับกระแสไฟแบตเตอรี่เมื่อเซลล์แสงอาทิตย์ไม่ได้จ่ายไฟ แต่ยังช่วยยืดอายุการใช้งานของแบตเตอรี่ด้วยการชดเชยความต้านทานภายในของแบตเตอรี่ที่เพิ่มขึ้นเมื่อแบตเตอรี่หมดอายุการใช้งาน การวัดด้านล่างดำเนินการโดยไม่มีตัวเก็บประจุ 22uF เพิ่มเติม
CR2032 – 235mAHr – อายุการใช้งานแบตเตอรี่ 10 เดือนCR2450 (N) – 650mAHr (540mAHr) – อายุการใช้งานแบตเตอรี่ 2.3 ปี (2 ปี)2 x AAA Alkaline – 1250mAHr – อายุการใช้งานแบตเตอรี่ 3.8.yrs2 x AAA Lithium – 1200mAHr – อายุการใช้งานแบตเตอรี่ 4.7 yrsLiPo สามารถชาร์จใหม่ได้ – ไม่แนะนำ เนื่องจากการปลดปล่อยตัวเองสูง
CR2032
เซลล์แบบเหรียญนี้มีความจุโดยทั่วไป 235mAHr (แบตเตอรี่ Energizer) แรงดันไฟฟ้า 3V และแรงดันไฟที่ระบุ 2V นี้หมายถึงอายุการใช้งานแบตเตอรี่ 8100hrs หรือ ~ 0.9yr อย่างไรก็ตาม ความต้านทานของเซลล์ภายในจะเพิ่มขึ้นเมื่อแบตเตอรี่หมดอายุการใช้งาน ดังนั้นจึงอาจไม่สามารถให้พัลส์กระแส Tx สูงสุดได้ สามารถใช้ตัวเก็บประจุขนาดใหญ่เพื่อลดผลกระทบนี้ แต่บอกว่ามีอายุการใช้งาน 10 เดือน
CR2450 (N)
เซลล์แบบเหรียญนี้มีความจุโดยทั่วไป 620mAHr (540mAHr สำหรับ CR2450N) แรงดันไฟระบุ 3V และแรงดันไฟจ่าย 2V ที่ระบุ หมายถึงอายุการใช้งานแบตเตอรี่ 22, 400 ชม. หรือ ~ 2 ปี 6 ม. (18600 ชม. ~ 2 ปี 2 ม. สำหรับ CR2450N) อย่างไรก็ตาม ความต้านทานของเซลล์ภายในจะเพิ่มขึ้นเมื่อแบตเตอรี่หมดอายุการใช้งาน ดังนั้นจึงอาจไม่สามารถให้พัลส์กระแส Tx สูงสุดได้ สามารถใช้ตัวเก็บประจุขนาดใหญ่เพื่อลดผลกระทบนี้ได้ แต่ให้พูดว่าอายุ 2 ปี 4 เมตร (2 ปี N)
หมายเหตุ: รุ่น CR2450N มีปากที่หนาขึ้น ซึ่งช่วยป้องกันการติดตั้งที่ไม่ถูกต้องในที่ยึด CR2450N คุณสามารถแทรกเซลล์ CR2450N และ CR2450 ในที่ยึด CR2450 แต่คุณไม่สามารถแทรกเซลล์ CR2450 ในที่ยึด CR2450N
2 x AAA อัลคาไลน์เซลล์
แบตเตอรี่เหล่านี้มีความจุประมาณ 1250mAHr (แบตเตอรี่ Energizer) สำหรับกระแสไฟต่ำมาก แรงดันไฟระบุ 2x1.5V = 3V และแรงดันไฟจ่ายไฟที่ระบุ 2x0.8V = 1.6V แต่แรงดันการคายประจุที่ระบุนี้น้อยกว่าแรงดันใช้งานของเซ็นเซอร์ Si7021 (1.9V) ดังนั้นแบตเตอรี่จึงสามารถใช้ได้เพียง ~ 1V ต่ออันเท่านั้น ซึ่งจะช่วยลดความจุได้ประมาณ 10% ถึง 15% เช่น ~ 1000mAHr
นี้หมายถึงอายุการใช้งานแบตเตอรี่ 34, 500hrs หรือ ~ 4yrs อย่างไรก็ตาม ความต้านทานของเซลล์ภายในจะเพิ่มขึ้นเมื่อแบตเตอรี่หมดอายุการใช้งาน ดังนั้นจึงอาจไม่สามารถให้พัลส์กระแส Tx สูงสุดได้ สามารถใช้ตัวเก็บประจุขนาดใหญ่เพื่อลดผลกระทบนี้ แต่บอกว่าอายุการใช้งาน 3 ปี 10 เมตร หมายเหตุ แบตเตอรี่อัลคาไลน์มีการคายประจุเอง 2% ถึง 3% ต่อปี
2 x เซลล์ลิเธียม AAA
แบตเตอรี่เหล่านี้มีความจุประมาณ 1200mAHr (แบตเตอรี่ Energizer) แรงดันไฟฟ้าปกติ 2x1.7V = 3.4V ที่กระแสไฟต่ำ และแรงดันไฟที่คายประจุ 2x1.4V = 2.4V นี้หมายถึงอายุการใช้งานแบตเตอรี่ 41, 400hrs หรือ 4yrs 8m.
แบตเตอรี่ลิเธียมแบบชาร์จไฟได้
แบตเตอรี่เหล่านี้มีความจุหลากหลายตั้งแต่ 100mAHr ถึง 2000mAHr ในรูปแบบแบนและมีแรงดันไฟฟ้าที่ชาร์จ 4.2V และแรงดันไฟฟ้าที่คายประจุ >2.7V อย่างไรก็ตาม มีการคายประจุเองสูง 2%-3%/เดือน (เช่น 24% ถึง 36% ต่อปี) จึงไม่เหมาะกับการใช้งานนี้เท่ากับแบตเตอรี่อื่นๆ
ขั้นตอนที่ 6: ทางเลือกในการจัดหา – Solar Assist, แบตเตอรี่เท่านั้น, Solar Only
แบตเตอรี่บวกพลังงานแสงอาทิตย์ Assist
โครงสร้างด้านบนใช้แบตเตอรี่และแหล่งจ่ายไฟ Solar Assist เมื่อแผงโซลาร์เซลล์สร้างแรงดันไฟฟ้ามากกว่าแรงดันแบตเตอรี่ โซลาร์เซลล์จะจ่ายไฟให้กับจอภาพ ดังนั้นจึงช่วยยืดอายุแบตเตอรี่ โดยปกติแบตเตอรี่สามารถยืดอายุได้อีก 50%
แผงโซลาร์เซลล์ที่ใช้มีขนาดเล็ก 50 มม. x 30 มม. ราคาถูก ~ 0.50 เหรียญสหรัฐฯ และใช้พลังงานต่ำ เป็นแผง 5V ในนาม แต่ต้องการแสงแดดส่องโดยตรงเพื่อสร้าง 5V ในโครงการนี้ แผงสองแผงเชื่อมต่อกันเป็นชุดเพื่อให้วางจอภาพไว้ใกล้หน้าต่าง โดยไม่ได้รับแสงแดดโดยตรง เพียงพอที่จะจ่ายไฟเพื่อทดแทนพลังงานแบตเตอรี่ แม้แต่ห้องที่มีแสงสว่างเพียงพอหรือโคมไฟตั้งโต๊ะก็เพียงพอแล้วที่เซลล์แสงอาทิตย์จะสร้าง >3.3V ที่ >33uA และใช้แบตเตอรี่แทน
แผงทดสอบอย่างง่ายถูกสร้างขึ้นเพื่อกำหนดตำแหน่งที่สามารถวางเครื่องวัดอุณหภูมิ / ความชื้น ไม่ให้โดนแสงแดดและยังคงใช้พลังงานแสงอาทิตย์ ดังที่คุณเห็นจากภาพด้านบน แผงทั้งสองที่เชื่อมต่อกับตัวต้านทาน 100K กำลังผลิต 5.64V ใน 100K นั่นคือกระแส 56uA ที่ 5.64V นี่เป็นมากเกินเพียงพอในการควบคุมจอภาพจากแบตเตอรี่ การอ่านค่าแรงดันไฟฟ้าใดๆ ที่สูงกว่าแรงดันไฟแบตเตอรี่ปกติที่ 3V หมายความว่าเซลล์แสงอาทิตย์จะจ่ายไฟให้กับจอภาพแทนแบตเตอรี่
ไดโอดสองตัวในวงจร Temperature Humidity Monitor จะแยกโซลาร์เซลล์และแบตเตอรี่ออกจากกัน และป้องกันการเชื่อมต่อในขั้วย้อนกลับ ตัวต้านทานซีเนอร์ 10V 1W และ 470R ปกป้องตัวควบคุมออนบอร์ดของ NanoV2 จากแรงดันไฟเกินจากเซลล์แสงอาทิตย์สองเซลล์ในช่วงแดดจัด โดยเฉพาะอย่างยิ่งหากใช้เซลล์ 12V แทนเซลล์ 5V ในการทำงานปกติที่ <5V ซีเนอร์ 10V จะดึง ~1uA เท่านั้น
แบตเตอรี่เท่านั้น
สำหรับการจ่ายไฟแบบแบตเตอรีเท่านั้น ให้ละเว้น R1, D1 และ D3 และโซลาร์เซลล์ คุณยังสามารถแทนที่ D1 ด้วยลวดเส้นหนึ่งได้ หากคุณไม่ต้องการการป้องกันขั้วย้อนกลับ
พลังงานแสงอาทิตย์เท่านั้น
การจ่ายไฟให้จอภาพจากโซลาร์เซลล์เท่านั้น โดยไม่มีแบตเตอรี่ ต้องใช้วงจรจ่ายไฟที่ต่างออกไป ปัญหาคือในขณะที่จอภาพทำงานบน 29uA เมื่อเปิดเครื่อง nRF52 จะดึง ~5mA เป็นเวลา 0.32 วินาที วงจรที่แสดงด้านบน (เวอร์ชัน pdf) จะปิดตัวควบคุม MAX8881 จนกระทั่งตัวเก็บประจุอินพุต 2 x 1000uF ชาร์จได้ถึง 4.04V จากนั้น MAX6457 จะปล่อยอินพุต MAX8881 SHDN เพื่อเพิ่มพลังให้กับ nRF52 (NanoV2) ตัวเก็บประจุ 2 x 1000uF จะจ่ายกระแสไฟเริ่มต้นที่จำเป็น
ซึ่งช่วยให้จอภาพเปิดขึ้นทันทีที่มีพลังงานแสงอาทิตย์เพียงพอให้ทำงานที่ 29uA
ขั้นตอนที่ 7: บทสรุป
บทช่วยสอนนี้ได้นำเสนอเครื่องตรวจสอบความชื้นอุณหภูมิแบตเตอรี่/พลังงานแสงอาทิตย์เป็นตัวอย่างโครงการ BLE ที่ใช้พลังงานต่ำมากใน Arduino สำหรับชิป nRF52832 จ่ายกระแส ~ 29uA ซึ่งทำได้โดยการปรับพารามิเตอร์การเชื่อมต่อ ส่งผลให้แบตเตอรี่แบบเหรียญ CR2032 มีอายุการใช้งานนานกว่า 10 เดือน ยาวขึ้นสำหรับเซลล์เหรียญและแบตเตอรี่ความจุสูง การเพิ่มโซลาร์เซลล์ราคาถูกสองเซลล์ช่วยยืดอายุแบตเตอรี่ได้อย่างง่ายดาย 50% หรือมากกว่านั้น ไฟส่องสว่างในห้องสว่างหรือโคมไฟตั้งโต๊ะเพียงพอที่จะจ่ายไฟให้กับจอภาพจากเซลล์แสงอาทิตย์
มีการนำเสนอวงจรไฟฟ้าพิเศษเพื่อให้จอภาพทำงานได้อย่างหมดจดจากเซลล์แสงอาทิตย์ความจุต่ำ
pfodDesigner ฟรีช่วยให้คุณออกแบบเมนู/เมนูย่อย พล็อตตามวันที่/เวลาและบันทึกข้อมูล จากนั้นสร้างร่าง Arduino ที่ใช้พลังงานต่ำสำหรับคุณ ที่นี่อินเทอร์เฟซที่กำหนดเองถูกเข้ารหัสโดยใช้ pfodApp drawing primitives การเชื่อมต่อกับ pfodApp จะแสดงอินเทอร์เฟซผู้ใช้และอัปเดตการอ่านในขณะที่จอภาพใช้ ~29uA
ไม่จำเป็นต้องมีการเขียนโปรแกรม Android pfodApp จัดการทั้งหมดนั้น
แนะนำ:
M5STACK วิธีแสดงอุณหภูมิ ความชื้น และแรงกดบน M5StickC ESP32 โดยใช้ Visuino - ทำได้ง่าย: 6 ขั้นตอน
M5STACK วิธีแสดงอุณหภูมิ ความชื้น และความดันบน M5StickC ESP32 โดยใช้ Visuino - ง่ายต่อการทำ: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีตั้งโปรแกรม ESP32 M5Stack StickC ด้วย Arduino IDE และ Visuino เพื่อแสดงอุณหภูมิ ความชื้น และความดันโดยใช้เซ็นเซอร์ ENV (DHT12, BMP280, BMM150)
ทำให้เรือนกระจกอัตโนมัติด้วย LoRa! (ตอนที่ 1) -- เซนเซอร์ (อุณหภูมิ ความชื้น ความชื้นในดิน): 5 ขั้นตอน
ทำให้เรือนกระจกอัตโนมัติด้วย LoRa! (ตอนที่ 1) || เซ็นเซอร์ (อุณหภูมิ ความชื้น ความชื้นในดิน): ในโครงการนี้ ฉันจะแสดงให้คุณเห็นว่าฉันสร้างเรือนกระจกโดยอัตโนมัติได้อย่างไร นั่นหมายความว่าฉันจะแสดงให้คุณเห็นว่าฉันสร้างเรือนกระจกอย่างไรและเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์กำลังและระบบอัตโนมัติอย่างไร นอกจากนี้ ผมจะแสดงให้คุณเห็นถึงวิธีการตั้งโปรแกรมบอร์ด Arduino ที่ใช้ L
สถานีตรวจอากาศ Arduino โดยใช้ BMP280-DHT11 - อุณหภูมิ ความชื้น และความดัน: 8 ขั้นตอน
สถานีตรวจอากาศ Arduino โดยใช้ BMP280-DHT11 - อุณหภูมิ ความชื้น และความดัน: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีสร้างสถานีตรวจอากาศที่จะแสดงอุณหภูมิ ความชื้น และความดันบนจอ LCD TFT 7735 ดูวิดีโอสาธิต
วันในสัปดาห์ ปฏิทิน เวลา ความชื้น/อุณหภูมิ พร้อมโหมดประหยัดแบตเตอรี่: 10 ขั้นตอน (พร้อมรูปภาพ)
วันในสัปดาห์ ปฏิทิน เวลา ความชื้น/อุณหภูมิด้วยโหมดประหยัดแบตเตอรี่: โหมดประหยัดพลังงานนี่คือสิ่งที่ทำให้คำแนะนำนี้แตกต่างจากตัวอย่างอื่นๆ ที่แสดงวันในสัปดาห์ เดือน วันของเดือน เวลา ความชื้น และอุณหภูมิ ความสามารถนี้ทำให้โครงการนี้สามารถเรียกใช้จากแบตเตอรี่ได้โดยไม่ต้องใช้เ
Arduino + อุณหภูมิ + ความชื้น: 4 ขั้นตอน
Arduino + อุณหภูมิ + ความชื้น: เซ็นเซอร์อุณหภูมิอย่างง่ายโดยใช้เซ็นเซอร์อุณหภูมิความแม่นยำ LM35 เซ็นเซอร์ความชื้น และ Arduino เพื่อให้คุณสามารถเชื่อมต่อกับโครงการในอนาคตของคุณ วงจรจะส่งข้อมูลอนุกรมเกี่ยวกับอุณหภูมิและความชื้น เพื่อให้คุณสามารถใช้กับคอม