# ตัวอัปโหลดเฟิร์มแวร์

### \*\* ดาวน์โหลดเวอร์ชันล่าสุดของ [Petoi Desktop APP](https://github.com/PetoiCamp/OpenCat/releases). \*\*

Petoi Desktop App ทำงานได้ทั้งบน Nybble และ Bittle ซึ่งควบคุมโดย NyBoard ที่ใช้ ATmega328P หรือ BiBoard ที่ใช้ ESP32 สามารถดูเอกสารรายละเอียดเพิ่มเติมได้ที่ [*NyBoard V1\_0*](https://docs.petoi.com/thai/nyboard/nyboard-v1_0) *หรือ* [*NyBoard V1\_1*](https://docs.petoi.com/thai/nyboard/nyboard-v1_1).

{% hint style="info" %}
หมายเลขเวอร์ชันของบอร์ดอยู่ที่นี่

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FeVlKCj2bnu39VkVPpPF6%2FNyBoardV1_1.jpg?alt=media\&token=bfa182d7-85ef-4e09-b236-e6d2d58a590a)
{% endhint %}

### กดสวิตช์ I2C (SW2) ไปที่ฝั่ง "Arduino"

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FphhRcbnhfqeiRmMevSmZ%2Fimage.png?alt=media\&token=6d6e1756-fa9a-452d-8925-9d4f4d835c0b)

สวิตช์ I2C เปลี่ยนเป็นมาสเตอร์ I2C (ไจโร/มาตรความเร่ง, ไดรเวอร์เซอร์โว, EEPROM ภายนอก) ตามค่าเริ่มต้น “Arduino” NyBoard ใช้ ATmega328P แบบออนบอร์ดเป็นชิปหลัก ใน “RPi” NyBoard ใช้ชิปภายนอกที่เชื่อมต่อผ่านพอร์ต I2C (SDA, SCL) เป็นชิปหลัก เลือก "Arduino" เสมอ แต่ถ้ารู้วิธีเชื่อมต่ออุปกรณ์ I2C จากชิปภายนอกสามารถเปลี่ยนโหมดได้

{% hint style="warning" %}
หมายเหตุ：

* บางครั้ง หากคุณไม่สามารถผ่านขั้นตอนการบูทเครื่องได้ เช่น พิมพ์ Init IMU\r\n ซ้ำๆ อาจจะมีการกดสวิตช์ไปที่ฝั่ง "RPi" โดยไม่ได้ตั้งใจ
* ก่อนอัปโหลดเฟิร์มแวร์ โปรดตรวจสอบว่าไม่ได้เชื่อมต่ออุปกรณ์ I2C ใดๆ กับอินเทอร์เฟซ I2C ของเมนบอร์ด มิฉะนั้น การอัพโหลดเฟิร์มแวร์จะล้มเหลว ตำแหน่งของอินเทอร์เฟซ I2C แสดงอยู่ด้านล่าง (ในช่องสีแดง):&#x20;

&#x20;                                   <img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FbH34dmGEqxhNc3MTKnEe%2FI2C%E6%8E%A5%E5%8F%A3.png?alt=media&#x26;token=ea10915f-2b81-4197-9631-67d886cad1e9" alt="" data-size="original">
{% endhint %}

### อัปโหลดเฟิร์มแวร์สำหรับ NyBoard ด้วยแอป Petoi Desktop

#### ดาวน์โหลดเวอร์ชันล่าสุดของ [Petoi Desktop APP](https://github.com/PetoiCamp/OpenCat/releases).&#x20;

{% hint style="info" %}
อาจจะมีปัญหาเรื่องความเข้ากันได้ของแพลตฟอร์ม OS กับคอมพิวเตอร์เครื่องอื่น

แต่ยังสามารถรันได้โดยตรงผ่านเทอร์มินัล:

1. ไปที่ OpenCat/pyUI/ ในเทอร์มินัล
2. ติดตั้ง pyserial, pillow สำหรับ python . สร้างสภาพแวดล้อมใหม่และพิมพ์ `pip3 install pyserial pillow`
3. รัน `python3 UI.py`
   {% endhint %}

สำหรับ **NyBoard** การอัปโหลดเฟิร์มแวร์ส่วนใหญ่จะเรียกแอปพลิเคชัน **avrdude** เพื่ออัปโหลดไฟล์เฟิร์มแวร์สำหรับเมนบอร์ด

#### การลง avrdude ใน Linux OS

{% hint style="info" %}
สำหรับผู้ใช้ระบบ Linux นอกจากขั้นตอนข้างต้นแล้ว คุณต้องทำตามขั้นตอนต่อไปนี้ด้วย:

1\. ติดตั้ง **avrdude**&#x20;

* Fedora : dnf install avrdude
* CentOS : yum install avrdude
* Debian / Ubuntu : apt install avrdude

2\. แก้ไขตัวแปร **avrdudeconfPath** ใน FirmwareUploader.py

* Fedora / CentOS : `avrdudeconfPath = '/etc/avrdude/'`
* Debian / Ubuntu : `avrdudeconfPath = '/etc/'`
  {% endhint %}

**เชื่อมต่อตัวอัปโหลด USB**

ตรวจสอบการเชื่อมต่อของ serial ports:

สำหรับขั้นตอนเฉพาะ โปรดดูที่ [Connect NyBoard section](https://docs.petoi.com/communication-modules/usb-downloader-ch340c#connect-nyboard) ในโมดูลตัวอัปโหลด USB

**หลังจากเชื่อมต่อตัวอัปโหลด USB อย่างถูกต้องแล้ว** ให้เปิด PetoiDesktopApp (สำหรับ Windows: UI.exe / สำหรับ Mac: Petoi Desktop App) แล้วเลือกรุ่นและภาษา

#### Menu bar in Petoi Desktop APP

<div align="left"><img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FtV3v8v040vvzA5JTvQoR%2FMain_menu_en01.png?alt=media&#x26;token=e8517268-090e-4e21-9422-c67641ca35e1" alt="Model"> <img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2Fe0xOx39K7xexhRF8fFa8%2FMain_menu_en02.png?alt=media&#x26;token=11b134b5-5b2b-4d5f-a8ac-f05efbb4f9e4" alt="Language"> <img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FVPFGIWnKlekcZhrytOt8%2FMain_menu_en03.png?alt=media&#x26;token=ebfa6dd3-1481-4c74-86eb-b875f97608a4" alt="Help"></div>

{% hint style="info" %}
&#x20;"Italian", "Français", "日语"  แปลเสร็จเรียบร้อยแล้ว. คุณสามารถมีส่วนร่วมในที่โค้ด GitHub ของเรา: OpenCat/pyUIC/translate.py
{% endhint %}

**คลิกปุ่ม "Firmware Uploader" เพื่อเปิดอินเทอร์เฟซ Firmware Uploader:**

<div align="left"><img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FCWnsRR45UoSCOefOih0p%2FMain_FU-en.png?alt=media&#x26;token=78f9145f-c5a4-485e-bfbb-bb9327b30fb6" alt="Main interface"> <img src="https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FHKv9llwEyzW0vpUf2V4p%2FFirmwareUploaderInterface.png?alt=media&#x26;token=d7fe405e-6e65-4988-86a7-3f1d5461fcb0" alt="Firmware Uploader interface"></div>

เลือกตัวเลือกที่ถูกต้องเพื่ออัปโหลดเฟิร์มแวร์ล่าสุดสำหรับ NyBoard

{% hint style="warning" %}
ซอฟต์แวร์ 1.0 จะทำงานไม่ถูกต้องกับ Joint Calibrator, Skill Composer และ API อื่นๆ ใช้เฉพาะเมื่อคุณต้องการใช้ CodeCraft (อินเทอร์เฟซการเข้ารหัสแบบกราฟิกโดย TinkerGen ซึ่งเป็นพันธมิตรของเรา)&#x20;
{% endhint %}

<table><thead><tr><th>Options</th><th width="216">Values</th><th>Note</th></tr></thead><tbody><tr><td>Software version</td><td><p>1.0</p><p>2.0 (default)</p></td><td>The 1.0 version เป็นรุ่นเก่า</td></tr><tr><td>Board version</td><td>NyBoard_V1_0 (default<em>)</em><br>NyBoard_V1_1<br>NyBoard_V1_2</td><td></td></tr><tr><td>Product</td><td>Bittle (default)<br>Nybble</td><td></td></tr><tr><td>Mode</td><td>Standard (default)<br>RandomMind<br>Voice<br>Camera</td><td>บางโหมดมีเฉพาะในผลิตภัณฑ์เฉพาะเท่านั้น</td></tr><tr><td>Serial port</td><td>The most recent</td><td>คุณอาจต้องค้นหาผ่านการลองผิดลองถูก</td></tr></tbody></table>

{% hint style="info" %}
ไม่มีความสัมพันธ์ระหว่างเวอร์ชันของบอร์ด (ฮาร์ดแวร์) และเวอร์ชันรหัส (ซอฟต์แวร์)
{% endhint %}

**ขั้นตอนการอัพโหลด**

หลังจากคลิกปุ่ม "อัปโหลด" กระบวนการอัปโหลดจะเริ่มขึ้นทันที แถบสถานะด้านล่างจะแสดงความคืบหน้าปัจจุบันตามเวลาจริง รวมถึงผลลัพธ์ในการรัน

หลังจากอัปโหลดเฟิร์มแวร์ **Parameters** สำเร็จแล้ว บอร์ดจะเริ่มรันโปรแกรมการกำหนดค่าด้วยตัวเอง หน้าต่างข้อความบางหน้าต่างจะปรากฏขึ้นตามลำดับเพื่อให้คุณยืนยันหรือยกเลิก:

* Reset joint offsets? (Y/N)

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FBAMnnk78fjff4iEdu9ua%2FReset_joint_en.png?alt=media\&token=e7fa8c0e-611c-4e21-b90f-6d17e1ef5a73)

เลือก "是(Y)" โปรแกรมจะรีเซ็ตพารามิเตอร์การสอบเทียบเซอร์โวทั้งหมดเป็นศูนย์ และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง

เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป

{% hint style="info" %}
สำหรับซอฟต์แวร์เวอร์ชัน 1.0 จะมีหน้าต่างข้อความเตือน "Update Instincts? (Y/N)" ปรากฏขึ้นดังนี้:

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FjlheDXeiFwuS1cqvu45b%2Fupdate_instincts_en.png?alt=media\&token=e7978e70-385f-45c7-a2a5-8a380aecd8c8)

เลือก "是(Y)" โปรแกรมจะรีเซ็ตพารามิเตอร์การสอบเทียบเซอร์โวทั้งหมดเป็นศูนย์ และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง

เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป

หากคุณอัปโหลดซอฟต์แวร์เวอร์ชั่นนี้เป็นครั้งแรก อย่าลืมเลือก "是(Y)"!

สำหรับซอฟต์แวร์เวอร์ชัน 2.0 ตัวเลือกนี้จะถูกประมวลผลโดยอัตโนมัติเป็น Y
{% endhint %}

* Calibrate IMU? (Y/N)

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FF4wjxbU9d3PKd2JUiaS8%2Fcalibrate_imu_2.0_en02.png?alt=media\&token=24e74a32-6eaf-4734-b6bd-21aba5118811)

เลือก "是(Y)" โปรแกรมจะปรับเทียบไจโรสโคป (IMU) และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง

เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป

{% hint style="danger" %}
หมายเหตุ:&#x20;

1. ตรวจสอบให้แน่ใจว่าเมนบอร์ดอยู่ในตำแหน่งแนวนอนก่อนคลิกปุ่ม "是(Y)"
2. เมื่ออัปโหลดเฟิร์มแวร์เวอร์ชันนี้เป็นครั้งแรก อย่าลืมคลิกปุ่ม "是(Y)"!
   {% endhint %}

เมื่อทำตามขั้นตอนทั้งหมดเสร็จสิ้น หน้าต่างข้อความจะปรากฏขึ้นว่า "Parameter initialization complete!" คุณต้องกดยืนยันเพื่อขั้นตอนถัดไป

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2Fwq0dHFhVZtARvfKA6DWE%2Fpara_init_complete_en.png?alt=media\&token=d6b8e0d6-3c48-4125-bc12-69b81c104e7d)

หลังจากการอัปโหลดเสร็จสิ้น แถบสถานะจะอัปเดตผลลัพธ์ที่เกี่ยวข้อง เช่น การอัปโหลดเฟิร์มแวร์สำเร็จหรือล้มเหลว หากการอัปโหลดสำเร็จ จะมีหน้าต่างข้อความ "การอัปโหลดเฟิร์มแวร์เสร็จสมบูรณ์!" จะปรากฏขึ้นพร้อมกัน

![](https://3127300255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR9bYMZnmeFFa1GJLvjM%2Fuploads%2FNEcwvm5EKLSYvMDZSPUe%2Ffirm_complete_en.png?alt=media\&token=589077fb-491a-4ad9-9725-870352338652)

{% hint style="info" %}
หมายเหตุ:&#x20;

1. เมื่อคุณเปิดซอฟต์แวร์และอัปโหลดเฟิร์มแวร์เป็นครั้งแรก โปรแกรมจะอัปโหลดเฟิร์มแวร์ "**พารามิเตอร์**" ก่อน แล้วจึงอัปโหลดเฟิร์มแวร์ "**ฟังก์ชันหลัก**" หากคุณอัปโหลดซ้ำหลังจากอัปโหลดสำเร็จ โปรแกรมจะอัปโหลดเฉพาะเฟิร์มแวร์ "**ฟังก์ชันหลัก**" ตราบใดที่คุณแก้ไขตัวเลือก "**โหมด**" เท่านั้น
2. หาก **NyBoard** ไม่ได้เชื่อมต่อกับแบตเตอรี่และเปิดอยู่ คุณจะได้ยินเสียงท่วงทำนองลดหลั่นซ้ำๆ ซึ่งแสดงว่าแบตเตอรี่เหลือน้อยหรือไม่ได้เชื่อมต่อ คุณต้องเชื่อมต่อแบตเตอรี่และเปิดเครื่อง
   {% endhint %}

หากคุณมีประสบการณ์ในการเขียนโปรแกรม Arduino IDE โปรดดูที่ Upload Sketch For NyBoard
