โปรเจกต์ เริ่มต้นใช้งาน Nano RP2040 และ Python
เรียนรู้วิธีการติดตั้ง Arduino Nano RP2040 Connect เพื่อใช้งาน MicroPython
เรียนรู้วิธีการติดตั้ง Arduino Nano RP2040 Connect เพื่อใช้งาน MicroPython
Project Supporter Team
โพสต์โดย
ในบทความนี้ ผมจะแสดงวิธีการตั้งค่าบอร์ด Arduino Nano RP2040 Connect เพื่อใช้งาน Python โดยคุณจะได้เรียนรู้วิธีการ...
ไปที่ https://openmv.io/pages/download และดาวน์โหลดเวอร์ชันที่จำเป็นสำหรับคอมพิวเตอร์ของคุณ หลังจากนั้นให้รันตัวติดตั้งและทำตามคำแนะนำที่ระบุไว้ สุดท้ายให้เปิดแอป OpenMV IDE หากคุณเห็นหน้าต่างป๊อปอัปแบบนี้ ให้เลือกที่ Don't show this message again แล้วกด Ok

หลังจากนั้น หน้าต่างควรจะมีลักษณะดังนี้:

ในขณะที่ OpenMV กำลังทำงาน ให้เชื่อมต่อบอร์ดของคุณเข้ากับคอมพิวเตอร์และกดปุ่ม Reset สองครั้งติดกัน (double tap) มันควรจะเปิดหน้าต่าง File Explorer (หรือ Finder หรืออื่นๆ) พร้อมกับอุปกรณ์จัดเก็บข้อมูลแบบ mass storage device ที่ชื่อประมาณว่า RPI-RP2 ซึ่งคุณสามารถปิดหน้าต่างนี้ได้
ตอนนี้ คุณต้องเชื่อมต่อบอร์ดเข้ากับ IDE โดยกดปุ่ม Connect ที่มุมซ้ายล่าง (หรือ Ctrl+E)

จะมีข้อความแจ้งเตือนว่าตรวจพบวอร์ดในโหมด DFU ให้เลือก Install the latest release firmware และ Erase internal file system จากนั้นกด Ok


ปุ่ม Play สีเทาที่มุมซ้ายล่างควรเปลี่ยนเป็นสีเขียว ซึ่งแสดงว่าคุณสามารถ Run Code Python บนบอร์ดได้แล้ว หากไม่เป็นเช่นนั้น ให้กดปุ่ม Connect อีกครั้ง
เลือกเมนูตามลำดับนี้ File->Examples->Arduino Boards->Nano RP2040->Board Control->blinky.py


ตอนนี้ให้ Run Code ด้วยสัญลักษณ์ Play สีเขียว (หรือ Ctrl+R) ไฟ LED สีส้มบนบอร์ดควรจะกะพริบ คุณสามารถดูวิดีโอสั้นๆ ของผลลัพธ์ที่ควรจะเป็นได้ที่ลิงก์นี้ https://drive.google.com/file/d/1RB3Gcf5G-14KwpS5FhAf1FNRGQKg55f6/view .
ในกรณีที่คุณยังไม่คุ้นเคยกับ Python syntax ผมจะอธิบายให้ที่นี่ นี่คือ Code จากตัวอย่าง Blinky:
# Blinky example
import time
from machine import Pin
# This is the only LED pin available on the Nano RP2040,
# other than the RGB LED connected to Nina WiFi module.
led = Pin(6, Pin.OUT)
while (True):
led.on()
time.sleep_ms(250)
led.off()
time.sleep_ms(250)
Python นั้นเข้าใจได้ง่ายพอสมควร ใน Arduino C ข้อความที่เป็น comment จะขึ้นต้นด้วย // แต่ใน Python ข้อความ comment จะขึ้นต้นด้วยสัญลักษณ์ # ดังนั้นบรรทัดบนสุดจึงถูกข้ามไปโดยสิ้นเชิง ต่อมาคือ ห้ามใช้ semicolon (;) โดยเด็ดขาด!!! คำสั่งใน Python (แต่ละบรรทัด) จะสิ้นสุดด้วยการขึ้นบรรทัดใหม่ ไม่ใช่ semicolon
อย่างที่สอง บางท่านอาจทราบว่า Arduino IDE จะเพิ่มบรรทัด #include <Arduino.h> ให้โดยอัตโนมัติที่ส่วนบนของทุกไฟล์ .ino แต่ใน OpenMV จะไม่มี Arduino.h และสิ่งที่มีค่าเทียบเท่ากันนั้นไม่ได้ถูกโหลดมาให้โดยอัตโนมัติ คำหลัก import จะคล้ายกับ Arduino #include และในตัวอย่างนี้ใช้เพื่อโหลด modules สองตัว ได้แก่ module time ที่ใช้สำหรับจัดการเรื่องเวลา ซึ่งมีฟังก์ชันที่ชื่อว่า sleep_ms() ที่ทำงานเหมือนกับฟังก์ชัน delay() ที่คุณคุ้นเคย ส่วนโมดูลที่สองจะถูกนำเข้ามาเพียงบางส่วนเท่านั้น คือ Pin จาก machine ซึ่งนี่คือ class คุณอาจเคยใช้ class ใน Arduino มาก่อน เช่น การเชื่อมต่อกับหน้าจอ LCD โดย class เป็นเหมือนพิมพ์เขียวสำหรับการสร้าง (instantiating) สิ่งอื่น ในกรณีนี้คือ Pin บรรทัด Code หลังจากคำสั่ง import led = Pin(6, Pin.OUT) จะเป็นการสร้าง Pin โดยใช้ class Pin ซึ่งบรรทัดนี้เกือบจะเหมือนกับ pinMode(6, OUTPUT) ใน Arduino หลังจากนั้นเราจะมี mainloop ซึ่งคือทุกอย่างที่อยู่ภายในบล็อก while ตอนนี้เป็นช่วงเวลาสำคัญที่จะกล่าวว่า Python ใช้ whitespace (การเคาะเว้นวรรค tab และการขึ้นบรรทัดใหม่) เพื่อแยกบล็อก แทนที่จะใช้เครื่องหมายปีกกา ({...}) บล็อกจะเริ่มต้นด้วยเครื่องหมาย colon (:) และทุกอย่างที่ย่อหน้าเข้าไปสี่ช่องหลังจากนั้นจะถือว่าอยู่ในบล็อกนั้น นี่คือการเปรียบเทียบระหว่าง Python และ Arduino:
# Python
while (True):
# Do stuff...
// Arduino
while (true) {
# Do stuff...
}
ดังนั้นใน mainloop เราจึงเรียกใช้ method ของ object ที่เราสร้างขึ้นนั่นคือ on() ซึ่ง method คือฟังก์ชันที่เป็นของ object นั้นๆ โดย method นี้คล้ายกับ digitalWrite(6, HIGH); จากนั้นคือ time.sleep_ms(250) ซึ่งหมายถึง delay(250); ในภาษา Arduino ต่อมาเราตั้งค่า LED เป็น off แล้วหน่วงเวลาอีก 250 มิลลิวินาที
ตอนนี้ คุณอาจสังเกตเห็นว่าไม่มี Code ส่วนใดที่อยู่ภายใน void setup() {...} และ void loop() {...} นั่นเป็นเพราะ Python Code สามารถทำงานภายนอกฟังก์ชันได้ สิ่งที่คุณควรใส่ใน setup ให้วางไว้หลังจากการ import และตัวแปรต่างๆ ที่คุณสร้างขึ้น ส่วน Code ที่ควรจะอยู่ในบล็อก loop ก็ให้ใส่ไว้ใน while loop แทน
นี่คือ Code ที่แสดงคุณสมบัติที่มีประโยชน์อื่นๆ ของ Python และสิ่งที่เทียบเท่าใน Arduino:
# การสร้างตัวแปร (variable)
variable_name = value
# การสร้างฟังก์ชัน (function)
def function_name(parameter1, parameter2):
# Do stuff...
# การเรียกใช้ฟังก์ชัน
function_name(argument1, argument2)
หากคุณต้องการให้ Code ถูกบันทึกไว้ในบอร์ด ให้กด File->Save "blinky_1.py" as... (หรือ Ctrl+W) และบันทึกลงในบอร์ดโดยใช้ชื่อว่า "main.py" หากมีการถามเพื่อเขียนทับไฟล์เดิมที่มีอยู่ ให้กด Yes สุดท้ายให้กดปุ่ม Reset บนบอร์ดเพื่อให้ Code ทำงาน


สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้