KAmod RP2040 (PL): Difference between revisions
From Kamamilabs.com - Wiki
No edit summary |
|||
| Line 93: | Line 93: | ||
<syntaxhighlight lang="arduino" line> | <syntaxhighlight lang="arduino" line> | ||
//Need: BOARDS MANAGER -> Arduino Mbed OS RP2040 Boards | //Need: BOARDS MANAGER -> Arduino Mbed OS RP2040 Boards | ||
//Board: " | //Board: "Raspberry Pi Pico" | ||
//Need: NeoPixelConnect.h | //Need: NeoPixelConnect.h | ||
| Line 203: | Line 203: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
==== Linki ==== | ==== Linki ==== | ||
*[https://download.kamami.pl/p587555-rp2040-datasheet.pdf Karta katalogowa układu RP2040] | *[https://download.kamami.pl/p587555-rp2040-datasheet.pdf Karta katalogowa układu RP2040] | ||
Revision as of 18:58, 14 October 2025

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ł |

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: "Raspberry Pi Pico"
//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;
}
}
}