Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
📱🤖
ขอบคุณที่เลือกหุ่นยนต์ Bittle หรือ Nybble ของ Petoi คู่มือนี้จะช่วยคุณตั้งค่าหุ่นยนต์บัดดี้และจัดเตรียม UI ที่เรียบง่ายขึ้นเพื่อปรับเทียบ ควบคุม และตั้งโปรแกรม สำหรับผู้ใช้ขั้นสูง เราขอแนะนำให้คุณอัปเดตหุ่นยนต์ด้วยเฟิร์มแวร์ OpenCat firmware บน Github เพื่อความเข้ากันได้ที่ดีที่สุดและคุณสมบัติใหม่ล่าสุด
แอพนี้ใช้งานได้ทั้งบนอุปกรณ์ Android และ iOS
คุณยังสามารถดาวน์โหลด android APK และติดตั้งบนโทรศัพท์ของคุณ คุณต้องเปิดเครื่องรูดก่อนการติดตั้ง
หากดองเกิล Bluetooth กะพริบในขณะที่แผงการเชื่อมต่อภายในแอพแสดงรายการการเชื่อมต่อ Bluetooth ที่ว่างเปล่า ก่อนอื่นให้ตรวจสอบว่าคุณได้ให้สิทธิ์ Bluetooth และตำแหน่งแก่แอพหรือไม่ หากยังคงแสดงรายการว่าง คุณอาจลองติดตั้งเวอร์ชันเสถียรก่อนหน้า
คุณต้องเสียบ Bluetooth dongle เข้ากับซ็อกเก็ต 6 พินบน NyBoard ให้ความสนใจกับลำดับพินของดองเกิลบลูทูธ กดปุ่มบนแบตเตอรี่ค้างไว้เพื่อเปิดพลังงานของหุ่นยนต์
หากเสียงบี๊บดังขึ้นซ้ำๆ หลังจากบู๊ตเครื่องหรือระหว่างใช้งาน แสดงว่าแบตเตอรี่เหลือน้อย กรุณาชาร์จในเวลา พอร์ตชาร์จอยู่ที่ปลายด้านหนึ่งของแบตเตอรี่
ไฟ LED บนดองเกิล Bluetooth ควรกะพริบเพื่อรอการเชื่อมต่อ เปิดแอปและสแกนอุปกรณ์บลูทูธที่มีอยู่ อย่าเชื่อมต่อหุ่นยนต์กับการตั้งค่าบลูทูธทั้งระบบของโทรศัพท์! เชื่อมต่ออุปกรณ์ด้วยชื่อ Bittle, Petoi หรือ OpenCat อย่าลืมเปิดบริการบลูทูธและให้สิทธิ์แอปเข้าถึงบริการ ในบางอุปกรณ์ คุณอาจต้องอนุญาตบริการระบุตำแหน่งสำหรับแอป แม้ว่าเราจะไม่ได้ใช้ข้อมูลเหล่านั้นก็ตาม
แอพจะส่งคำทักทายไปยังอุปกรณ์บลูทูธและคาดหวังการตอบกลับจากเฟิร์มแวร์ OpenCat คุณต้องติดตั้งรหัส OpenCat แบบเต็มบนหุ่นยนต์ของคุณก่อนที่จะเชื่อมต่อกับแอพ มิฉะนั้นแอปจะถือว่า "ไม่ใช่อุปกรณ์ Petoi" หุ่นยนต์ที่ประกอบไว้ล่วงหน้าควรติดตั้งเฟิร์มแวร์ไว้แล้ว มิฉะนั้น คุณต้องกำหนดค่าด้วย Arduino IDE หรือแอปเดสก์ท็อป
หากเชื่อมต่อ Bluetooth ไฟ LED จะสว่างคงที่ หุ่นยนต์จะเล่นทำนองสามเสียง หากหุ่นยนต์ไม่ตอบสนองหรือทำงานผิดปกติในภายหลัง ให้กดปุ่มรีเซ็ตบน NyBoard เพื่อรีสตาร์ทโปรแกรมบน NyBoard
แอพควรตรวจจับ Nybble หรือ Bittle โดยอัตโนมัติด้วยเฟิร์มแวร์ OpenCat ล่าสุด มิฉะนั้นจะแสดงการเลือกสำหรับ Nybble หรือ Bittle ตัวเลือก "เลือกหุ่นยนต์" ยังสามารถเข้าชมซ้ำได้ในแผงควบคุม
อินเทอร์เฟซหน้าจอด้านบนจะแสดงขึ้นเมื่อคุณคาลิเบตเป็นครั้งแรก คุณยังสามารถคลิกเพื่อเปิดเมนูด้านขวาบนในแผงควบคุมและเลือก "ปรับเทียบ" เพื่อเข้าถึงอีกครั้ง
หุ่นยนต์ที่ประกอบไว้ล่วงหน้าควรติดตั้งขาอย่างถูกต้องแล้ว แต่ไม่ได้รับการปรับแต่งอย่างละเอียด
ตรวจสอบให้แน่ใจว่าคุณได้อัปโหลดเฟิร์มแวร์ "Main function" firmware ก่อนการคาลิเบต
หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ อย่าติดตั้งส่วนประกอบขาจนกว่าจะมีการคาลิเบต คุณต้องติดตั้งแบตเตอรี่และกดปุ่มบนแบตเตอรี่ค้างไว้เพื่อจ่ายไฟให้กับหุ่นยนต์
เข้าสู่อินเทอร์เฟซการสอบเทียบ คลิกปุ่ม "คาลิเบตเทียบ" และเซอร์โวทั้งหมดจะย้ายไปยังตำแหน่งการคาลิเบตทันที
หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ ให้ติดตั้งส่วนประกอบที่เกี่ยวข้องกับเซอร์โวตามส่วนที่สองในภาพอินเทอร์เฟซการสอบเทียบ และพยายามตรวจสอบให้แน่ใจว่าชิ้นส่วนเหล่านี้ตั้งฉากกัน (ขาท่อนบนตั้งฉากกับลำตัว และ ขาท่อนล่างตั้งฉากกับท่อนบน) โปรดดูบทที่เกี่ยวข้องในคู่มือผู้ใช้สำหรับรายละเอียด:
Nybble
ใช้เครื่องมือรูปตัว L ที่ให้มาเพื่อเป็นข้อมูลอ้างอิง!
เมื่อทำการปรับเทียบ ก่อนอื่นให้เลือกหมายเลขดัชนีของข้อต่อเซอร์โวจากไดอะแกรม (เมื่อปรับเซอร์โวขา ให้ปรับต้นขาก่อน จากนั้นจึงปรับน่อง) จากนั้นคลิกปุ่ม "+" หรือ "-" เพื่อปรับแต่ง ข้อต่อไปยังสถานะมุมฉาก
หากออฟเซ็ตมากกว่า +/- 9 องศา คุณต้องถอดชิ้นส่วนเซอร์โวที่เกี่ยวข้องออกและติดตั้งใหม่โดยหมุนฟันซี่เดียว จากนั้นกดปุ่ม "+" หรือ "-"
ตัวอย่างเช่น หากคุณต้องใช้ -10 เป็นค่าการสอบเทียบ ให้ถอดขาออก หมุนด้วยฟันซี่เดียวแล้วติดกลับเข้าไปใหม่ ค่าการสอบเทียบใหม่ควรอยู่ที่ประมาณ 4 นั่นคือรวมได้สูงสุด 14 หลีกเลี่ยงการหมุนเพลาเซอร์โวระหว่างการปรับนี้
คุณสามารถสลับระหว่างการพัก ยืน และเดินเพื่อทดสอบการปรับเทียบ
Note:
คุณอาจต้องทำการคาลิเบตรอบที่สองเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
หลังจากการคาลิเบต อย่าลืมคลิกปุ่ม "บันทึก" เพื่อบันทึกค่าคาลิเบตอันใหม่ มิฉะนั้น ให้คลิก "<" ที่มุมซ้ายบนเพื่อยกเลิกการปรับเทียบ
ในแผงควบคุม คุณสามารถใช้ปุ่ม pe-set เพื่อควบคุมหุ่นยนต์ได้
การเดิน
ท่าทางและพฤติกรรม
ท่าทางและพฤติกรรมในตัวสามารถกระตุ้นได้โดยการกดปุ่ม อย่ากดปุ่มบ่อยเกินไปและซ้ำๆ ให้เวลาหุ่นยนต์ทำงานปัจจุบันให้เสร็จ
ปุ่มที่กำหนดเอง
คุณยังสามารถกำหนดคำสั่งที่กำหนดเองได้โดยกดปุ่ม "+" กดปุ่มค้างไว้แล้วลากเพื่อเปลี่ยนตำแหน่งปุ่ม ดับเบิลคลิกที่ปุ่มคำสั่งเพื่อแก้ไข หลังจากเข้าสู่สถานะแก้ไข จะมีคอนโซลซีเรียลไลต์สำหรับทดสอบคำสั่งและกำหนดค่าหุ่นยนต์
คำสั่งที่กำหนดเองเพื่อลอง:
m0 45
m0 -70 0 70
ksit
m 0 -70 0 70 8 -30
i 0 -45 8 -30 12 -60
ด้านล่างนี้คือดัชนีของข้อต่อสำหรับการอ้างอิงของคุณ สังเกตรูปแบบการจัดลำดับและพยายามจดจำให้ได้
j
u0 1
u2 20
b12 100
b14 4 14 4 21 4 21 4
สามารถดูตารางคำสั่งโดยละเอียดเพิ่มเติมได้ใน Serial Protocol.
The SkillLibrary folder ใน Github คือการรวบรวมทักษะใหม่ๆ ของหุ่นยนต์ OpenCat ซึ่งสามารถใช้อ้างอิงและใช้งานได้ (หลังจากดาวน์โหลด คุณสามารถบันทึกทักษะเดียวไปยังหน่วยความจำของหุ่นยนต์ผ่านแอปพลิเคชันเดสก์ท็อป Petoi -> Skill Composer และใช้ Customized buttons.ตั้งชื่อคำสั่งในกล่องข้อความ "ชื่อ" (เช่น "เรียกทักษะใหม่") ป้อน "T" ในกล่องข้อความ "รหัส" และบันทึก คลิกปุ่มฟังก์ชันนี้เพื่อดูผลของการดำเนินการทักษะนำเข้า)
คุณสามารถแบ่งปันทักษะใหม่ของคุณได้โดยส่งคำขอผสานไปยังโฟลเดอร์นี้.
เราปรับปรุงแอปต่อไปและจะแจ้งให้คุณทราบเมื่อมีการอัปเดต โปรดส่งข้อความถึง support@petoi.com หากคุณมีคำถามใดๆ เกี่ยวกับแอป
แผงด้านซ้ายกำหนดทั้งการเดินและทิศทางของหุ่นยนต์ และส่งคำสั่งรวมกัน เช่น "เดินไปทางซ้าย" และ "วิ่งไปข้างหน้า" หุ่นยนต์จะเคลื่อนที่ก็ต่อเมื่อเลือกการเดินและทิศทางเริ่มต้นเท่านั้น "ก้าว" ไม่มีทิศทาง และ "ถอยหลัง" มีทิศทางซ้ายและขวา ปุ่มหยุดชั่วคราว "||" จะหยุดการเคลื่อนไหวของหุ่นยนต์ชั่วคราวและปิดเซอร์โว เพื่อให้คุณสามารถหมุนข้อต่อไปยังมุมใดก็ได้ ปุ่ม "Turbo" ( )เปิด/ปิดไจโร ซึ่งเป็นเซ็นเซอร์ตรวจจับทิศทางร่างกายของหุ่นยนต์ การเปิดเครื่องจะทำให้หุ่นยนต์ปรับตามมุมของร่างกายและจะรู้ได้เองเมื่อกลับหัว การปิดจะลดการคำนวณและทำให้เดินเร็วขึ้นและเสถียรขึ้น
📚➡️🤖
นี่คือ GitBook hub เป็นพื้นที่สำหรับรวบรวมเอกสารและคู่มือการใช้งานสำหรับผลิตภัณฑ์ของเรา เรามุ่งเน้นที่พัฒนาและปรับปรุง model และ code ของพวกเราเพื่อนำสัตว์เลี้ยงหุ่นยนต์ไบโอนิคมาสู่โลกโปรดอ่านหมายเหตุเวอร์ชันอย่างละเอียดเพื่อกำหนดค่าหุ่นยนต์ของคุณ
หากคุณต้องการความช่วยเหลือ โปรดส่งข้อความถึง support@petoi.com หรือโพสต์บนฟอรัมของเราที่ petoi.camp.
สามารถควบคุม Nybble / Bittle ผ่านรีโมทคอนโทรลได้อย่างง่าย
รีโมทคุยข้อมูลผ่าน Infrared ทำให้ไม่ต้องจับคู่ โปรดตรวจสอบว่าได้ถอดแผ่นฉนวนพลาสติกออกแล้วเพื่อให้ถ่านสามารถจ่ายไฟเข้าไปสู่ตัวรีโมท และหากทดสอบเบื้องต้นโดยการชี้ตัวส่งสัญญาณของรีโมท (Infrared Transmitter) ไปที่ตัวรับสัญญาณ(Infrared Receiver)ที่ด้านหลังหุ่นยนต์เมื่อใช้งาน หากหุ่นยนต์ไม่ตอบสนอง คุณสามารถใช้กล้องของโทรศัพท์เพื่อตรวจสอบเครื่องส่งสัญญาณได้ หากไม่กะพริบเมื่อคลิกปุ่ม คุณต้องเปลี่ยนแบตเตอรี่ หากไฟกะพริบ แสดงว่าโปรแกรมบนหุ่นยนต์ไม่ได้กำหนดค่าอย่างถูกต้อง
ตำแหน่งของปุ่มนั้นสำคัญมาก แม้ว่าสัญลัษณ์ต่างๆจะช่วยให้จดจำ function ต่างๆได้ แต่จจะเป็นการดีกว่าถ้าที่จะกำหนดสัญลักษณ์ที่เกี่ยวข้องกับตำแหน่งเพื่อให้สามารถอ้างอิงถึงคีย์ต่างๆได้ เช่น K00 สำหรับแถวที่ 1 และคอลัมน์ที่ 1 และ K32 สำหรับแถวที่ 4 และคอลัมน์ที่ 3
ตัวย่อสำหรับคำจำกัดความของคีย์สามารถลดการใช้ SRAM ได้เนื่องจากปุ่มของรีโมตจริงมีจำกัด คุณจึงเปลี่ยนคำจำกัดความได้เพื่อความสะดวก
คีย์แมพต่อไปนี้เป็นเพียงภาพประกอบเท่านั้น ตรวจสอบคำสั่งใน OpenCat/src/infrared.h สำหรับความหมายของคีย์แต่ละคีย์สามารถปรับแต่งได้ใน #define KXX
เรายังสร้างแผงควบคุมระยะไกลแบบกำหนดเองสำหรับแบทช์ในอนาคตอีกด้วย ผู้ใช้ก่อนหน้านี้สามารถดาวน์โหลดไฟล์การออกแบบและพิมพ์บนกระดาษ A4
Rest จะเป็นการสั่งหุ่นยนต์หมอบลงและปิดการทำงานของเซอร์โวเป็นคำสั่งคลิ๊กที่ปลอดภัยหากหุ่นยนต์ทำอะไรแปลกๆ
Balance คือท่ายืนที่สมดุล คุณสามารถปรับหุ่นยนต์จากด้านข้างและหุ่นยนต์จะพยายามบาลานซ์ คุณสามารถทดสอบความสามารถในการทรงตัวบนกระดานได้ การทรงตัวจะเปิดใช้งานในท่าทางและการเดินส่วนใหญ่.
การกด F/L/R จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้า/ซ้าย/ขวา
B จะทำให้หุ่นยนต์เคลื่อนที่ถอยหลัง
Calibrate ทำให้หุ่นยนต์อยู่ในท่าการคาลิเบรตและปิดการทำงานของไจโร
Stepping หุ่นยนต์ย่ำอยู่กับที่จุดเดิม
Crawl/walk/trot คือท่าที่สลับและใช้ร่วมกับปุ่มในการบังคับทิศทางของหุ่นยนต์ได้ได้
ปุ่มถัดจาก trot คือท่าทางหรือทักษะอื่นๆ ที่ตั้งไว้ล่วงหน้า
Gyro จะเปิด/ปิดไจโรเพื่อการทรงตัว การปิดไจโรสามารถเร่งความเร็วและทำให้การเดินช้าลงอย่างมีเสถียรภาพ แต่ไม่แนะนำให้เดินเร็วๆ เช่น วิ่งเหยาะๆ สิทธิ์ในตัวเองจะถูกปิดใช้งานเนื่องจากหุ่นยนต์ไม่รู้ว่าถูกพลิกอีกต่อไป
พื้นผิวที่แตกต่างกันมีแรงเสียดทานต่างกันและจะส่งผลต่อประสิทธิภาพการเดิน การเดินบนพื้นลาดเหมาะสำหรับหุ่นยนต์ขาสั้นทำให้การนี้มันสามารถคลานได้ด้วยคำสั่ง (command kcr) สำหรับภูมิประเทศที่เดินลำบาก
สามารถดึงก้อนแบตเตอรี่ลงและเลื่อนไปตามทิศทางที่ยาวขึ้นของส่วนท้อง ซึ่งจะปรับจุดศูนย์กลางมวลซึ่งเป็นสิ่งสำคัญมากสำหรับการเดิน
เมื่อหุ่นยนต์กำลังเดิน คุณสามารถปล่อยให้หุ่นยนต์ปีนขึ้น/ลงทางลาดชันเล็กน้อย (<10 องศา)
หากหุ่นยนต์ยังคงส่งเสียงบี๊บหลังจากที่คุณเชื่อมต่อตัวอัปโหลด USB โดยมีตัวเลขพิมพ์อยู่บนจอภาพซีเรียล แสดงว่ามีการเรียกใช้งานสัญญาณเตือนแรงดันไฟฟ้าต่ำ คุณต้องจ่ายพลังงานให้กับเมนบอร์ดด้วยแบตเตอรี่เพื่อให้ผ่านเกณฑ์
เซอร์โวได้รับการออกแบบให้ขับเคลื่อนด้วยเฟืองภายใน หลีกเลี่ยงการหมุนเซอร์โวจากภายนอกเร็วเกินไป
อย่าให้หุ่นยนต์วิ่งนานจนเกินไป มันจะทำให้อุปกรณ์อิเล็กทรอนิกส์ร้อนเกินไปและลดอายุการใช้งานของเซอร์โว
หากคุณรู้สึกว่ามีบางอย่างผิดปกติกับหุ่นยนต์ ให้กดปุ่มรีเซ็ตบนบอร์ดเพื่อเริ่มโปรแกรมใหม่
จงใจดีราวกับว่าคุณกำลังเล่นกับลูกแมว/ลูกสุนัขจริงๆ (^=◕ᴥ◕=^)
UI.py เป็นเป็นโปรแกรมทั่วไปที่เชื่อมต่อกับส่วนอื่นทั้งหมด:
UI.py
-> FirmwareUploader.py
-> Calibrator.py
-> SkillComposer.py
translate.py มีการองรับหลายภาษาใน UI สามารถเปลี่ยน UI เป็นภาษาที่ต้องการใช้งานได้
ก่อนเรียกใช้แอป คุณต้องใช้อะแดปเตอร์ USB ที่ให้มาหรือดองเกิลบลูทูธเพื่อเชื่อมต่อกับหุ่นยนต์ Petoi
หลังจากดาวน์โหลดเวอร์ชัน Mac แล้ว คุณต้องลากลงในโฟลเดอร์แอปพลิเคชัน
หากคุณเห็นข้อความขึ้นว่าไม่สามารถเปิด "Petoi Desktop App" ได้เนื่องจากไม่สามารถตรวจสอบผู้พัฒนาได้ คุณสามารถคลิกขวาที่ไอคอน กดปุ่ม Shift และคลิ๊ก Open.
ในกรณีของปัญหาเอ็กซีคิวเทเบิ้ลไฟล์โปรแกรม หรือถ้าคุณต้องการแก้ไขซอร์สและทดสอบ คุณสามารถรันโค้ดจากเทอร์มินัลได้เช่นกัน
ขึ้นอยู่กับการกำหนดค่า Python ที่มีอยู่ของคุณ คุณอาจต้องอัปเกรดเป็น Python3 และติดตั้งไลบรารีต่อไปนี้:
pyserial
pillow
คุณสามารถติดตั้งได้โดยพิมพ์ pip3 install pyserial pillow
ใน เทอร์มินัล หรือใช้ตัวจัดการแพ็คเกจใน Anaconda
ในการรันโค้ด:
ใน Terminal ใช้คำสั่ง cd เพื่อนำทางไปยังโฟลเดอร์ OpenCat/pyUI/ คุณสามารถใช้แป้น Tab เพื่อเติมชื่อพาธโดยอัตโนมัติ
หลังจากเข้าสู่โฟลเดอร์ pyUI/ ให้ป้อน ls และตรวจสอบให้แน่ใจว่าคุณเห็น UI.py และซอร์สโค้ด python อื่น ๆ ในรายการ
รัน python3 UI.py
.
สำหรับผู้ใช้ระบบ Linux หากคุณพบข้อความแสดงข้อผิดพลาด "_tkinter.TclError: no display name and no $DISPLAY environment variable", คุณสามารถลง python3-tk, tk-dev,เป็นคำสั่งสำหรับ Ubuntu/Debian โดยใช้คำสั่งต่อไปนี้:
apt install python3-tk
apt install tk-dev
หลังจากการติดตั้งเสร็จสิ้น ให้รีบูตเครื่องคอมพิวเตอร์
Skill Composer เป็นเครื่องมือพัฒนาทักษะที่พัฒนาเป็นพิเศษโดย Petoi สำหรับหุ่นยนต์ (Bittle, Nybble) เครื่องมือที่ดีเป็นสิ่งที่จำเป็นสำหรับความสำเร็จของงาน
หุ่นยนต์ต้องใช้พลังงานจากแบตเตอรี่และใช้เฟิร์มแวร์ OpenCat 2.0 เพื่อให้ Petoi Desktop App รู้จัก ก่อนเปิดซอฟต์แวร์ โปรดติดตั้งแบตเตอรี่และกดปุ่มบนแบตเตอรี่ค้างไว้เพื่อเปิด Nybble / Bittle
หมายเหตุ: ปุ่มส่วนใหญ่บนอินเทอร์เฟซมีคำแนะนำการใช้งานหากเลื่อนเมาส์ไปด้านบนของเครื่องมือนั้นๆ
โมเดล
Nybble
Bittle
Nybble cat และ Bittle มีข้อต่อขาหลังที่แตกต่างกัน ข้อมูลสกิลของทั้งสองตัวไม่สามารถใช้แทนกันได้ เลือกรุ่นที่ถูกต้องก่อนใช้งาน สกิลคอมโพสเซอร์ มิฉะนั้น ข้อต่อบางส่วนอาจขัดแย้งกับร่างกายของหุ่นยนต์
ภาษา
ประโยชน์
เราจะเพิ่มแกดเจ็ตขนาดเล็กลงในแท็บยูทิลิตี้ต่อไป ขณะนี้เรามีตัวเลือกสีตาสำหรับเซ็นเซอร์อัลตราโซนิกของแมว Nybble พร้อมไฟ LED ในตัว
พอร์ท / เชื่อมต่อ
หมายเหตุ: แอปเดสก์ท็อปจะคอยฟังพอร์ตอนุกรมและส่งสัญญาณจับมือไปยังอุปกรณ์ที่เพิ่มใหม่ หากอุปกรณ์ตอบสนองด้วยสัญญาณที่กำหนดไว้ล่วงหน้า อุปกรณ์นั้นจะรับรู้เป็นอุปกรณ์ Petoi และเพิ่มลงในเมนูแบบเลื่อนลง
ข้อต่อของหุ่นยนต์จะคงตำแหน่งเมื่อออกแรง คุณไม่ควรหมุนด้วยมือ การปิดจะทำให้คุณสามารถหมุนข้อต่อของหุ่นยนต์ได้อย่างอิสระ การจัดตำแหน่งหุ่นยนต์อย่างรวดเร็วเพื่อวางแผนจุดศูนย์กลางมวลเพื่อการทรงตัวจะเป็นประโยชน์
หุ่นยนต์มีไจโรสโคปเพื่อตรวจจับมุมและการเคลื่อนไหวของร่างกาย ใช้สำหรับการทรงตัวและการม้วนกลับ การปิดสามารถหลีกเลี่ยงปฏิกิริยาที่ไม่คาดคิดเมื่อหมุนหุ่นยนต์
ท่าที่ตั้งค่าไว้
มีท่าคงที่ที่กำหนดไว้ล่วงหน้าสองสามท่าเพื่อย้ายข้อต่อของหุ่นยนต์ไปยังตำแหน่งเฉพาะ คุณสามารถใช้เป็นจุดเริ่มต้นในการสร้างลำดับการเคลื่อนไหวของคุณ เรามักจะเริ่มด้วยท่า "ทรงตัว" โดยให้หุ่นยนต์ยืนบนขาทั้งสี่ข้าง
สามารถสลับไปมาระหว่างท่าทางต่างๆ และสังเกตว่าแถบเลื่อนในในหน้าต่างปรับข้อต่ออัปเดตอย่างไรเพื่อแสดงเห็นการเปลี่ยนแปลงในมุมองศาของข้อต่อ
แถบเลื่อนมุมสามารถแสดงมุมข้อต่อปัจจุบันของหุ่นยนต์ สามารถหมุนข้อต่อของหุ่นยนต์กลับด้านได้หากคุณเปลี่ยนค่า คุณสามารถลากแถบเลื่อนเพื่อปรับมุมกว้าง หรือคลิกด้านบนหรือด้านล่างแถบเลื่อนเพื่อปรับแบบละเอียด (ทีละ 1 องศา) ข้อต่อบางอันจะมีระยะการเข้าถึงที่เล็กกว่าตัวเลื่อน พยายามใช้มุมระหว่าง -125 ถึง 125 องศา การส่งมุมที่ใหญ่ขึ้นจะเพิ่มเวลาตอบสนองกับหุ่นยนต์
แถบเลื่อนสอดคล้องกับข้อต่อของหุ่นยนต์ หากคุณมองลงไปที่หุ่นยนต์โดยให้ส่วนหัวชี้ไปข้างหน้าข้อต่อที่อยู่ใกล้กับร่างกายจะอยู่ใกล้กับศูนย์กลางของแผง ข้อต่อของหุ่นยนต์สามารถเข้ากับร่างกายของคุณเองและกลายเป็นอวตารของคุณได้
หมายเหตุ: แถบเลื่อนบางตัวที่มีพื้นหลังสีเหลืองอ่อนจะปิดใช้งานสำหรับข้อต่อที่ไม่มีในบางรุ่นเช่น Bittle ไม่มีเหมือน Nybble
คุณสามารถควบคุมหลายข้อต่อได้โดยคลิกปุ่มหมุนหมายเลข "+" หรือ "-" บนแถบเลื่อนแต่ละตัว แถบเลื่อนทั้งหมดที่มีการกด "+" จะเปลี่ยนโดย increaments เดียวกัน แถบเลื่อนที่กดปุ่ม "-" จะเปลี่ยนตามค่าลบ ปุ่มสามารถเปิดปิดได้ คลิกปุ่ม "Unbind All" เพื่อปลดข้อต่อทั้งหมดพร้อมกัน
คุณยังสามารถควบคุมข้อต่อทั้งตัวของหุ่นยนต์ได้ด้วยแถบเลื่อนที่แผงตรงกลาง คุณสามารถปรับแถบเลื่อนกลางเหล่านี้เพื่อปรับการวางแนวและการแปลโดยรวมของหุ่นยนต์ ท่า "สมดุล" ที่เป็นกลางสามารถสร้างผลลัพธ์ที่ดีกว่าท่าเอียงอื่น ๆ
ฟังก์ชันก่อนหน้านี้สามารถแก้ไขท่าทางเดียวได้ Skill Editor เป็นตัวกำหนดตารางเวลาแอนิเมชั่นสต็อปโมชั่น คุณสามารถเพิ่ม ลบ และแทรกเฟรมของท่าทางต่างๆ และทำให้หุ่นยนต์เคลื่อนไหวได้อย่างต่อเนื่องและราบรื่น
ในแต่ละเฟรมมีแถวของตัวมันเองโดยแถวแรกบนสุดจะเป็นแถบเมนูบอกว่าทำอะไรเราสามารถแอดเฟรมแล้วปรับค่าได้
สามารถคลิก "=" (ปุ่มที่ 2 ของแต่ละเฟรม) เพื่อเปิดใช้งานเฟรมที่เกี่ยวข้องและย้ายหุ่นยนต์ไปยังท่าทางของเฟรม เฟรมจะเก็บการแก้ไขใหม่ทั้งหมดของคุณในท่าทางปัจจุบันของหุ่นยนต์ สัญลักษณ์ "=" จะเป็นตัวหนา และปุ่มจะใหญ่ขึ้น หากเฟรมปัจจุบันถูกแก้ไข สัญลักษณ์ "=" จะกลายเป็นเครื่องหมายตกใจสีแดง "!" คุณสามารถคลิกปุ่มนี้เพื่อบันทึกการแก้ไขของคุณ มิฉะนั้น การแก้ไขปัจจุบันจะถูกยกเลิกหากคุณคลิกปุ่ม "="ของเฟรมอื่นๆ
คุณสามารถคลิกปุ่ม "v" (ปุ่มที่ 9 ของแต่ละเฟรม) เพื่อเพิ่มเฟรมหลังจากเฟรมปัจจุบันและเปิดใช้งาน กรอบใหม่จะเหมือนกับของเฟรมที่เปิดใช้งานก่อนหน้า
หมายเหตุ: เฟรมใหม่ไม่จำเป็นต้องคัดลอกเฟรมโดยการกดปุ่ม "v"
ไม่จำเป็นต้องเพิ่มเฟรมใหม่หลังจากเฟรมสุดท้ายเสมอไป คุณสามารถคลิกปุ่ม "v" (ปุ่มที่ 9 ของแต่ละเฟรม) oเฟรมระหว่างกลางใด ๆ เพื่อแทรกเฟรมใหม่ด้านล่างโดยการกดปุ่ม "v" . เฟรมใหม่มีข้อมูลที่เหมือนกันกับเฟรมที่เปิดใช้งานก่อนหน้า
สามารถคลิกปุ่ม ">|<" เพื่อให้เฟรมนี้เหมือนกับเฟรมท่าทางของเฟรมที่เปิดใช้งานไปแล้ว
สามารถคลิกที่ปุ่ม "<" (ปุ่มที่ 8 ของแต่ละเฟรม) เพื่อลบเฟรมปัจจุบันโดยกดปุ่มค้างไว้เฟรมต่อไปนี้ทั้งหมดจะเลื่อนขึ้น ถ้า เฟรมที่เปิดใช้งานถูกลบ เฟรมก่อนหน้าจะเปิดใช้งาน เฟรมที่เปิด เป็นเฟรมแรกและถูกลบ เฟรมถัดไปจะถูกเปิดใช้งาน
บางครั้งอาจจะลืมสิ่งที่ต้องการให้แต่ละเฟรมทำงานมีการแก้ไขเฟรมหลายครั้ง และการสลับไปมายังแต่ละเฟรมอาจใช้เวลานาน เราให้บริการ "Note" (ปุ่มที่ 7 ของแต่ละเฟรม)ซึ่งคุณสามารถเพิ่มคีย์เวิร์ดสั้นๆ เพื่อระบุความหมายของเฟรมได้ ตามค่าเริ่มต้น ชื่อท่าแบบสุ่มจะถูกเพิ่มเข้าไปในเฟรมเมื่อสร้างขึ้น
หากมุมของข้อต่อเหมือนกันในเฟรมปัจจุบันและเฟรมถัดไป การแก้ไขและบันทึกมุมจะอัปเดตมุมในเฟรมต่อไปนี้ด้วยจนกว่ามุมจะแตกต่างกัน ตัวอย่างเช่น หากมุมร่วมของ 8 เป็น 4,4,4,4,6,7 ในทุกเฟรม การเปลี่ยนมุมในเฟรมที่สองเป็น 8 จะอัปเดตลำดับเป็น 4,8,8,8,6,7
เล่นสกิลตามลำดับ
นอกเหนือจากการคลิกด้วยตนเองที่ปุ่ม "=" (ปุ่มที่ 2 ของแต่ละเฟรม)หากต้องการดูท่าเดียว คุณสามารถคลิก "Play" ปุ่มเริ่มแสดงท่าตามลำดับเริ่มจากเฟรมที่เปิดใช้งานทั้งหมด ในระหว่างการเล่นสามารถกดปุ่ม "Stop" เพื่อหยุดการเล่นสกิลกลางคันได้
หลังจากคลิกไปที่ปุ่ม "Export" คุณสามารถเลือกตำแหน่งและชื่อไฟล์ในการบันทึกสกิล เฟรมที่กำลังดำเนินการทั้งหมดในรายการเฟรมจะถูกส่งออก) เป็นไฟล์ข้อความ คุณสามารถยกเลิกการบันทึกเพื่อข้ามได้ แอปเดสก์ท็อปจะยังคงส่งทักษะไปยังหุ่นยนต์เพื่อประสิทธิภาพแบบเรียลไทม์ และคุณสามารถเรียกใช้ทักษะที่ส่งล่าสุดด้วยโทเค็นซีเรียล"T". โดยสองวิธีต่อไปนี้
เนื้อหาของไฟล์ข้อความที่ส่งออก (.txt) สามารถคัดลอกและวางลงในไฟล์ Instinct**.h เพื่อใช้เป็นอาร์เรย์ทักษะได้
หลังจากที่คลิกปุ่ม "Import"คุณจะเห็นหน้าต่างเด้งขึ้นมามันอนุญาตให้คุณก๊อปปี้และวางสกิลดาต้าอารเ์เรย์ใน text editor หรือ นำเข้าสกิลที่มีอยู่แล้วจากการสร้างโดยคนอื่นได้คุณสามารถดูตัวอย่างได้ที่OpenCat/src/InstinctBittle.h or InstinctNybble.h. รูปแบบสกิลที่สมบูรณ์ควรประกอบด้วยคู่"{ }" และมีตัวเลขระหว่างกลาง. เฉพาะรายการแรกเท่านั้นที่จะถูกนำเข้าหากมีอาร์เรย์สกิลหลายรายการ ควรตรวจสอบก่อนนำเข้า
คุณสามารถใช้ปุ่ม "Restart" เพื่อล้างแผงตัวแก้ไขสกิลและเริ่มต้นใหม่
หากคุณป้อน -1 ในช่อง ทำซ้ำ เฟรมจะดำเนินการวนซ้ำจะวนซ้ำตลอดไป เว้นแต่คุณจะกดปุ่มรีเซ็ตบนกระดานหลักของหุ่นยนต์
1,2,4,8,12,16,32,48,max
หมายเหตุ:
คุณยังสามารถป้อนค่าจำนวนเต็มในช่วง 0~125 (0 หมายถึง สูงสุด) ในกล่องตัวเลือก
คลิกปุ่ม "Play" ใน "Skill Editor" คุณไม่สามารถมองเห็นเอฟเฟกต์ความเร็วในการวิ่งที่แท้จริงของการกระทำได้ หลังจากคลิกปุ่ม "ส่งออก" คุณจะเห็นเอฟเฟกต์ความเร็วจริง
การเคลื่อนที่ด้วยความเร็วสูงสุดเป็นเวลานานจะทำให้เซอร์โวเสียหายได้ ดังนั้นจึงแนะนำโดยทั่วไปว่าอย่าตั้งค่าเป็น "สูงสุด"
เมื่อเปิดปุ่ม "Gyro" ในพื้นที่ "หน้าปัดสถานะ" (สีตัวอักษรเป็นสีเขียว) หลังจากปรับค่ามุมร่วมในเฟรมหรือความเร็วในการทำงานของเฟรม สามารถกด เล่น เพื่อดูเอฟเฟกต์การดีบัก หรือส่งออกพฤติกรรมการกระทำ หุ่นยนต์จะพยายามรักษาสมดุลร่างกายของตนเองตามเวลาจริง ดังนั้นอาจเห็นได้ว่าเมื่อหุ่นยนต์ทำการกระทำที่กำหนดไว้ล่วงหน้า (โดยเฉพาะเมื่อทำการกระทำที่ค่อนข้างรุนแรง) ร่างกายของมันจะสั่นไปมา และมาหรือแม้แต่พลิกคว่ำ และหุ่นยนต์จะฟื้นตัวโดยอัตโนมัติ การดำเนินการอาจรบกวนขั้นตอนการทำงานเดิมของคุณ ดังนั้น ขอแนะนำให้คุณคลิกปุ่ม "Gyro" เมื่อออกแบบการทำงานเพื่อปิดไจโรสโคป (สีตัวอักษรเปลี่ยนเป็นสีแดง) และหุ่นยนต์จะไม่ดำเนินการป้อนกลับสมดุลตามเวลาจริง เมื่อคุณต้องการเปิดไจโรสโคป ให้คลิกปุ่ม "ไจโร" อีกครั้ง
มีให้เลือก 17 แบบ: 0,50,100,200,300,400,500,600,700,800,900,1000,2000,3000,4000,5000,6000.
แน่นอน คุณยังสามารถป้อนค่าจำนวนเต็มในช่วง 0~6000 ในช่องตัวเลือก "Delay" หน่วยเป็นมิลลิวินาที (ms)
ตัวเลือก "ทริกเกอร์" (ปุ่มที่ 4 ของเฟรม) ในเฟรมใช้เพื่อกำหนดทิศทางการหมุนของร่างกายเมื่อหุ่นยนต์สั่งงานเฟรมถัดไป มีตัวเลือกการตั้งค่า 5 แบบต่อไปนี้:
None หมายความว่าไม่มีทริกเกอร์และตั้งค่าเงื่อนไขมุมแล้ว
Pitch หมายถึงตัวหุ่นยนต์หมุนทำให้จมูกลง
-Pitch หมายถึงตัวหุ่นยนต์หมุนทำให้จมูกสูงขึ้น
Roll หมายความว่าตัวหุ่นยนต์จะกลิ้งไปทางด้านซ้าย (ทวนเข็มนาฬิกาเมื่อมองจากหาง)
-Roll หมายถึง ตัวหุ่นยนต์จะกลิ้งไปทางด้านขวา (ตามเข็มนาฬิกาเมื่อมองจากหาง)
ตัวเลือก "มุม" (ปุ่มที่ 5 ของเฟรม) ถูกกำหนดโดยอ้างอิงถึงมุมของระบบพิกัดเชิงขั้ว ดังที่แสดงในรูปด้านบน เมื่อร่างกายอยู่ในแนวนอน มุมของแกนพิกัดเชิงขั้วคือ 0 องศา หากแกนพิกัดเชิงขั้วหมุนทวนเข็มนาฬิกา มุมจะเป็นบวกและค่อยๆ เพิ่มขึ้น ช่วงการตั้งค่ามุมคือค่าจำนวนเต็มระหว่าง-125~125.
เมื่อมีการตั้งค่าทริกเกอร์และมุมเฉพาะในกรอบการทำงาน กรอบการทำงานถัดไปจะถูกเรียกใช้เมื่อหุ่นยนต์หมุนเหนือมุมสั่งงานในทิศทางของทริกเกอร์เท่านั้น หากมีการตั้งค่าการหน่วงเวลาในกรอบการทำงานนี้ด้วย จะมีการเลื่อนเวลาเพิ่มเติมหลังจากตรงตามเงื่อนไขทริกเกอร์ก่อนที่จะย้ายไปยังเฟรมถัดไป
เมื่อสร้างการกระทำที่เกี่ยวข้องกับการหมุนตัวหุ่นยนต์ (เช่น การตีลังกากลับหลัง การออกกำลังกายแบบยกน้ำหนักสูง ฯลฯ) จำเป็นอย่างยิ่งที่จะต้องกระตุ้นการเคลื่อนไหวในมุมของร่างกายที่แน่นอน ซึ่งจังหวะเวลานั้นยากแก่การประเมิน และอาจเปลี่ยนแปลงในระหว่าง การเคลื่อนไหว เราสามารถใช้ไจโรสโคปเพื่อตรวจสอบมุมการหมุนของตัวหุ่นยนต์แบบเรียลไทม์ เพื่อให้หุ่นยนต์สั่งงานเซอร์โวร่วมในเวลาที่แน่นอนของเหตุการณ์สั่งงาน
เมื่อนำเข้าอาร์เรย์ทักษะที่สร้างไว้ล่วงหน้า แอปเดสก์ท็อปจะเลือกตัวเลือก "พฤติกรรม/การเดิน" โดยอัตโนมัติตามรูปแบบข้อมูล เฟรมจะถูกโหลดลงในโปรแกรมแก้ไขเฟรม และหุ่นยนต์จะย้ายไปยังตำแหน่งของเฟรมแรกโดยอัตโนมัติ
แอปเดสก์ท็อปจะรอให้หุ่นยนต์ส่งคืนโทเค็นการยืนยันหลังจากส่งคำสั่ง อาจค้างหากโปรแกรมของหุ่นยนต์หยุดทำงานหรือขาดการเชื่อมต่อ คุณไม่จำเป็นต้องปิดแอปเดสก์ท็อปและสูญเสียเฟรมการกระทำที่ไม่ได้บันทึก แต่กดปุ่ม "รีเซ็ต" บนกระดานหลักของหุ่นยนต์เพื่อหยุดการวนรอบการรอของแอป หากโปรแกรมยังไม่ตอบสนอง คุณสามารถคลิกปุ่มท่าทางในพื้นที่ "ท่าทางที่ตั้งไว้ล่วงหน้า" หรือลองเชื่อมต่อหุ่นยนต์อีกครั้งโดยใช้ปุ่ม "เชื่อมต่อ/ฟัง"
USB
ก่อนอื่นให้เชื่อมต่อตัวอัปโหลด USB เข้ากับแผงวงจรหลักของหุ่นยนต์ จากนั้นใช้สายเคเบิลข้อมูลเพื่อเชื่อมต่อกับอินเทอร์เฟซ USB ของคอมพิวเตอร์
Bluetooth
ขั้นแรกให้เสียบโมดูล Bluetooth เข้ากับบอร์ดหลักของหุ่นยนต์ (ไม่จำเป็นต้องใช้บอร์ดที่ใช้ ESP32) จับคู่บอร์ดกับอินเทอร์เฟซการตั้งค่า Bluetooth ของคอมพิวเตอร์ แอปเดสก์ท็อปจะตรวจจับว่ามีการเชื่อมต่อพอร์ตอนุกรมใหม่หรือไม่ เมื่อเชื่อมต่อพอร์ตอนุกรมหลายพอร์ตสำเร็จ ปุ่มตัวเลือกพอร์ตอนุกรมในพื้นที่ "State Dials" จะเปลี่ยนเป็น "All" คลิกรายการแบบเลื่อนลงเพื่อดูพอร์ตอนุกรมทั้งหมดที่เชื่อมต่อสำเร็จ หุ่นยนต์ทั้งหมดจะถูกซิงโครไนซ์แบบเรียลไทม์ด้วยวิธีนี้ คุณยังสามารถเลือกพอร์ตอนุกรมใดก็ได้เพื่อควบคุมหุ่นยนต์ที่เกี่ยวข้อง
หากคุณถอดปลั๊กซีเรียลพอร์ต USB บนคอมพิวเตอร์ (หรือเลือกที่จะตัดการเชื่อมต่อโมดูล Bluetooth ในอินเทอร์เฟซการตั้งค่า Bluetooth) พอร์ตอนุกรมที่เกี่ยวข้องจะถูกลบออกจากรายการแบบหล่นลงตามเวลาจริง
หากคุณถอดปลั๊กซีเรียลพอร์ต USB ทั้งหมด (ตัดการเชื่อมต่อโมดูลบลูทูธทั้งหมด) ปุ่มตัวเลือกพอร์ตอนุกรมจะแสดงเป็น "ไม่มี" และปุ่มด้านซ้ายจะแสดงขึ้น "Listening". แอปเดสก์ท็อปยังคงตรวจพบโดยอัตโนมัติว่ามีการเชื่อมต่อพอร์ตหรือไม่ เมื่อหุ่นยนต์เชื่อมต่อกับคอมพิวเตอร์อีกครั้งผ่านพอร์ต ปุ่มทางด้านซ้ายของเมนูแบบเลื่อนลงจะแสดงขึ้น "Connected". ชื่อพอร์ตที่สอดคล้องกันจะแสดงอยู่ในปุ่มตัวเลือกพอร์ตอนุกรม
หากคุณต้องการให้แอปเดสก์ท็อปหยุดตรวจหาการเชื่อมต่อแบบซีเรียล คุณสามารถคลิกปุ่ม"Connected" / ปุ่ม "Listening" ข้อความในปุ่มจะเปลี่ยนเป็น "Connect"และการเชื่อมต่อแบบพอร์ตทั้งหมดจะถูกตัดการเชื่อมต่อ คลิกปุ่ม "Connect" อีกครั้งเพื่อรีสตาร์ทฟังก์ชันการตรวจจับแบบเรียลไทม์
Petoi Desktop App เป็นเครื่องมือที่ทำให้ง่ายขึ้นสำหรับเพื่อกำหนดค่าเฟิร์มแวร์ ปรับเทียบหุ่นยนต์ และออกแบบการเคลื่อนไหวที่กำหนดเองสำหรับหุ่นยนต์ โมดูลฟังก์ชันที่สำคัญคือ , และ .
ซอร์สโค้ดเขียนด้วย Tkinker ใน Python3 และเป็นโอเพ่นซอร์ส .
คุณสามารถดาวน์โหลด ของแอพเดสก์ท็อปเพื่อหลีกเลี่ยงอินเทอร์เฟซการเขียนโปรแกรม
เทอร์มินัล เป็นอินเทอร์เฟซในตัวบนเครื่อง Mac หรือ Linux สภาพแวดล้อมที่เทียบเท่าบนเครื่อง Windows เรียกว่า Command-Line Tool (CMD) ขอแนะนำให้คุณติดตั้ง เพื่อจัดการสภาพแวดล้อม Python ของคุณ นอกจากนี้ยังสามารถให้ Powershell เป็นเทอร์มินัลสำหรับเครื่อง Windows รุ่นเก่า
เปิด (สำหรับ Windows: UI.exe / สำหรับ Mac: Petoi Desktop App) คลิกปุ่ม "สกิลคอมโพสเซอร์" และเปิดอินเทอร์เฟซของ สกิลคอมโพสเซอร์
ขณะนี้มีภาษา English, 中文, and Italian. คุณสามารถมีส่วนช่วยในอัพเดทภาษาได้ที่ .
เชื่อมต่อหุ่นยนต์กับคอมพิวเตอร์ของคุณผ่านทาง หรือ จากนั้นเปิดแอปเดสก์ท็อปนี้ ควรตรวจจับและเชื่อมต่อกับหุ่นยนต์โดยอัตโนมัติ พอร์ตอนุกรมของหุ่นยนต์จะปรากฏในเมนูแบบเลื่อนลงต่อไปนี้ ปุ่มควรเปลี่ยนจาก "Listening" เพื่อ "Connected" หากหุ่นยนต์ไม่สามารถเชื่อมต่อได้ในครั้งแรก คุณสามารถคลิก "Listening" สำหรับการปลดการเชื่อมต่อพอร์ตทั้งหมด จากนั้นกดปุ่ม "Connect" อีกครั้ง
ในโหมดทดลองบางโหมดเช่น (e.g. )หุ่นยนต์จะเคลื่อนที่แบบสุ่ม ปุ่มนี้สามารถสลับการเปิด/ปิดพฤติกรรมได้
Global Orientation and Translation | Effect |
---|
เปิด , และพิมพ์ "T" ใน serial command
เปิด , ใช้ "" ฟังก์ชั่น, และพิมพ์ "T" ในโค้ดบ๊อก
หากคุณต้องการเฟรมแอคชั่นต่อเนื่องใน เพื่อรันลูปจำนวนหลายครั้งคุณต้องใส่จำนวนลูปที่ต้องการวนซ้ำก่อนคุณสามารถใส่จำนวนลูป, คุณสามารถใส่การ วนซ้ำ ในช่องด้านบน (ทางด้านซ้ายของ Set"),จากนั้นใช้ปุ่มซ้ายของเมาส์เพื่อเลือกเลข(ช่องแรกของเฟรมที่ 1 ) ของเฟรมแรกและสองเฟรมสุดท้ายของเฟรมการกระทำต่อเนื่องที่ต้องการให้เกิดการเคลื่อนไหวเป็นซ้ำ (ปุ่มหมายเลขจะปรากฏในสถานะเลือกไปแล้ว) ดังแสดงในรูปต่อไปนี้:
ใน , คุณสามารถกำหนดความเร็วในการวิ่งของแต่ละเฟรมของการกระทำ (ช่องที่สามของแต่ละเฟรม),มีให้คุณเลือก 9 แบบดังนี้ (เพิ่มความเร็วรอบวิ่งตามลำดับค่าตัวเลข):
ใน ตัวเลือก "Delay" (ปุ่มที่ 6 ของแต่ละเฟรม) แต่ละเฟรมสามารถที่จะระบุระยะเวลาที่หุ่นยนต์เล่นอนิเมชั่นก่อนที่เฟรมถัดไปจะทำงานหลังจากเฟรมนี้ทำงานเสร็จสิ้น
เมื่อเส่งออกเฟรมแอคชั่น หากคุณต้องการมิเรอร์เฟรมแอคชั่นทั้งหมด (ข้อต่อด้านซ้ายและด้านขวาของหุ่นยนต์จะสลับกันราวกับเห็นในกระจก) ขั้นแรกให้คลิกปุ่ม "" และคลิกปุ่ม "" หากคุณต้องการยกเลิกการส่งออกที่ทำมิเรอร์ คุณสามารถยกเลิกการเลือกได้กดปุ่ม "MirrorAll" อีกครั้ง
ก่อนการส่งออกแอคชั่นเฟรมให้เลือกตัวเลือก "Behavior/Gait" ใน "" ซึ่งเป็น "Behavior"หลังจากนั้นคลิกส่งออก ""โปรแกรมจะทำงานบนหุ่นยนต์และสอดแทรกระหว่าเฟรมเหล่านี้โดยอัตโนมัติเพื่อให้หุ่นยนต์เคลื่อนไหวได้อย่างราบรื่น และเฟรมทั้งหมดจะดำเนินการเพียงรอบเดียว
หากเลือก "Gait" ก่อนที่จะคลิกปุ่มส่งออก ""หุ่นยนต์จะดำเนินการต่อในลูปและแต่ละเฟรมของการดำเนินการจะทำงานด้วยความเร็วสูงสุด จะไม่มีการเพิ่มการแก้ไขระหว่างเฟรมการดำเนินการ การเคลื่อนไหวอาจรุนแรงมาก ดังนั้นจึงขอแนะนำให้ผู้เริ่มต้นใช้ตัวเลือก "พฤติกรรม" เพื่อพัฒนาทักษะใหม่เสมอ
แอพเดสก์ท็อปรองรับการเชื่อมต่อของหุ่นยนต์หลายตัวผ่าน (และผ่าน )เพื่อให้เกิดการควบคุมหุ่นยนต์หลายตัวพร้อมกัน แอปสามารถจดจำพอร์ตอนุกรมเป็นหุ่นยนต์ได้หลังจากทำการเชื่อมต่อทางกายภาพแล้วเท่านั้น หลังจากเปิดหุ่นยนต์ตามปกติแล้ว:
Pitch | ปรับมุมเอียง |
Roll | ปรับมุมม้วน |
Spinal | เคลื่อนไปตามทิศทางหุ่นยนต์ |
Height | ยกหรือลดร่างกายของหุ่นยนต์ |
This chapter is for Advanced users with programming experience.
พารามิเตอร์เฉพาะของแต่ละโมดูลการทำงานของ BiBoard โปรดดู Chapter 2 ของคู่มือเริ่มต้นใช้งานฉบับย่อของ BiBoard
สำหรับรายละเอียด โปรดดู Chapter 3.2.1 ของคู่มือเริ่มใช้งานของ BiBoard
For Windows:
C:\Users{username}\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.*\tools\sdk\esp32\qio_qspi\include\sdkconfig.h
for Mac:
/Users/{username}/Library/Arduino15/packages/esp32/hardware/esp32/2.0.*/tools/sdk/esp32/qio_qspi/include/sdkconfig.h
ต่อท้ายบรรทัดโค้ดที่ส่วนท้ายของไฟล์:
อ่านคู่มือผู้ใช้สำหรับตัวเลือกเพิ่มการกำหนดค่า Add hardware partition configuration option in Arduino IDE
เราอัปเดต code อย่างต่อเนื่องเป็น Open-source project คุณสามารถติดดาวและติดตาม GitHub repository เพื่อรับฟีเจอร์ใหม่ล่าสุดและการแก้ไขข้อบกพร่อง คุณยังสามารถแบ่งปัน code ของคุณกับผู้ใช้ OpenCatEsp32 ทั่วโลก
ดาวน์โหลด OpenCatEsp32 repository จาก GitHub: https://github.com/PetoiCamp/OpenCatEsp32. จะดีกว่าถ้าคุณใช้คุณสมบัติการควบคุมเวอร์ชันของ GitHub มิฉะนั้น ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดโฟลเดอร์ OpenCatEsp32 ทั้งหมดทุกครั้ง code ทั้งหมดต้องเป็นเวอร์ชันเดียวกันจึงจะทำงานร่วมกันได้
Iหากคุณดาวน์โหลดไฟล์ Zip ของ code คุณจะได้รับโฟลเดอร์หลักของ OpenCatEsp32 หลังจากคลาย zip คุณต้องเปลี่ยนชื่อเป็น OpenCatEsp32 ก่อนเปิด OpenCatEsp32.ino เพื่อให้ชื่อทั้งสองตรงกัน .
ไม่ว่าคุณจะบันทึกโฟลเดอร์ไว้ที่ใด โครงสร้างไฟล์ควรเป็น:
มี code ที่ชื่อว่า testX.ino หลายไฟล์ในโฟลเดอร์ ModuleTests คุณสามารถอัปโหลดเพื่อทดสอบบางโมดูลแยกกันได้ เปิด testX.ino ใดๆ ที่มีคำนำหน้าว่า “test” (แนะนำให้ใช้ testBuzzer.ino เป็น sketch ทดสอบแรกของคุณ)
แก้ไข definition ประเภทอุปกรณ์ใน BiBoard.ino ตามประเภทอุปกรณ์
แก้ไข definition รุ่นของบอร์ดใน BiBoard.ino ตามรุ่นของบอร์ด
หลังจากการแก้ไขเสร็จสิ้น คุณสามารถคลิกปุ่มอัปโหลดเพื่ออัปโหลด BiBoard.ino และการเปลี่ยนแปลงในโปรแกรมจะถูกบันทึกโดยอัตโนมัติ
เมื่อเปิด BiBoard ที่เพิ่งตั้งค่าใหม่ จะต้องเชื่อมต่อ serial port เข้ากับคอมพิวเตอร์ และเริ่มต้นข้อต่อและ gyroscope accelerometer (IMU) ในหน้าต่าง serial port monitor
ตรวจสอบให้แน่ใจว่าตั้งค่า serial monitor เป็น baud rate 115200 และ no line ending
คุณจะเห็นคำถามหลายข้อ:
พิมพ์ 'Y' ซึ่งหมายถึงการรีเซ็ตเซอร์โวทั้งหมดเป็นศูนย์
พิมพ์ 'Y' กับคำถาม ซึ่งหมายถึงการ calibrate MPU6050 เช่น gyro/accelerometer sensor
วาง BiBoard FLAT ไว้บนโต๊ะ และห้ามสัมผัสระหว่างการปรับเทียบ บางครั้งโปรแกรมอาจหยุดที่ขั้นตอนการเชื่อมต่อ คุณสามารถปิดจอภาพอนุกรมแล้วเปิดใหม่อีกครั้ง หรือกดปุ่มรีเซ็ตบน BiBoard เพื่อเริ่มโปรแกรมใหม่ โปรแกรมเริ่มการปรับเทียบหลังจากเล่นเมโลดี้ 6 ครั้ง
รายละเอียดของข้อมูลการแสดงผลของ serial port มีดังนี้:
หลังจากการ calibrate IMU เสร็จสิ้น ทุกครั้งที่เปิดเครื่อง หุ่นยนต์จะเข้าสู่โปรแกรมการเปิดเครื่องตามปกติ
โปรแกรมหลักของ Bittle จะตัดสินว่ามันเริ่มต้นโดยการเปรียบเทียบ BIRTHMARK ใน EEPROM หรือไม่ และจะไม่เข้าสู่กระบวนการเริ่มต้นอีกเมื่อเปิดใช้งานในครั้งต่อไป หากคุณต้องการปรับเทียบเซอร์โวออฟเซ็ตใหม่หรือปรับเทียบ IMU (MPU6050) ใหม่ คุณสามารถป้อน 'R' ใน serial monitor เพื่อเริ่มต้นใหม่
กดปุ่มบนแบตเตอรี่ค้างไว้และวางหุ่นยนต์โดยให้ด้านหนึ่งขึ้น มันจะเข้าสู่สถานะ calibration state automatically ภาพด้านล่างแสดงขาบนและขาล่างที่ติดตั้งหลังจากหุ่นยนต์เข้าสู่สถานะการ calibate
หากคุณเปิดหุ่นยนต์และหุ่นยนต์ตั้งตรง (โดยหงายหลังขึ้น) หุ่นยนต์จะเริ่มจากท่า " rest " (พับขาและปลดล็อกเซอร์โว)
Code จะเริ่มต้นทำงานในโหมดมาตรฐาน หากคุณมีโมดูลที่สามารถขยายได้บางโมดูล คุณอาจยกเลิกข้อคิดเห็น definition ของโมดูลเฉพาะ จะปิดใช้งานรหัส Gyro เพื่อประหยัดพื้นที่ในการเขียนโปรแกรมและเปิดใช้งานการสาธิตของโมดูล
ใน official modules ถูกกำหนดไว้ในไฟล์ส่วนหัวแยกต่างหากใน OpenCat/src/ คุณสามารถค้นหาได้ใน OpenCat/src/io.h -> readSignal() ลักษณะการทำงานของ OTHER_MODULES กำหนดไว้ใน OpenCat/OpenCat.ino -> otherModule() คุณสามารถศึกษาโค้ดตัวอย่างเพื่อเขียนฟังก์ชันของคุณเองได้
BiBoard มีบลูทูธในตัว และคุณสามารถเชื่อมต่อกับแอพ Android ได้:
App for BiBoard (Android 4.4+)
คุณสามารถตรวจสอบประวัติการอัปเดตและคุณลักษณะเพิ่มเติมได้ใน ChangeLog.md (BiBoard\ChangeLog.md)
Robots can be precisely calibrated using the Petoi Desktop App.
หุ่นยนต์ที่ประกอบไว้ล่วงหน้าควรติดตั้งขาอย่างถูกต้องแล้ว แต่ไม่ได้รับการปรับแต่งอย่างละเอียด
ตรวจสอบให้แน่ใจว่าคุณได้อัปโหลด OpenCat แล้ว "Main function" firmware ก่อนทำการคาลิเบรทรองรับเฟิร์มแวร์เวอร์ชัน 2.0 เท่านั้น
หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ อย่าติดตั้งส่วนประกอบขาจนกว่าจะมีการคาลิเบรท คุณต้องติดตั้งแบตเตอรี่และกดปุ่มบนแบตเตอรี่ค้างไว้เพื่อจ่ายไฟให้กับหุ่นยนต์
หลังจาก USB adapter หรือ Bluetooth module เชื่อมต่ออย่างถูกต้อง, เปิด Petoi Desktop App (สำหรับ Windows: UI.exe / สำหรับ Mac: Petoi Desktop App) เลือกรุ่นและภาษา จากนั้นคลิกปุ่ม "Joint Calibrator" เพื่อเปิดอินเทอร์เฟซของ calibrator
หมายเหตุ: เนื่องจาก Nybble ใช้เซอร์โวสองตัว (ส่วนหัวและส่วนท้าย) มากกว่า Bittle หมายเลขดัชนีร่วมของเซอร์โว Nybble และ Bittle จึงแตกต่างกัน และท่าทางการสอบเทียบของ Nybble และ Bittle หลังจากเข้าสู่สถานะการสอบเทียบก็จะแตกต่างกันเช่นกัน ดังที่แสดงต่อไปนี้ รูปภาพ (แถบเลื่อนเซอร์โวไม่พร้อมใช้งานในพื้นที่พื้นหลังสีเหลืองอ่อนในอินเทอร์เฟซ):
คลิกปุ่ม "คาลิเบรท" และเซอร์โวทั้งหมดจะย้ายไปยังตำแหน่งสอบเทียบทันที
หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ ให้ติดตั้งส่วนประกอบที่เกี่ยวข้องกับเซอร์โวตามภาพที่ด้านล่างของส่วนต่อประสาน และพยายามตรวจสอบให้แน่ใจว่าชิ้นส่วนเหล่านี้ตั้งฉากกัน (ขาท่อนบนตั้งฉากกับลำตัว และ ขาท่อนล่างตั้งฉากกับท่อนบน) โปรดดูบทที่เกี่ยวข้องในคู่มือผู้ใช้สำหรับรายละเอียด:
Nybble
ใช้เครื่องมือรูปตัว L ที่ให้มาเพื่อเป็นข้อมูลอ้างอิงระหว่างการคาลิเบรท ตามหมายเลขดัชนีของข้อต่อที่แสดงที่ด้านบนของอินเทอร์เฟซ (เมื่อปรับเทียบเซอร์โว ให้ปรับขาท่อนบนก่อน แล้วจึงปรับขาท่อนล่าง) ลากแถบเลื่อนที่เกี่ยวข้อง (ด้านล่างหมายเลขดัชนี) หรือคลิกส่วนที่ว่างของแถบเลื่อนเพื่อปรับข้อต่อให้เป็นมุมฉาก
หากค่าออฟเซ็ทมากกว่า +/- 9 องศา คุณต้องถอดขาที่เกี่ยวข้องออกและติดตั้งใหม่โดยหมุนฟันซี่เดียว จากนั้นลากตัวเลื่อนที่เกี่ยวข้อง ตัวอย่างเช่น เมื่อปรับไปที่ +9 แล้วและยังคงไม่ถูกต้อง ให้ถอดขาที่ตรงกันออกแล้วขยับฟันหนึ่งซี่เมื่อทำการติดตั้ง จากนั้นคุณควรได้รับการชดเชยที่น้อยลงในทิศทางตรงกันข้าม
คุณสามารถสลับระหว่าง "พัก", "ยืนขึ้น" และ "เดิน" เพื่อทดสอบผลการคาลิเบรท
หมายเหตุ:
คุณอาจต้องทำการคาลิเบรทรอบที่สองเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
หลังจากการสอบเทียบ อย่าลืมคลิกปุ่ม "บันทึก" เพื่อบันทึกค่าชดเชยการสอบเทียบ มิฉะนั้น ให้คลิกปุ่ม "ยกเลิก" เพื่อละทิ้งข้อมูลการสอบเทียบ คุณสามารถบันทึกการปรับเทียบไว้ตรงกลางได้ในกรณีที่การเชื่อมต่อของคุณถูกขัดจังหวะ
เมื่อคุณปิดหน้าต่างนี้ จะมีกล่องข้อความแสดงด้านล่าง:
หากคุณต้องการบันทึกข้อมูลการสอบเทียบ โปรดคลิกปุ่ม "ใช่" หรือคลิกปุ่ม "ไม่ใช่" คลิกปุ่ม "ยกเลิก" เพื่อยกเลิกเพื่อออก
คู่มือนี้สำหรับผู้เริ่มต้น ช่วยให้คุณเริ่มต้นใช้งานหุ่นยนต์ได้ง่ายขึ้น (Nybble / Bittle )
Petoi Desktop App ทำงานได้ทั้งบน Nybble และ Bittle ซึ่งควบคุมโดย NyBoard ที่ใช้ ATmega328P หรือ BiBoard ที่ใช้ ESP32 สามารถดูเอกสารรายละเอียดเพิ่มเติมได้ที่ NyBoard V1_0 หรือ NyBoard V1_1.
หมายเลขเวอร์ชันของบอร์ดอยู่ที่นี่
สวิตช์ I2C เปลี่ยนเป็นมาสเตอร์ I2C (ไจโร/มาตรความเร่ง, ไดรเวอร์เซอร์โว, EEPROM ภายนอก) ตามค่าเริ่มต้น “Arduino” NyBoard ใช้ ATmega328P แบบออนบอร์ดเป็นชิปหลัก ใน “RPi” NyBoard ใช้ชิปภายนอกที่เชื่อมต่อผ่านพอร์ต I2C (SDA, SCL) เป็นชิปหลัก เลือก "Arduino" เสมอ แต่ถ้ารู้วิธีเชื่อมต่ออุปกรณ์ I2C จากชิปภายนอกสามารถเปลี่ยนโหมดได้
หมายเหตุ:
บางครั้ง หากคุณไม่สามารถผ่านขั้นตอนการบูทเครื่องได้ เช่น พิมพ์ Init IMU\r\n ซ้ำๆ อาจจะมีการกดสวิตช์ไปที่ฝั่ง "RPi" โดยไม่ได้ตั้งใจ
ก่อนอัปโหลดเฟิร์มแวร์ โปรดตรวจสอบว่าไม่ได้เชื่อมต่ออุปกรณ์ I2C ใดๆ กับอินเทอร์เฟซ I2C ของเมนบอร์ด มิฉะนั้น การอัพโหลดเฟิร์มแวร์จะล้มเหลว ตำแหน่งของอินเทอร์เฟซ I2C แสดงอยู่ด้านล่าง (ในช่องสีแดง):
อาจจะมีปัญหาเรื่องความเข้ากันได้ของแพลตฟอร์ม OS กับคอมพิวเตอร์เครื่องอื่น
แต่ยังสามารถรันได้โดยตรงผ่านเทอร์มินัล:
ไปที่ OpenCat/pyUI/ ในเทอร์มินัล
ติดตั้ง pyserial, pillow สำหรับ python . สร้างสภาพแวดล้อมใหม่และพิมพ์ pip3 install pyserial pillow
รัน python3 UI.py
สำหรับ NyBoard การอัปโหลดเฟิร์มแวร์ส่วนใหญ่จะเรียกแอปพลิเคชัน avrdude เพื่ออัปโหลดไฟล์เฟิร์มแวร์สำหรับเมนบอร์ด
สำหรับผู้ใช้ระบบ Linux นอกจากขั้นตอนข้างต้นแล้ว คุณต้องทำตามขั้นตอนต่อไปนี้ด้วย:
1. ติดตั้ง avrdude
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/'
เชื่อมต่อตัวอัปโหลด USB
ตรวจสอบการเชื่อมต่อของ serial ports:
สำหรับขั้นตอนเฉพาะ โปรดดูที่ Connect NyBoard section ในโมดูลตัวอัปโหลด USB
หลังจากเชื่อมต่อตัวอัปโหลด USB อย่างถูกต้องแล้ว ให้เปิด PetoiDesktopApp (สำหรับ Windows: UI.exe / สำหรับ Mac: Petoi Desktop App) แล้วเลือกรุ่นและภาษา
"Italian", "Français", "日语" แปลเสร็จเรียบร้อยแล้ว. คุณสามารถมีส่วนร่วมในที่โค้ด GitHub ของเรา: OpenCat/pyUIC/translate.py
คลิกปุ่ม "Firmware Uploader" เพื่อเปิดอินเทอร์เฟซ Firmware Uploader:
เลือกตัวเลือกที่ถูกต้องเพื่ออัปโหลดเฟิร์มแวร์ล่าสุดสำหรับ NyBoard
ซอฟต์แวร์ 1.0 จะทำงานไม่ถูกต้องกับ Joint Calibrator, Skill Composer และ API อื่นๆ ใช้เฉพาะเมื่อคุณต้องการใช้ CodeCraft (อินเทอร์เฟซการเข้ารหัสแบบกราฟิกโดย TinkerGen ซึ่งเป็นพันธมิตรของเรา)
ไม่มีความสัมพันธ์ระหว่างเวอร์ชันของบอร์ด (ฮาร์ดแวร์) และเวอร์ชันรหัส (ซอฟต์แวร์)
ขั้นตอนการอัพโหลด
หลังจากคลิกปุ่ม "อัปโหลด" กระบวนการอัปโหลดจะเริ่มขึ้นทันที แถบสถานะด้านล่างจะแสดงความคืบหน้าปัจจุบันตามเวลาจริง รวมถึงผลลัพธ์ในการรัน
หลังจากอัปโหลดเฟิร์มแวร์ Parameters สำเร็จแล้ว บอร์ดจะเริ่มรันโปรแกรมการกำหนดค่าด้วยตัวเอง หน้าต่างข้อความบางหน้าต่างจะปรากฏขึ้นตามลำดับเพื่อให้คุณยืนยันหรือยกเลิก:
Reset joint offsets? (Y/N)
เลือก "是(Y)" โปรแกรมจะรีเซ็ตพารามิเตอร์การสอบเทียบเซอร์โวทั้งหมดเป็นศูนย์ และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง
เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป
สำหรับซอฟต์แวร์เวอร์ชัน 1.0 จะมีหน้าต่างข้อความเตือน "Update Instincts? (Y/N)" ปรากฏขึ้นดังนี้:
เลือก "是(Y)" โปรแกรมจะรีเซ็ตพารามิเตอร์การสอบเทียบเซอร์โวทั้งหมดเป็นศูนย์ และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง
เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป
หากคุณอัปโหลดซอฟต์แวร์เวอร์ชั่นนี้เป็นครั้งแรก อย่าลืมเลือก "是(Y)"!
สำหรับซอฟต์แวร์เวอร์ชัน 2.0 ตัวเลือกนี้จะถูกประมวลผลโดยอัตโนมัติเป็น Y
Calibrate IMU? (Y/N)
เลือก "是(Y)" โปรแกรมจะปรับเทียบไจโรสโคป (IMU) และแถบสถานะจะอัปเดตกระบวนการที่เกี่ยวข้องและผลลัพธ์ตามเวลาจริง
เลือก "否(N)" โปรแกรมจะข้ามขั้นตอนนี้ไป
หมายเหตุ:
ตรวจสอบให้แน่ใจว่าเมนบอร์ดอยู่ในตำแหน่งแนวนอนก่อนคลิกปุ่ม "是(Y)"
เมื่ออัปโหลดเฟิร์มแวร์เวอร์ชันนี้เป็นครั้งแรก อย่าลืมคลิกปุ่ม "是(Y)"!
เมื่อทำตามขั้นตอนทั้งหมดเสร็จสิ้น หน้าต่างข้อความจะปรากฏขึ้นว่า "Parameter initialization complete!" คุณต้องกดยืนยันเพื่อขั้นตอนถัดไป
หลังจากการอัปโหลดเสร็จสิ้น แถบสถานะจะอัปเดตผลลัพธ์ที่เกี่ยวข้อง เช่น การอัปโหลดเฟิร์มแวร์สำเร็จหรือล้มเหลว หากการอัปโหลดสำเร็จ จะมีหน้าต่างข้อความ "การอัปโหลดเฟิร์มแวร์เสร็จสมบูรณ์!" จะปรากฏขึ้นพร้อมกัน
หมายเหตุ:
เมื่อคุณเปิดซอฟต์แวร์และอัปโหลดเฟิร์มแวร์เป็นครั้งแรก โปรแกรมจะอัปโหลดเฟิร์มแวร์ "พารามิเตอร์" ก่อน แล้วจึงอัปโหลดเฟิร์มแวร์ "ฟังก์ชันหลัก" หากคุณอัปโหลดซ้ำหลังจากอัปโหลดสำเร็จ โปรแกรมจะอัปโหลดเฉพาะเฟิร์มแวร์ "ฟังก์ชันหลัก" ตราบใดที่คุณแก้ไขตัวเลือก "โหมด" เท่านั้น
หาก NyBoard ไม่ได้เชื่อมต่อกับแบตเตอรี่และเปิดอยู่ คุณจะได้ยินเสียงท่วงทำนองลดหลั่นซ้ำๆ ซึ่งแสดงว่าแบตเตอรี่เหลือน้อยหรือไม่ได้เชื่อมต่อ คุณต้องเชื่อมต่อแบตเตอรี่และเปิดเครื่อง
หากคุณมีประสบการณ์ในการเขียนโปรแกรม Arduino IDE โปรดดูที่ Upload Sketch For NyBoard
ซอฟต์แวร์ OpenCat ทำงานได้ทั้งบน Nybble และ Bittle ซึ่งควบคุมโดย NyBoard ที่ใช้ ATmega328P สามารถดูเอกสารรายละเอียดเพิ่มเติมได้ที่ NyBoard V1_0 หรือ NyBoard V1_1.
หมายเหตุ: สามารถดูเวอร์ชั่นของบอร์ดได้ที่นี่
สวิตช์ I2C เปลี่ยนอุปกรณ์หลัก I2C (gyro/accelerometer, servo driver, external EEPROM) ตามค่าเริ่มต้น “Arduino” NyBoard ใช้ ATmega328P แบบออนบอร์ดเป็นชิปหลัก บน “RPi” NyBoard ใช้ชิปภายนอกที่เชื่อมต่อผ่านพอร์ต I2C (SDA, SCL) เป็นชิปหลัก
หมายเหตุ:
บางครั้งหากคุณไม่สามารถผ่านขั้นตอนการบูทเครื่องได้ คุณอาจกดสวิตช์ไปที่ฝั่ง "RPi" โดยไม่ได้ตั้งใจ
ขั้นตอนการตั้งค่าสำหรับ Nybble เกือบจะเหมือนกัน ยกเว้นว่าคุณต้องเปลี่ยนการกำหนดโมเดลเป็น #define NYBBLE.
อย่าลืมอ่านขั้นตอนโดยละเอียดต่อไปนี้
คุณต้องใช้ Arduino IDE เวอร์ชั่นใหม่ล่าสุดเพื่อตั้งค่า environment ในเวอร์ชันเก่ามักจะรวบรวมไฟล์ฐานสิบหกขนาดใหญ่ขึ้นซึ่งอาจเกินขีดจำกัดของหน่วยความจำ
ถ้าเป็นบอร์ด NyBoard V1_* เวอร์ชั่นใดก็ตามสามารถเลือกเป็น Arduino Uno ได้เลย
เฉพาะในกรณีที่ bootloader ของ NyBoard พัง ซึ่งไม่น่าจะเกิดขึ้น
NyBoard ทุกเครื่องต้องผ่านการตรวจสอบการทำงานก่อนจัดส่ง ดังนั้นพวกเขาจึงควรติดตั้ง bootloader ที่เข้ากันได้ไว้แล้ว อย่างไรก็ตาม ในบางกรณี bootloader อาจพัง จากนั้นคุณจะไม่สามารถอัปโหลดภาพร่างผ่าน Arduino IDE ได้
หากคุณไม่สามารถอัปโหลด sketch ของคุณได้ไม่ได้แปลว่าเป็นเพราะ bootloader เสมอไป:
บางครั้งบอร์ด USB ของคุณจะตรวจจับกระแสไฟขนาดใหญ่จากอุปกรณ์และปิดใช้งานบริการ USB ทั้งหมด คุณจะต้อง restart บริการ USB ของคุณใหม่ หรือแม้แต่ reboot เครื่องคอมพิวเตอร์ของคุณ
คุณต้องติดตั้ง driver สำหรับ FTDI USB 2.0 ไปยังตัวอัปโหลด UART
คุณไม่ได้เลือกพอร์ตที่ถูกต้อง
การเชื่อมต่อไม่ดี
โชคร้าย. พรุ่งนี้ลองใหม่อีกวัน!
หากคุณตัดสินใจที่จะเบิร์น bootloader ใหม่:
ด้วย NyBoard V1_* คุณสามารถเลือก Arduino Uno ภายใต้เมนูเครื่องมือของ Arduino IDE
เลือก ISP ของคุณ (ภายใน System Programmer) ยอดนิยม 2 ตัว: USBtinyISP หรือ Arduino as ISP Arduino as ISP!
เชื่อมต่อ programmer กับพอร์ต SPI บน NyBoard สังเกตทิศทางเมื่อเชื่อมต่อ ตรวจสอบให้แน่ใจว่าพวกเขาได้รับการติดต่อที่ดี
เบิร์น bootloader หากนี่เป็นครั้งแรกที่คุณทำเช่นนี้ ให้รอจนกว่าแถบเปอร์เซ็นต์จะถึง 100% และไม่มีข้อความปรากฏขึ้นอีกเป็นเวลาหนึ่งนาที
ขั้นตอนนี้ไม่จำเป็นต้องติดตั้ง NyBoard บนหุ่นยนต์
สำหรับขั้นตอนเฉพาะ โปรดดูส่วนเชื่อมต่อ NyBoard ใน USB uploader module Connect NyBoard section
สำหรับขั้นตอนเฉพาะ โปรดดูที่ส่วนเชื่อมต่อ NyBoard ใน Dual-Mode Bluetooth Module Connect NyBoard section
บน Mac บลูทูธอาจขาดการเชื่อมต่อหลังจากอัปโหลดหลายครั้ง ในกรณีดังกล่าว ให้ลบการเชื่อมต่อและเชื่อมต่อใหม่เพื่อให้ฟังก์ชันทำงานต่อ
หาก Bluetooth dongle ไม่เจออยู่ในชุดหุ่นยนต์โดย Seeed Studio หรือ partner ของเราโปรดส่งอีเมลถึง support@petoi.com เพื่อทราบข้อมูลเพิ่มเติม
เราอัปเดต code อย่างต่อเนื่องเป็น Open-source project คุณสามารถติดดาวและติดตามGitHub repository เพื่อรับฟีเจอร์ใหม่ล่าสุดและการแก้ไขข้อบกพร่อง คุณยังสามารถแบ่งปัน code ของคุณกับผู้ใช้ OpenCat ทั่วโลก
ดาวน์โหลด OpenCat repo เวอร์ชั่นล่าสุดจาก GitHub: https://github.com/PetoiCamp/OpenCat. จะดีกว่าถ้าคุณใช้คุณสมบัติการควบคุมเวอร์ชันของ GitHub มิฉะนั้น ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดทั้งโฟลเดอร์ OpenCat ทุกครั้ง codeทั้งหมดต้องเป็นเวอร์ชันเดียวกันจึงจะทำงานร่วมกันได้
หากคุณดาวน์โหลดไฟล์ Zip ของ code คุณจะได้รับ OpenCat-main โฟลเดอร์หลังจาก unzip คุณต้องเปลี่ยนชื่อเป็น OpenCat ก่อนเปิด OpenCat.ino เพื่อให้ชื่อทั้งสองตรงกัน
ไม่ว่าคุณจะบันทึกโฟลเดอร์ไว้ที่ใด โครงสร้างไฟล์ควรเป็น:
มี code ที่ชื่อว่า testX.ino หลายไฟล์ในโฟลเดอร์ ModuleTests คุณสามารถอัปโหลดเพื่อทดสอบบางโมดูลแยกกันได้ เปิด testX.ino ใดๆ ที่มีคำนำหน้าว่า “test” (แนะนำให้ใช้ testBuzzer.ino เป็น sketch ทดสอบแรกของคุณ)
เปิด serial monitor และตั้งค่า baud rate บน NyBoard V1_* ให้เลือกบอร์ดเป็น Arduino Uno และตั้งค่า baud rate เป็น 115200 ทั้งใน code และ serial monitor
Compile code ไม่ควรมีข้อความแสดงข้อผิดพลาด เมืออัปโหลด sketch ไปยังบอร์ดของคุณและคุณจะเห็น LED Tx และ Rx กะพริบถี่ๆ เมื่อหยุดกะพริบ ข้อความควรปรากฏบน serial monitor
ในการกำหนดค่าบอร์ด โปรดทำตามขั้นตอนเหล่านี้
เปิดไฟล์ OpenCat.ino และเลือกเวอร์ชันของหุ่นยนต์และบอร์ดของคุณ ตัวอย่างเช่น
สัญลักษณ์ // หมายถึงการปิดการใช้งานบรรทัดของ code และเปลี่ยนเป็นความคิดเห็น ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานตัวเลือกคู่ขนานเพียงบรรทัดเดียว
คอมเมนท์ในส่วน #define MAIN_SKETCH
เพื่อให้โค้ดเปลี่ยนโหมดการกำหนดค่าบอร์ด อัปโหลดและปฏิบัติตาม serial prompts เพื่อดำเนินการต่อดังตัวอย่างด้านล่าง
หากคุณเปิดใช้งาน#define AUTO_INIT
โปรแกรมจะตั้งค่าโดยอัตโนมัติโดยไม่ต้องแจ้งให้ทราบล่วงหน้า จะไม่รีเซ็ตออฟเซ็ตของข้อต่อ แต่ปรับเทียบ IMU
ติดตั้ง the driver หากไม่พบพอร์ต USB ภายใต้ Arduino -> Tools -> Port
สำหรับขั้นตอนเฉพาะโปรดดูส่วนเชื่อมต่อ Connect NyBoard section ใน USB uploader module
กดปุ่มอัปโหลด
คุณสามารถหาปุ่มนี้ได้ภายใต้เครื่องมือ Tools หรือที่มุมบนขวาของ IDE
ตั้งค่า serial monitor เป็น No line ending และ baud rate 115200
The serial prompts:
ป้อน 'Y' และกด Enter หากคุณต้องการรีเซ็ตออฟเซ็ตของข้อต่อทั้งหมดเป็น 0
โปรแกรมจะทำการรีเซ็ต จากนั้นอัปเดต constants และ instinctive skills ในหน่วยความจำ
คุณต้องป้อน 'Y' หรือ 'n' เพื่อผ่านขั้นตอนนี้ มิฉะนั้น parameters รวมถึง skill data จะไม่ได้รับการอัพเดตบนบอร์ด
The serial prompts:
ป้อน 'Y' และกด Enter หากคุณไม่เคยปรับเทียบ IMU หรือต้องการทำการปรับเทียบใหม่
วางหุ่นยนต์ราบบนโต๊ะและอย่าแตะต้อง หุ่นยนต์จะส่งเสียงบี๊บยาวหกครั้งเพื่อให้คุณมีเวลาเพียงพอ จากนั้นจะอ่านข้อมูลเซ็นเซอร์หลายร้อยรายการและบันทึกค่าชดเชย จะส่งเสียงบี๊บเมื่อการปรับเทียบเสร็จสิ้น
เมื่อ serial monitor แสดง "Ready!" คุณสามารถปิด serial monitor เพื่อทำขั้นตอนถัดไป
มีขั้นตอนเพิ่มเติมในการ Calibrate servo driver หลังจากการ calibrate IMU
คุณสามารถ calibrate servo controller (PCA9685 chip) เพื่อให้สัญญาณมุมแม่นยำยิ่งขึ้น ใช้สายจัมเปอร์แบบสั้นเพื่อเชื่อมต่อ PWM pin3 (pin สัญญาณของ pin เซอร์โวตัวใดตัวหนึ่ง) และ Grove pin A3
โปรแกรมจะวัดความกว้างของสัญญาณและ calibrate ชิปโดยอัตโนมัติหลังจากอ่านค่าที่เหมือนกันสามครั้งติดต่อกัน ค่าชดเชยการ calibrate จะถูกบันทึกไว้ในบอร์ดสำหรับการบูทครั้งต่อไป จากนั้นคุณสามารถไปยังขั้นตอนต่อไปได้
หากเซอร์โวตัวใดตัวหนึ่งหยุดทำงานแต่สามารถทำงานต่อได้หลังจากเปิดเซอร์โวใหม่ อาจเป็นเพราะสัญญาณ driver ไม่แม่นยำ ขั้นตอนนี้ไม่สามารถข้ามได้
ยกเลิก comment #define MAIN_SKETCH
เพื่อให้ใช้งานได้ code จะกลายเป็นโปรแกรมปกติสำหรับการทำงานหลัก จากนั้นอัปโหลด code
เปิด serial monitor เมื่อ serial monitor แสดง " Ready! " หุ่นยนต์ก็พร้อมที่จะรับคำสั่งถัดไปของคุณ
Code เริ่มต้นทำงานในโหมดมาตรฐาน หากคุณมีโมดูลที่ขยายได้บางโมดูล คุณอาจยกเลิกการแสดงความคิดเห็น macro definition ของโมดูลนั้นๆ จะปิดใช้งานรหัส Gyro เพื่อประหยัดพื้นที่ในการเขียนโปรแกรมและเปิดใช้งานการสาธิตของโมดูล
ใน official modules ถูกกำหนดไว้ในไฟล์ส่วนหัวแยกต่างหากใน OpenCat/src/ คุณสามารถค้นหาได้ใน OpenCat/src/io.h -> readSignal() ลักษณะการทำงานของ OTHER_MODULES กำหนดไว้ใน OpenCat/OpenCat.ino -> otherModule() คุณสามารถศึกษาโค้ดตัวอย่างเพื่อเขียนฟังก์ชันของคุณเองได้
ในบางกรณี คุณอาจต้องการปรับเปลี่ยนการ mapping ของ "pin ข้อต่อ" ของหุ่นยนต์ คุณสามารถแก้ไขได้ใน OpenCat/src/OpenCat.h ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขบล็อกโค้ดที่สอดคล้องกับเวอร์ชันของบอร์ดที่จุดเริ่มต้นของ OpenCat.ino หลังจากแก้ไข อย่าลืมบันทึกการเปลี่ยนแปลงและทำขั้นตอนการอัปโหลดซ้ำตั้งแต่ขั้นตอนที่ 2
เราได้กำหนดชุดของซีเรียลโปรโตคอลสำหรับหุ่นยนต์:
โทเคนทั้งหมดเริ่มต้นด้วยอักขระเดียวที่เข้ารหัสด้วย ASCII เพื่อระบุรูปแบบการวิเคราะห์ของตัวอักษร โดยโทเคนเหล่านี้จะมีความสำคัญต่อตัวพิมพ์เล็กและใหญ่ และโดยปกติจะเป็นตัวพิมพ์เล็ก
บางคำสั่ง เช่น คำสั่ง c และ m สามารถรวมกันได้ ตัวอย่างเช่น: คำสั่งต่อเนื่อง "m8 40", "m8 -35", "m 0 50" สามารถเขียนรวมกันเป็น "m8 40 8 -35 0 50" คุณสามารถรวมคำสั่งได้สูงสุด 4 คำสั่งที่เป็นประเภทเดียวกัน โดยเพื่อความถูกต้อง ความยาวของสตริงควรน้อยกว่า 30 ตัวอักษร คุณสามารถเปลี่ยนค่าขีดจำกัดในโค้ด แต่อาจมีข้อจำกัดเชิงระบบสำหรับบัฟเฟอร์ซีเรียล
“ksit”
“m0 30”
“m0 -30”
“kbalance”
“kwkF”
“ktrL”
“d”
เครื่องหมายอัญประกาศเพียงแค่บ่งบอกว่าพวกเขาเป็นสตริงตัวอักษร เมื่อคุณพิมพ์ในมอนิเตอร์ซีเรียล ไม่ต้องพิมพ์เครื่องหมายอัญประกาศ
เครื่องหมายอัญประกาศ = " "
คุณสามารถอ้างอิงถึงคำนิยามแมโครใน OpenCat.h เพื่อใช้ชุดโทเคนที่มีการอัปเดตล่าสุด
บางคำสั่งที่มีให้ใช้สำหรับทักษะหุ่นยนต์เพิ่มเติม:
ชื่อทักษะทั้งหมดในรายการสามารถเรียกใช้งานโดยการเพิ่ม 'k' ไปด้านหน้าและลบคำต่อท้าย ตัวอย่างเช่น มี "sitI" อยู่ในรายการ คุณสามารถส่ง "ksit" เพื่อเรียกท่านั่ง หากทักษะมีอักขระ "F" หรือ "L" เป็นอักขระที่สองจากท้าย นั่นเป็นการเดิน หมายความว่าเดินไปข้างหน้าหรือไปทางซ้าย เดินไปทางขวาเป็นการสะท้อนของการเดินไปทางซ้าย ดังนั้นคุณสามารถส่ง "kwkF", "kwkL", "kwkR" เพื่อให้หุ่นยนต์เดิน ในทำนองเดียวกัน ยังมีการเดินแบบอื่น ๆ เช่น รถโรงเรียน ("tr"), คลาน ("cr"), และการเดินขาละขา ("vt")
เปิด serial monitor และตั้งค่า baud rate บน NyBoard V1_* ให้ตั้งค่า " No line ending " และ baud rate เป็น 115200 ใน serial monitor
จากนั้นคุณสามารถเลือก Tools->Port บน Arduino IDE และใช้งานในลักษณะเดียวกับ USB Adapter
บน Mac บลูทูธอาจขาดการเชื่อมต่อหลังจากอัปโหลดหลายครั้ง ในกรณีดังกล่าว ให้ลบการเชื่อมต่อและเชื่อมต่อใหม่เพื่อให้ฟังก์ชันทำงานต่อ
หาก Bluetooth dongle ไม่เจออยู่ในชุดหุ่นยนต์โดย Seeed Studio หรือ partner ของเราโปรดส่งอีเมลถึง support@petoi.com เพื่อทราบข้อมูลเพิ่มเติม
การคาลิเบรทเป็นสิ่งสำคัญในการทำงานของหุ่นยนต์
หุ่นยนต์ที่ประกอบไว้ล่วงหน้าจะติดตั้งขาไว้อย่างถูกต้อง แต่ไม่มีการคาลิเบรทแบบละเอียด
การเข้าสู่โหมดการ calibrate ต้องมีการเตรียมการดังต่อไปนี้:
1. วงจรเซอร์โวทั้งหมดเชื่อมต่อกับเมนบอร์ด
2. แบตเตอรี่ชาร์จเต็มแล้ว
หากคุณกำลังสร้างหุ่นยนต์ด้วยชุดที่ยังไม่ได้ประกอบ อย่าติดตั้งส่วนประกอบส่วนหัวและส่วนขาจนกว่าจะได้รับการ calibrate คุณจะต้องติดตั้งแบตเตอรี่และกดปุ่มบนแบตเตอรี่ค้างไว้เพื่อจ่ายไฟให้กับหุ่นยนต์
การ calibrate มี 4 ขั้นตอน:
1.เขียนค่าคงที่ไปยัง Nyboard (สำหรับเฟิร์มแวร์ 1.0 เท่านั้น)
2.เปิดหุ่นยนต์ด้วยแบตเตอรี่ ปล่อยให้เซอร์โวหมุนได้อย่างอิสระจนถึงมุมศูนย์/สถานะการ calibration
3. แนบส่วนต่าง ๆ ของร่างกายเข้ากับเซอร์โว
4. ปรับออฟเซ็ตอย่างละเอียดบน serial monitor
ขั้นตอนนี้ใช้สำหรับเฟิร์มแวร์ 1.0 เท่านั้น
Assembly-related เช่น การแม็ปข้อต่อ ทิศทางการหมุน และพินเซ็นเซอร์ ค่อนข้างคงที่และส่วนใหญ่กำหนดไว้ใน OpenCat.h และเก็บไว้ใช้กับหุ่นยนต์ในอนาคต
พารามิเตอร์ที่เกี่ยวข้องกับการ Calibration เช่น MPU6050 offsets และการแก้ไขข้อต่อ มีการวัดตามเวลาจริงและบันทึกไว้ใน onboard EEPROM ต้องตั้งค่าเพียงครั้งเดียว
ข้อมูลที่เกี่ยวข้องกับทักษะ เช่น ท่าทาง การเดิน และพฤติกรรมที่ตั้งโปรแกรมไว้ล่วงหน้า ส่วนใหญ่กำหนดไว้ใน InstinctNybble.h / InstinctBittle.h คุณสามารถเพิ่มทักษะที่กำหนดเองได้เช่นกัน
บทบาทของ WriteInstinct.ino คือการเขียนค่าคงที่ลงบนบอร์ดหรือ I2C EEPROM และบันทึกค่าการ calibration จะถูกเขียนทับโดย OpenCat.ino ในภายหลัง
คุณต้องเปลี่ยน * on#define NyBoard_V*_* ใน OpenCat.h เพื่อให้ตรงกับเวอร์ชันของ NyBoard หมายเลขเวอร์ชันสามารถพบได้บนเมนบอร์ดใกล้กับโลโก้บริษัท
ก่อนอัปโหลด sketch ตรวจสอบให้แน่ใจว่าได้ปิดหน้าต่างที่เปิดอยู่ทั้งหมดของ serial monitor มิฉะนั้น serial port อาจถูกใช้งานและ sketch จะไม่ถูกอัปโหลด
คุณต้องหมุนสวิตช์เลื่อนบน NyBoard ไปยัง Arduino แทน RPi!
หลังจากที่คุณอัปโหลด WriteInstinct.ino ผ่าน Arduino IDE ให้เปิด serial monitor
ตรวจสอบให้แน่ใจว่าตั้งค่า serial monito เป็น baud rate 115200 และ no line ending
คุณจะเห็นคำถามหลายข้อ:
Reset all joint calibration? (Y/n)
หากคุณไม่เคย calibrate ข้อต่อ หรือหากคุณต้องการ calibrate เซอร์โวใหม่โดยเริ่มต้นใหม่ ให้พิมพ์ 'Y' กับคำถาม
Do you need to update Instincts? (Y/n)
หากคุณได้แก้ไข Instinct.h ไม่ว่าด้วยวิธีใดก็ตาม คุณควรพิมพ์ 'Y' แม้ว่าจะไม่จำเป็นเสมอไปเมื่อคุณมีความเข้าใจ เกี่ยวกับการจัดการหน่วยความจำแล้ว
Calibrate MPU? (Y/n)
หากคุณไม่เคย calibrate MPU6050 เช่น gyro/accelerometer sensor ให้พิมพ์ 'Y'
บางครั้งโปรแกรมอาจหยุดทำงานในขั้นตอนการเชื่อมต่อ คุณสามารถปิด serial monitor แล้วเปิดใหม่อีกครั้ง หรือกดปุ่มรีเซ็ตบน NyBoard เพื่อรีสตาร์ทโปรแกรม
คุณต้องอัปโหลด OpenCat.ino เพื่อบันทึกค่าคงที่ล่าสุดและเปิดใช้งานฟังก์ชันสาธิต
ตรวจสอบตำแหน่งและทิศทางของเซอร์โวทั้งหมด คุณต้องเสียบเซอร์โวและแบตเตอรี่ภายนอกเข้ากับ NyBoard เพื่อปรับเทียบอย่างถูกต้อง ก่อนที่เราจะติดตั้งชุดประกอบขา เพลาขาออกของเซอร์โวควรอยู่ที่ศูนย์ (ไปที่ตำแหน่งที่เป็นกลางและหยุด)
พิมพ์ 'c' ใน serial monitor เพื่อเข้าสู่โหมดการ calibration ขึ้นอยู่กับทิศทางของเพลาเริ่มต้น บางตัวอาจเดินทางในมุมที่ใหญ่ขึ้นจนกระทั่งหยุดที่จุดกึ่งกลาง จะมีเสียงรบกวนมาจากระบบเกียร์ของเซอร์โว คุณจะเห็นตารางการ calibration ดังต่อไปนี้:
แถวแรกคือ index ของข้อต่อ แถวที่สองคือออฟเซ็ตการ calibration:
ค่าเริ่มต้นคือ "-1" หรือ "0" และควรเปลี่ยนภายหลังการ calibration
เซอร์โวกำลังใช้ potentiometer ใน feedback loop เพื่อควบคุมตำแหน่ง เมื่อตำแหน่งคงที่ พวกเขามักจะสั่นรอบมุมเป้าหมาย อาการสั่นคล้ายพาร์กินสันจะเกิดขึ้นหลังจากใช้งานไปช่วงสั้นๆ จะไม่มีผลกระทบมากนักระหว่างการเคลื่อนไหวต่อเนื่อง เซอร์โวที่ดีกว่าไม่มีปัญหาเหล่านี้อาจมีราคาสูงกว่า 10 เท่า ดังนั้นการเปลี่ยนยูนิตที่จึงเป็นคำตอบที่คุ้มค่ากว่า
หลังจากพิมพ์ 'c' ใน serial monitor โดยเซอร์โวทั้งหมดหมุนไปที่มุมศูนย์ ตอนนี้ติดส่วนหัว หาง และขาที่เตรียมไว้ในส่วนก่อนหน้าเข้ากับลำตัว โดยทั่วไปจะตั้งฉากกับโครงร่างที่เชื่อมโยงกัน ท่าเทียบมาตรฐานแสดงไว้ด้านล่าง:
หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ ให้ติดตั้งส่วนประกอบที่เกี่ยวข้องกับเซอร์โวตามภาพด้านบน และพยายามตรวจสอบให้แน่ใจว่าชิ้นส่วนเหล่านี้ตั้งฉากกัน (ขาท่อนบนตั้งฉากกับลำตัว และขาท่อนล่างตั้งฉากกับ ขาท่อนบน) โปรดดูบทที่เกี่ยวข้องในคู่มือผู้ใช้สำหรับรายละเอียด:
Nybble
หมายเหตุ: ใส่ส่วนประกอบที่เกี่ยวข้องกับเซอร์โวโดยตรงในเพลาขาออกของเซอร์โว ห้ามหมุนเพลาขาออกในระหว่างขั้นตอนนี้
การหมุนแขนขาทวนเข็มนาฬิกาจากสถานะศูนย์จะเป็นค่าบวก (เหมือนกับในพิกัดเชิงขั้ว) เมื่อมองจากด้านซ้ายของตัวหุ่นยนต์ การหมุนทวนเข็มนาฬิกาของข้อต่อถูกกำหนดให้เป็นทิศทางบวก
ยกเว้นอย่างเดียวคือมุมเอียงสำหรับหัวของ Nybble เป็นเรื่องปกติที่จะพูดว่า head up เป็นผลมาจากการหมุนตามเข็มนาฬิกา
แต่จากด้านขวาของตัวหุ่นยนต์ ทิศทางการหมุนที่เป็นบวกและลบนั้นตรงกันข้ามกัน
หากเราพิจารณาเพลาเซอร์โวอย่างใกล้ชิด เราจะเห็นว่ามีจำนวนฟันจำนวนหนึ่ง มีไว้สำหรับติดแขนเซอร์โว และเพื่อหลีกเลี่ยงการเลื่อนไปตามทิศทางการหมุน ในตัวอย่างเซอร์โวของเรา เฟืองแบ่ง 360 องศาออกเป็น 25 ส่วน แต่ละส่วนมี 14.4 องศา (ออฟเซ็ต -7.2~7.2 องศา) นั่นหมายความว่าเราไม่สามารถติดตั้งในแนวตั้งฉากได้อย่างสมบูรณ์แบบเสมอไป
ตัวอย่างเช่น :
c8 6
หมายถึงให้เซอร์โวตัวที่ 8 มีออฟเซ็ต 6 องศา
c0 -4
หมายถึงการให้เซอร์โวตัวที่ 0 (ส่วนหัว) ชดเชย -4 องศา
ความละเอียดของการแก้ไขคือ 1 องศา ไม่ใช้ทศนิยม
หากคุณพบว่าค่าออฟเซ็ตมีค่ามากกว่า 9 แสดงว่าคุณไม่ได้ติดแขนขาที่ใกล้กับสถานะศูนย์ของมันมากที่สุด ซึ่งจะส่งผลให้ช่วงของเซอร์โวที่เข้าถึงได้ลดลงในด้านใดด้านหนึ่ง ถอดแขนขาออกแล้วหมุนด้วยฟันซี่เดียว มันจะส่งผลให้เกิดออฟเซ็ตมีขนาดเล็กลง
ตัวอย่างเช่น หากคุณต้องใช้ -9 เป็นค่าการ calibration ให้ถอดขาออก หมุนด้วยฟันซี่เดียวแล้วติดกลับเข้าไปใหม่ ค่าการ calibration ใหม่ควรอยู่ที่ประมาณ 5 หลีกเลี่ยงการหมุนแกนเซอร์โวระหว่างการปรับนี้
ค้นหาค่าออฟเซ็ตที่ดีที่สุดที่สามารถนำแขนขาไปสู่สถานะศูนย์ได้ เป็นกระบวนการลองผิดลองถูก
หลังจากการ calibration อย่าลืมพิมพ์ 's' เพื่อบันทึกค่าออฟเซ็ต มิฉะนั้นจะถูกลืมเมื่อออกจากสถานะการ calibration คุณยังสามารถบันทึกทุกครั้งหลังจากที่คุณทำการ calibration เซอร์โวตัวเดียวเสร็จแล้ว
การสังเกตจะเปลี่ยนมุมมองต่างๆ นั่นเป็นเหตุผลที่เราต้องการอ่านโดยตรงเหนือไม้บรรทัดอ้างอิงเมื่อทำการวัดความยาว
สิ่งสำคัญอย่างยิ่งคือคุณต้องมีมุมมองที่ขนานกันเมื่อปรับเทียบ Bittle ใช้จูนเนอร์ข้อต่อรูปตัว 'L' เป็นข้อมูลอ้างอิงแบบขนานเพื่อหลีกเลี่ยงข้อผิดพลาดในการอ่าน วางปลายบนจูนเนอร์ให้ตรงกับกึ่งกลางของสกรูที่ข้อต่อไหล่และข้อเข่า และรูเล็กๆ ที่ปลายเท้า ดูตามแกนร่วมของศูนย์ สำหรับขาแต่ละข้าง ให้ปรับเทียบเซอร์โวไหล่ (หมายเลข 811) ก่อน จากนั้นจึงปรับเซอร์โวเข่า (หมายเลข 1215) เมื่อปรับเทียบข้อเข่า ให้ใช้ช่องสามเหลี่ยมที่ตรงกันทั้งบนตัวปรับจูนและด้ามเพื่อให้แน่ใจว่าจัดแนวขนานกัน
หลังจากการ calibration พิมพ์ ‘d’ หรือ ‘kbalance’ เพื่อตรวจสอบการ calibration มันจะส่งผลให้ Bittle / Nybble ขยับแขนขาอย่างสมมาตรระหว่างสถานะพักและสถานะยืน
คุณอาจต้องทำการ calibration สองถึงสามรอบเพื่อให้ได้สถานะที่เหมาะสมที่สุด
ยกตัวอย่าง Bittle ดังนี้:
พยายามทำความเข้าใจว่าหุ่นยนต์รักษาสมดุลได้อย่างไรแม้ในขณะเดิน หากคุณกำลังเพิ่มส่วนประกอบใหม่ให้กับหุ่นยนต์ ให้พยายามอย่างเต็มที่เพื่อกระจายน้ำหนักให้สมดุลกับกระดูกสันหลัง คุณอาจต้องเลื่อนที่ใส่แบตเตอรี่ไปมาเพื่อหาจุดที่ดีที่สุดสำหรับการปรับสมดุล เนื่องจากแบตเตอรี่มีน้ำหนักมากกว่าที่ด้านหน้า คุณจึงสามารถใส่แบตเตอรี่กลับด้านเพื่อเลื่อนจุดศูนย์กลางมวลไปทางด้านหลังได้มากขึ้น
คุณอาจต้อง calibrate ใหม่หากมีการเปลี่ยนแปลงจุดศูนย์กลางมวล
โปรดอย่าบังคับให้หุ่นยนต์เพิ่มของหนัก ซึ่งอาจทำให้เซอร์โวติดขัดได้
โปรดดู chapter 5 🔌 Connect Wires และ สำหรับกระบวนการ calibrate ทั้งหมด
Options | Values | Note |
---|---|---|
ก่อนอัปโหลดเฟิร์มแวร์ โปรดตรวจสอบว่าไม่ได้เชื่อมต่ออุปกรณ์ I2C ใดๆ กับอินเทอร์เฟซ I2C ของเมนบอร์ด มิฉะนั้น การอัปโหลดเฟิร์มแวร์จะล้มเหลว ตำแหน่งของอินเทอร์เฟซ I2C แสดงอยู่ด้านล่าง (ในช่องสีแดง)
สามารถทดลองคำสั่งของซีเรียลได้ที่ :
ชุดความสามารถที่สมบูรณ์และใช้งานอยู่ถูกกำหนดไว้ใน หรือ : ตัวอย่างเช่น :
เชื่อมต่อ USB Adapter เข้ากับเมนบอร์ดและเลือก serial port ที่ถูกต้อง โปรดดูส่วน เชื่อมต่อ NyBoard ในโมดูล USB Uploader สำหรับขั้นตอนเฉพาะ
คุณสามารถเลือก "Serial Monitor" ในแถบเมนู "Tools" หรือคลิกปุ่ม … เพื่อเปิดหน้าต่าง Serial Monitor:
สำหรับขั้นตอนเฉพาะ โปรดดูที่ ใน Dual-Mode Bluetooth Module
ด้วย USB adapter / Bluetooth module ที่เชื่อมต่อ NyBoard และ Arduino IDE คุณจะมีอินเทอร์เฟซที่ดีที่สุด - Serial Monitor เพื่อสื่อสารกับ NyBoard และเปลี่ยนทุก byte บนนั้น (ผ่านการส่ง serial commands ตาม ).
ตรวจสอบให้แน่ใจว่าคุณได้อัปโหลดเฟิร์มแวร์ฟังก์ชันหลักของ OpenCat ก่อนทำการคาลิเบรท
3. เชื่อมต่ออะแดปเตอร์ และสื่อสารตามปกติ
ตรรกะเบื้องหลังการ สามารถพบได้ใน OpenCat forum หลักการเหมือนกันสำหรับ Nybble และ Bittle
คำสั่งสำหรับการ calibration แบบละเอียด (อ้างอิงจาก ) มีรูปแบบเป็น cIndex Offset
. โปรดสังเกตว่ามีช่องว่างระหว่าง cIndex และ Offset หมายเลขข้อต่อของหุ่นยนต์แสดงในภาพด้านล่าง:
Software version
1.0
2.0 (default)
The 1.0 version เป็นรุ่นเก่า
Board version
NyBoard_V1_0 (default) NyBoard_V1_1 NyBoard_V1_2
Product
Bittle (default) Nybble
Mode
Standard (default) RandomMind Voice Camera
บางโหมดมีเฉพาะในผลิตภัณฑ์เฉพาะเท่านั้น
Serial port
The most recent
คุณอาจต้องค้นหาผ่านการลองผิดลองถูก
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Offset | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
วิธีการใช้ python script สำหรับสนุกและเรียนรู้ไปกับหุ่นยนต์ (Nybble😼 or Bittle🐶)?
Install python (version≥ 3.6, such as Anaconda3-5.2.0-Windows-x86_64.exe)
Install pyserial library (version 3.5)
โดยปกติแล้วการใช้ USB adapter ในการเชื่อมต่อกับหุ่นยนต์จะต้องเห็นพอร์ทแค่อันเดียวหากไม่ได้เชื่อมต่อกับสิ่งอื่น
แต่เมื่อเชื่อมต่อผ่านทาง Bluetooth จะเห็นพอร์ตที่เชื่อมต่อ 2 พอร์ตดังรูป
เปิด Terminal (เช่น Anaconda Prompt) ใส่พาธที่สคริปต์ตั้งอยู่ (***\serialMaster) คุณสามารถใช้คำสั่งต่อไปนี้ในการเรียกใช้สคริปต์ สคริปต์จะตรวจสอบหมายเลขพอร์ตซีเรียลโดยอัตโนมัติตั้งแต่ต้นและเสร็จสิ้นการเชื่อมต่อ
Parameters: kbalance เป็น serial command บ่งบอกถึงสกิลของหุ่นยนต์
แน่นอน คุณยังสามารถเรียกใช้สคริปต์นี้โดยไม่ต้องใส่พารามิเตอร์ใด ๆ:
เมื่อระบบตรวจสอบว่ามีหมายเลขพอร์ตซีเรียลหลายตัว สคริปต์จะตรวจสอบหมายเลขพอร์ตซีเรียลทั้งหมดที่เชื่อมต่อกับหุ่นยนต์อย่างปกติ (คุณสามารถส่งคำสั่งซีเรียลไปยังหุ่นยนต์หลายตัวพร้อมกัน) เมื่อสคริปต์เริ่มทำงาน และพิมพ์ข้อมูลเตือนดังต่อไปนี้:
เมื่อสคริปต์เริ่มทำงานอย่างเป็นทางการ ข้อมูลเตือนต่อไปนี้จะถูกพิมพ์ออกมา:
คุณสามารถพิมพ์ 'quit' หรือ 'q' เพื่อออก
ต่อไปนี้คุณสามารถป้อนคำสั่งซีเรียลใน Terminal เพื่อควบคุมหุ่นยนต์ให้ดำเนินการต่าง ๆ ที่น่าสนใจ 😃 เช่น
รายการ testSchedule ใน example.py ใช้เพื่อทดสอบคำสั่งพอร์ตซีเรียลต่าง ๆ ให้เรียกใช้โค้ดสคริปต์ต่อไปนี้เพื่อดูผลของการดำเนินการของคำสั่งพอร์ตซีเรียลในรายการ:
คุณยังสามารถอ้างอิงเนื้อหาของรายการ stepUpSchedule (ใน ***\serialMaster\demos\stepup.py) เขียนรายการพฤติกรรมตามความต้องการจริงของคุณ และเปิดเผยความคิดสร้างสรรค์ของคุณ 🤩
หมายเหตุ: เมื่อเรียกใช้สคริปต์ที่อยู่ในพาธ \serialMaster\demos คุณต้องใช้คำสั่ง "cd demos" เพื่อเข้าสู่พาธที่สคริปต์ตั้งอยู่ (\serialMaster\demos) ก่อน แล้วจึงใช้คำสั่ง python3 เพื่อเรียกใช้สคริปต์ (เช่น "python3 stepup.py")
['kbalance', 2]
'kbalance' หมายถึงคำสั่งในการควบคุม Bittle ให้ยืนอยู่ในท่าปกติ
2 หมายถึงเวลาที่หน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที
['d', 2]
d หมายถึงคำสั่งในการวางหุ่นยนต์ลงและปิดเซอร์โว
2 หมายถึงเวลาที่หน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที
['c', 2]
c หมายถึงคำสั่งในการเข้าสู่โหมดการคาลิเบรท (calibration mode)
2 หมายถึงเวลาที่หน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที หลังจากที่คำสั่งเคลื่อนไหวเหล่านี้เสร็จสิ้น คำสั่งถัดไปจะถูกดำเนินการหลังจากหน่วงเวลา 2 วินาที
['c', [0, -9], 2]
c หมายถึงคำสั่งในการเข้าสู่โหมดการคาลิเบรท (calibration mode)
0 หมายถึงหมายเลขดัชนีของเซอร์โวข้อต่อ (joint servo)
-9 หมายถึงมุมการหมุน, หน่วยเป็นองศา
2 หมายถึงเวลาที่หน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที
โดยใช้รูปแบบนี้คุณสามารถเข้าสู่โหมดการปรับแต่งเพื่อปรับแต่งมุมของเซอร์โวข้อต่อบางตัวได้ หมายเหตุ: หากคุณต้องการให้ค่าการแก้ไขในคำสั่งนี้มีผลให้เกิดผล คุณต้องป้อนคำสั่ง "s" หลังจากดำเนินการคำสั่งนี้
ตัวอย่างนี้หมายถึง เซอร์โวข้อต่อที่มีหมายเลขซีเรียลเป็น 0 หมุน -9 องศา หลังจากที่คำสั่งการเคลื่อนไหวเหล่านี้เสร็จสิ้น คำสั่งถัดไปจะถูกดำเนินการหลังจากหน่วงเวลา 2 วินาที
['m', [0, -20], 1.5]
m หมายถึงคำสั่งในการควบคุมการหมุนของเซอร์โวข้อต่อ
0 หมายถึงหมายเลขดัชนีของเซอร์โวข้อต่อ (joint servo)
-20 หมายถึงมุมการหมุน (มุมอ้างอิงจากจุดเริ่มต้น ไม่ใช่มุมเพิ่มเติม), หน่วยเป็นองศา
1.5 หมายถึงเวลาที่หน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที สามารถเป็นตัวเลขทศนิยมได้
['m', [0, 45, 0, -45, 0, 45, 0, -45], 2]
โดยใช้รูปแบบนี้คุณสามารถส่งคำสั่งหมุนของเซอร์โวข้อต่อหลายตัวพร้อมกัน และคำสั่งการหมุนเหล่านี้จะถูกดำเนินการลำดับการไปเรื่อย ๆ ไม่ใช่พร้อมกัน มุมของข้อต่อถูกจัดเก็บเป็นตัวอักษร ASCII ดังนั้นสามารถป้อนโดยตรงโดยมนุษย์ได้
ตัวอย่างนี้หมายถึง หมุนเซอร์โวข้อต่อที่มีหมายเลขดัชนีเป็น 0 ไปยังตำแหน่งมุม 45 องศาก่อน จากนั้นหมุนไปยังตำแหน่งมุม -45 องศา และเช่นนี้ต่อไป หลังจากที่คำสั่งการเคลื่อนไหวเหล่านี้เสร็จสิ้น คำสั่งถัดไปจะถูกดำเนินการหลังจากหน่วงเวลา 2 วินาที
['i', [ 8, -15, 9, -20], 2]
โดยใช้รูปแบบนี้คุณสามารถส่งคำสั่งหมุนของเซอร์โวข้อต่อหลายตัวพร้อมกัน และคำสั่งการหมุนเหล่านี้จะถูกดำเนินการพร้อมกัน มุมของข้อต่อถูกจัดเก็บเป็นตัวอักษร ASCII ดังนั้นสามารถป้อนโดยตรงโดยมนุษย์ได้
ตัวอย่างนี้หมายถึง หมุนเซอร์โวข้อต่อที่มีหมายเลขดัชนีเป็น 8 และ 9 ไปยังตำแหน่งมุม -15 และ -20 องศา พร้อมกัน หลังจากที่คำสั่งการเคลื่อนไหวเหล่านี้เสร็จสิ้น คำสั่งถัดไปจะถูกดำเนินการหลังจากหน่วงเวลา 2 วินาที
['M', [8, 50, 9, 50, 10, 50, 11, 50, 0, 0], 3]
M หมายถึงคำสั่งในการหมุนของเซอร์โวข้อต่อหลายตัว โดยจะทำการหมุนข้อต่อลำดับที่กำหนดไว้ มุมของข้อต่อถูกเข้ารหัสเป็นเลขฐานสองเพื่อเพิ่มประสิทธิภาพในการส่งข้อมูล
8, 9, 10, 11, 0 หมายถึงหมายเลขดัชนีของเซอร์โวข้อต่อ (joint servos)
50, 50, 50, 50, 0 หมายถึงมุมการหมุนของข้อต่อ (มุมอ้างอิงจากจุดเริ่มต้น ไม่ใช่มุมเพิ่มเติม) หน่วยเป็นองศา
3 หมายถึงเวลาหน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที
['I', [20, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 36, 36, 36, 36], 5]
I หมายถึงคำสั่งในการหมุนของเซอร์โวข้อต่อทั้งหมดพร้อมกัน (ในปัจจุบันคำสั่งรองรับจำนวน 16 ข้อต่อ) มุมของข้อต่อถูกเข้ารหัสเป็นเลขฐานสองเพื่อเพิ่มประสิทธิภาพในการส่งข้อมูล
20, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 36, 36, 36, 36 หมายถึงมุมการหมุนของข้อต่อแต่ละตัวที่สอดคล้องกับหมายเลขดัชนี 0-15 (มุมอ้างอิงจากจุดเริ่มต้น ไม่ใช่มุมเพิ่มเติม) หน่วยเป็นองศา
5 หมายถึงเวลาหน่วงหลังจากเสร็จสิ้นคำสั่ง หน่วยเป็นวินาที
['b', [10,2], 2]
b หมายถึงคำสั่งในการควบคุมบัซเซอร์ให้ส่งเสียงเป่าวิทยุ (beep)
10 หมายถึงเสียงดนตรี (music tone) ที่ใช้ในการสั่งให้บัซเซอร์ส่งเสียง
2 หมายถึงความยาวของการเล่นเสียง (duration) ต่อเป็นเวลา 1/duration วินาที
2 หมายถึงเวลาหน่วงหลังจากสิ้นสุดการเล่นเสียง หน่วยเป็นวินาที
['b',[0, 1, 14, 8, 14, 8, 21, 8, 21, 8, 23, 8, 23, 8, 21, 4, 19, 8, 19, 8, 18, 8, 18, 8, 16, 8, 16, 8, 14, 4],3]
b หมายถึงคำสั่งในการควบคุมบัซเซอร์ให้ส่งเสียงเป่าวิทยุ (beep)
0, 14, 14, 21... หมายถึงเสียงดนตรี (music tone) ที่ใช้ในการสั่งให้บัซเซอร์ส่งเสียง ตามลำดับเสียง
1, 8, 8, 8 หมายถึงความยาวของการเล่นเสียง (duration) ต่อเป็นเวลา 1/duration วินาที โดยเรียงตามเสียงดนตรีที่กำหนด ในที่นี้คือ 0, 14, 14, 21...
3 หมายถึงเวลาหน่วงหลังจากเสียงดนตรีเล่นเสร็จ หน่วยเป็นวินาที
ใช่ ด้วยคำสั่ง tone คุณสามารถสร้างเสียงดนตรีง่าย ๆ หรือเล่นทั้งหมดในครั้งเดียวกันได้ โดยใช้รูปแบบดังตัวอย่างที่กล่าวมาก่อนหน้านี้
ความหมายของตัวอย่างนี้คือ: เล่นทั้งหมดของสัมผัสด้วยเสียงดนตรีแบบง่าย ๆ และหน่วงเวลา 3 วินาทีหลังจากที่สัมผัสด้วยเสียงดนตรีเสร็จสิ้น
ck = [
-3, 0, 5, 1,
0, 1, 2,
45, 0, 0, 0, 0, 0, 0, 0, 45, 35, 38, 50, -30, -10, 0, -20, 6, 1, 0, 0,
-45, 0, 0, 0, 0, 0, 0, 0, 35, 45, 50, 38, -10, -30, -20, 0, 6, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 30, 30, 30, 30, 30, 5, 0, 0, 0,
]
['K', ck, 1]
'K' หมายถึงข้อมูลทักษะ (skill data) ที่ส่งให้กับ Bittle ในเวลาเดียวกัน (realtime) โดยต้องใช้ฟอร์แมตของสตริงและรหัสของทักษะที่ต้องการส่งขึ้นไปใน Bittle
อาเรย์ของทักษะจะถูกส่งไปยังหุ่นยนต์และทำงานโดยการประมวลผลที่ตัวหุ่นยนต์ (execute locally on the robot) โดยไม่ต้องส่งข้อมูลกลับมายังคอมพิวเตอร์หรืออุปกรณ์อื่น ๆ อาทิเช่น Raspberry Pi หรือเซิร์ฟเวอร์
คุณสามารถแทรกทักษะลงในไลบรารีของทักษะ (skill library) หรือ InstinctX.h โดยใช้รูปแบบนี้
สำหรับคำอธิบายของคำสั่งอื่น ๆ บนพอร์ตซีเรียลโปรต์ โปรดอ้างอิงตามเอกสาร Serial Commands. นี้
Pleaseขอให้นี่เป็นแรงบันดาลใจสำหรับการช่วย Nybble และ Bittle ในการค้นหาแรงบันดาลใจของพวกเขา และขอให้คุณมีความสุขกับการเล่น! 😍
การทำให้สามารถดีบั๊กและอัพโหลดสคริปต์ได้จากระยะไกล
การสอนที่ผ่านมาช่วยให้หุ่นยนต์สามารถดำเนินการแบบเป็นลำดับได้โดยการแก้ไขโค้ด Python แบบออฟไลน์ แต่วิธีนี้ไม่สะดวกเพราะเมื่อต้องการแก้ไขโค้ด เราจะต้องถอด WiFi module ออกและแก้ไขในโหมดออฟไลน์ และเราไม่สามารถหยุดโปรแกรมและแก้ไขพารามิเตอร์ได้โดยยืดหยุ่น สาเหตุเพราะ ESP8266 มีพอร์ตซีเรียลเพียงตัวเดียว และเราต้องใช้มันในการสื่อสารกับ NyBoard โดยดีอีกฝั่ง MicroPython ใช้ฟังก์ชั่น WiFi ที่ ESP มีให้เพื่อให้สามารถทำการดีบั๊กโค้ด Python แบบไร้สายได้ผ่าน WebREPL
ด้วยเอกลักษณ์ของ ESP8266 และเอกสารอย่างเป็นทางการ ทางเราได้เขียนคู่มือต่อไปนี้:
หลังจากเชื่อมต่ออุปกรณ์แล้ว ให้เข้าสู่อินเตอร์เฟสของ MicroPython แล้วพิมพ์คำสั่งimport webrepl_setup
webrepl_setup และทำตามขั้นตอนตามคำแนะนำ:
การเปิดใช้งาน WebREPL เมื่อเปิดเครื่อง: E
ตั้งค่ารหัสผ่านสำหรับ WebREPL โดยใช้คำสั่ง "Set password for it" และกรอกรหัสผ่านที่ต้องการ (เช่น 1234)
การตั้งค่าเรียบร้อยแล้ว ให้ปิด shell โดยการพิมพ์ exit() แล้วกด Enter เพื่อออกจากโหมด shell และกลับไปยังหน้าจอคำสั่ง Thonny
รีบูทโดยการพิมพ์y reboot the ESP8266: y
2. The script to setup webREPL
เราใช้สคริปต์ตัวอย่างด้านล่างนี้ เพื่อแทนที่ SSID และรหัสผ่านด้วยข้อมูลเครือข่ายของคุณในบริเวณใกล้เคียง:
หลังจากเรียกใช้งานสคริปต์ มันจะพยายามเชื่อมต่อกับเครือข่าย WiFi อยู่เสมอ และเมื่อเชื่อมต่อสำเร็จแล้ว มันจะเริ่มต้น WebREPL service ของอุปกรณ์โดยอัตโนมัติ
IP address นี้จะถูกกำหนดโดย DHCP ของเร้าเตอร์ ดังนั้นอาจจะเปลี่ยนไปตามเครือข่ายและการกำหนดค่าของเร้าเตอร์ กรุณาจำ IP address นี้เพื่อนำไปใช้ในการตั้งค่า WebREPL ต่อไป
ขณะนี้เรากำลังดีบักสคริปต์ Python ผ่าน WebREPL และพอร์ตซีเรียลก่อนหน้านั้นถูกใช้สื่อสารกับ NyBoard ดังนั้นในตัวเลือก ให้เปลี่ยนพอร์ต USB-COMx ก่อนหน้านี้เป็น WebREPL
จากนั้นให้กรอกที่อยู่ IP, พอร์ต และรหัสผ่านของ WebREPL แล้วคลิก OK.
When WebREPL Connected
is displayed, the connection is successful.
คุณสามารถทดสอบตัวอย่างอย่างง่ายได้ที่ blink.py
.
WebREPL เป็นการบันทึกพอร์ตซีเรียลและรองรับการ Debug ไร้สาย ข้อเสียคือความเร็วช้า (เนื่องจากการล่าช้าของเครือข่าย) และเวลารอการรีเซ็ตซอฟต์แวร์ยาว ๆ
ตอนนี้เราสามารถใช้ webREPL ในการดีบั๊กสคริปต์ได้แล้ว แต่เมื่อเราเปิดโปรแกรมตรวจสอบพอร์ตซีเรียล เราจะพบว่าเมื่อเรารันสคริปต์ พอร์ตซีเรียลจะส่งเนื้อหาในการดีบั๊กออกมาเป็นจำนวนมาก จำนวนนี้จะทำให้ NyBoard ตอบสนองช้าลงและล่มเหลว ดังรูปด้านล่าง:
เราหวังว่าเมื่อดีบั๊กโปรแกรม ซีเรียลพอร์ตจะแสดงเฉพาะคำสั่งที่เราต้องการ ไม่ใช่ข้อมูล Debug ที่ไม่จำเป็น เปิดไฟล์ boot.py
บนอุปกรณ์ แก้ไขหมายเลขบรรทัด uos.dupterm(None, 1)
และบันทึก ให้ยกเลิกการผูกพอร์ตซีเรียลและ REPL debug รีสตาร์ทโมดูล และจะไม่มีข้อมูลดีบั๊กถูกแสดงบนซีเรียลพอร์ต ดังตัวอย่าง:
เพื่อเพิ่มความสมบูรณ์ เราสามารถแสดงข้อมูล debug ผ่าน print() statement ซึ่งจะถูกแสดงใน Shell ผ่าน WiFi
ด้วยการใช้ ESP8266 และ webREPL คุณสามารถแก้ไขลำดับการทำงานของหุ่นยนต์ด้วย MicroPython ได้อย่างสะดวกด้วยครับ
หลังจากอัพโหลดแล้ว MicroPython firmware บน ESP8266 เราสามารถใช้มันในการรันสคริปต์ MicroPython ได้
เราสามารถดำเนินการรันสคริปต์ MicroPython ได้โดยตรงในตัวแปร interpreter ของ MicroPython
คุณสามารถเขียนสคริปต์ Python ง่าย ๆ เพื่อสั่งให้ไฟ LED สีแดงกระพริบได้ดังนี้:
กดปุ่มเริ่มต้นสีเขียวบนแถบเครื่องมือ แล้วสคริปต์จะถูกส่งไปยังโมดูล WiFi ผ่านพอร์ตซีเรียล แล้วจึงรันหลังจากถูกตีความโดยตัวแปล MicroPython ซึ่งถูกติดตั้งไว้บน ESP8266 ในกรณีที่สคริปต์เป็นลูปไม่สิ้นสุด เมื่อต้องการหยุดการทำงาน ให้กดปุ่มหยุดสีแดงเพื่อหยุดการแบ่งเบาะแสและรีเซ็ตระบบ
เราสามารถคลิกที่ View -> File เพื่อเปิดแถบเครื่องมือไฟล์ และไฟล์จะปรากฏทางด้านซ้ายของ Thonny โดยส่วนบนคือไดเรกทอรีของเครื่องมือจำลองและส่วนล่างคือไฟล์ที่เก็บอยู่ในอุปกรณ์ MicroPython โดยค่าเริ่มต้นจะมีไฟล์ boot.py เพียงไฟล์เดียว โปรดอย่าลบไฟล์นี้ เพราะเป็นไฟล์เริ่มต้นของอุปกรณ์ MicroPython
เราบันทึกสคริปต์เป็นชื่อ blink.py และบันทึกไว้บนเครื่องคอมพิวเตอร์ จากนั้นคลิกขวาที่ไฟล์และเลือก Upload to /
:
เลือก MicroPython device
ในหน้าต่าง:
มีไฟล์blink.py
อยู่บนอุปกรณ์แล้ว ดังนั้นไฟล์ได้ถูกบันทึกบนอุปกรณ์แล้ว
ESP8266 สามารถส่งคำสั่งไปยัง NyBoard ผ่านพอร์ตซีเรียลได้ โดยเราเพียงแค่เขียนสคริปต์ส่งพอร์ตซีเรียลง่าย ๆ เพื่อส่งคำสั่งพอร์ตซีเรียลไปยัง NyBoard แล้วหุ่นยนต์ก็สามารถดำเนินการทำตามคำสั่งตามลำดับได้
เมื่อฟังก์ชั่น actSeq() ถูกเรียกใช้งาน มันจะส่งออกชุดคำสั่งผ่านพอร์ตซีเรียลไปยัง NyBoard ผ่านบอร์ด WiFi และใช้ serial monitor เพื่อดูผลลัพธ์ ดังนี้ (สำหรับความสะดวกในการอ่าน โปรดใช้การตั้งค่า automatic frame break ของตัวดีบักเกอร์พอร์ตซีเรียล เพื่อให้มีการขึ้นบรรทัดใหม่อัตโนมัติ)
หลังจากที่เราได้ debug การทำงานของ sequence action เรียบร้อยแล้ว โดยการเชื่อมต่อ ESP8266 กับ NyBoard แล้วโปรแกรมดังกล่าวจะไม่สามารถรันได้เนื่องจากฟังก์ชั่น actSeq() ไม่ได้ทำงาน ดังนั้นเราต้องการให้โปรแกรมรันโดยอัตโนมัติหลังจากมีการเปิดเครื่อง ซึ่งมีวิธีการได้แก่ 2 วิธีดังนี้:
กรุณาเปลี่ยนชื่อไฟล์เป็น "main.py
" และบันทึกลงบนอุปกรณ์ (แนะนำ)
แก้ไข Boot.py
Petoi Group Control Solution
ESP-NOW เป็นโปรโตคอลการสื่อสารไร้สายอีกอย่างหนึ่งที่ถูกพัฒนาโดย Espressif ซึ่งทำให้อุปกรณ์หลายตัวสามารถสื่อสารกันได้โดยไม่ต้องใช้ Wi-Fi หรือใช้ Wi-Fi ได้ตามต้องการ โปรโตคอลนี้คล้ายกับการเชื่อมต่อไร้สาย 2.4GHz แบบพลังงานต่ำที่พบได้บ่อยในเม้าส์ไร้สาย โดยอุปกรณ์จะถูกเชื่อมต่อกันก่อนที่จะสื่อสารกันได้ หลังจากการเชื่อมต่อแล้ว การเชื่อมต่อระหว่างอุปกรณ์จะเป็นต่อเนื่องแบบ peer-to-peer และไม่ต้องมีการสร้าง handshake protocol โดยเป็นเทคโนโลยีการสื่อสารที่เร็วและมีการส่งข้อมูลแบบสั้นๆ โดยไม่ต้องมีการเชื่อมต่อ ซึ่งช่วยให้คอนโทรลเลอร์พลังงานต่ำสามารถควบคุมอุปกรณ์อัจฉริยะได้โดยตรงโดยไม่ต้องเชื่อมต่อกับเราเตอร์ นี่เหมาะสำหรับสถานการณ์เช่นไฟอัจฉริยะ การควบคุมระยะไกล และการส่งข้อมูลเซ็นเซอร์กลับมา
หลังจากใช้การสื่อสาร ESP-NOW ถ้ามีอุปกรณ์บางตัวสูญเสียพลังงานโดยไม่ได้ปิดเสียงเชื่อมต่อกับอุปกรณ์ที่เหลือไว้ ให้เริ่มต้นอุปกรณ์นั้นใหม่ ก็จะเชื่อมต่อกับโหนดที่เหลืออยู่โดยอัตโนมัติเพื่อดำเนินการสื่อสารต่อไป
โหมดการสื่อสารที่รองรับโดย ESP-NOW มีดังนี้:
one-to-one communication
one-to-many communication
many-to-one communication
many-to-many communication
ESP-NOW รองรับคุณสมบัติดังนี้:
การเข้ารหัสแพคเก็ตแบบยูนิแคสต์หรือการสื่อสารแบบยูนิแคสต์โดยไม่มีการเข้ารหัสแพคเก็ต
การใช้งานผสมระหว่างอุปกรณ์ที่มีการเข้ารหัสจับคู่และอุปกรณ์ที่ไม่มีการเข้ารหัสจับคู่
สามารถบรรทุกข้อมูล payload ได้สูงสุดถึง 250 ไบต์
รองรับการตั้งค่าฟังก์ชันการส่งแบบ callback เพื่อแจ้งให้ชั้นแอปพลิเคชันทราบเมื่อการส่งแฟรมไม่สำเร็จหรือสำเร็จ
ต่อไปนี้เป็นข้อ จำกัด ของ ESP-NOW:
ไม่รองรับการส่ง Broadcast packet ชั่วคราว;
มีข้อจำกัดในการใช้กับอุปกรณ์ที่เป็นคู่ระหว่างการเข้ารหัส
ในโหมด Station รองรับคู่ระหว่างการเข้ารหัสได้สูงสุด 10 อุปกรณ์;
ในโหมด SoftAP หรือ SoftAP + Station mixed mode รองรับคู่ระหว่างการเข้ารหัสได้สูงสุด 6 อุปกรณ์;
จำนวนอุปกรณ์ที่เป็นคู่ระหว่างการเข้ารหัสไม่เกิน 20 อุปกรณ์ทั้งหมด;
ขนาดของข้อมูล payload สามารถรับได้สูงสุด 250 ไบต์.
การควบคุมกลุ่ม Petoi สามารถใช้ฟังก์ชันการสื่อสาร ESP-NOW ของ ESP8266 ได้
ในกรณีนี้ เตรียมอุปกรณ์ 2 ตัวของ Bittle (ที่มี ESP8266 ติดตั้งอยู่) และคอมพิวเตอร์ที่เชื่อมต่อกับ ESP8266 1 ตัว
ข้อมูลต่อไปนี้เกี่ยวกับการอัปโหลดโปรแกรมและการเรียกรูปแบบ MAC ของโมดูลในรูปภาพ
ติดตั้งโปรแกรม Thonny บนคอมพิวเตอร์เพื่อให้สะดวกในการดีบั๊ก MicroPython ของโมดูล ESP8266 โดยใช้โปรโตคอล ESP-NOW ต้องใช้เฟิร์มแวร์ MicroPython เฉพาะ (ดูที่ Github). เนื่องจากเวอร์ชันธรรมดาของฟิวเจอร์เซ็ต MicroPython สำหรับ 8266 จะแจ้งเตือนว่าไม่พบไลบรารี
เปิดโปรแกรม Thonny และใช้ USB uploader เพื่อเชื่อมต่อโมดูล ESP8266 แล้วป้อนคำสั่งต่อไปนี้ใน shell interface:
หากมีการแจ้งเตือนข้อผิดพลาดเช่น "ไม่พบโมดูล espnow" แปลว่ามีปัญหาในการอัพโหลดเฟิร์มแวร์ ในขณะที่หากไม่มีการแจ้งเตือน แปลว่าการอัพโหลดเฟิร์มแวร์เสร็จสมบูรณ์
ถ้าหลังจากเขียนเฟิร์มแวร์ ESP-NOW แล้วไม่มีสัญลักษณ์ >>> ของ Python ปรากฏในอินเทอร์เฟซเชลล์ หมายความว่าการเขียนเฟิร์มแวร์ล้มเหลว คุณสามารถลองใช้เครื่องมือเผาไฟแบบ Flash ชื่อ NodeMCU-PyFlasher.exe และการตั้งค่าการเผาไฟแสดงในภาพด้านล่าง:
โค้ดควบคุมกลุ่มถูกแบ่งเป็น 3 ส่วน:
Query the MAC address of the module
Transmitter program
receiver program
หมายเลข MAC คือหมายเลขที่ใช้ในการยืนยันตำแหน่งของอุปกรณ์เครือข่าย และรับผิดชอบในชั้นที่สอง (data link layer) ของโมเดลเครือข่าย OSI หมายเลข MAC ยังเรียกว่าที่อยู่ฟิสิกส์ (physical address) และที่อยู่ฮาร์ดแวร์ (hardware address) มันถูกเขียนลงบนหน่วยความจำที่ไม่สูญเสีย (เช่น EEPROM) ของการ์ดเครือข่ายเมื่อผู้ผลิตอุปกรณ์เครือข่ายผลิตอุปกรณ์นั้นๆ ขึ้นมา
ที่อยู่ MAC เป็นที่อยู่ที่ใช้สำหรับยืนยันตำแหน่งของอุปกรณ์เครือข่าย และรับผิดชอบด้านชั้นที่สอง (data link layer) ของโมเดลเครือข่าย OSI ที่อยู่ MAC ยังเรียกว่าที่อยู่ฟิสิกส์และที่อยู่ฮาร์ดแวร์ จะถูกเขียนลงในหน่วยความจำที่ไม่สูญเสีย (เช่น EEPROM) ของการ์ดเครือข่ายเมื่อมันถูกผลิตโดยผู้ผลิตอุปกรณ์เครือข่าย
ความยาวของที่อยู่ MAC คือ 48 บิต (6 ไบต์) ซึ่งมักแสดงเป็น 12 ตัวเลขฐานสิบหก 3 ไบต์แรกแทนหมายเลขอุปกรณ์ซีเรียลของผู้ผลิตฮาร์ดแวร์เครือข่ายที่ได้รับมอบหมายโดย IEEE (สถาบันวิทยาการและอิเล็กทรอนิกส์) และ 3 ไบต์สุดท้ายแทนหมายเลขอุปกรณ์เครือข่ายบางอย่าง (เช่นการ์ดเครือข่าย) ที่ผลิตโดยผู้ผลิต
เพียงแค่คุณไม่เปลี่ยนที่อยู่ MAC ของคุณ ที่อยู่ MAC จะเป็นเอกลักษณ์ในโลก ด้วยภาพการมองเห็น ที่อยู่ MAC เหมือนหมายเลขบัตรประชาชนบนบัตรประชาชน เป็นเอกลักษณ์
วิธีที่ง่ายที่สุดในการใช้ ESPNOW คือการส่งข้อมูลด้วย MAC address โดยเราจะใช้โปรแกรมเล็ก ๆ เพื่อสอบถาม MAC address ของโมดูล
หลังจากการรันโปรแกรมใน Thonny เสร็จสิ้น โปรแกรมจะแสดง MAC address บน terminal ออกมา ในขณะนี้ คุณสามารถใช้สติ๊กเกอร์สำหรับเขียน MAC address ของโมดูลแล้ววางไว้บนโมดูลได้เลย
โปรแกรมส่งประกอบด้วยส่วนต่อไปนี้:
Enable the WiFi function of the module
Configure the ESP-NOW protocol and enable it
Add a node (peer) that needs to communicate
Send a message
โค้ดที่เป็นตัวอย่างเฉพาะ:
โปรแกรมตัวรับประกอบด้วยส่วนต่อไปนี้:
Enable the WiFi function of the module
Configure the ESP-NOW protocol and enable it
Add a node (peer) that needs to communicate
Receive and decode the message, and send commands to NyBoard through the serial port
โค้ดที่เป็นตัวอย่างเฉพาะ:
โค้ดนี้ถูกแพ็กเก็ตไว้ในฟ