Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Operate the GPIO port of BiBoard
ไม่มีพอร์ต GPIO แยกต่างหากบน BiBoard แต่พอร์ตซีเรียลแบบมัลติเพล็กซ์ 2 (พิน 16, 17) หรือพิน PWM ของอินเทอร์เฟซเซอร์โว PWM ที่ไม่ได้ใช้สามารถใช้เป็นพอร์ต GPIO ได้ พอร์ต GPIO นั้นค่อนข้างใช้งานง่าย หลังจากกำหนดค่าโหมดอินพุตและเอาต์พุตแล้ว การใช้งานจะเหมือนกับ Arduino UNO ทุกประการ คุณสามารถใช้โปรแกรมควบคุม IO ของ Arduino UNO อะไรก็ได้ เพียงแค่เปลี่ยนจำนวนของ IO
มีพอร์ตซีเรียล 2 พอร์ตซึ่งแยกจากกันบนช่องส่วนขยาย 2 ช่อง (P16, P17) บน BiBoard
พอร์ตซีเรียล 1 บน P16 สามารถเชื่อมต่อกับตัวดาวน์โหลด USB และอุปกรณ์ซีเรียลภายนอกได้ โปรดอย่าใช้ตัวดาวน์โหลดและอุปกรณ์ซีเรียลภายนอกพร้อมกัน การแบ่งแรงดันพอร์ตซีเรียลจะนำไปสู่ข้อผิดพลาดในการสื่อสาร
ในการสาธิต Arduino นั้น Serial แทนพอร์ตซีเรียล 0 Serial1 แทนพอร์ตซีเรียล 1 Serial และ Serial1 นั้นส่งถึงกัน
Application of ADC which is variable gain on BiBoard (ESP32)
คำสั่งแนะนำของ ADC บน BiBoard
พิน 34, 35, 36 และ 39 ของโมดูล ESP32 รองรับอินพุตเท่านั้น เรากำหนดค่าให้เป็นพอร์ตอินพุตแบบอะนาล็อกบน BiBoard ซึ่งทำให้สะดวกสำหรับนักพัฒนาในการเชื่อมต่อเซ็นเซอร์เท้า 4 ตัว
การใช้งานตัวแปลงสัญญาณอนาล็อกเป็นดิจิตอล (ADC) บน BiBoard นั้นเหมือนกับ Arduino UNO พื้นฐาน แต่ความแม่นยำนั้นสูงกว่า (12 บิต UNO คือ 10 บิต) และมีการเพิ่มตัวขยายสัญญาณที่ตั้งโปรแกรมได้เพื่อให้ ADC ทำงานในช่วงที่ดีที่สุด
เมื่อป้อนสัญญาณแรงดันไฟฟ้า 1V หากใช้การเข้าถึง 12 บิตตามการกำหนดค่าปกติ แรงดันอ้างอิงจะเท่ากับแรงดันแหล่งจ่ายไฟ (3.3V): เอาต์พุตที่สอดคล้องกันคือ 0~1241 ส่วนใหญ่ของช่วง ADC จะเสียเปล่า ทำให้ได้ข้อมูลที่ไม่ถูกต้อง เมื่อเรากำหนดค่าอัตราขยายที่ตั้งโปรแกรมได้ เราสามารถทำให้สัญญาณอินพุต 1V เติมเต็มช่วง ADC เกือบทั้งหมด และความแม่นยำและความละเอียดจะดีขึ้นอย่างมาก
การสาธิตนี้ใช้ 4 อินพุต กำหนดค่าตามลำดับเป็น: อัตราขยายเดซิเบล 0/2.5/6/11 ควรสังเกตว่าการกำหนดค่าเริ่มต้นของ ESP32 Arduino คืออัตราขยาย 11 เดซิเบล
เราใช้ "analogSetPinAttenuation(PIN_NAME, attenuation)" เพื่อกำหนดค่าอัตราขยายของพินอินพุตเดี่ยว หรือใช้ "analogSetAttenuation(attenuation)" เพื่อกำหนดค่าอัตราขยายของพินอินพุตแบบอะนาล็อกทั้งหมด
ในการทดสอบจริง เมื่อป้อนแรงดันไฟฟ้ามาตรฐาน 1V ค่า ADC จะเป็น: 3850/2890/2025/1050 ในการผลิตในอนาคต ช่วง ADC สามารถเปลี่ยนแปลงได้โดยการเปลี่ยนอัตราขยายของ ADC โดยไม่ต้องเปลี่ยนแหล่งจ่ายแรงดันอ้างอิง
The usage of DAC
วัตถุประสงค์ของ DAC นั้นตรงกันข้ามกับของ ADC DAC แปลงสัญญาณดิจิทัลเป็นสัญญาณอะนาล็อกสำหรับเอาต์พุต
จำเพลงเมื่อเปิด NyBoard ได้ไหม กำลังใช้ PWM เพื่อสร้างเสียงเพลงซึ่งใช้การสลับความเร็วสูงเพื่อปรับรอบการทำงานเป็นแรงดันเอาต์พุต
เมื่อเปรียบเทียบกับ PWM แล้ว DAC จะส่งแรงดันออกโดยตรงโดยไม่ต้องคำนวณรอบการทำงาน ESP32 รวม DAC 8 บิต 2 แชนเนลที่มีค่า 0-255 ช่วงแรงดันไฟฟ้าคือ 0-3.3V ดังนั้นสูตรการคำนวณแรงดันเอาต์พุตของ DAC จึงเป็นดังนี้:
The demo is as follows:
การใช้งาน EEPROM นั้นเหมือนกับ Arduino UNO มีสองการทำงาน: อ่านและเขียน
Read:
I2C address of EEPROM
The internal address of EEPROM (the address for storing data)
Read data
Write:
I2C address of EEPROM
The internal address of EEPROM (the address for storing data)
Write data
ในการสาธิต BiBoard ที่อยู่ของ EEPROM บนบัส I2C คือ 0x54 และความจุคือ 8192Bytes (64Kbit) เราเขียนค่าทั้งหมด 16 ค่าตามลำดับตั้งแต่ 0 ถึง 15 ใน EEPROM จากแอดเดรสแรก จากนั้นจึงอ่านเพื่อเปรียบเทียบ ในทางทฤษฎี ข้อมูลที่เขียนใน EEPROM และข้อมูลที่อ่านจากที่อยู่ที่เกี่ยวข้องควรเหมือนกัน
ในการทดสอบโรงงานของ NyBoard เราใช้วิธีนี้เช่นกัน แต่จะซับซ้อนกว่า เราจะใช้รายการคงที่เพื่อเติม EEPROM และอ่านเพื่อเปรียบเทียบ
หมายเหตุ: การดำเนินการ EEPROM โดยเฉพาะการดำเนินการเขียน โดยทั่วไปจะไม่ใส่ลงในลูป () แม้ว่า EEPROM จะทนทานต่อการลบ (100,000 ครั้ง) หากมีการเขียนบล็อคบางบล็อกในลูปบ่อยๆ จะทำให้ EEPROM ทำงานผิดปกติ
MPU6050 เป็นไจโรสโคป 6 แกนที่ใช้กันแพร่หลายมากที่สุด ซึ่งไม่เพียงวัดความเร็วเชิงมุม 3 แกนและการเร่งความเร็ว 3 แกนได้แม่นยำมากขึ้น แต่ยังใช้ตัวประมวลผลการเคลื่อนไหวแบบดิจิตอล (DMP) ในตัวสำหรับการคำนวณฟิวชั่นทัศนคติตามฮาร์ดแวร์ มือใหม่จึงใช้งานได้สะดวกมาก ด้วยเหตุนี้ เราจึงใช้ไจโรสโคป MPU6050
มีการสาธิต MPU6050 มากมายบน Arduino UNO ที่มีชื่อเสียงที่สุดคือไลบรารี I2Cdev และ MPU6050DMP ของ jrowberg:
ขออภัย ไลบรารีนี้ไม่สามารถเรียกใช้โดยตรงบน BiBoard ที่ใช้ ESP32 เราพบไลบรารีที่มีบน Github ซึ่งใช้งานง่าย ไลบรารีนี้เพิ่มคำจำกัดความของ PGMSpace สำหรับซีรีส์ ARM และ ESP เพิ่มฟังก์ชันการปรับเทียบ และลบฟังก์ชันการประมวลผลเกิน FIFO (เพื่อนๆ ที่สนใจสามารถใช้ Beyond Compare สำหรับการเปรียบเทียบโค้ดได้) ไลบรารีประกอบด้วย I2Cdev และ MPU6050 ที่อยู่และแพ็คเกจที่บีบอัดมีดังนี้:
หลังจากการดาวน์โหลดเสร็จสิ้น ให้สร้างโฟลเดอร์ MPU6050 ภายใต้ Documents/Arduino/library และคัดลอกไฟล์ไลบรารีในแพ็คเกจที่บีบอัดลงไป ไลบรารีของ MPU6050 ที่แก้ไขนี้ยังเข้ากันได้กับ ARM และ AVR ดังนั้นหากคุณมีไลบรารี I2Cdev และ MPU6050 ดั้งเดิมในคอมพิวเตอร์ของคุณ คุณสามารถลบออกได้
เราสามารถใช้การตัวอย่าง MPU6050_DMP6 อย่างเป็นทางการ
BiBoard ติดตั้งเซ็นเซอร์อินฟราเรดซึ่งเชื่อมต่อกับพินที่ 23 การใช้อินฟราเรดนั้นเหมือนกับที่ใช้ใน Arduino UNO ที่ใช้ AVR
ก่อนอื่นให้ดาวน์โหลดไลบรารี IRremote เวอร์ชัน 2.6.1 คุณต้องเลือกเวอร์ชัน 2.6.1 ด้วยตนเอง เนื่องจากโค้ดที่เกี่ยวข้องกับอินฟราเรดมีการเปลี่ยนแปลงในเวอร์ชันหลังๆ หากคุณใช้เวอร์ชัน 3.X คำสั่งจะไม่ถูกแปล เพื่อให้เข้ากันได้กับผลิตภัณฑ์ก่อนหน้าของเรา เราตัดสินใจใช้เวอร์ชัน 2.6.1 หลังจากการทดสอบ
เมื่อใช้ NyBoard เพื่อให้แน่ใจว่าสามารถคอมไพล์โค้ดได้อย่างราบรื่น เราจำเป็นต้องลบโค้ดที่ไม่จำเป็นในไลบรารี IRremote นั่นคือ ลบตัวเข้ารหัส/ตัวถอดรหัสที่เราไม่ได้ใช้ และเก็บเฉพาะ NEC_DECODER ซึ่งก็คือ ตัวถอดรหัสสัญญาณ 38KHz ในรูปแบบ NEC
เนื่องจากความจุของหน่วยความจำแฟลชของ BiBoard นั้น “มหาศาล” เราจึงไม่จำเป็นต้องลบโค้ดที่ไม่จำเป็นในไลบรารี IRremote
สุดท้ายมีการแนบตัวอย่างซึ่งรับสัญญาณอินฟราเรดและพิมพ์ผ่านพอร์ตซีเรียล คุณยังสามารถใช้การตัวอย่าง อย่างเป็นทางการสำหรับการทดสอบ