Actions

KAmod RP2040 (PL)

From Kamamilabs.com - Wiki

Revision as of 18:58, 14 October 2025 by Grzegorzbecker (talk | contribs)

Opis

KAmod RP2040 - Miniaturowy moduł z mikrokontrolerem Raspberry RP2040 i 16MB flash

Miniaturowa płytka z mikrokontrolerem RP2040 wyposażonym w dwa rdzenie ARM Cortex-M0+ z taktowaniem do 133 MHz, 264 kB wbudowanej pamięci SRAM. Na płytce znajduje się aż 16 MB pamięci QSPI flash - maksymalny rozmiar obsługiwany przez mikrokontroler, a także 4 wejścia ADC, 16x PWM, interfejsy SPI, I2C, UART, złącze I2C Qwire (kompatybilne z Qwiic/STEMMA QT) oraz dioda LED RGB WS2812.

Podstawowe parametry

  • Mikrokontroler RP2040 zaprojektowany przez Raspberry Pi
    • Dwa rdzenie ARM Cortex-M0+ z taktowaniem do 133 MHz
    • Pamięć RAM: 264 kB
    • Wbudowany zegar czasu rzeczywistego (RTC)
  • Stabilizator napięcia 3,3 V 600 mA
  • 16 MB zewnętrznej pamięci flash
  • Wbudowane złącze USB typu C do programowania
  • Przyciski Reset i Boot
  • Możliwość programowania Drag&Drop w trybie pamięci masowej USB
  • Dioda LED WS2812
  • 15 wyprowadzeń GPIO
  • Rozbudowane interfejsy komunikacyjne:
    • 1 x SPI
    • 2 x I2C
    • 2 x UART
    • 4 x 12-bit ADC
    • 12 kanałów PWM
  • Złącze I2C Qwire typu JST SH 4-pin 1 mm (kompatybilne z Qwiic / STEMMA QT)
  • Wymiary: 18 x 22 mm



Wyposażenie standardowe

Kod Opis
KAmod RP2040

Zmontowany i uruchomiony moduł
2 x prosta listwa goldpin 8-pin raster 2,54 mm


Schemat elektryczny


Opis wyprowadzeń


Wbudowana dioda LED RGB

Moduł KAmod RP2040 został wyposażony w diodę LED RGB WS2812, która sterowana jest przez niewyprowadzone na złącze wyprowadzenie mikrokontrolera GPIO16.


Złącze I2C Qwire

Moduł KAmod RP2040 zawiera złącze I2C Qwire (JST SH 1 mm) zgodne ze standardem Qwiic / STEMMA QT. Jest to standard połączenia dla modułów wyposażonych w interfejs I2C, który umożliwia szybkie podłączanie i rozszerzanie funkcji modułów bez potrzeby lutowania. Wyprowadzenia złącz Qwire są sterowane interfejsem I2C1 na pinach GPIO23 (SDA) oraz GPIO22 (SCL).



Przyciski BOOT oraz RST

Moduł KAmod RP2040 został wyposażony w dwa przyciski które ułatwiają programowanie mikrokontrolera RP2040. Dzięki przyciskowi RST użytkownik nie musi odłączać oraz podłączać przewodu USB aby zresetować mikrokontroler, natomiast przycisk BOOT pełni taką samą funkcję jak w Raspberry Pi Pico - powoduje uruchomienie bootloadera który umożliwia jego programowanie.


Wymiary

Program testowy

Program testowy został napisany w środowisku Arduino.

//Need: BOARDS MANAGER -> Arduino Mbed OS RP2040 Boards
//Board: "KAmod RP2040"
//Need: NeoPixelConnect.h

#include <NeoPixelConnect.h>
#include <Wire.h>
#include <SparkFun_Qwiic_Button.h>

//WS2812
#define WS2812_PIN      16
#define NUM_OF_LEDS     1

NeoPixelConnect  WSpixel(WS2812_PIN, NUM_OF_LEDS);

//I2C
#define I2C_SDA         22
#define I2C_SCL         23
#define I2C_FREQ        100000
#define BUTTON_ADDR     0x6F

QwiicButton button;
MbedI2C iic1(I2C_SDA, I2C_SCL);


int i;
int dir;
int ws_r;
int ws_g;
int ws_b;

void setup() {
  Serial.begin(115200);
  delay(2000);

  Serial.println("KAmodRP2040 Test");
  
  iic1.begin();
  button.begin(BUTTON_ADDR, iic1);
  
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);

  pinMode(25, OUTPUT);
  pinMode(26, OUTPUT);
  pinMode(27, OUTPUT);
  pinMode(28, OUTPUT);
  pinMode(29, OUTPUT);

  i = 0;
  dir = 0;
  ws_r = 0;
  ws_g = 0;
  ws_b = 0;
  WSpixel.neoPixelClear();
}

void loop() {
  WSpixel.neoPixelSetValue(0, (ws_r & 0xFF), (ws_g & 0xFF), (ws_b & 0xFF), true);
  digitalWrite(i, HIGH);

  if (button.isPressed() == true)
    delay(25);
  else
    delay(100);

  digitalWrite(i, LOW);

  if (dir == 0){
    i++;
    if (i==8) {
      i = 25;
      ws_r = 255;
      ws_g = 0;
      ws_b = 0;
    }
    if (i==30) {
      i = 28;
      dir = 1;
      Serial.print(" Tik...");
      ws_r = 0;
      ws_g = 255;
      ws_b = 0;
    }
  } else {
    if (i > 0){
      i--;
      if (i==24) {
        i = 7;
        ws_r = 0;
        ws_g = 0;
        ws_b = 255;
      }
    } else {
      i = 1;
      dir =  0;
      Serial.print(" Tak...");
      ws_r = 0;
      ws_g = 0;
      ws_b = 0;
    }
  }
}




Linki