สารบัญ:
- ขั้นตอนที่ 1: ทำไมต้องเปลี่ยน Nano V2
- ขั้นตอนที่ 2: การเลือกส่วนประกอบและการก่อสร้าง
- ขั้นตอนที่ 3: การก่อสร้าง
- ขั้นตอนที่ 4: การลบแฟล็กการป้องกันการเข้ารหัส NRF52
- ขั้นตอนที่ 5: การเขียนโปรแกรม SKYLAB SKB369
- ขั้นตอนที่ 6: การสร้างนิยามบอร์ด Arduino NRF52 ใหม่
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: BLE พลังงานต่ำมากง่าย ๆ ใน Arduino ตอนที่ 3 - การเปลี่ยน Nano V2 - Rev 3: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
อัปเดต: 7 เมษายน 2019 – Rev 3 ของ lp_BLE_TempHumidity เพิ่มพล็อตวันที่/เวลา โดยใช้ pfodApp V3.0.362+ และการควบคุมปริมาณอัตโนมัติเมื่อส่งข้อมูล
อัปเดต: 24 มีนาคม 2019 – Rev 2 ของ lp_BLE_TempHumidity เพิ่มตัวเลือกการลงจุดและ i2c_ClearBus เพิ่มการรองรับ GT832E_01
บทนำ
บทช่วยสอนนี้ การแทนที่ Redbear Nano V2 เป็นส่วนที่ 3 จาก 3 นี่คือการแก้ไข 2 ของโครงการนี้ PCB ฉบับที่ 2 ประกอบด้วยการติดตั้งสำหรับเซลล์แบบเหรียญและเซ็นเซอร์ ทำให้โครงสร้างง่ายขึ้นและปรับปรุงการไหลเวียนของอากาศรอบ ๆ เซ็นเซอร์ในขณะที่ป้องกันจากแสงแดดโดยตรง ฉบับที่ 1 มาแล้วค่ะ
ส่วนที่ 1 - การสร้างอุปกรณ์ BLE ที่ใช้พลังงานต่ำมากทำได้ง่ายด้วย Arduino ครอบคลุมการตั้งค่า Arduino เพื่อเข้ารหัสอุปกรณ์ที่ใช้พลังงานต่ำ nRF52 โมดูลการเขียนโปรแกรมและการวัดกระแสไฟ นอกจากนี้ยังครอบคลุมถึงตัวจับเวลาและตัวเปรียบเทียบพลังงานต่ำแบบพิเศษและอินพุตที่ถูกหักล้างและการใช้ pfodApp เพื่อเชื่อมต่อและควบคุมอุปกรณ์ nRF52
ส่วนที่ 2 – การตรวจสอบความชื้นอุณหภูมิพลังงานต่ำมากครอบคลุมโดยใช้โมดูล Redbear Nano V2 และเซ็นเซอร์อุณหภูมิ/ความชื้น Si7021 เพื่อสร้างแบตเตอรี่พลังงานต่ำ / จอภาพพลังงานแสงอาทิตย์ นอกจากนี้ยังครอบคลุมถึงการปรับเปลี่ยนไลบรารี Si7021 ให้เป็นพลังงานต่ำ การปรับอุปกรณ์ BLE เพื่อลดการใช้กระแสไฟให้เหลือ <29uA และการออกแบบการแสดงอุณหภูมิ/ความชื้นที่กำหนดเองสำหรับมือถือของคุณ
ส่วนที่ 3 – การเปลี่ยน Redbear Nano V2 ในส่วนนี้ ครอบคลุมโดยใช้โมดูลที่ใช้ nRF52 อื่นแทน Nano V2 ครอบคลุมการเลือกส่วนประกอบอุปทาน การสร้าง การถอดการป้องกันการเขียนโปรแกรมชิป nRF52 การใช้หมุด NFC เป็น GPIO ปกติ และการกำหนดบอร์ด nRF52 ใหม่ใน Arduino
คำแนะนำนี้เป็นแอปพลิเคชั่นที่ใช้งานได้จริงของส่วนที่ 1 การสร้างอุปกรณ์ BLE ที่ใช้พลังงานต่ำมากซึ่งทำได้ง่ายด้วย Arduino โดยการสร้างเครื่องวัดอุณหภูมิและความชื้น BLE พลังงานต่ำมากโดยใช้บอร์ด SKYLAB SBK369 เพื่อทดแทน Nano V2 บทช่วยสอนนี้ครอบคลุมถึงวิธีสร้างคำจำกัดความของบอร์ดใหม่และวิธีลบการป้องกันการเขียนโปรแกรม nRF52 เพื่อให้สามารถตั้งโปรแกรมใหม่ได้ บทช่วยสอนนี้ใช้ภาพร่างเดียวกันกับส่วนที่ 2 ที่มีพารามิเตอร์ BLE ที่ปรับแต่งเหมือนกันสำหรับการใช้พลังงานต่ำและสามารถใช้พลังงานจากแบตเตอรี่หรือแบตเตอรี่ + พลังงานแสงอาทิตย์หรือพลังงานแสงอาทิตย์เท่านั้น การปรับค่าพารามิเตอร์ BLE สำหรับพลังงานต่ำครอบคลุมอยู่ในส่วนที่ 2
Rev 3 ของ lp_BLE_TempHumidity แปลงข้อมูลเทียบกับวันที่และเวลาโดยใช้ Arduino millis() ดูวันที่และเวลาของ Arduino โดยใช้มิลลิวินาที () และ pfodApp โดยใช้ pfodApp เวอร์ชันล่าสุด (V3.0.362+)
Rev 4 ของ pfod_lp_nrf52.zip ยังสนับสนุนโมดูล GT832E_01 และบทช่วยสอนนี้ครอบคลุมการใช้หมุด NFC nRF52 เป็น GPIO มาตรฐาน
จอภาพที่สร้างขึ้นที่นี่จะใช้งานได้นานหลายปีกับเซลล์แบบเหรียญหรือแบตเตอรี่ AAA 2 ก้อน นานกว่าด้วยระบบช่วยพลังงานแสงอาทิตย์ นอกจากการแสดงอุณหภูมิและความชื้นในปัจจุบันแล้ว จอภาพยังเก็บค่าการอ่าน 10 นาทีล่าสุด 36 ชั่วโมง 10 นาที และ 10 วันล่าสุดของการอ่านรายชั่วโมง สิ่งเหล่านี้สามารถสร้างแผนภูมิได้บนมือถือ Android ของคุณและค่าที่บันทึกไว้ในไฟล์บันทึก ไม่จำเป็นต้องมีการเขียนโปรแกรม Android pfodApp จัดการทั้งหมดนั้น การแสดงผลและการสร้างแผนภูมิของ Android ถูกควบคุมโดยร่าง Arduino ของคุณอย่างสมบูรณ์ เพื่อให้คุณสามารถปรับแต่งได้ตามต้องการ
ส่วนที่ 2 ใช้บอร์ด Redbear Nano V2 สำหรับส่วนประกอบ nRF52832 BLE โครงการนี้แทนที่ด้วยบอร์ด SKYLAB SKB369 ที่ถูกกว่า เช่นเดียวกับในส่วนที่ 2 บอร์ดฝ่าวงล้อม Sparkfun Si7021 ใช้สำหรับเซ็นเซอร์อุณหภูมิ / ความชื้น ไลบรารีพลังงานต่ำที่ได้รับการดัดแปลงใช้กับ Si7021
ขั้นตอนที่ 1: ทำไมต้องเปลี่ยน Nano V2
i) Nano V2 เลิกผลิตมาหลายเดือนแล้ว และดูเหมือนว่าจะไม่เหมาะกับผลิตภัณฑ์ Particle.io จึงไม่ชัดเจนว่าจะใช้งานได้นานเท่าใด
ii) Nano V2 มีราคาแพงกว่า แต่ก็ยังมีคุณสมบัติพิเศษ ดูด้านล่าง
iii) Nano V2 มีส่วนประกอบทั้งสองด้านซึ่งทำให้มีโปรไฟล์ที่สูงขึ้นและทำให้ติดตั้งได้ยากขึ้น
iv) Nano V2 มีพิน I/O ที่จำกัด และการใช้ D6 ถึง D10 ต้องใช้สายจูง
แม้ว่าบอร์ด Nano V2 จะมีราคาแพงกว่าบอร์ด SKYLAB SKB369, ~US17 เทียบกับ ~US5 แต่ Nano V2 มีคุณสมบัติมากกว่า Nano V2 มีตัวควบคุม 3.3V และตัวเก็บประจุจ่าย ส่วนประกอบเพิ่มเติมสำหรับการใช้ตัวเลือกตัวแปลง DC/DC nRF52 เสาอากาศแบบชิป และขั้วต่อเสาอากาศ uFL SMT
อีกทางเลือกหนึ่งคือโมดูล GT832E_01 ที่ใช้โดย www.homesmartmesh.com Rev 4 ของ pfod_lp_nrf52.zip ยังสนับสนุนการเขียนโปรแกรมโมดูล GT832E_01 SKYLAB SKB369 และ GT832E_01 มีอยู่ใน
Redbear (Particle.io) ยังมีโมดูลเปล่าที่ไม่มีตัวควบคุม 3V3, ส่วนประกอบ DC/DC หรือส่วนประกอบคริสตัล 32Khz
เค้าร่าง
โครงการนี้มี 4 ส่วนที่เกี่ยวข้องกัน:-
การเลือกส่วนประกอบและการก่อสร้าง การถอดแฟล็กการป้องกันการเข้ารหัส nRF52 และการเขียนโปรแกรมแบบร่าง การสร้างนิยามใหม่ของบอร์ด Arduino nRF52 การกำหนดค่าหมุด NFC ของ nRF52 ใหม่เป็น GPIO
ขั้นตอนที่ 2: การเลือกส่วนประกอบและการก่อสร้าง
การเลือกส่วนประกอบ
นอกจากส่วนประกอบ nRF52832 และ Si7021 ที่เลือกไว้ในส่วนที่ 2 แล้ว โครงการนี้ยังเพิ่มตัวควบคุม 3.3V และตัวเก็บประจุจ่าย
ส่วนประกอบตัวควบคุมแรงดันไฟฟ้า
ตัวควบคุมที่ใช้ในที่นี้คือ MC87LC33-NRT สามารถรองรับอินพุตสูงสุด 12V และมีกระแสไฟนิ่งที่ <3.6uA ซึ่งปกติคือ 1.1uA Nano V2 ใช้ตัวควบคุม TLV704 มีกระแสไฟที่นิ่งกว่าเล็กน้อย ซึ่งโดยทั่วไปคือ 3.4uA และสามารถรองรับแรงดันไฟฟ้าขาเข้าที่สูงขึ้นได้ถึง 24V MC87LC33-NRT ได้รับเลือกแทนเนื่องจากแผ่นข้อมูลระบุว่าจะตอบสนองอย่างไรเมื่อแรงดันไฟฟ้าขาเข้าต่ำกว่า 3.3V โดยที่แผ่นข้อมูล TLV704 ไม่ทำ
TLV704 ระบุแรงดันไฟฟ้าขาเข้าขั้นต่ำ 2.5V และไม่ชัดเจนจากแผ่นข้อมูลว่าจะเกิดอะไรขึ้นด้านล่าง nRF52832 จะลดลงเหลือ 1.7V และ Si7023 จะลดลงเหลือ 1.9V ในทางกลับกัน MC87LC33-NRT จะระบุความแตกต่างของแรงดันอินพุต/เอาต์พุตลงไปที่ 0V สำหรับกระแสต่ำ (รูปที่ 18 ของแผ่นข้อมูล) ด้วยการเลือกส่วนประกอบ MC87LC33-NRT จึงถูกเลือกเนื่องจากมีประสิทธิภาพที่ระบุ
ตัวเก็บประจุ
ตัวควบคุม MC87LC33-NRT ต้องการตัวเก็บประจุบางตัวเพื่อความเสถียรและการตอบสนอง แนะนำให้ใช้ตัวเก็บประจุเอาต์พุต > 0.1uF ในแผ่นข้อมูล SKYLAB SBK369 ยังระบุตัวเก็บประจุ 10uF/0.1uF บนแหล่งจ่ายใกล้กับบอร์ด ตัวเก็บประจุขนาดใหญ่ช่วยในการจ่ายกระแสไฟแหลม nRF52 TX ที่นี่ใช้ตัวเก็บประจุเซรามิกขนาด 4 x 22uF 25V และ 3 x 0.1uF 50V วางตัวเก็บประจุขนาด 22uF และ 0.1uF หนึ่งตัวไว้ใกล้กับ SKYLAB SBK369 โดยวาง 0.1uF ไว้ใกล้กับเอาต์พุตของ MC87LC33-NRT เพื่อให้แน่ใจว่ามีความเสถียรและวาง 22uF และ 0.1uF บนอินพุตของ MC87LC33-NRT และ ตัวเก็บประจุ 2 x 22uF เพิ่มเติมที่บัดกรีข้ามพิน Vin / GND เป็นอ่างเก็บน้ำปัจจุบันเพิ่มเติม สำหรับการเปรียบเทียบ บอร์ด NanoV2 มีอินพุต 22uF / 0.1uF กับตัวควบคุม TLV704 และเอาต์พุต 0.1uF
มีการติดตั้งตัวเก็บประจุอ่างเก็บน้ำกระแสพิเศษบนอินพุตไปยังตัวควบคุม 3.3V เพื่อให้ประจุไฟฟ้าสูงขึ้นเมื่อทำงานกับเซลล์แสงอาทิตย์ การชาร์จด้วยไฟฟ้าแรงสูงจะเท่ากับการเก็บกระแสไฟให้มากขึ้นเพื่อจ่ายกระแสไฟให้แหลม Tx
ตัวเก็บประจุเซรามิก X5R ใช้เพราะมีความต้านทานอนุกรมต่ำและมีกระแสไฟรั่วต่ำ ความต้านทานโดยทั่วไปคือ 100, 000MΩ หรือ 1000MΩ – µF ซึ่งน้อยกว่า ดังนั้นสำหรับ 22uF เรามี 22000MΩ นั่นคือ 0.15nA รั่วที่ 3.3V หรือ 0.6nA สำหรับตัวเก็บประจุ 22uF สี่ตัว นั่นเป็นเรื่องเล็กน้อย สำหรับการเปรียบเทียบ Low ESR ตัวเก็บประจุ Panasonic Electrolytic แบบ Low Leakage มีกระแสไฟรั่วที่ <0.01CV ดังนั้นสำหรับตัวเก็บประจุ 22uF 16V การรั่วไหลคือ <10uA หมายเหตุ: นี่คือการรั่วที่แรงดันไฟฟ้า 16V ในกรณีนี้ การรั่วไหลต่ำกว่าที่แรงดันไฟฟ้าต่ำกว่า เช่น <2.2uA ที่ 3.3V
ส่วนรายการ
ค่าใช้จ่ายโดยประมาณต่อหน่วย ณ ธันวาคม 2018 ~ 61 ดอลลาร์สหรัฐ ไม่รวมค่าขนส่งและโปรแกรมเมอร์จากตอนที่ 1
- SKYLAB SKB369 ~ US$5 เช่น Aliexpress
- Sparkfun Si7021 กระดานฝ่าวงล้อม ~US$8
- เซลล์แสงอาทิตย์ขนาด 2 x 53 มม. x 30 มม. 0.15W 5V เช่น บินเกิน ~ US$1.10
- 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~US$25 for 5 off www.pcbcart.com
- 1 x MC78LC33 ตัวควบคุม 3.3V เช่น Digikey MC78LC33NTRGOSCT-ND ~US$1
- 2 x 0.1uF 50V เซรามิก C1608X5R1H104K080A เช่น Digikey 445-7456-1-ND ~US$0.3
- 4 x 22uF 16V เซรามิก GRM21BR61C226ME44L เช่น Digikey 490-10747-1-ND ~US$2
- 1 x BAT54CW เช่น Digikey 497-12749-1-ND ~US$0.5
- ตัวต้านทาน 1 x 470R 0.5W 1% เช่น Digikey 541-470TCT-ND ~US$0.25
- 1 x 10V 1W ซีเนอร์ SMAZ10-13-F เช่น Digikey SMAZ10-FDICT-ND ~US$0.5
- สกรูไนลอน 3 มม. x 12 มม. เช่น สกรู Jaycar HP0140 ~ AUD$3
- น็อตไนลอน 3 มม. x 12 มม. เช่น น็อตไนลอน Jaycar HP0146 ~AUD$3
- สก๊อตช์ เทปกาวติดถาวร Cat 4010 e.g. จากอเมซอน ~US$6.6
- ที่ใส่แบตเตอรี่ CR2032 เช่น ที่ใส่แบตเตอรี่ HU2032-LF ~ US$1.5
- แบตเตอรี่ CR2032 ~ US$1
- แผ่น Perspex, 3.5mm และ 8mm
- pfodApp ~US$10
- วางประสานเช่น Jaycar NS-3046 ~ AUD$13
ขั้นตอนที่ 3: การก่อสร้าง
โครงการนี้สร้างขึ้นบน PCB ขนาดเล็ก PCB ผลิตโดย pcbcart.com จากไฟล์ Gerber เหล่านี้ SKYLAB_TempHumiditySensor_R2.zip PCB เลียนแบบพิน Nano V2 และมีวัตถุประสงค์ทั่วไปเพียงพอที่จะใช้สำหรับโครงการ BLE อื่นๆ
นี่คือแผนผัง (เวอร์ชัน pdf)
ขั้นแรกให้ประสานส่วนประกอบ SMD จากนั้นติดตั้งบอร์ด SKYLAB SKB369
ส่วนประกอบเกือบทั้งหมดเป็นอุปกรณ์ยึดพื้นผิว (SMD) ตัวเก็บประจุและไอซีอาจบัดกรีด้วยมือได้ยาก วิธีที่แนะนำคือการจับ PCB ไว้ในคีมคีบและทาบัดกรีจำนวนเล็กน้อยบนแผ่นอิเล็กโทรด และวางส่วนประกอบ SMD ยกเว้นบอร์ด SKB369 บน PCB จากนั้นใช้ปืนฉีดความร้อน ทาความร้อนที่ด้านล่างของ PCB จนกว่าสารบัดกรีจะละลาย จากนั้นจึงผ่านส่วนบนของบอร์ดอย่างรวดเร็วโดยระวังอย่าให้ส่วนประกอบหลุดออก ในที่สุดสัมผัสส่วนประกอบด้วยหัวแร้งขนาดเล็ก โปรดใช้ความระมัดระวังกับตัวเก็บประจุและตัวต้านทาน เนื่องจากสามารถละลายปลายทั้งสองข้างได้ง่าย และให้ส่วนประกอบหลวมขณะบัดกรีที่ปลายด้านหนึ่ง
การแก้ไขนี้เพิ่มตัวเก็บประจุเซรามิกขนาด 22uF 16V พิเศษ ตัวเก็บประจุพิเศษเหล่านี้ช่วยลดกระแสไฟกระชากที่ดึงออกมาจากแบตเตอรี่และยังช่วยลดแรงดันไฟตกเมื่อใช้พลังงานจากเซลล์แสงอาทิตย์ ตราบใดที่แรงดันไฟฟ้าจากเซลล์แสงอาทิตย์ยังคงอยู่เหนือแรงดันแบตเตอรี่ จะไม่มีกระแสไฟฟ้าไหลออกจากแบตเตอรี่
หลังจากติดตั้งส่วนประกอบ SMD แล้ว คุณสามารถบัดกรีในบอร์ด SKYLAB SKB369 ได้ มีจุดทดสอบสองรูที่ด้านหนึ่งของแท็บ SKB369 ใช้หมุดสองตัวบนฐานกระดาษแข็งเพื่อจัดตำแหน่งบอร์ด SKB369 และจัดตำแหน่งหมุดอย่างระมัดระวัง (ดูภาพตัวอย่างด้านบนโดยใช้ Revision 1 PCB) จากนั้นประสานพินด้านตรงข้ามหนึ่งอันเพื่อยึดบอร์ดให้เข้าที่ก่อนที่จะบัดกรีพินอื่นๆ
สังเกตสายลิงค์ Gnd จาก CLK ถึง GND ในส่วนที่เสร็จแล้ว มีการติดตั้งโปรแกรม AFTER เพื่อป้องกันสัญญาณรบกวนบนอินพุต CLK ไม่ให้ทริกเกอร์ชิป nRF52 เข้าสู่โหมดดีบักกระแสสูง
เคสติดตั้ง
ตัวเคสทำจากเพอร์สเปกซ์ 2 ชิ้น ขนาด 110 มม. x 35 มม. หนา 3 มม. ชิ้นส่วนขนาด 3.5 มม. ใต้แผงโซลาร์เซลล์ถูกเคาะเพื่อขันสกรูไนลอน 3 มม. โครงสร้างที่แก้ไขนี้ทำให้ง่ายขึ้นเมื่อเทียบกับ Rev 1 และปรับปรุงการไหลเวียนของอากาศรอบๆ เซ็นเซอร์ รูพิเศษที่ปลายแต่ละด้านใช้สำหรับยึด เช่น ใช้สายรัด
ขั้นตอนที่ 4: การลบแฟล็กการป้องกันการเข้ารหัส NRF52
เชื่อมต่อแผงอุณหภูมิ/ความชื้นกับโปรแกรมเมอร์ที่อธิบายไว้ในส่วนที่ 1 ดังที่แสดงไว้ด้านบน
เมื่อถอดปลั๊กเซลล์แสงอาทิตย์และแบตเตอรี่ Vin และ Gnd จะเชื่อมต่อกับ Vdd และ Gnd ของโปรแกรมเมอร์ (สายสีเหลืองและสีเขียว) และ SWCLK และ SWDIO จะเชื่อมต่อกับ Clk และ SIO ของแผงส่วนหัวของโปรแกรมเมอร์ (สายสีขาวและสีเทา)
การลบการป้องกันโปรแกรม nRF52
จาก Nordic Semi – Debug and Trace หน้า DAP - Debug Access Port ดีบักเกอร์ภายนอกสามารถเข้าถึงอุปกรณ์ผ่าน DAP DAP ใช้ ARM® CoreSight™ Serial Wire Debug Port (SW-DP) มาตรฐาน SW-DP ใช้โปรโตคอล Serial Wire Debug (SWD) ซึ่งเป็นอินเทอร์เฟซซีเรียลแบบสองพิน SWDCLK และ SWDIO
สำคัญ: สาย SWDIO มีตัวต้านทานแบบดึงขึ้นภายใน สาย SDWCLK มีตัวต้านทานแบบดึงลงภายใน
CTRL-AP - ควบคุมพอร์ตการเข้าถึง Control Access Port (CTRL-AP) เป็นพอร์ตการเข้าถึงแบบกำหนดเองที่ช่วยให้สามารถควบคุมอุปกรณ์ได้ แม้ว่าพอร์ตการเข้าถึงอื่นๆ ใน DAP จะถูกปิดใช้งานโดยการป้องกันพอร์ตการเข้าถึง การป้องกันพอร์ตการเข้าถึงจะบล็อกดีบักเกอร์ไม่ให้เข้าถึงการอ่านและเขียนไปยังการลงทะเบียน CPU ทั้งหมดและที่อยู่ที่แมปหน่วยความจำ ปิดใช้งานการป้องกันพอร์ตการเข้าถึง การป้องกันพอร์ตการเข้าถึงสามารถปิดใช้งานได้โดยการออกคำสั่ง ERASEALL ผ่าน CTRL-AP เท่านั้น คำสั่งนี้จะลบ Flash, UICR และ RAM
เลือก CMSIS-DAP เป็นโปรแกรมเมอร์สำหรับโปรแกรมแก้ไขข้อบกพร่องของอนุภาค และเลือก nRF5 Flash SoftDevice
หากแฟลชใช้งานได้ก็ไม่เป็นไร แต่บ่อยครั้งโมดูลจะได้รับการปกป้องจากการตั้งโปรแกรมซ้ำ และคุณจะได้รับเอาต์พุตข้อผิดพลาดนี้ในหน้าต่าง Arduino
Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13) ได้รับอนุญาตภายใต้ GNU GPL v2 สำหรับรายงานข้อผิดพลาด อ่าน https://openocd.org/doc/doxygen/bugs.html debug_level: 2 ข้อมูล: ตัวเลือกการขนส่งเดียวเท่านั้น เลือกอัตโนมัติ 'swd' อะแดปเตอร์ความเร็ว: 10000 kHz cortex_m reset_config sysresetreq ข้อมูล: CMSIS-DAP: SWD ข้อมูลที่รองรับ: CMSIS-DAP: ข้อมูลเริ่มต้นของอินเทอร์เฟซ (SWD): CMSIS-DAP: เวอร์ชัน FW = 1.10 ข้อมูล: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 ข้อมูล: CMSIS-DAP: ข้อมูลพร้อมอินเทอร์เฟซ: ลดคำขอความเร็ว: สูงสุด 10000kHz ถึง 5000kHz ข้อมูล: ความเร็วสัญญาณนาฬิกา 10000 kHz ข้อมูล: SWD IDCODE 0x2ba01477 ข้อผิดพลาด: ไม่พบ MEM -AP เพื่อควบคุมข้อผิดพลาดหลัก: ยังไม่ได้ตรวจสอบเป้าหมาย เกิดข้อผิดพลาดขณะกระพริบ SoftDevice
ในกรณีนั้น คุณต้องตั้งค่าคำสั่ง ERASEALL รีจิสเตอร์ใน nRF52 เพื่อล้างหน่วยความจำและทำให้อุปกรณ์สามารถตั้งโปรแกรมได้อีกครั้ง เวอร์ชันของ openOCD ที่มาพร้อมกับ sandeepmistry nRF52 ไม่มีคำสั่ง apreg ที่จำเป็นในการเขียนไปยังรีจิสเตอร์คำสั่ง ERASEALL ดังนั้นคุณต้องติดตั้งเวอร์ชันที่ใหม่กว่า
ติดตั้ง OpenOCD เวอร์ชัน OpenOCD-20181130 หรือสูงกว่า เวอร์ชันที่คอมไพล์ล่วงหน้าของ Windows มีให้ที่ https://gnutoolchains.com/arm-eabi/openocd/ รหัสล่าสุดหาได้จาก
เปิดพรอมต์คำสั่งและเปลี่ยน dir เป็นไดเร็กทอรีการติดตั้ง OpenOCD และป้อนคำสั่ง
bin\openocd.exe -d2 -f ส่วนต่อประสาน/cmsis-dap.cfg -f target/nrf52.cfg
คำตอบคือ
Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Licensed under GNU GPL v2 สำหรับรายงานข้อผิดพลาด อ่าน https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 ข้อมูล: การเลือก "swd" การขนส่งเซสชันแรกที่มีให้โดยอัตโนมัติ หากต้องการแทนที่ให้ใช้ ' ขนส่งเลือก ' ความเร็วอะแดปเตอร์: 1000 kHz cortex_m reset_config sysresetreq ข้อมูล: ฟังพอร์ต 6666 สำหรับการเชื่อมต่อ tcl ข้อมูล: ฟังพอร์ต 4444 สำหรับการเชื่อมต่อ telnet ข้อมูล: CMSIS-DAP: SWD ข้อมูลที่รองรับ: CMSIS-DAP: FW เวอร์ชัน = 1.10 ข้อมูล: CMSIS-DAP: ข้อมูลเริ่มต้นของอินเทอร์เฟซ (SWD): SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 ข้อมูล: CMSIS-DAP: ข้อมูลพร้อมสำหรับอินเทอร์เฟซ: ความเร็วสัญญาณนาฬิกา 1000 kHz ข้อมูล: SWD DPIDR 0x2ba01477 ข้อผิดพลาด: ไม่พบ MEM-AP เพื่อควบคุมข้อมูลหลัก: กำลังฟังพอร์ต 3333 สำหรับการเชื่อมต่อ gdb
จากนั้นเปิดหน้าต่างเทอร์มินัลเช่น TeraTerm (Windows) หรือ CoolTerm (Mac) และเชื่อมต่อกับพอร์ต 127.0.0.1 4444
หน้าต่าง telnet จะแสดง a > และพรอมต์คำสั่งจะแสดงข้อมูล: ยอมรับการเชื่อมต่อ 'telnet' บน tcp/4444
ในหน้าต่าง telnet (เช่น TeraTerm) typenrf52.dap apreg 1 0x04นี่จะคืนค่า 0x00000000 แสดงว่าชิปได้รับการปกป้อง จากนั้น typenrf52.dap apreg 1 0x04 0x01 และ thennrf52.dap apreg 1 0x04this จะคืนค่า 0x00000001 แสดงว่าชิปได้รับการตั้งค่าเป็น ERASEALL ในการรีสตาร์ทครั้งถัดไป
ปิดการเชื่อมต่อ telnet และใช้ Ctrl-C เพื่อออกจากโปรแกรม openOCD ในพรอมต์คำสั่ง จากนั้นเปิดเครื่องโมดูล nRF52 และตอนนี้ก็พร้อมที่จะตั้งโปรแกรม
ตอนนี้ลองแฟลช softdevice อีกครั้ง
ตอนนี้คุณสามารถตั้งโปรแกรมโมดูล nRF52 จาก Arduino ได้แล้ว
ขั้นตอนที่ 5: การเขียนโปรแกรม SKYLAB SKB369
ปิด Arduino และติดตั้งเวอร์ชันล่าสุดของการสนับสนุน pfod_lp_nrf52 โดยทำตามคำแนะนำในการติดตั้งฮาร์ดแวร์ pfod_lp_nrf52 pfod_lp_nrf52 ล่าสุดมีบอร์ดสำรอง SKYLAB SKB369 Nano2 เลือกให้เป็นบอร์ด จากนั้นคุณสามารถตั้งโปรแกรมด้วยการแก้ไข 3 ของ lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip ตามที่อธิบายไว้ในส่วนที่ 2
หากการเขียนโปรแกรมล้มเหลว ปิดหน้าต่าง Arduino ทั้งหมด ถอดสาย USB ออก รีสตาร์ท Arduino แล้วเสียบสาย USB ของโปรแกรมเมอร์กลับเข้าไป แล้วเสียบอุปกรณ์จ่าย USB ของโมดูล nRF52 กลับเข้าไปแล้วลองอีกครั้ง
จากนั้นเชื่อมต่อผ่าน pfodApp เพื่อแสดงอุณหภูมิและความชื้นในปัจจุบันและในอดีต เมื่อคุณได้แสดงโครงเรื่องในอดีตแล้ว การอ่านที่มีการประทับเวลาเป็นมิลลิวินาทีจะถูกบันทึกลงในไฟล์บันทึกบนมือถือของคุณ และยังมีอยู่ในหน้าจอข้อมูลดิบอีกด้วย
ไฟล์บันทึกยังมีข้อมูลเพิ่มเติมที่จำเป็นในการสร้างพล็อตวันที่และเวลาใหม่ในสเปรดชีต ดูวันที่และเวลาของ Arduino โดยใช้มิลลิวินาที () และ pfodApp สำหรับรายละเอียด
ขั้นตอนที่ 6: การสร้างนิยามบอร์ด Arduino NRF52 ใหม่
เพื่อรองรับบอร์ด nRF52 ใหม่ คุณต้อง a) เพิ่มไดเร็กทอรีใหม่ภายใต้ไดเร็กทอรีตัวแปรด้วยไฟล์บอร์ด และ b) แก้ไขไฟล์ boards.txt เพื่อเพิ่มบอร์ดใหม่ให้กับ Arduino
การเพิ่มตัวแปรบอร์ด nRF52 ใหม่
ตามที่อธิบายไว้ในส่วนที่ 1 การติดตั้งการสนับสนุนฮาร์ดแวร์ pfod_lp_nrf52 ค้นหาไดเร็กทอรีย่อยฮาร์ดแวร์ของแพ็คเกจ sandeepmistry ที่คุณได้อัปเดตด้วยการสนับสนุน pfod_lp_nrf52 เปิดไดเร็กทอรีย่อย \hardware\nRF5\0.6.0\variants และสร้างไดเร็กทอรีใหม่สำหรับบอร์ดใหม่ของคุณ เช่น SKYLAB_SKB369_Nano2replacement ในไดเร็กทอรีย่อย \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2replacement ใหม่ ให้สร้างไฟล์ Variant.h สามไฟล์, Variant.cpp และ pins_arduino.h คุณสามารถคัดลอกจากไดเร็กทอรีตัวแปรของบอร์ดอื่นๆ สำหรับ SKYLAB_SKB369_Nano2replacement ฉันเริ่มคัดลอกไฟล์จากตัวแปร RedBear_BLENano2
ไฟล์ pins_arduino.h
ไม่จำเป็นต้องเปลี่ยนไฟล์ pins_arduino.h มันรวมไฟล์ Variant.h ไว้ด้วย
ไฟล์ Variation.h
แก้ไขไฟล์ Variant.h เพื่อกำหนดจำนวนพินทั้งหมดที่บอร์ดของคุณจะมี PINS_COUNT
หมายเหตุ: ในแพ็คเกจ sandeepmistry การตั้งค่า NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS และ NUM_ANALOG_OUTPUTS จะถูกละเว้น
หากบอร์ดของคุณมีพินอะนาล็อกมากหรือน้อย ให้อัปเดตส่วน /* Analog Pins */ ของไฟล์ Varians.h
หมายเหตุ: สำหรับบอร์ด NanoV2 และ SKYLAB หมุดอะนาล็อกจะถูกจับคู่กับหมุดดิจิทัล A0 == D0 เป็นต้น
นี้ไม่จำเป็น คุณสามารถกำหนดอินพุตแบบอะนาล็อกให้กับพิน Arduino ที่สะดวก ดูตัวอย่างไฟล์ blue/variant.h และ blue/variant.cpp
ชิป nRF52832 มีพินอินพุตแบบอะนาล็อก 8 พิน แต่บอร์ดเปลี่ยน SKYLAB_SKB369_Nano2 มีเพียง 6 อันเพื่อให้ตรงกับ Nano2
หมายเลขพินทั้งหมด ยกเว้น RESET_PIN ในไฟล์ Variant.h คือหมายเลขพินของ Arduino นั่นคือ #define PIN_A0 (0) หมายความว่า D0 ในแบบร่าง Arduino เป็นพินเดียวกับ A0 RESET_PIN เป็นข้อยกเว้น หมายเลขนั้นเป็นหมายเลขพินชิป nRF52823 และ 21 เป็นตัวเลือกที่ถูกต้องเท่านั้น อย่างไรก็ตาม การรองรับ pfod_lp_nrf52 ไม่ได้เปิดใช้งานพินรีเซ็ตบน nRF52832
ไฟล์ Variant.cpp
มีเพียงรายการเดียวในไฟล์ Variant.cpp คืออาร์เรย์ g_ADigitalPinMap ที่จับคู่หมายเลขพิน Arduino กับพิน nRF52832 ชิป P0..
หมายเหตุ: ในบอร์ด NanoV2 และ SKYLAB หมุดอะนาล็อก Arduino A0, A1 … เหมือนกับหมุดดิจิทัล Arduino D0, D1 … ดังนั้นรายการแรกใน g_ADigitalPinMap ต้องจับคู่กับหมายเลขพิน AINx บนชิป nRF52832
สำหรับ Analog Inputs ที่บอร์ดของคุณมีให้ รายการเหล่านั้นใน g_ADigitalPinMap จะต้องจับคู่หมายเลขพิน nRF52832 AIN0, AIN1, AIN2 และอื่นๆ เช่น AIN0 คือพินชิป P0.02, AIN1 คือพินชิป P0.03 เป็นต้น โปรดดูรูปแบบพิน nRF52832 ด้านบน
ใช้ (uint32_t)-1 สำหรับการแมปที่ไม่ถูกต้อง ตัวอย่างเช่น SKYLAB_SKB369_Nano2replacement board ไม่มี LED ในตัว, D13 ดังนั้นตำแหน่งจึงถูกแมปกับ (uint32_t)-1
ใน pfod_lp_nrf52.zip ไดเรกทอรีย่อยตัวแปร Redbear NanoV2, SKYLAB SKB369 และ GT832E_01 มีรูปภาพที่แสดงการแมปที่ตั้งค่าโดย Variation.cpp (ดูภาพด้านบน)
ในกรณีของ SKYLAB SKB369 มีพินให้เลือกมากมาย เพียงพอที่จะจับคู่กับ NanoV2 เท่านั้น ในกรณีของ GT832E_01 จะต้องทำการแมปพินที่มีอยู่ทั้งหมด แม้ว่าจะมีอินพุตแบบอะนาล็อกเพียงสาม (3) รายการแทนที่จะเป็นหก (6) บน NanoV2 นอกจากนี้ หมุด NFC สองตัว P0.09 และ P0.10 ยังต้องกำหนดค่าใหม่เป็น GPIO ดูการกำหนดค่าพิน nRF52 NFC ใหม่เป็น GPIO ด้านล่าง
กำลังอัปเดตไฟล์ board.txt
นี่คือรายการแทนที่ SKYLAB_SKB369_Nano2 ในไฟล์ boards.txt
## การเปลี่ยน SKYLAB_SKB369 Nano2 SKYLAB_SKB369_NANO2_REPLACEMENT.name=*SKYLAB SKB369 Nano2 เปลี่ยน
SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd
SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size=524288 SKYLAB_transupd; SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=เท็จ SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=เท็จ SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb=false
SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd
SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=cortex-m4
SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=hard -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132
SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld
board.txt การตั้งค่า
ความคิดเห็น – บรรทัดที่ขึ้นต้นด้วย # คือความคิดเห็น
คำนำหน้า – แต่ละกระดานต้องมีคำนำหน้าที่ไม่ซ้ำกันเพื่อระบุค่าของมัน คำนำหน้าคือSKYLAB_SKB369_NANO2_REPLACEMENT
ชื่อ – บรรทัด SKYLAB_SKB369_NANO2_REPLACEMENT.name ระบุชื่อของบอร์ดนี้เพื่อแสดงในเมนูบอร์ดของ Arduino
เครื่องมืออัปโหลด – บล็อก SKYLAB_SKB369_NANO2_REPLACEMENT.upload ระบุเครื่องมือที่จะใช้สำหรับการอัปโหลด หากคุณกำลังใช้ Particle Debugger ให้ใช้ protocol=cmsis-dap ดังที่แสดงด้านบน
Bootloader – บรรทัดนี้เหมือนกันสำหรับบอร์ดทั้งหมดในบอร์ดนี้.txt
บิลด์ – ต้องอัปเดตเพียงสองบรรทัดในบล็อกนี้ บรรทัด SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant ระบุชื่อไดเร็กทอรีของบอร์ดนี้ในไดเร็กทอรีย่อยของตัวแปร SKYLAB_SKB369_NANO2_REPLACEMENT.build.board เป็นค่าที่ผนวกเข้ากับ ARDUINO_ แล้วกำหนดไว้ขณะคอมไพล์โค้ด เช่น. -DARDUINO_SKYLAB_SKB369_Nano2replacement ช่วยให้คุณสามารถเปิด/ปิดบางส่วนของรหัสสำหรับบอร์ดเฉพาะได้
นาฬิกาความถี่ต่ำ – บรรทัดนี้ SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags ระบุแหล่งที่มาของนาฬิกาความถี่ต่ำที่ใช้สำหรับ lp_timer มีสามตัวเลือก -DUSE_LFXO, -DUSE_LFRC และ -DUSE_LFSYNT ตัวเลือกที่ดีที่สุดคือ -DUSE_LFXO หากบอร์ดมีคริสตัล 32Khz ภายนอก หากไม่เป็นเช่นนั้นให้ใช้ -DUSE_LFRC ซึ่งใช้ RC oscillator ภายในและดึงกระแสไฟเพิ่มขึ้นเล็กน้อย ~ 10uA มากกว่าและมีความแม่นยำน้อยกว่ามาก อย่าใช้ -DUSE_LFSYNT เนื่องจากจะทำให้ชิปทำงานตลอดเวลาส่งผลให้มีการดึงกระแส mAs
Softdevice – pfod_lp_nrf52 รองรับเฉพาะชิป nRF52 และ softdevice s132 เท่านั้น จึงไม่ต้องทำการเปลี่ยนแปลงใดๆ สำหรับบล็อกนี้ นอกเหนือจากคำนำหน้า
กำหนดค่าพิน nRF52 NFC ใหม่เป็น GPIO's
เป็นค่าเริ่มต้นบนพิน nRF52, P0.09 และ P0.10 ได้รับการกำหนดค่าเพื่อใช้เป็น NFC และคาดว่าจะเชื่อมต่อกับเสาอากาศ NFC หากคุณต้องการใช้สิ่งเหล่านี้เป็นพิน I/O วัตถุประสงค์ทั่วไป (GPIO) คุณต้องเพิ่มการกำหนด -DCONFIG_NFCT_PINS_AS_GPIOS ลงใน …menu.softdevice.s132.build.extra_flags การตั้งค่าคอมไพล์ในไฟล์ board.txt
ตัวอย่างเช่น pfod_lp_nrf52.zip กำหนดค่าพิน GT832E_01 ใหม่เพื่อใช้เป็น I/O ส่วน GT832E_01 สำหรับบอร์ดนี้ ในไฟล์ boards.txt มีการเพิ่มคำจำกัดความดังต่อไปนี้
GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS
สคริปต์ตัวเชื่อมโยงใน pfod_lp_nrf52.zip ยังได้รับการแก้ไขเพื่อรักษาการตั้งค่านี้ไว้และไม่จำเป็นต้องเปลี่ยนแปลง
ขั้นตอนที่ 7: บทสรุป
บทช่วยสอนนี้ได้นำเสนอการแทนที่ Redbear NanoV2 โดยใช้โมดูล SKYLAB SKB369 ตัวตรวจสอบความชื้นอุณหภูมิแบตเตอรี่/พลังงานแสงอาทิตย์ถูกใช้เป็นตัวอย่างโครงการ BLE ที่ใช้พลังงานต่ำมากใน Arduino สำหรับโมดูล SKYLAB จ่ายกระแส ~ 29uA ซึ่งทำได้โดยการปรับพารามิเตอร์การเชื่อมต่อ ส่งผลให้แบตเตอรี่แบบเหรียญ CR2032 มีอายุการใช้งานประมาณ 10 เดือน ยาวขึ้นสำหรับเซลล์เหรียญและแบตเตอรี่ความจุสูง การเพิ่มโซลาร์เซลล์ราคาถูกสองเซลล์ช่วยยืดอายุแบตเตอรี่ได้อย่างง่ายดาย 50% หรือมากกว่านั้น ไฟส่องสว่างในห้องสว่างหรือโคมไฟตั้งโต๊ะเพียงพอที่จะจ่ายไฟให้กับจอภาพจากเซลล์แสงอาทิตย์
บทช่วยสอนนี้ยังครอบคลุมถึงการลบการป้องกันชิปออกจาก nRF52 ที่ตั้งโปรแกรมไว้ล่วงหน้าและวิธีตั้งค่าคำจำกัดความของบอร์ดใหม่เพื่อให้ตรงกับ PCB/วงจรของคุณเอง
ไม่จำเป็นต้องมีการเขียนโปรแกรม Android pfodApp จัดการทั้งหมดนั้น
แนะนำ:
ปีกคอสเพลย์ที่เปิดใช้งานการเคลื่อนไหวโดยใช้ Circuit Playground Express - ตอนที่ 1: 7 ขั้นตอน (พร้อมรูปภาพ)
Motion Activated Cosplay Wings โดยใช้ Circuit Playground Express - ตอนที่ 1: นี่เป็นส่วนหนึ่งของโปรเจ็กต์สองส่วน ซึ่งผมจะแสดงให้คุณเห็นขั้นตอนในการทำปีกนางฟ้าอัตโนมัติ ส่วนแรกของโปรเจ็กต์คือ กลไกของปีก และส่วนที่สองทำให้สวมใส่ได้ และเพิ่มปีก
หุ่นยนต์ Telepresence: แพลตฟอร์มพื้นฐาน (ตอนที่ 1): 23 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ Telepresence: แพลตฟอร์มพื้นฐาน (ตอนที่ 1): หุ่นยนต์ telepresence เป็นหุ่นยนต์ประเภทหนึ่งที่สามารถควบคุมจากระยะไกลผ่านทางอินเทอร์เน็ตและทำหน้าที่เป็นตัวแทนของคนอื่นได้ ตัวอย่างเช่น หากคุณอยู่ในนิวยอร์ก แต่ต้องการมีปฏิสัมพันธ์ทางกายภาพกับทีมผู้คนในแคลิฟอร์เนีย
LTE Arduino GPS Tracker + IoT Dashboard (ตอนที่ 1): 6 ขั้นตอน (พร้อมรูปภาพ)
LTE Arduino GPS Tracker + IoT Dashboard (ตอนที่ 1): บทนำว่าไงพวก! คำแนะนำนี้เป็นการติดตามผลของ Instructable แรกของฉันเกี่ยวกับการใช้ชิลด์ Botletics LTE/NB-IoT สำหรับ Arduino ดังนั้น หากคุณยังไม่ได้อ่าน โปรดอ่านเพื่อรับทราบภาพรวมที่ดีเกี่ยวกับวิธีใช้ชิลด์และ ab ทั้งหมด
LTE Arduino GPS Tracker + IoT Dashboard (ตอนที่ 2): 6 ขั้นตอน (พร้อมรูปภาพ)
LTE Arduino GPS Tracker + IoT Dashboard (ตอนที่ 2): บทนำ & ตอนที่ 1 สรุปถึงเวลาสำหรับคำแนะนำอื่นบนตัวติดตาม GPS SIM7000 พร้อม Arduino และ LTE! หากคุณยังไม่ได้ดำเนินการ โปรดอ่านบทแนะนำการเริ่มต้นใช้งานสำหรับเกราะป้องกัน Botletics SIM7000 CAT-M/NB-IoT จากนั้นอ่านบน Pa
บอร์ดมัลติเซนเซอร์ Arduino! (ตอนที่ 1): 11 ขั้นตอน (พร้อมรูปภาพ)
บอร์ดมัลติเซนเซอร์ Arduino! (ตอนที่ 1): บอร์ดนี้เป็นงานที่สมบูรณ์ซึ่งจะช่วยให้คุณอ่านค่าจากเซ็นเซอร์ต่างๆ ได้ โปรดไปที่ช่องของฉัน Suscribe:www.youtube.com/user/josexers