วิธีใช้บอร์ด Raspberry Pi Pico ด้วย MicroPython และภาษาC

Raspberry-Pi-Pico-Getting-Started-Guide

บอร์ด Raspberry Pi Pico ที่เพิ่งเปิดไปไม่นาน และต้องขอบคุณบริษัท Cytron ที่ส่งตัวอย่างมาให้ ฉันจึงมีเวลาเล่นกับบอร์ดโดยใช้โปรแกรมภาษา MicroPython และ C

ฉันเริ่มต้นจากการไปที่เอกสาร   และสิ่งที่ฉันต้องการคือหลอด LED บางหลอดกะพริบ และฉันก็จะเริ่มบันทึกด้วยคู่มือการเริ่มต้นใช้งาน Raspberry Pi Pico โดยใช้คอมพิวเตอร์ที่ทำงานอยู่ในระบบปฏิบัติการ Ubuntu 20.04 ซึ่งจะคล้ายกันสำหรับ Windows และ Mac OS

การเตรียมฮาร์ดแวร์

ในทางทฤษฎีแล้ว เราสามารถเริ่มต้นด้วยบอร์ดเพียงอย่างเดียว แต่ฉันจะลองใช้หัวแร้งบัดกรี  (Pinecil soldering ironl ) ด้วยตัวจ่ายไฟ MINIX NEO P2 USB-C

Pinecil-Soldering-Iron-RPi-Pico

หัวแร้งบัดกรีใช้งานได้ดีประมาณหนึ่งนาที แล้วฉันก็เริ่มมีปัญหากับการบัดกรี … มองไปที่หน้าจอเป็น Zzzz และอุณหภูมิลดลง ซึ่งอาจเป็นเพราะไม่ได้ขยับการบัดกรี จึงไม่สามารถตรวจจับกิจกรรมใด ๆได้ และเข้าสู่โหมดสลีป(Sleep)ได้ ฉันจึงเปลี่ยนความไวในการเคลื่อนไหวหรือการหมดเวลาพักเครื่อง สามารถแก้ไขปัญหานี้ได้ง่ายและฉันสามารถทำให้เสร็จได้

Raspberry-Pi-Pico-Headers-Soldered

แต่น่าเสียดายที่จะไม่ใช้ส่วนหัว (header)เหล่านั้น ดังนั้นฉันจึงใส่ Raspberry Pi Pico ลงในเบรดบอร์ด (bread board) และเพิ่ม LED พร้อมกับวงจรประกอบ

Raspberry-Pi-Pico-Breadboard

5 โวลต์ เชื่อมต่อกับ VBUS (พิน 40 ขา), GND ถึงพิน 38 ขา และฉันตัดสินใจใช้ GPIO ที่ใกล้เคียงที่สุดกับ LED คือ GP15 (พิน 20 ขา) หมายเลข GPIO บน Raspberry Pi Pico จะแสดงอยู่ที่ด้านล่างของบอร์ดเท่านั้น โดยดูจากแผนภาพพินเอาต์

Raspberry-Pi-Pico-Pinout-Diagram

การตั้งค่าฮาร์ดแวร์เสร็จสมบูรณ์แล้วและสิ่งที่ต้องมีก็คือสาย Micro USB เป็น USB-A เพื่อเชื่อมต่อบอร์ดกับแล็ปท็อป (Laptop)

MicroPython บน Raspberry Pi Pico

เราจึงคัดลอกเฟิร์มแวร์ MicroPython ไปยังบอร์ดก่อน โดยดาวน์โหลดเฟิร์มแวร์ล่าสุดได้จากคู่มือการเริ่มต้นใช้งาน (pico_micropython_20210121.uf2 ) จากนั้นกดปุ่ม BOOTSEL บนบอร์ด ในขณะที่เชื่อมต่อกับคอมพิวเตอร์ด้วยพอร์ต USB และปล่อยปุ่มหลังจากการเชื่อมต่อ แต่ไม่มีอะไรเกิดขึ้น นั่นเป็นเพราะฉันใช้สาย USB ของไฟหน้าจักรยานซึ่งขาดสายข้อมูล…ดังนั้นจึงเลือกสายไมโคร USB เป็น USB-Type-A ที่เหมาะสมและ Raspberry Pi Pico ได้รับการยอมรับอย่างถูกต้องบนแล็ปท็อป


.. และติดตั้งเป็นอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ RPI-RP2

Raspberry-Pi-Pico-RPI-RP2-mass-storage

หลังจากคัดลอกไฟล์ pico_micropython_20210121.uf2 ไปยังไดรฟ์แล้ว ไฟล์จะยกเลิกการต่อเชื่อมโดยอัตโนมัติ และบอร์ด Pico จะรีบูตเป็นอุปกรณ์แบบอนุกรม:


ณ จุดนี้คู่มือเริ่มต้นใช้งานบนเว็บไซต์ Raspberry Pi จะไม่มีประโยชน์และเราต้องเปลี่ยนเอกสาร Python SDK (PDF)

เอกสารประกอบใช้มินิคอม (minicom) สำหรับคอนโซลที่เป็นอนุกรม แต่ตอนนี้ฉันชอบ Bootterm มากกว่าเพราะมันใช้ง่ายกว่า แต่ไม่ว่าจะเป็นแบบใด หากคุณตั้งโปรแกรมบอร์ดใน Linux ต้องตรวจสอบให้แน่ใจว่ามีการเพิ่มผู้ใช้ปัจจุบันของคุณในกลุ่ม dialout หรือคุณจะต้องเรียกใช้โปรแกรมทั้งหมดในฐานะรูท (root):


Bootterm ตรวจพบพอร์ต ttyACM0 อย่างถูกต้องดังนั้นฉันจึงเรียกใช้“ bt” เพื่อเข้าถึงอินเทอร์เฟซ MicroPython REPL และพิมพ์คำสั่ง MicroPython


ฉันสามารถเปิดหลอดLED ออนบอร์ด (GP25) ได้ แต่เมื่อฉันทำเช่นเดียวกันกับ หลอดLED บนเบรดบอร์ด (GP15) มันไม่ทำงาน ฉันตรวจสอบวงจรของฉันอีกครั้งและใช้มัลติมิเตอร์เพื่อตรวจสอบระดับแรงดันไฟฟ้าและพบว่า GP25 ยังคงถูกดึงต่ำ จากการค้นหาเว็บพบว่า GP15 ถูกปิดใช้งานใน CircuitPython เนื่องจากจะรบกวนจากอินเทอร์เฟซ USB

นี่เป็นสาเหตุหนึ่งที่ไม่ควรใช้ GP15 โดยใช้อุปกรณ์ต่อพ่วง USB

อืม…ฉันคิดว่ามันเหมือนกันสำหรับ MicroPython ดังนั้นฉันจึงเปลี่ยนไปใช้พินข้างเคียง (GP14, พิน 19 ขา)


Raspberry-Pi-Pico-Blink-LED

และแน่นอนว่ามันได้ผล!  หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ MicroPyton API ให้กด Ctrl + B แล้วพิมพ์ help ():


เราสามารถออกจาก bootterm ด้วย“ Ctrl +]” ตามด้วย“ q” แต่ถ้าเราต้องการบันทึกโปรแกรม Python บนบอร์ดและเรียกใช้โดยอัตโนมัติล่ะ? ฉันอาจจะพลาดสิ่งนั้นในเอกสาร Python SDK ดังนั้นฉันจึงต้องข้ามไปยังคู่มือที่สาม คือการใช้ Thonny เพื่อค้นหาวิธีที่ดีที่สุด

Ubuntu 20.04 มี Thonny 3.2.7 ในพื้นที่เก็บข้อมูลซึ่งเราสามารถติดตั้งด้วย sudo apt install thonny ได้ แต่ไม่รองรับ Raspberry Pi Pico ดังนั้นฉันจึงติดตั้งโปรแกรมเวอร์ชันล่าสุด (v3.3.3) ด้วย pip3 แทน:


จากนั้นไปที่ Run-> Select interpreter …เพื่อเลือก“ MicroPython (Raspberry Pi Pico)“

Thonny-Raspberry-Pi-Pico

จากอินเทอร์เฟซผู้ใช้ ฉันสามารถพิมพ์รหัสเพื่อปิดหลอด LED ออนบอร์ดได้:

Thonny-Raspberry-Pi-Pico-Sample

เพื่อที่จะให้หลอดLED กะพริบออนบอร์ด และหลอด LED บนเบรดบอร์ดด้วยเวลาหนึ่งวินาที ฉันคัดลอกและแก้ไขโค้ดบางส่วนจากเอกสาร Python SDKได้:


ฉันบันทึกไฟล์เป็น blink.py บนพีซีของฉันและมันก็ทำงานได้ดี แต่ถ้าคุณต้องการเรียกใช้โค้ดโดยไม่ใช้พีซี คุณสามารถบันทึกลงใน Raspberry Pi Pico ได้ คลิกที่ไฟล์ -> บันทึกสำเนาจากนั้นคลิกที่ปุ่ม“ Raspberry Pi Pico”

MicroPython-Save-to-Computer-or-Raspberry-Pi-Pico

และบันทึกโปรแกรมเป็น main.py ตอนนี้คุณสามารถเรียกใช้โปรแกรมโดยอัตโนมัติ โดยเชื่อมต่อบอร์ดของคุณกับแหล่งจ่ายไฟ USB ใดก็ได้

ภาษาC/C++ บน Raspberry Pi Pico

ลองใช้ “ภาษาC/C++ SDK” ซึ่งโดยพื้นฐานแล้วเป็นภาษา C ทั้งหมด ยกเว้นเครื่องมือบางอย่างที่เขียนด้วย C++ เราสามารถย้อนกลับไปที่เอกสารการเริ่มต้นใช้งาน ซึ่งจะคัดลอก blink.uf2 เป็น Raspberry Pi Pico ขณะอยู่ในโหมดบูตและจะกะพริบ LED บนบอร์ด ใช้งานได้และง่ายมากเนื่องจากไบนารีถูกสร้างไว้ล่วงหน้า แต่สิ่งที่เราต้องการทำจริงๆคือ การแก้ไขซอร์สโค้ดและสร้างไบนารีของเราเอง เพื่อกะพริบทั้ง LED ภายในและภายนอก

ดังนั้นเราจะต้องติดตั้งภาษา C/C++ SDK การอ้างอิงและตัวอย่างดังต่อไปนี้:


เราสามารถดูตัวอย่างการกะพริบได้ในตัวอย่าง pico / blink / blink.c:


ดี, ก่อนที่เราจะแก้ไขเราควรพยายามสร้างโดยส่งออกเส้นทาง SDK ก่อนและกำหนดค่าการสร้าง:


ตอนนี้เราสามารถเข้าสู่ไดเร็กทอรี blink (อันใหม่สร้างโดย cmake) และเรียกใช้ make:


ตอนนี้เรามีไฟล์มากมาย:


สิ่งที่สำคัญที่สุดคือ blink.uf2 ที่เราสามารถคัดลอกไปยัง Raspberry Pi Pico เพื่อเรียกใช้โปรแกรมและ blink.elf ที่สามารถใช้โดยดีบักเกอร์ (OpenOCD  + GDB) แต่นั่นอยู่นอกขอบเขตของคู่มือเริ่มต้นใช้งานนี้

ตอนนี้เรารู้วิธีรวบรวมโปรแกรม ภาษาC สำหรับบอร์ด Pico แล้วเรามาปรับเปลี่ยนตัวอย่าง blink.c เพื่อเปิดและปิด หลอดLED ออนบอร์ดและ หลอดLED ภายนอกที่เชื่อมต่อกับพิน 14 ขา


และสร้างโปรแกรมอีกครั้ง:


จากนั้นเข้าสู่โหมดบูตและคัดลอก blink.uf2 ไปที่บอร์ดและประสบความสำเร็จ!

Raspberry-Pi-Pico-LED-Blink2

เราสามารถบรรลุผลลัพธ์เดียวกันได้ด้วยโปรแกรมภาษา C หรือ Python เราจะดูอินเทอร์เฟซ PIO (Programmable IO) ของ RP2040 เป็นสิ่งที่ทำให้ Raspberry Pi RP2040 แตกต่างจากไมโครคอนโทรลเลอร์อื่น ๆ มากที่สุด

ฉันต้องขอขอบคุณบริษัท Cytron ที่ส่ง บอร์ดPico ของ Raspberry Pi มาให้ตรวจสอบ หากคุณอาศัยอยู่ในอาเซียนคุณสามารถซื้อบอร์ดได้ในราคา $ 4.98 หรือหากคุณมีเวลาพอสมควรจะเสนอบอร์ดผู้ให้บริการ $ 5 สำหรับ Raspberry Pi Pico ในราคาเดียวกันกับบอร์ดที่บัดกรีแล้ว ซึ่งคาดว่าจะจัดส่งในเดือนกุมภาพันธ์ อันดับ 10 และวางจำหน่ายทั่วโลกไม่ใช่เฉพาะในอาเซียน

แปลจากบทความภาษาอังกฤษ Getting Started with Raspberry Pi Pico using MicroPython and C

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
โฆษณา