이번에는 라즈베리파이
피코를 이용해서 PC와 시리얼 통신을 하는 여러가지 상황을 다뤄보려한다. 1. 키보드 입력 받기
피코에 올려서 테스트를 해도 되고, input() 함수를 이용해서 키보드값을 받아올 수
있고, 위의 예제를 통해서 다양하게 테스트를 해보면 되겠다. 2. 키보드에서 숫자 입력 받아서 내장 LED 깜빡거리게 하기
위의 코드는 아래 작동 영상으로 확인하면 되겠다. https://youtu.be/q6cealCXqGg LED 제어 관련 설명은 저번시간에 다뤘었으므로, 라즈베리파이 피코(Raspberry pi PICO) 개발환경 세팅하기 micropython 라즈베리파이 피코는 아두이노처럼 각종 센서를 읽고 구동기를 작동시키는 마이크로컨트롤러이다. 코딩은 micropython 과 C/C++ 로 할 수 있다고 한다. 공식 홈페이지에 방문해서 알아보자. https://www diyver.tistory.com 코드를 보면 1번과 좀 다른 것을 알 수 있는데 앞에 int( ) 로 묶어주는 장면이 있는데, 그 밑으로는 파이썬 기본 코드이므로 이해하기 어렵지 않을 것이다. 위의 작동 영상을 보면 키보드 입력한 대로 모스부호로 LED 출력이 되는 것을 볼 수 있다. 코드는 정답이 없기 때문에 전체 공개는 하지 않기로 하고, 따라하다가 잘 안되는 경우 댓글로 문의를 남겨주면 코드를 보고 잘못된 부분을 알려주는 방향으로 하려한다. 3번 까지 완벽하게
따라했다면, 안녕하세요 항상 날로먹는 구차니 입니다. raspberry pi pico(이하 pico)는 이름은 라즈베리 인데 실제로는 아두이노에 가까운 제품입니다. specification
https://www.raspberrypi.org/documentation/rp2040/getting-started/#board-specifications 공식 홈페이지에서는 micropython을 쓰라고 하는데 https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython 파일 업로드 하는 것이 불편해서 circuitpython을 이용하겠습니다. https://circuitpython.org/board/raspberry_pi_pico/ USB HID 만들기 HID는 Human Interface Device의 약자로 마우스 키보드 등의 사람과 상호작용을 할 수 있는 장치를 의미합니다. Step 0. 지릅니다! (한푼도 안 받고 내돈내산입니다.) https://www.devicemart.co.kr/goods/view?no=13921792 << VAT 별도 5400 http://itempage3.auction.co.kr/DetailView.aspx?itemno=C362541750 << VAT 포함 5940 (결국은 동일가격) http://itempage3.auction.co.kr/DetailView.aspx?itemno=C367078792 << 핀헤더 실장버전 9500 Step 1. circuit python 6.3.0 (2021.07.02 기준) 을 업로드 하기 위해 uf2 확장자로 된 펌웨어를 다운로드 받습니다. 그리고 라이브러리를 다운로드 받습니다. circuit python 6.3.0으로 받으니 라이브러리는 Bundle Version 6.x로 받으면 됩니다. https://circuitpython.org/board/raspberry_pi_pico/ https://circuitpython.org/libraries Step 2. 한번도 사용하지 않은 pico 라면 usb micro 케이블을 이용하여 PC와 연결하면 외장 USB 메모리로 인식됩니다. 한번이라도 사용한 녀석이라면 BOOTSEL 버튼을 누른채로 usb micro 케이블을 이용하여 PC와 연결합니다. Step 3. uf2 펌웨어를 외장 메모리로 끌어다 떨어트립니다. Step 4. 재시작이 되면 좋고, 아니면 선을 뽑았다 다시 꼽습니다. lib 디렉토리와 code.py를 발견할 수 있습니다. Step 5. lib 디렉토리에 Step 1. 에서 받은 라이브러리의 압축을 풀어 그중 adafruit_hid 디렉토리를 lib/adafruit_hid 으로 복사합니다. (전체 다 복사하려면 용량 부족해서 복사할 수 없습니다) Step 6. 메모장이나 python 수정 가능한 텍스트 에디터를 이용하여 code.py 수정합니다. keys_pressed = [Keycode.A, "Hello, World!", "https://cytron.io/p-maker-pi-pico\n"] 해당 라인이 버튼 누를 때 마다 작동할 행동이며 Keycode.A는 GP20번에 연결된 스위치를 누를 때 A 키를 누르게 하며 (다만 코드 상에 SHIFT를 누르게 되어있으니 소문자 a가 나올 것으로 예상됩니다) "Hello World!" 는 GP21번에 연결된 스위치를 누를 때 문장을 입력하게 하고 "https://cytron.io/p-maker-pi-pico\n"는 GP22번에 연결된 스위치를 누를 때 문장을 입력하고 마지막에 엔터를 치게 합니다. 아래처럼 코드를 수정하면 Ctrl-x, Ctrl-c, ctrl-v를 하는 전용 키보드를 만드실 수 있습니다. keys_pressed = [Keycode.X, Keycode.C, Keycode.V] control_key = Keycode.CONTROL https://tutorial.cytron.io/2021/02/16/keyboard-emulator-using-raspberry-pi-pico-maker-pi-pico-and-circuitpython/ Step 7. 곱게(?) 우클릭을 하여 USB 메모리를 제거하고 USB선을 뽑고 배선 작업을 합니다. 준비물은 스위치와 선입니다. 심화작업 Step 8. 컨트롤 키와 알트키 등이 동시에 눌리게 하려면 아래와 같이 수정하면 됩니다. kbd.press(Keycode.CONTROL, Keycode.X) kbd.press(Keycode.CONTROL, ,Keycode.SHIFT, Keycode.X) https://circuitpython.readthedocs.io/projects/hid/en/latest/api.html 딸 다섯 아들 하나 아빠 (큰 딸, 작은 딸, 왕큰 딸, 앵무새, 암 뭉뭉이, 수 뭉뭉이) - minimonk.net |