# NyBoard V1\_1

## Update：

NyBoard V1\_1 เป็นเวอร์ชันที่อัปเกรดมาจาก V1 โดยมุ่งเน้นไปที่ปัญหาขาดแคลนของ ATMEGA328P-MU ในเครือข่ายการจัดหาวัสดุอุปกรณ์ของเรา

1. แทนที่ ATMEGA328P-MU (QFN32=) ด้วย ATMEGA328P-AU (TQFP32)
2. นำ 7 ดวง WS2812 LED ออกเพื่อเพิ่มพื้นที่บนบอร์ด
3. เพิ่ม LED สีเขียวที่ต่อกับพอร์ต D10 และมีฟังก์ชัน PWM
4. ไม่มีการเปลี่ยนแปลงสำหรับ socket และการกำหนดขาต่อจาก V1\_0 โปรแกรมบูตและโค้ด OpenCat ยังคงเข้ากันได้อย่างเต็มที่

## Overview

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FQLBWJFVJkgDfcTdMJ01U%2FIMG_3025.jpg?alt=media\&token=0307a08f-21dc-4e32-9f9b-738b61dd0310)

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2F6kiDl7O37dqT8Q5KvNx0%2FIMG_3026.jpg?alt=media\&token=3ccb4e1e-40aa-4f66-b7bf-12e71530c2f5)

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

* NyBoard V1 ยังใช้ Atmel ATMega328P เป็นชิปหลัก แต่เปลี่ยนความถี่ให้เป็น 16MHz โดยไม่ต้องเร่งความถี่ไปยัง 20MHz ตอนนี้บอร์ดเป็นเวอร์ชันที่เข้ากันได้อย่างเต็มที่กับ Arduino Uno จึงทำให้ผู้ใช้ใหม่ที่ไม่เคยใช้ Arduino มาก่อนสะดวกในการใช้งาน
* NyBoard V1 ยังสามารถขับได้ถึง 16 ช่อง PWM ด้วย PCA9685 โดยเรียงลำดับขาแตกต่างจากเดิม แต่ไม่จำเป็นต้องอ่านหมายเลขดัชนีบนบอร์ดเพราะการเชื่อมต่อขานี้ถูกจัดการในซอฟต์แวร์อย่างถูกต้อง
* เซ็นเซอร์การเคลื่อนไหว 6 แกนของ MPU6050 ออกแบบมาบน PCB แทนที่จะเป็นโมดูลแยกต่างหากที่ติดตั้งเหนือบอร์ด มันสนับสนุน DMP (Digital Motion Processor) ซึ่งสามารถคำนวณข้อมูลการเคลื่อนไหวได้โดยตรงและยังมีข้อมูลแบบดิบสำหรับผสมผสานและแยกสัญญาณเองได้
* NyBoard V1 ยังคงใช้ EEPROM 8KB onboard I2C เพื่อบันทึกค่าคงที่สำหรับทักษะต่าง ๆ
* ระบบไฟฟ้าได้รับการออกแบบใหม่เพื่อให้ได้กำลังไฟที่เสถียรมากขึ้น โครงสร้างของอุปกรณ์
* ตั้งแต่วันที่ 1 มกราคม 2021 เราเริ่มรวมดองเกิลบลูทูธอย่างเป็นทางการเพื่อการอัปโหลดและสื่อสารไร้สาย ค่าเริ่มต้นสำหรับอัตราการสื่อสารทั้งหมดจะถูกตั้งค่าไว้ที่ 115200
* ปุ่มรีเซ็ตอยู่ใกล้เข้าถึงมากขึ้นที่ด้านหลังของบอร์ด
* เราได้เพิ่ม 4 ช่องต่อ Grove เพื่อเป็นการเชื่อมต่อแบบ plug-and-play กับโมดูลขยายของ Seeed Studio โดยยังคงให้แผงวงจรมาตรฐานที่มีรูเข็มขัดขนาด 2.54 มม. เช่นเดิม
* สายสัญญาณสำหรับแบตเตอรี่ที่ใช้ต่อกับแผงวงจรเป็นสายแบบ anti-reverse ซึ่งจะช่วยป้องกันการเสียหายจากการต่อผิดขั้ว

## Logic diagram of the controller

The configuration of NyBoard V1\_0 is shown as below:

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FT23PSh02JI53dEAw3Szk%2F%E7%BB%93%E6%9E%84%E6%A1%86%E5%9B%BE%EF%BC%88%E8%8B%B1%E6%96%87%EF%BC%89.jpg?alt=media\&token=036a2ee6-f481-43db-8013-ca50c1ce2d48)

## Introduction to the onboard components

### Main controller

NyBoard V1\_0 ใช้ Atmel ATMega328P-AU เป็นชิปหลัก เหมือนกับ MCU ของ Arduino Nano (UNO Compatible)

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

### LED（NEW!)

ได้ทำการเปลี่ยน WS2812 ที่เป็น LED RGB แบบต่อเซียงกันเป็น LED เดียวสีเขียวเท่านั้น สามารถใช้คำสั่งควบคุม GPIO ของ Arduino ได้อย่างง่ายดาย

### I2C switch

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

### 6-Axis IMU MPU6050

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

บน NyBoard V1\_0 ที่อยู่ I2C ของ MPU6050 คือ 0x68 และหมุนเวียน ของ MPU6050 ถูกเชื่อมต่อกับพอร์ต PD2 ของ ATMega328P (หรือพอร์ต D2 ของ Arduino Uno) โดยใช้ Interrupt pin

มีหลายไลบรารีสำหรับ MPU6050 ที่มีอยู่แล้วและเราใช้ I2CDev/6050DMP ใน NyBoard V1\_0 อย่างไรก็ตาม คุณยังสามารถใช้เวอร์ชันอื่น ๆ ได้ด้วย

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

บน NyBoard V1\_0 พลังงานไฟฟ้าของเซอร์โวต่อกับแบตเตอรี่ไอออน 2S โดยตรง โดยเราออกแบบเซอร์โวของเราให้เข้ากันได้กับแหล่งจ่ายไฟ 8.4V แบบปกติ ซึ่งเซอร์โวปกติทำงานที่แรงดันไฟฟ้า 6V คุณไม่ควรเชื่อมต่อเซอร์โว 9g ปกติเช่น SG90 โดยตรงกับบอร์ด

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

### EEPROM

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

### Passive buzzer

เราใช้ขา PD5 (หรือ D5 ของ Arduino UNO) เพื่อขับเสียงบัสเซอร์ และกระแสไฟจะถูกขยายโดย MOS 2N7002

### Infrared receiver

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

### Voltage detector

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

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

$$
Voltage\_{real}=\frac{ADC\_{reading}}{1024}  \times 5.0 \times2
$$

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

### Grove sockets

เราใช้ตัวจับสายปลั๊กแบบ Grove เพื่อให้สะดวกในการเสียบและใช้งาน มีปลั๊กแบบนี้ทั้งหมด 3 ชนิด:

| 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

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FOAGwsLr5V0xMa6XY6Ohu%2F%E4%BE%9B%E7%94%B5%E6%A1%86%E5%9B%BE%EF%BC%88%E8%8B%B1%E6%96%87%EF%BC%89.jpg?alt=media\&token=788eda4b-19d0-4eb1-a545-e6423f3290db)

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

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

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

เซอร์โวขับเคลื่อนด้วยแบตเตอรี่ Li-ion 2S โดยตรง ต้องระวังไม่ให้เกิดการสัมผัสสั้นกันระหว่างพลังงานหรือขาต่อบน NyBoard
