|
|
|
|
![]() 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