NyBoard V1_0

Overview

NyBoard V1 เป็นเวอร์ชันที่ได้รับการอัพเกรดโดยพิจารณาจากความคิดเห็นของผู้ใช้ใน NyBoard V0 โดยเป็นเวอร์ชันที่สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้ แต่มีการออกแบบใหม่เพื่อทำให้ใช้งานได้ง่ายขึ้น.

  • บอร์ด NyBoard V1 ยังใช้ Atmel ATMega328P เป็นชิปหลักอยู่เหมือนเดิม แต่มีการเปลี่ยนความถี่จาก 20MHz เป็น 16MHz และเป็นเวอร์ชั่นที่เข้ากันได้กับ Arduino Uno ทำให้ง่ายต่อการใช้งานสำหรับผู้ใช้งานใหม่ของ Arduino

  • NyBoard V1 ยังคงใช้ PCA9685 เพื่อให้มีการขับเคลื่อน PWM 16 ช่องเช่นเดิม โดยลำดับของพินถูกเปลี่ยนแปลง แต่คุณไม่ต้องอ่านดัชนีบนบอร์ดเพราะมีการจัดการลำดับของพินด้วยซอฟต์แวร์แล้ว

  • เดิมทีบอร์ดใช้โมดูล 6-axis motion sensor MPU6050 ในรูปแบบของโมดูลแยกต่างหากที่ถูกเชื่อมต่อบนบอร์ด แต่บอร์ดรุ่นนี้ได้ทำการออกแบบเป็นส่วนหนึ่งของ PCB เองแล้ว มีการรองรับ DMP (Digital Motion Processor) ซึ่งช่วยในการคำนวณข้อมูลการเคลื่อนไหว และยังสามารถให้ข้อมูลแบบ raw data สำหรับใช้งาน fusion และ filtering algorithms ของเราเองได้อีกด้วย

  • NyBoard V1 ยังคงใช้บอร์ดหน่วยความจำภายใน 8KB I2C EEPROM เพื่อบันทึกค่าคงที่สำหรับฝีมือการทำงาน

  • ระบบจ่ายไฟได้รับการออกแบบใหม่เพื่อให้ได้แหล่งจ่ายไฟที่เสถียรมากขึ้น โครงสร้างสำหรับอุปกรณ์รอบข้างได้รับการปรับปรุงให้เหมาะสมมากยิ่งขึ้นด้วย

  • ตั้งแต่วันที่ 1 มกราคม 2021 เราเริ่มเพิ่มพอร์ต Bluetooth อย่างเป็นทางการเพื่อให้สามารถอัปโหลดและสื่อสารไร้สายได้ ค่าเริ่มต้นของ Baud rate สำหรับพอร์ตสื่อสารทั้งหมดถูกตั้งค่าไว้ที่ 115200

  • ปุ่มรีเซ็ตเป็นส่วนสำคัญของบอร์ด และใน NyBoard V1 นั้น ปุ่มรีเซ็ตได้รับการพัฒนาเพื่อทำให้ง่ายต่อการเข้าถึงมากยิ่งขึ้นโดยการวางอยู่ที่ด้านหลังของบอร์ด

  • เราเพิ่มพอร์ต Grove 4 ช่องเพื่อให้ใช้งานง่ายกับโมดูลขยาย Seeed Studio โดยไม่ต้องใช้สายเสียบเพิ่มเติม ในขณะเดียวกันยังมีพอร์ตหลักที่ผ่านมาตลอดอยู่เหมือนเดิมที่ขนาด 2.54 มม.

  • เราได้เพิ่ม WS2812 RGB LEDs จำนวน 7 ดวงลงบนบอร์ดเป็นรูปแบบออกพอร์ทและตัวบ่งชี้สถานะอีกหนึ่งรูปแบบ

  • ช่องต่อแบตเตอรี่ปัจจุบันเป็นแบบ anti-reverse ครับ

Logic diagram of the controller

The configuration of NyBoard V1_0 is shown as below:

Introduction to the onboard components

Main controller

NyBoard V1_0 ใช้ Atmel ATMega328P-MUR เป็นตัวควบคุมหลัก โดยเราได้นำเอาเวอร์ชันขนาดเล็กของมัน QFN32 เพื่อให้เหมาะสมกับการเลือกตำแหน่งและมีความเข้ากันได้กับ TQFP32 ตามปกติเลย

ATMega328P ทำงานที่ความถี่ 16MHz ด้วยแหล่งจ่ายไฟ 5V มีหน่วยความจำ RAM 2KB, Flash 32KB และ on-chip EEPROM 1KB ด้วย bootloader เดียวกับ Arduino Uno คุณสามารถอัพโหลดสคริปต์ผ่านพอร์ตซีเรียลได้เช่นกัน

I2C switch

ชิปหลักทำงานที่แรงดัน 5V ในขณะที่อุปกรณ์รอบตัวทำงานที่ระดับตรรกะของแรงดัน 3.3V โดยเราใช้ PCA9306 เพื่อแปลงบัส I2C ของ ATMega328P เป็นระดับตรรกะ 3.3V และเราได้เพิ่มสวิตช์ I2C บนบัส โดยที่เราสามารถสลับเปลี่ยนตัวควบคุมบัส I2C ของอุปกรณ์บนบอร์ดได้ โดยการเลือก "Arduino" หรือ "Raspberry Pi"

6-Axis IMU MPU6050

MPU6050 เป็นเซ็นเซอร์ที่ใช้กันอย่างแพร่หลายในโปรเจกต์ DIY ต่างๆ เพื่อไว้ใช้ในการรับรู้สถานะการเคลื่อนไหวของอุปกรณ์ โดยตรวจจับการเคลื่อนที่และการหมุนของอุปกรณ์ รวมถึงมี DMP ที่คำนวณสถานะได้โดยตรงโดยไม่ต้องใช้ทรัพยากรของตัวควบคุมหลักของบอร์ดเอง

บน NyBoard V1_0 ที่มีที่อยู่ I2C คือ 0x68 พอร์ตแตกรับ (interrupt pin) เชื่อมต่อกับพอร์ต PD2 ของ ATMega328P (หรือพอร์ต D2 ของ Arduino Uno)

มีหลายไลบรารี่สำหรับใช้กับ MPU6050 และเราใช้ I2CDev/6050DMP ในปัจจุบัน แต่คุณสามารถใช้เวอร์ชันอื่นได้ดังนี้:

Name

Author

Feature

I2Cdev

jrowberg

built-in DMP

Adafruit MPU6050

Adafruit

standard MPU6050 library

Kalman Filter

TKJ Electronics

with Kalman filter

PCA9685 and the PWM servo ports

PCA9685 แยกสัญญาณ PWM 16 ช่อง 12 บิตด้วยคำสั่งจากพอร์ต I2C ด้วยที่อยู่ 0x40 บนบอร์ด บนบอร์ดมีหมายเลขดัชนี PWM 16 หมายเลข ที่แสดงอยู่บน PCB แต่คุณไม่จำเป็นต้องอ่านเลขดัชนีเหล่านี้ เนื่องจากการแมพพินจะทำในซอฟต์แวร์แทน แบบต่อสายก็เหมือนเดิม แต่ต้องตรวจสอบทิศทางของพินเซอร์โว หากเป็นเซอร์โวปกติจะมีพินสัญญาณ PWM พลังงาน (2S) และอีกหนึ่งพินเป็น GND และควรเชื่อม GND กับสายสีดำของเซอร์โว

บนบอร์ด NyBoard V1_0 พ่วงพลังงานให้กับโดยตรงกับแบตเตอรี่ Li-ion 2S ของเรา โดยเราออกแบบเซอร์โวของเราให้เข้ากันได้กับแหล่งจ่ายไฟ 8.4V ซึ่งเป็นค่ามาตรฐานของเรา แต่เซอร์โวขนาด 9g ปกติที่เป็น SG90 ที่ทำงานที่แรงดันไฟฟ้า 6V จะไม่ควรถูกเชื่อมต่อโดยตรงกับบอร์ด

เราใช้ไลบรารี Adafruit PWM Servo Driver Library สำหรับ PCA9685

EEPROM

เราบันทึกทักษะการเคลื่อนไหวด้วยหน่วยความจำ I2C EEPROM AT24C64 ขนาด 8KB ซึ่งมีที่อยู่ในสัญญาณ I2C เป็น 0x54 โดยตารางค้นหาของทักษะถูกบันทึกไว้ในหน่วยความจำภายในขนาด 1KB ของ ATMega328P โดยใช้ไลบรารี <EEPROM.h> คุณต้องสังเกตเอาไว้ว่ามีความแตกต่างกันเมื่อพัฒนาโค้ดใหม่ๆ

Passive buzzer

เสียงเตือน (buzzer) ถูกขับเคลื่อนโดย PD5 (หรือ D5 ของ Arduino UNO) และกระแสได้ถูกขยายด้วย MOS ยี่ห้อ 2N7002

Infrared receiver

เราใช้ VS1838B เป็นตัวรับสัญญาณอินฟราเรด ต่อกับขา PD4 (หรือ D4 บน Arduino Uno) โดยใช้ไลบรารี IRremote ของ Arduino โปรโตคอลที่เราใช้เป็นรูปแบบ NEC คุณสามารถปิดใช้งานโปรโตคอลอื่นเพื่อประหยัดพื้นที่ Flash (ประมาณ 10%) ในไฟล์ IRremote.h ได้

Voltage detector

ไฟ LED สองดวงในโลโก้ Petoi แสดงสถานะการเปิดใช้งานของบอร์ด ดวงตาทางซ้ายสีน้ำเงินแสดงสถานะของชิปต่างๆในเบอร์ด ดวงตาทางขวาสีเหลืองแสดงสถานะของแหล่งจ่ายพลังงานสำหรับเซอร์โว เมื่อ NyBoard ต่อกับแบตเตอรี่แล้ว ทั้งสอง LED จะติด แต่เมื่อ NyBoard ถูกจ่ายพลังงานจากดาวน์โหลด USB จะมีแค่ LED สีน้ำเงินติดอย่างเดียว

มีแหล่งจ่ายไฟชนิด Anti-Reverse สำหรับแบตเตอรี่อยู่บนบอร์ด และแบตเตอรี่มีการเชื่อมต่อไปยัง ADC7 (หรือ A7 ของ Arduino Uno) และไม่ได้เชื่อมต่อกับขาว่างอื่นๆ โดย ADC7 จะรับค่าแรงดันจากแบตเตอรี่ผ่านตัวหารแรงดัน และค่าแรงดันจริงๆ จะมีค่าประมาณ 2 เท่าของค่าที่อ่านได้ ช่วงแรงดันของแบตเตอรี่ที่ถือว่าปลอดภัยคือต่ำกว่า 10V

Voltagereal=ADCreading1024×5.0×2Voltage_{real}=\frac{ADC_{reading}}{1024} \times 5.0 \times2

คุณควรชาร์จแบตเตอรี่ทันทีเมื่อแบตเตอรี่ต่ำกว่า 7.4V

WS2812 RGB LED

เราเพิ่ม WS2812 RGB LEDs 7 ดวง (หรือ NeoPixel) บนบอร์ด NyBoard ด้วย หมายเลขพินคือ D10 พวกเขาถูกจ่ายไฟโดยชิป DC-DC 5V สำหรับ Raspberry Pi และเป็นอิสระจากเครือข่าย 5V ของ ATMega328P ดังนั้นคุณต้องเสียบแบตเตอรี่เพื่อจ่ายไฟให้กับ LED

Grove sockets

เราได้ใช้ช่องเสียบ Grove เพื่อให้การเชื่อมต่อง่ายดาย มีช่องเสียบประเภทต่าง ๆ ดังนี้:

Grove Socket

Pin Number

Function

G1

I2C: SCL, SDA

I2C with 3.3V logic signal

G2

A2, A3

Analog input; 0-5V

G3

PD8, PD9

Digital I/O; 0-5V

G4

PD6, PD7

Digital I/O; 0-5V

Power system

NyBoard มีการจ่ายไฟหลักโดยใช้ตัวควบคุมไฟเลี้ยงแบบ Low-dropout (LDO) linear regulators เพื่อลดเสียงรบกวนและเพิ่มความเสถียรภาพ โดยใช้ LM1117-5V และ XC6206P-3.3V เพื่อจ่ายไฟเลี้ยงให้กับชิป 5V และ 3.3V โดย LDO 3.3V จะถูกเชื่อมต่อตามลำดับหลังจาก LDO 5V เพื่อเพิ่มประสิทธิภาพในการใช้พลังงาน

มีไดโอดอยู่ระหว่างแบตเตอรี่กับ LM1117-5V เพื่อป้องกันความเสียหายจากการเชื่อมต่อผิดพลาด นอกจากนี้ยังมีฟิวส์ที่สามารถฟื้นตัวเองได้ (6V 500mA) บนตัวอัพโหลด USB เพื่อจำกัดกระแสและป้องกันพอร์ต USB

Raspberry Pi ใช้พลังงานมากกว่าจึงเลือกใช้ TPS565201 DC-DC เพื่อให้ไฟเลี้ยงออกแรงดัน 5V และกระแสไฟ 3A และสามารถให้กระแสสูงสุด 5A พร้อมมีการป้องกันอุณหภูมิ/กระแส/แรงดันสูง ๆ โดยจะตัดไฟเมื่อชิปมีการออกแรงดัน >4A และอุณหภูมิเกิน 100 องศาเซลเซียสจนกว่าอุณหภูมิจะกลับสู่ปกติ โดย WS2812 RGB LEDs ยังถูกจ่ายไฟด้วยแหล่งนี้เช่นกัน

Servo จะได้รับพลังงานจากแบตเตอรี่ Li-ion 2S โดยตรง แต่จำเป็นต้องระวังการสัมผัสไฟหรือพินบน NyBoard ไม่ให้สัมผัสกัน

Last updated: Jan 13, 2021

Last updated