본문 바로가기
코딩/라즈베리파이 피코

라즈베리파이 피코(Raspberry pi PICO) 개발환경 세팅하기 micropython

by DIYver 2022. 7. 21.

 

라즈베리파이 피코는 아두이노처럼 각종 센서를 읽고 구동기를 작동시키는 마이크로컨트롤러이다.
코딩은 micropython 과 C/C++ 로 할 수 있다고 한다.

공식 홈페이지에 방문해서 알아보자.

https://www.raspberrypi.com/documentation/microcontrollers/

 

Raspberry Pi Documentation - Microcontrollers

The official documentation for Raspberry Pi computers and microcontrollers

www.raspberrypi.com

 

공식 홈페이지를 방문하면 위의 화면처럼 나오는데,
여기서 MicroPython 을 클릭하고 화면을 조금 내리면 UF2 file 다운받는 링크가 있다.

자신의 보드가 Pico 면 위에를, wifi버전은 아래 Pico W 파일을 받으면 된다.
필자는 Pico 이기에 위의 파일을 받았다.
위의 사이트에서 다운받기 귀찮은 분들은 아래 파일을 받으면 된다.

rp2-pico-20220618-v1.19.1.uf2
0.58MB

 

그리고 Python 개발 툴인 Thonny - Python IDE를 설치해주도록 한다.

https://thonny.org/

 

Thonny, Python IDE for beginners

Thonny 4 is dedicated to Ukraine fighting the Russian invasion. 🇺🇦 Please support Ukraine! 🇺🇦 Download version 3.3.13 for Windows  •  Mac  •  For the curious: 4.0.0b3 Thonny Python IDE for beginners Features Easy to get started. Thonny

thonny.org

위의 홈페이지에 접속하고 자신의 os에 맞게 프로그램을 다운받으면 된다.

thonny-3.3.13.exe
17.11MB

Windows 의 경우 위의 설치파일을 다운받으면 된다.

thonny 의 경우 Python 3.7 이 탑재되어 있으므로(2022.07.20 기준)
3.7에 맞게 코딩을 해주면 되겠다.

 

설치가 완료되었으면 이제 아래 순서대로 따라하면 된다.

1. 라즈베리파이 피코의 BOOT SEL 버튼을 누른채로 컴퓨터 usb에 연결해준다. 연결되면 버튼에서 손을 뗀다.
2. 컴퓨터가 라즈베리파이를 인식하고 저장소가 생기는지 확인한다. RPI-RP2 가 떠야함 
3. 위에서 다운받은 UF2를 해당 저장소에 끌어서 넣으면 되고, 피코가 재부팅되는지 확인한다.
4. 이제 USB Serial 통신을 통해서 REPL 을 할 수 있다. (REPL : Read Evaluate Print Loop)

이제 위의 순서대로 진행해보도록 하자.


1 번
컴퓨터에서 바로 반응하면서 아래 사진처럼 메세지를 띄워준다.
디바이스가 준비되면 연결 완료된 것이다.

2,3 번
내컴퓨터에 들어가보면 저장소가 새로 생긴것을 확인할 수 있고,
해당 저장소에 UF2를 넣자마자 라즈베리파이 피코가 재부팅 되는 것을 확인할 수 있다.

4 번
이제 Thonny 코딩 프로그램을 실행시키면 된다.

처음 설치하면 위처럼 창이 뜨는데,
언어는 한국어, 초기세팅은 라즈베리파이로 해주면 된다.

시작하면 위처럼 뜨게 되는데,

레귤러모드로 변경을 누르고 프로그램을 재 실행 해준다.

그러면 이제 개발자에게 친숙한 프로그램 화면으로 바뀌어서 실행되는 것을 확인할 수 있다.

여기서 실행 >> 인터프리터 선택 >> MicroPython (Raspberry Pi Pico) 선택 >> 확인
을 진행해준다.

 

이제 Thonny 에서 코딩을 시작해보자.

간단하게 코딩을 하고
실행을 눌러보자
위의 버튼을 눌러도 되고, F5를 눌러도 된다.

그럼 위처럼 파일 저장을 어디에 할거냐고 묻는데,
Raspberry Pi Pico 를 선택하자.

파일이름에는 뒤에 확장자 *.py 를 꼭 붙여주도록 하자.
안 붙여줘도 실행은 되는 것 같은데, 붙이는게 여러모로 좋다.

라즈베리파이 공식에서 안내하기로는 파일명 뒤에 *.py 확장자 붙여주는 것을 권장하며
파일이름은 그 파일의 작동을 설명하는 이름으로 하는 것을 추천한다고 한다.
그리고 지금은 boot.py 나 main.py 로 저장하지 말고, 나중에 제대로 배울테니 배운다음에 boot.py 나 main.py 로 파일을 저장하라고 한다.

저장이 완료되면서 밑에 보면 명령이 수행되는 것을 확인할 수 있다.

이제 코드를 수정하고 F5나 실행버튼을 눌러보면 수정한대로 작동하는 것을 확인할 수 있다.

한글도 된다.

 

만약 위 설정대로 따라했는데도 잘 되지 않는다면
인터프리터 선택에서 펌웨어 설치 혹은 업데이트를 진행해보자.

처음에 Pico를 인식시켰던 것처럼 현재 화면에서 피코의 BOOTSEL 버튼을 누른채로 USB로 연결해주면
장치를 인식하고, 설치버튼이 활성화 될텐데, 설치하면 된다는 것이다.

펌웨어 설치 및 업데이트를 진행했으면 다시 위의 테스트를 진행해보면 되겠다.

 

 

 

라즈베리파이 피코를 이용해서 파이썬 단순 시리얼모니터 출력만 할 것은 아니니깐
이제 진짜로 GPIO 를 건드려서 무언가를 작동시켜보자.

회로 구성 따로 할 필요없이 내장 LED를 제어해보도록 하자.

피코의 내장 LED는 핀번호 25번이다.
이건 나중에 더 자세히 다루도록 하고, 코드를 직접입력하거나 복붙해서 입력하여 실행시켜보자.

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
    led_onboard.value(1)
    utime.sleep(5)
    led_onboard.value(0)
    utime.sleep(5)

import 를 통해 하드웨어 작동을 할거고, 시간관련 라이브러리를 사용하는 것을 알 수 있다.

led_onboard 라는 변수는 하드웨어 핀번호 25번을 출력으로 하면서 그에대한 상태값을 담당하는 변수로 설정을 한 것을 알 수 있다.

while 반복문에서 led_onboard.value(1) 은 25번 핀 출력을 HIGH 로 하겠다는 것을 알 수 있고,
led_onboard.value(0)은 25번 핀 출력을 LOW 하겠다는 것을 알 수 있다.
또한 utime.sleep(5) 는 5초동안 일시정지 하겠다는 것을 알 수 있다.

작동 영상은 아래와 같다.

https://youtu.be/fCENBNJYUmM

 

 

그리고 파이썬이기에 가능한 것인데,
단순 반복되는 위의 코드는 아래처럼 쓸 수 있다.

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
    led_onboard.toggle()
    utime.sleep(5)

위의 코드도 넣어서 작동해본다면 똑같이 작동하는 것을 알 수 있다.
toggle() 함수가 기존의 상태값과 반대되는 작동을 해주는 함수이다.

 

여러가지 프로젝트로 파일을 피코에 저장했다면
저장된 파일을 어떻게 볼 수 있는지 설명하겠다.

Thonny >> 보기 >> 파일 
을 순서대로 클릭하면 된다.

그러면 프로그램 좌측에 프로젝트 파일들이 보이게 된다.
실행하고 싶은 파일을 선택하고 F5 또는 실행버튼을 눌러주면 되겠다.

아두이노처럼 부팅되자마자 작동되게 하려면
main.py로 저장하면 된다.

일단 이렇게 하면 라즈베리파이 피코를 처음사용하는 세팅은 끝냈다고 할 수 있겠다.
이제 앞으로는 다양한 센서들을 사용해보면서 코딩을 진행해보도록 하겠다.

그리고 라즈베리파이 피코를 통해서 제품을 개발한다 했을때, 
빠르게 작동해야 한다면 당연히 파이썬으로 코딩할게 아니라 C/C++ 코딩으로 해야한다.
개발자라면 굳이 말 안해도 왜 그런지 알텐데, 기본 상식같은 것이니 몰랐다면 이해하고 넘어가자.

파이썬은 유저가 편하게 개발하는 대신 리소스를 많이 잡아먹고
C/C++은 유저가 메모리 크기까지 다 정하면서 코딩하기에 작동에 있어서 최적화 되어 있다.
따라서 속도면에서 C/C++을 이길 수 없다.
만약 개발 방향이 편리성이 아니라 정확하고 신속한 처리라면 C/C++ 개발환경을 갖추도록 하자.
필자는 micro Python을 다 해본다음에 C/C++ 관련 자료를 올릴 예정이다.

 

 

댓글