|
|
|
|
![]() Waveshare RP2040-Zero 高性能ピコライクMCUボード Raspberry PiマイクロコントローラーRP2040 カステレーションモジュールでキャリアボードに直接はんだ付け可能 - 2個 ASIN: B0B2Z3YWB9 |
![]() Seeed Studio XIAO RP2040 マイクロコントローラー デュアルコア ARM Cortex M0+ プロセッサ Arduino、MicroPython、サーキットパイソンをサポートし、豊富なインターフェースを備えています。 ASIN: B09NNVNW7M |
![]() KKHMF 20個 USB タイプA メスソケット ブレイクアウトボード 4Pアダプタコネクタ 2.54mm ソルダープリント DIY 基板 ブレッドボード 電源 ASIN: B099PCM2D2 |
![]() ARCELI 20値0805SMD抵抗器アソートメントキットSMD抵抗器各20合計400 ASIN: B07RTH6JHX ※ 22Ωの抵抗が必要だから |
![]() GAOHOU 5個 0.42インチ 4ピン OLEDディスプレイ SSD1306 LCD IICインタフェースモジュール 白表示 ASIN: B0CDC6VSKC ※ I2C OLED SSD1306 |
# Raspberry Pi Pico SDKのセットアップ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib cd git clone https://github.com/raspberrypi/pico-sdk cd pico-sdk/ export PICO_SDK_PATH=`pwd` export | grep PICO # declare -x PICO_SDK_PATH="/home/user/pico-sdk" git submodule update --init # Submodule 'lib/btstack' (https://github.com/bluekitchen/btstack.git) registered for path 'lib/btstack' # Submodule 'lib/cyw43-driver' (https://github.com/georgerobotics/cyw43-driver.git) registered for path 'lib/cyw43-driver' # Submodule 'lib/lwip' (https://github.com/lwip-tcpip/lwip.git) registered for path 'lib/lwip' # Submodule 'lib/mbedtls' (https://github.com/Mbed-TLS/mbedtls.git) registered for path 'lib/mbedtls' # Submodule 'tinyusb' (https://github.com/hathach/tinyusb.git) registered for path 'lib/tinyusb'
# pico_device_and_hostのビルド git clone https://github.com/brendena/pico_device_and_host cd pico_device_and_host/ mkdir build cd build cmake .. make -j # [100%] Linking CXX executable USB_DEVICE_AND_KEYBOARD.elf # Memory region Used Size Region Size %age Used # FLASH: 57220 B 2 MB 2.73% # RAM: 21968 B 256 KB 8.38% # SCRATCH_X: 2 KB 4 KB 50.00% # SCRATCH_Y: 0 GB 4 KB 0.00% # [100%] Built target USB_DEVICE_AND_KEYBOARD ls -l USB_DEVICE_AND_KEYBOARD.elf # -rwxr-xr-x 1 user user 162636 Aug 5 00:09 USB_DEVICE_AND_KEYBOARD.elf ls -l *.uf2 # -rw-r--r-- 1 user user 114688 Aug 5 00:09 USB_DEVICE_AND_KEYBOARD.uf2
nano Pico-PIO-USB/src/pio_usb_configuration.h #ifndef PIO_USB_DP_PIN_DEFAULT #define PIO_USB_DP_PIN_DEFAULT 0 #endif #define PIO_USB_DM_PIN_DEFAULT (PIO_USB_DP_PIN_DEFAULT + 1)
nano main_host.c #include <stdlib.h> #include <stdio.h> #include <string.h> #include "pico/stdlib.h" #include "pico/multicore.h" #include "pico/bootrom.h" #define PIO_USB_DP_PIN_DEFAULT 10 #include "pio_usb.h" #include "tusb.h" #include "usb_descriptors.h" $ diff USB_DEVICE_AND_KEYBOARD.hex USB_DEVICE_AND_KEYBOARD.hex_ 2654c2654 < :10A5B8000D0A00000A000000010001000000000070 --- > :10A5B8000D0A00000000000001000100000000007A













CMake Error at pico_sdk_import.cmake:44 (message): SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git. Call Stack (most recent call first): CMakeLists.txt:3 (include) -- Configuring incomplete, errors occurred! Solution cd git clone https://github.com/raspberrypi/pico-sdk cd pico-sdk/ export PICO_SDK_PATH=`pwd` export | grep PICO # declare -x PICO_SDK_PATH="/home/user/pico-sdk"
CMake Warning at /home/user/pico-sdk/src/rp2_common/tinyusb/CMakeLists.txt:10 (message):
TinyUSB submodule has not been initialized; USB support will be unavailable
hint: try 'git submodule update --init' from your SDK directory
(/home/user/pico-sdk).
CMake Error at CMakeLists.txt:8 (add_subdirectory):
The source directory
/home/user/pico_device_and_host/Pico-PIO-USB
does not contain a CMakeLists.txt file.
-- Configuring incomplete, errors occurred!
Solution
cd
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk/
git submodule update --init
#define HOST_PIN_DP 10 // Pin used as D+ for host, D- = D+ + 1D+ = GPIO 10
Error: CPU Clock = 133000000, PIO USB require CPU clock must be multiple of 120 Mhz Change your CPU Clock to either 120 or 240 Mhz in Menu->CPU Speed #error TinyUSB is not selected, please select it in "Tools->Menu->USB Stack" "Tools->Menu->USB Stack"・Adruino RP2040 Pico-PIO-USB PIO USB require CPU clock must be multiple of 120 Mhz


No monitor available for the port protocol uf2conv. Could not connect to UF2_Board uf2conv port.
void setup()
{
Serial1.begin(115200);
Serial.begin(115200);
//while ( !Serial ) delay(10); // wait for native usb
while(!Serial && (millis() < 5000));
Serial.println("setup()");
Serial.println("TinyUSB Dual Device Info Example");
}
● BUFFALO USB GAME JOY PAD BSGP815GY USB\VID_0583&PID_2060 USB\VID_0583&PID_2060 is recognizes as 2-axis 8-button gamepad 19:50:21.571 -> TinyUSB Dual Device Info Example 19:50:31.336 -> Device removed, address = 1 19:50:34.665 -> Device attached, address = 1 19:50:34.665 -> Device 1: ID 0583:2060 19:50:34.665 -> Device Descriptor: 19:50:34.665 -> bLength 18 19:50:34.665 -> bDescriptorType 1 19:50:34.665 -> bcdUSB 0110 19:50:34.665 -> bDeviceClass 0 19:50:34.665 -> bDeviceSubClass 0 19:50:34.665 -> bDeviceProtocol 0 19:50:34.665 -> bMaxPacketSize0 8 19:50:34.665 -> idVendor 0x0583 19:50:34.665 -> idProduct 0x2060 19:50:34.665 -> bcdDevice 0100 19:50:34.665 -> iManufacturer 0 19:50:34.665 -> iProduct 2 USB,2-axis 8-button gamepad 19:50:34.665 -> iSerialNumber 0 19:50:34.665 -> bNumConfigurations 1 ● USB Flash Drive USB\VID_058f&PID_6387 Alcor Micro Corp. Flash Drive USB\VID_058f&PID_6387 20:41:05.361 -> TinyUSB Dual Device Info Example 20:41:41.790 -> Device attached, address = 1 20:41:41.790 -> Device 1: ID 058f:6387 20:41:41.790 -> Device Descriptor: 20:41:41.790 -> bLength 18 20:41:41.790 -> bDescriptorType 1 20:41:41.790 -> bcdUSB 0200 20:41:41.790 -> bDeviceClass 0 20:41:41.790 -> bDeviceSubClass 0 20:41:41.790 -> bDeviceProtocol 0 20:41:41.790 -> bMaxPacketSize0 64 20:41:41.790 -> idVendor 0x058f 20:41:41.790 -> idProduct 0x6387 20:41:41.790 -> bcdDevice 0100 20:41:41.790 -> iManufacturer 1 Generic 20:41:41.790 -> iProduct 2 Mass Storage 20:41:41.790 -> iSerialNumber 3 xxxxxxxx 20:41:41.915 -> bNumConfigurations 1 20:43:51.818 -> Device removed, address = 1

#ifndef PIO_USB_DP_PIN_DEFAULT #define PIO_USB_DP_PIN_DEFAULT 10 #endif
# Raspberry Pi Pico SDKのセットアップ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib cd git clone https://github.com/raspberrypi/pico-sdk cd pico-sdk/ export PICO_SDK_PATH=`pwd` export | grep PICO # declare -x PICO_SDK_PATH="/home/user/pico-sdk" git submodule update --init # Pico-PIO-USBの examplesのビルド cd git clone https://github.com/sekigon-gonnoc/Pico-PIO-USB cd Pico-PIO-USB/ cd examples/ mkdir build cd build cmake .. make ls -l host_hid_to_device_cdc/ # drwxr-xr-x 1 user user 4096 Aug 6 18:23 CMakeFiles # -rw-r--r-- 1 user user 156113 Aug 6 18:23 Makefile # -rw-r--r-- 1 user user 1012 Aug 6 18:23 cmake_install.cmake # -rwxr-xr-x 1 user user 56008 Aug 6 18:24 host_hid_to_device_cdc.bin # -rw-r--r-- 1 user user 980701 Aug 6 18:24 host_hid_to_device_cdc.dis # -rwxr-xr-x 1 user user 157644 Aug 6 18:24 host_hid_to_device_cdc.elf # -rw-r--r-- 1 user user 314467 Aug 6 18:24 host_hid_to_device_cdc.elf.map # -rw-r--r-- 1 user user 157593 Aug 6 18:24 host_hid_to_device_cdc.hex # -rw-r--r-- 1 user user 112128 Aug 6 18:24 host_hid_to_device_cdc.uf2 ls -l */*.uf2 -rw-r--r-- 1 user user 112128 Aug 6 18:24 capture_hid_report/capture_hid_report.uf2 -rw-r--r-- 1 user user 112128 Aug 6 18:24 host_hid_to_device_cdc/host_hid_to_device_cdc.uf2 -rw-r--r-- 1 user user 87552 Aug 6 18:24 usb_device/usb_device.uf2 # .uf2ファイルを RP2040に書き込みます # host_hid_to_device_cdc USBキーボードや USBマウスの入力を UARTのシリアルに出力します。



# Pico Pico USB cd git clone https://github.com/sekigon-gonnoc/qmk_firmware sekigon cd sekigon sudo ./util/qmk_install.sh python3 -m pip install qmk # WARNING: The script qmk is installed in '/home/user/.local/bin' which is not on PATH. PATH="$HOME/.local/bin:$PATH" qmk -V # 1.0.0 make git-submodule # QMK Firmware bmp-0.11.3 cd keyboards/pico_pico_usb/ # Make example for this keyboard (after setting up your build environment): make pico_pico_usb/simple_split:default # Flashing example for this keyboard by picotool: make pico_pico_usb/simple_split:default:flash --- # Convert firmware into uf2 format: make pico_pico_usb/simple_split:default:uf2 Compiling: quantum/via.c [OK] Linking: .build/pico_pico_usb_simple_split_default.elf [WARNINGS] | | Memory region Used Size Region Size %age Used | FLASH: 66764 B 2 MB 3.18% | RAM: 25604 B 256 KB 9.77% | SCRATCH_X: 2 KB 4 KB 50.00% | SCRATCH_Y: 0 GB 4 KB 0.00% | Creating binary load file for flashing: .build/pico_pico_usb_simple_split_default.bin [OK] Creating load file for flashing: .build/pico_pico_usb_simple_split_default.hex [OK] Creating UF2 file for deployment: .build/pico_pico_usb_simple_split_default.uf2 [OK] Converting to uf2, output size: 133632, start address: 0x10000000 Wrote 133632 bytes to pico_pico_usb_simple_split_default.uf2. ls -l *.uf2 # -rw-r--r-- 1 user user 133632 Aug 6 19:32 pico_pico_usb_simple_split_default.uf2
keyboards/pico_pico_usb/pico_pio_usb/pio_usb_configuration.h #define PIO_USB_DP_PIN_DEFAULT 10
Compiling: /home/user/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp
pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp:12:10: fatal error: pico.h: No such file or directory
12 | #include "pico.h"
| ^~~~~~~~
compilation terminated.
[ERRORS]
Solution
ls -l $PICO_SDK_PATH/src/boards/include/boards/
cp $PICO_SDK_PATH/src/boards/include/boards/pico.h keyboards/pico_pico_usb/
boards/pico.h
Compiling: tmk_core/protocol/pico/protocol.c
tmk_core/protocol/pico/protocol.c:199:6: error: conflicting types for 'tud_hid_report_complete_cb'
199 | void tud_hid_report_complete_cb(uint8_t itf, uint8_t const* report,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from pico-sdk/lib/tinyusb/src/tusb.h:70,
from tmk_core/protocol/pico/protocol.c:40:
pico-sdk/lib/tinyusb/src/class/hid/hid_device.h:119:19: note: previous declaration of 'tud_hid_report_complete_cb' was here
119 | TU_ATTR_WEAK void tud_hid_report_complete_cb(uint8_t instance, uint8_t const* report, uint16_t len);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
[ERRORS]
Solution
export -n PICO_SDK_PATH
unset PICO_SDK_PATH
rm keyboards/pico_pico_usb/pico.h
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { 2, 3, 4 } // 3個にする
#define MATRIX_COL_PINS { 5, 6, 7, 8 } // 4個にする
cd git clone --recursive https://github.com/qmk/qmk_firmware qmk_rp2040 cd cd qmk_rp2040 ls -l ./lib/chibios/ sudo ./util/qmk_install.sh python3 -m pip install qmk PATH="$HOME/.local/bin:$PATH" qmk -V # 1.0.0 make git-submodule
make handwired/onekey:default:uf2
動作 OK!
rules.mk
DEFAULT_FOLDER = handwired/onekey/rp2040
info.json
"matrix_pins": {
"cols": ["GP0"],
"rows": ["GP4"]
},
"backlight": {
"pin": "GP16"
},
"ws2812": {
"pin": "GP16"
}
config.h
#define QMK_WAITING_TEST_BUSY_PIN GP8
#define QMK_WAITING_TEST_YIELD_PIN GP9
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP16
#define AUDIO_PIN GP27
#define ADC_PIN GP26
rules.mk
PICO_FLASH_SPI_CLKDIV = 4
make handwired/alcor_dactyl:default:uf2
動作 OK!
config.h
#define SERIAL_USART_TX_PIN GP26
#define SERIAL_USART_RX_PIN GP27
info.json
"matrix_pins": {
"cols": ["GP6", "GP7", "GP8", "GP9", "GP12", "GP13", "GP14"],
"rows": ["GP5", "GP4", "GP3", "GP2", "GP1", "GP0"]
keymap.c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_NO,
KC_NO -> KC_8
rules.mk
PICO_FLASH_SPI_CLKDIV = 4
cd git clone --recursive https://github.com/sekigon-gonnoc/qmk_firmware.git quantizer_mini --depth 1 -b quantizer_mini cd cd quantizer_mini cd ./lib/ git clone https://github.com/sekigon-gonnoc/Pico-PIO-USB -b for-keyboard-quantizer cd .. sudo ./util/qmk_install.sh python3 -m pip install qmk # WARNING: The script qmk is installed in '/home/user/.local/bin' which is not on PATH. PATH="$HOME/.local/bin:$PATH" qmk -V # 1.0.0 make git-submodule # QMK Firmware kqrp-0.1.4
quantizer_mini\keyboards
- keyboard_quantizer
- sekigon
keyboards\keyboard_quantizer\mini
mini.c
pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG;
pio_cfg.pin_dp = 10;
rules.mk
PICO_FLASH_SPI_CLKDIV = 8
make keyboard_quantizer/mini:default:uf2
動作 OK!
# Compiling: tmk_core/protocol/pico/usbd.c [OK]
# Linking: .build/keyboard_quantizer_mini_default.elf [WARNINGS]
# |
# | Memory region Used Size Region Size %age Used
# | FLASH: 89284 B 2 MB 4.26%
# | RAM: 34056 B 256 KB 12.99%
# | SCRATCH_X: 2 KB 4 KB 50.00%
# | SCRATCH_Y: 0 GB 4 KB 0.00%
# |
# Creating binary load file for flashing: .build/keyboard_quantizer_mini_default.bin [OK]
# Creating load file for flashing: .build/keyboard_quantizer_mini_default.hex [OK]
# Creating UF2 file for deployment: .build/keyboard_quantizer_mini_default.uf2 [OK]
# Converting to uf2, output size: 178688, start address: 0x10000000
# Wrote 178688 bytes to keyboard_quantizer_mini_default.uf2.
ls -l *.uf2
# -rw-r--r-- 1 user user 178688 Aug 7 20:53 keyboard_quantizer_mini_default.uf2
static const uint8_t usbh_dp_gpio = 10;
// core1 setup.
void setup1() {
init_device_info();
delay(10); // wait a while for core0 setup() done.
pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG;
pio_cfg.pin_dp = usbh_dp_gpio;
USBHost.configure_pio_usb(1, &pio_cfg);
USBHost.begin(1);
}
add_compile_definitions(
TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1
)
target_compile_definitions(myexecutable PRIVATE PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1)
$ grep device_enumeration_fix myexecutable.elf.map
.text.rp2040_usb_device_enumeration_fix
0x1000d428 rp2040_usb_device_enumeration_fix