Board RP2040 tidak perlukan driver dan tidak perlukan COM port untuk flash pertamanya. Pasang core percuma “Raspberry Pi Pico/RP2040/RP2350” oleh Earle F. Philhower, III daripada Boards Manager, tahan butang BOOT board sambil memasang USB, dan board itu muncul sebagai satu drive bernama RPI-RP2 yang Arduino IDE upload terus ke dalamnya. Panduan ini membawa RP2040-Zero daripada meja kosong hingga ke bacaan OLED yang hidup.
Board RP2040 mana patut anda mulakan?
RP2040-Zero ialah pilihan plug-and-play, dan board inilah yang menjadi asas panduan ini. Ia board navy sebesar setem yang menjadikan perkara penting RP2040 senang dicapai: USB-C pada board itu sendiri, butang BOOT dan RESET di muka board, dan pin header kuning yang sudah disolder di sepanjang kedua-dua tepinya. Di bawahnya duduk Cortex-M0+ dwi-teras 133 MHz, RAM 264 KB dan flash 2 MB yang sama seperti adik-beradiknya yang lebih besar.
Raspberry Pi Pico klasik menjalankan cip yang sama dalam bentuk 40 pin kanonik yang menjadi asas setiap rajah pinout, dan ia sampai dengan pad yang masih bogel β rancangkan satu sesi dengan panduan solder header kami sebelum ia bertemu breadboard. RP2040-Tiny pula duduk di hujung yang satu lagi: cip pada modul solder-masuk bertepi castellated, dengan port USB-C dan butangnya pada board adapter yang berasingan, disambung oleh kabel riben. Belinya untuk mengecilkan projek yang sudah siap β flash melalui adapter, kemudian tanggalkan riben dan solder modul itu ke dalam binaan anda β bukan untuk sketch pertama.
Senarai komponen β board, paparan, serta kabel dan jumper yang menyambungkan kedua-duanya
Parts list
Lebih suka tapak breadboard untuk dikembangkan nanti? Pin Zero yang sudah disolder terus masuk ke breadboard 400 lubang, dan jumper male-to-male kemudiannya menjalankan empat sambungan OLED yang sama.
Bagaimana cara sediakan Arduino IDE untuk RP2040?
Arduino IDE tidak mengenali RP2040 selagi satu pakej board belum mengajarnya. Dalam File β Preferences, tampal ini ke dalam Additional boards manager URLs:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
Kemudian buka Boards Manager, cari “pico”, pasang Raspberry Pi Pico/RP2040/RP2350 oleh Earle F. Philhower, III, dan pilih Waveshare RP2040 Zero di bawah Tools β Board. Pilihan yang tepat itu lebih penting daripada rupanya β bahagian seterusnya menunjukkan sebabnya.
Sekarang bahagian yang mengejutkan sesiapa yang datang daripada ESP32: tiada langkah driver. Board ESP32 bercakap USB melalui cip jambatan yang berasingan, dan selagi driver vendornya belum dipasang, tiada apa yang muncul β itulah keseluruhan saga yang panduan “board tak detect” kami wujud untuk menyelesaikannya. RP2040 bercakap USB sendiri, daripada bootloader yang tertanam dalam ROM cip sejak dari kilang. Tahan BOOT semasa kuasa tiba dan ROM itu memperkenalkan cip sebagai peranti storan massa USB biasa β kelas yang sama seperti pendrive, jadi drivernya memang sudah ada dalam setiap sistem operasi. Satu drive bernama RPI-RP2 muncul, dan mana-mana fail UF2 yang dilepaskan ke atasnya akan ditulis ke flash. Oleh sebab ROM itu tidak boleh ditulis ganti, tiada upload gagal yang mampu mematikan board ini terus: BOOT-dan-cabut-pasang sentiasa membawanya kembali.
Tarian butang itu hanya perlu sekali. Tekan Upload dan IDE sendiri menulis UF2 itu ke drive; selepas itu setiap sketch membawa satu port serial USB yang IDE gunakan untuk reboot board masuk ke bootloader secara automatik. Butang RESET pada Zero menjimatkan cabut-pasang walaupun semasa pemulihan: tahan BOOT, ketik RESET, lepaskan BOOT, dan RPI-RP2 kembali. Satu amaran tentang kabel itu sendiri: kabel USB jenis charge-only tiada wayar data, jadi drive itu tidak akan sesekali muncul β kabel dalam senarai komponen ialah kabel data.

Kenapa contoh Blink gagal pada RP2040-Zero?
Compile sketch Blink klasik untuk RP2040-Zero dan IDE berhenti dengan error: 'LED_BUILTIN' was not declared in this scope. Ralat itu ialah pakej board sedang menjalankan tugasnya. Setiap board dalam core itu membawa satu fail definisi pin kecil yang menamakan apa yang benar-benar ada pada perkakasannya, dan fail milik Zero sengaja tidak mendefinisikan LED_BUILTIN β kerana memang tiada LED biasa di mana-mana pada board ini. Pilih “Raspberry Pi Pico” biasa pula, dan Blink compile serta upload dengan lancar, tetapi tiada apa yang berkelip: fail itu menghalakan LED_BUILTIN ke GP25, tempat LED hijau Pico rasmi berada, dan pada Zero, GP25 berakhir di satu pad castellated bogel tanpa sebarang LED. Ralat compile yang boleh dibaca lebih baik daripada kesenyapan yang terpaksa anda debug.
Lampu onboard Zero sebenarnya lebih hebat daripada LED biasa sebaik anda tahu apa dia: satu piksel RGB boleh-alamat WS2812 pada GP16. Ia mengandungi pengawal kecilnya sendiri, dan pengawal itu mengharapkan 24 bit warna dihantar sebagai rentetan denyut bermasa tepat pada 800 kHz β HIGH kekal daripada digitalWrite() tidak bermakna apa-apa kepadanya. Pasang library Adafruit NeoPixel daripada Library Manager dan inilah blink pertama yang sebenar:
// Blink pertama pada RP2040-Zero. "LED" onboard ialah piksel RGB WS2812
// pada GP16, jadi ia dipacu dengan DATA, bukan dengan aras HIGH/LOW.
#include <Adafruit_NeoPixel.h>
// PIN_NEOPIXEL datang daripada fail pin board itu sendiri dan bersamaan 16 di sini.
Adafruit_NeoPixel led(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
void setup() {
led.begin();
led.setBrightness(40); // kecerahan penuh pada jarak meja tidak selesa di mata
}
void loop() {
led.setPixelColor(0, led.Color(0, 150, 0)); // hijau
led.show();
delay(500);
led.setPixelColor(0, 0); // padam
led.show();
delay(500);
}
Ia compile kepada 56,764 bait β bawah 3% daripada flash Zero. Panduan WS2812 kami membawa piksel yang sama melangkah ke jalur dan gelang LED.

Bagaimana cara membaca pinout RP2040?
Pada setiap board RP2040, identiti sesuatu pin ialah nombor GP-nya, bukan kedudukan fizikalnya. Cip ini ada 30 GPIO, GP0 hingga GP29, dan setiap board cuma memilih yang mana satu dibawa ke tepinya β jadi kod yang ditulis mengikut nombor GP berpindah antara Pico dan Zero tanpa diubah, dan mana-mana rajah pinout terpakai asalkan anda memadankan label, bukan mengira penjuru. Header Zero membawa GP0βGP15 berserta empat pin berkeupayaan analog; GP16 dihabiskan secara dalaman untuk WS2812-nya, dan sembilan lagi GPIO hanya muncul sebagai pad solder di tepi bawah board:
| Label pada Zero | Apa dia |
|---|---|
| 5V | Kuasa terus daripada kabel USB β output untuk membekalkan komponen 5 V, bukan sesekali pin isyarat |
| 3V3 | Output 3.3 V pengatur onboard β rel yang cip itu sendiri berjalan di atasnya |
| GND | Ground bersama untuk semua yang ada di atas meja |
| GP0βGP15 | I/O digital; UART, SPI, I2C dan PWM masing-masing boleh dipetakan ke atasnya |
| GP26βGP29 | I/O digital yang turut berfungsi sebagai input analog ADC0βADC3 |
| GP16 | Tiada pada header β ia memacu piksel WS2812 onboard |
| GP17βGP25 | Tiada pada header juga β pad solder bogel di tepi bawah, untuk binaan solder-masuk dan bukannya jumper |
Satu peraturan mengekalkan board ini hidup: I/O RP2040 berjalan daripada rel 3.3 V, dan pinnya tidak tahan 5 V β pin 5V wujud untuk membekalkan peranti 5 V, bukan untuk bertemu pin GP.
Bagaimana cara mendawai OLED β dan menggunakan pinout itu?
Binaan ganjarannya ialah bacaan langsung, dan ia tidak perlukan breadboard mahupun solder: header Zero yang sudah disolder ialah pin male, header 4 pin sedia terpasang pada OLED 0.96 inci juga male, jadi empat jumper female-to-female menghubungkan kedua-duanya terus. Satu tabiat perlu dibuang dahulu: header OLED ini berbunyi GND VCC SCL SDA β ground dahulu, terbalik daripada kebanyakan modul hobi. Padankan dengan silkscreen, bukan ingatan otot, sebelum kuasa dihidupkan.
| Pin OLED | Pin RP2040-Zero | Kenapa |
|---|---|---|
| GND | GND | Rujukan bersama untuk bas |
| VCC | 3V3 | SSD1306 selesa berjalan daripada 3.3 V, dan aras basnya terus sepadan dengan aras cip |
| SCL | GP5 | GP5 duduk dalam kumpulan clock I2C0 cip |
| SDA | GP4 | GP4 duduk dalam kumpulan data I2C0 cip |
GP4 dan GP5 bukan pilihan sembarangan. RP2040 membenarkan setiap antara muka muncul pada beberapa pin, mengikut corak yang tetap: bermula dari GP0, setiap pin keempat boleh menjadi SDA I2C0, dan setiap pin keempat bermula dari GP1 pula SCL-nya. Sketch ini menyatakan pilihan itu secara terang-terangan dengan Wire.setSDA(4) dan Wire.setSCL(5) β satu baris setiap satu, dan pendawaian pun terdokumen dalam kod, bukan dalam ingatan anda. Paparan ini dipacu oleh pengawal SSD1306 yang menjawab pada alamat I2C 0x3C, dan untuk bacaan pertama, cip itu membawa datanya sendiri: RP2040 ada sensor suhu atas cip, dibaca dengan satu panggilan. Pasang Adafruit SSD1306 daripada Library Manager dahulu, dan biarkan IDE menarik dependency Adafruit GFX-nya apabila ia bertanya.
// RP2040-Zero + OLED SSD1306 0.96in melalui I2C0: bacaan langsung suhu cip.
// Pendawaian: OLED GND -> Zero GND, VCC -> 3V3, SCL -> GP5, SDA -> GP4.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
void setup() {
// Sebut pin itu dengan jelas daripada mempercayai default: GP4 duduk dalam
// kumpulan I2C0-SDA cip dan GP5 dalam kumpulan I2C0-SCL-nya.
Wire.setSDA(4);
Wire.setSCL(5);
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // modul ini menjawab pada 0x3C
oled.setTextColor(SSD1306_WHITE);
}
void loop() {
float t = analogReadTemp(); // sensor atas cip RP2040 sendiri, dalam Celsius
oled.clearDisplay();
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.print("RP2040 core temp");
oled.setTextSize(3);
oled.setCursor(0, 24);
oled.print(t, 1);
oled.setTextSize(2);
oled.print(" C");
oled.display();
delay(1000);
}
Yang ini compile kepada 71,100 bait, dan nombor yang dipaparkannya adalah hasil kiraan, bukan magik: sensor itu mengeluarkan 0.706 V pada 27 Β°C dan turun 1.721 mV bagi setiap darjah, jadi core mengira 27 β (V β 0.706) / 0.001721 β formula terus daripada datasheet RP2040. Jangkakan bacaan beberapa darjah di atas suhu bilik: ia suhu die itu sendiri, dan menekan hujung jari pada cip menggerakkannya. Apabila skrin itu nanti mahukan antara muka sebenar, panduan menu rotary encoder kami ialah langkah seterusnya yang paling semula jadi β paparan yang sama, bas I2C yang sama.

Kesilapan biasa yang kami lihat daripada pelanggan sebenar
Kabel mengecas tetapi drive tidak pernah muncul. Kabel USB jenis charge-only tiada wayar data, jadi RPI-RP2 tidak mungkin muncul dan board kelihatan seperti mati. Tukar kepada kabel data yang diketahui elok sebelum mengesyaki perkakasan.
Mencari COM port sedangkan board dalam mod BOOTSEL. Dalam mod bootloader, board ialah sebuah drive, bukan peranti serial β ketiadaan port ialah kelakuan yang betul. Port itu muncul selepas sesuatu sketch berjalan.
Blink “berjaya” tetapi tiada apa yang berlaku. Menu board yang ditetapkan kepada Raspberry Pi Pico biasa memacu GP25, yang pada Zero hanyalah pad solder bogel tanpa LED. Pilih Waveshare RP2040 Zero dan pacu WS2812 pada GP16 dengan library jenis NeoPixel sebaliknya.
OLED didawai VCC-dahulu ikut kebiasaan. Header modul ini berjalan GND VCC SCL SDA, jadi pendawaian ikut tabiat menyongsangkan bekalan merentasi paparan. Baca silkscreen pada modul setiap kali, sebelum kuasa dihidupkan.
Output sensor 5 V masuk terus ke pin GP. Pin RP2040 ialah 3.3 V sahaja. Silakan bekalkan komponen 5 V daripada pin 5V, tetapi bahagikan dahulu talian isyaratnya sebelum ia sampai ke cip.
Soalan Lazim
Patut saya mula dengan Raspberry Pi Pico atau RP2040-Zero?
Cip sama, kod sama, bungkusan berbeza. Zero sampai dengan header sudah disolder dan USB-C, jadi ia permulaan yang lebih pantas; Pico memberikan bentuk 40 pin kanonik yang sepadan dengan setiap rajah di internet, dengan pad yang anda solder sendiri.
Perlukah saya solder apa-apa untuk binaan ini?
Tidak. Pin Zero dan header 4 pin OLED kedua-duanya datang sudah disolder, dan empat jumper female-to-female menyambung pin ke pin secara terus. Solder hanya masuk campur kalau anda memilih lorong Pico atau RP2040-Tiny.
Boleh tak RP2040 menjalankan MicroPython pula?
Boleh β drive RPI-RP2 yang sama menerima UF2 firmware MicroPython, dan selepas itu board bercakap dengan Thonny dan bukannya Arduino IDE. Panduan ini kekal dengan Arduino supaya pengalaman sketch Uno dan ESP32 anda terbawa terus.
Adakah pin RP2040 tahan 5V?
Tidak. Semua GPIO berjalan pada logik 3.3 V, dan 5 V pada mana-mana pin membahayakan cip. Pin 5V pada Zero ialah output kuasa daripada USB untuk membekalkan peranti 5 V β talian isyarat peranti itu tetap perlu dibahagikan turun ke 3.3 V.
Kenapa tiada COM port bila saya mula-mula pasang board?
COM port diwujudkan oleh sketch yang sedang berjalan, bukan oleh cip, jadi senarai port yang kosong pada board baharu adalah normal dan bukannya kerosakan. Tahan BOOT sambil memasang USB dan board muncul sebagai drive RPI-RP2 sebaliknya; upload mana-mana sketch dan core menambah satu port serial USB yang IDE senaraikan seperti Arduino lain.
Tabiat yang dibina halaman ini ialah platform itu sendiri: padankan nombor GP dan bukannya kedudukan, semak apa yang fail pin sesuatu board benar-benar definisikan, dan setiap board RP2040 β Zero, Pico atau modul castellated dalam produk siap β menjadi mesin yang sama.
Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.



RP2040-Zero Microcontroller Board Raspberry Pi Dual Core ARM Cortex M0+ 133MHz USB Type-C DIY Project
0.96β OLED Display Module Blue White Screen I2C IIC Serial 128X64 LCD Display Board - 0.96' OLED WHITE
Data Cable Type-A Type-C MicroUSB Type-B 0.5m 1m 30cm 0.3m 100cm Data Transfer Upload Code - TYPE-A TO TYPE-C CABLE (1.0M)
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE F-F 20CM
MB102 Breadboard 170 400 830 Holes Breadboard Donut Board Arduino Prototype Multi Color - BREADBOARD (400 HOLES)
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-M 20CM