Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Rabu, 13 Agustus 2025

Pengantar Pemrograman C/C++ di Raspberry Pi Pico

Raspberry Pi Pico, yang diciptakan oleh Raspberry Pi Foundation, adalah papan mikrokontroler serbaguna. Berbeda dari Raspberry Pi versi tradisional yang menggunakan sistem operasi Linux, Pico memanfaatkan chip RP2040 yang dibuat khusus untuk aplikasi komputasi embedded, menjadikannya lebih efisien dalam konsumsi daya dan sangat cocok untuk proyek elektronik berdaya rendah. Raspberry Pi Pico mendukung pemrograman dalam C/C++ dan MicroPython, menjadikannya pilihan populer untuk proyek IoT, robotika, dan embedded systems. Artikel ini akan membahas secara mendalam cara memulai pemrograman C/C++ di Raspberry Pi Pico, termasuk pengaturan lingkungan pengembangan, penulisan kode pertama, dan beberapa contoh aplikasi praktis. Mau langsung mencoba? Anda bisa beli Raspberry Pi Pico Starter Kit di sini untuk memulai eksperimen dari rumah. 

 

Mengenal Raspberry Pi Pico dan RP2040

 

1. Spesifikasi Hardware

Raspberry Pi Pico dibekali dengan spesifikasi yang cukup mumpuni untuk kelas mikrokontroler:

- MCU – RP2040

Menggunakan dual-core ARM Cortex-M0+ dengan kecepatan hingga 133 MHz, dirancang oleh Raspberry Pi Foundation sendiri. Dual-core ini memungkinkan Pico menjalankan dua tugas secara paralel, sehingga efisien untuk aplikasi multitasking ringan.

- Memori

Dilengkapi 264 KB SRAM (untuk penyimpanan data sementara) dan 2 MB Flash (untuk menyimpan program). Kapasitas ini sudah cukup untuk berbagai aplikasi embedded, termasuk IoT, robotika, dan otomasi sederhana.

- I/O

Memiliki 26 pin GPIO multifungsi yang dapat digunakan untuk berbagai protokol: PWM (untuk mengatur sinyal gelombang), ADC (untuk membaca data analog), UART (komunikasi serial), SPI (komunikasi cepat antar perangkat), dan I2C (komunikasi antar sensor/komponen).

- Konektivitas

Menggunakan USB 1.1 yang dapat berfungsi sebagai device maupun host. Artinya, Pico bisa dihubungkan ke komputer untuk pemrograman atau dihubungkan ke perangkat USB lain.

- Daya

Mendukung rentang tegangan 1.8–5.5V DC, sehingga fleksibel digunakan baik dengan adaptor, port USB, maupun baterai.

2. Keunggulan Pemrograman C/C++ di Pico

Bahasa C/C++ menjadi pilihan utama untuk memaksimalkan kemampuan hardware Pico:

- Kinerja Tinggi

Program yang ditulis dalam C/C++ berjalan lebih cepat dibanding MicroPython karena dieksekusi langsung pada level mesin (compiled), bukan melalui interpreter.

- Akses Level Rendah

Memberikan kontrol penuh terhadap register dan periferal hardware, sehingga cocok untuk aplikasi yang membutuhkan timing presisi dan pengendalian mendalam.

- Kompatibilitas

Mendukung integrasi dengan berbagai library embedded yang sudah mapan, memudahkan pengembangan proyek yang kompleks.

- Optimasi

Lebih hemat memori dan memberikan kecepatan eksekusi yang lebih baik, sehingga ideal untuk aplikasi real-time atau perangkat yang berjalan terus-menerus dengan sumber daya terbatas.

Ingin belajar sambil praktek? Coba Raspberry Pi Pico Trainer Kit ini, cocok untuk latihan coding dan eksperimen hardware.


Menyiapkan Lingkungan Pengembangan 

 

1. Alat yang Dibutuhkan

- Raspberry Pi Pico

- Kabel Micro-USB 

- Komputer (Windows/Linux/macOS)

- Software:  

    - Toolchain C/C++ (GCC ARM Embedded)  

    - CMake (Build system)  

    - Visual Studio Code (Opsional, sebagai editor)  

2. Instalasi Toolchain di Linux (Ubuntu/Debian)

 

sudo apt update

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

 

3. Instalasi Toolchain di Windows 

- Unduh GCC ARM Embedded dari [ARM Developer](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm).  

- Install CMake dari [cmake.org](https://cmake.org/download/).  

- Tambahkan path ke environment variables.  

4. Mengunduh SDK Raspberry Pi Pico

Clone repositori resmi SDK:  

 

git clone -b master https://github.com/raspberrypi/pico-sdk.git

cd pico-sdk

git submodule update --init

 

Membuat Proyek Pertama di C 

 

1. Struktur Proyek

Buat folder proyek dengan struktur:  

2. Konfigurasi CMake

File `CMakeLists.txt`:  

 

cmake_minimum_required(VERSION 3.12)  

include(pico_sdk_import.cmake)  

project(pico_blink)  

pico_sdk_init()  

add_executable(pico_blink src/main.c)  

pico_enable_stdio_usb(pico_blink)  # Aktifkan USB serial

pico_add_extra_outputs(pico_blink)  

target_link_libraries(pico_blink pico_stdlib)  

 

3. Program Blink LED (Contoh Dasar) 

File `src/main.c`:  

 

#include "pico/stdlib.h"  


int main() {  

    const uint LED_PIN = 25;  // Pin LED bawaan Pico (GPIO 25)

    gpio_init(LED_PIN);  // Inisialisasi pin agar siap digunakan

    gpio_set_dir(LED_PIN, GPIO_OUT);  // Set arah pin menjadi OUTPUT (keluaran)


    while (true) {  

        gpio_put(LED_PIN, 1);  // LED ON

        sleep_ms(500);  // Tunggu 500 ms

        gpio_put(LED_PIN, 0);  // LED OFF

        sleep_ms(500);  // Tunggu 500 ms

    }  

}  

 

4. Kompilasi dan Upload 

- Buat folder `build`:  

   mkdir build && cd build  

- Generate Makefile:  

   cmake ..  

- Kompilasi:  

   make -j4  

- Upload ke Pico:  

    - Tahan tombol BOOTSEL saat mencolokkan USB.  

    - Salin file `.uf2` ke drive yang muncul.  


Pemrograman Lanjutan di C++

 

1. Menggunakan Kelas di C++

Contoh program dengan OOP:  

 

#include "pico/stdlib.h"  


class LED {  

private:  

    uint pin;  


public:  

 

    LED(uint pin) : pin(pin) {  

        gpio_init(pin);  

        gpio_set_dir(pin, GPIO_OUT);  

    }  


    void toggle() {  

        gpio_put(pin, !gpio_get(pin));  // Balik status LED

    }  

};  


int main() {  

    LED led(25);  // Gunakan pin LED bawaan

    while (true) {  

        led.toggle();  

        sleep_ms(500);  

    }  

}  

 

2. Interupsi GPIO  

Contoh penggunaan interupsi:  

 

#include "pico/stdlib.h"  

// Callback ketika tombol ditekan 

void gpio_callback(uint gpio, uint32_t events) {  

    gpio_put(25, !gpio_get(25));  // Toggle LED

}  


int main() {  

    gpio_init(25);  

    gpio_set_dir(25, GPIO_OUT);  

            // Aktifkan interupsi pada pin 2 (misal tombol) 

    gpio_set_irq_enabled_with_callback(2, GPIO_IRQ_EDGE_RISE, true, &gpio_callback);  


    while (true) {  

        tight_loop_contents();  // Loop kosong untuk hemat CPU

    }  

}  

 

Integrasi dengan Periferal

  

1. Menggunakan PWM  

Contoh kontrol PWM:  

 

#include "pico/stdlib.h"  

#include "hardware/pwm.h"  


int main() {  

    gpio_set_function(2, GPIO_FUNC_PWM);  // Pin 2 sebagai PWM

    uint slice_num = pwm_gpio_to_slice_num(2);  

 

    pwm_set_wrap(slice_num, 255);  // Maksimum nilai PWM

    pwm_set_chan_level(slice_num, PWM_CHAN_A, 128);  // 50% duty cycle

    pwm_set_enabled(slice_num, true);  

 


    while (true) {  

        // PWM berjalan di background  

    }  

}  

 

2. Komunikasi I2C

Contoh membaca sensor I2C:  

 

#include "pico/stdlib.h"  

#include "hardware/i2c.h"  


#define I2C_PORT i2c0  

#define SDA_PIN 4  

#define SCL_PIN 5  


int main() {  

    i2c_init(I2C_PORT, 100 * 1000);  // Kecepatan 100kHz

    gpio_set_function(SDA_PIN, GPIO_FUNC_I2C);  

    gpio_set_function(SCL_PIN, GPIO_FUNC_I2C);  

 

    uint8_t data[2];  

    i2c_read_blocking(I2C_PORT, 0x40, data, 2, false);  // Baca dari alamat 0x40


    while (true) {  

        // Baca data sensor  

    }  

}  

Catatan: Alamat 0x40 hanya contoh, dan perlu menyesuaikan dengan alamat sensor sebenarnya.


Optimasi dan Debugging

 

1. Menggunakan printf() melalui USB

Aktifkan output serial USB di `CMakeLists.txt`:  

pico_enable_stdio_usb(pico_blink 1)  

Contoh kode:  

 

#include "pico/stdlib.h"  

#include <stdio.h>  


int main() {  

    stdio_init_all();  // Inisialisasi semua I/O

    while (true) {  

        printf("Hello, Pico!\n");  

        sleep_ms(1000);  

    }  

}  

 

2. Mengurangi Penggunaan Memori

- Gunakan `-Os` di CMake untuk optimasi ukuran.  

- Hindari dynamic memory allocation (`malloc`).  

- Gunakan `const` untuk data statis.  

 

Proyek Contoh: Kontrol Motor dengan Pico

  

1. Rangkaian Elektronik

- Motor DC + Driver L298N  

- Pico mengontrol PWM dan arah motor  

2. Kode Program

 

#include "pico/stdlib.h"  

#include "hardware/pwm.h"  


#define MOTOR_PWM 2  

#define MOTOR_IN1 3  

#define MOTOR_IN2 4  


void set_motor_speed(int speed) {  

    gpio_put(MOTOR_IN1, speed > 0);  

    gpio_put(MOTOR_IN2, speed < 0);  

    pwm_set_gpio_level(MOTOR_PWM, abs(speed));  

}  


int main() {  

    gpio_init(MOTOR_IN1);  

    gpio_init(MOTOR_IN2);  

    gpio_set_dir(MOTOR_IN1, GPIO_OUT);  

    gpio_set_dir(MOTOR_IN2, GPIO_OUT);  


    gpio_set_function(MOTOR_PWM, GPIO_FUNC_PWM);  

    uint slice = pwm_gpio_to_slice_num(MOTOR_PWM);  

    pwm_set_wrap(slice, 1023);  

    pwm_set_enabled(slice, true);  


    while (true) {  

        set_motor_speed(512);  // Maju  

        sleep_ms(2000);  

        set_motor_speed(-512); // Mundur  

        sleep_ms(2000);  

    }  

}  


Mau panduan lengkap dari nol? Beli E-Book Panduan Mudah Belajar Pemrograman Raspberry Pi Pico untuk materi terstruktur dan contoh proyek tambahan.

 

Baca juga : Struktur Dasar Program di Raspberry Pi Pico

 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Pengantar Pemrograman C/C++ di Raspberry Pi Pico"