반응형

Raspberry Pi Pico에서 USB Serial을 사용하여 터미널로 문자열을 전송하는 예제입니다. 



2021 04. 24 - 최초작성



진행하기 전에 다음 포스트를 먼저 진행해야 합니다. 



Windows에서 Raspberry Pi Pico C++ 프로그래밍 하기

 

https://webnautes.tistory.com/1475 



1.다음 파일을 다운로드하여 앞에서 진행한 pico 폴더의 다음 위치에 압축을 풀어둡니다.

폴더 이름을 hello_usb이라고 이름을 바꾸었습니다.

 

https://github.com/webnautes/nudapeu/blob/master/project1.zip 

 




2. 다음 위치에 있는 hello_usb.c를 복사하여 

 



다음 위치에 붙여넣기합니다.

 




3. CMakeLists.txt 파일을 열어서 다음 부분을 수정합니다. 

 

# enable usb output, disable uart output

pico_enable_stdio_usb(${projname} 1)

pico_enable_stdio_uart(${projname} 0)

 




4. 윈도우 키를 누른 후, “ Developer Command”을 입력하여 Developer Command Prompt for VS 2019를 실행합니다. 

 

기존 sdk 폴더를 삭제하고 git를 사용하여 pico sdk를 다시 다운로드하고 에러 메시지에 보인 명령을 수행했습니다. 

 

D:\work\pico>rmdir /s pico-sdk

pico-sdk, 계속하시겠습니까(Y/N)? y

 

D:\work\pico>git clone https://github.com/raspberrypi/pico-sdk.git

Cloning into 'pico-sdk'...

remote: Enumerating objects: 2787, done.

remote: Counting objects: 100% (317/317), done.

remote: Compressing objects: 100% (174/174), done.

remote: Total 2787 (delta 136), reused 247 (delta 104), pack-reused 2470

Receiving objects: 100% (2787/2787), 1.60 MiB | 8.22 MiB/s, done.

Resolving deltas: 100% (1246/1246), done.

 

D:\work\pico>cd pico-sdk

 

D:\work\pico\pico-sdk>git submodule update --init

Submodule 'tinyusb' (https://github.com/raspberrypi/tinyusb.git) registered for path 'lib/tinyusb'

Cloning into 'D:/work/pico/pico-sdk/lib/tinyusb'...

Submodule path 'lib/tinyusb': checked out '11c23f88bf42f64ce14b8a7b0b2a4e207dc4dd12'




sdk 폴더를 git를 사용하여 다시 다운로드 받은 것은 다음 에러 때문입니다.

 

다음과 같은 에러 발생

 

D:\work\pico\serial\build>cmake -G "NMake Makefiles" ..

PICO_SDK_PATH is D:/work/pico/pico-sdk

PICO platform is rp2040.

PICO compiler is

PICO_GCC_TRIPLE defaulted to arm-none-eabi

PICO target board is pico.

Using board configuration from D:/work/pico/pico-sdk/src/boards/include/boards/pico.h

CMake Warning at D:/work/pico/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

  (D:/work/pico/pico-sdk).




5. hello_usb 폴더에 있는 build 폴더로 이동합니다. 

 

D:\>cd work\pico\hello_usb\build

 

D:\work\pico\hello_usb\build>




6. 다음 두 명령을 차례로  실행합니다.

 

cmake -G "NMake Makefiles" ..  

 

nmake 




7. 윈도우 탐색기로  hello_usb  아래에 있는 build 폴더로 이동하면  hello .uf2 파일을 찾을 수 있습니다.  

 



이 파일을 앞에서 한 방식대로 pico로 복사하면 됩니다. 

 

pico의 BOOTSEL 버튼을 누른 채 PC에 연결합니다.

 hello.uf2를 pico를 연결해 추가된 외장 저장공간으로 복사합니다. 




8. 장치관리자에서 확인해보면 COM포트가 추가된 것을 볼 수 있습니다. 

 




9. 시리얼 터미널에서 확인해보면 “Hello, world!” 문자열이 일정한 간격으로 전송됩니다. 

 




10.hello_usb.c를 살펴보면 printf문으로 출력한 결과가 시리얼 터미널에서 확인되는 겁니다. 

sleep_ms를 사용하여 1초 간격으로 문자열이 출력되록 했네요.  

 

/**

 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.

 *

 * SPDX-License-Identifier: BSD-3-Clause

 */


#include <stdio.h>

#include "pico/stdlib.h"


int main() {

    stdio_init_all();

    while (true) {

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

        sleep_ms(1000);

    }

    return 0;

}

 

반응형

해본 것을 문서화하여 기록합니다.
부족함이 있지만 도움이 되었으면 합니다.


포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">