Embedded 105

Raspberry Pi Pico + dht11를 이용한 온도 습도 테스트와 1 wire 통신 소스 분석

안녕하세요.   hdt11 온도, 습도 센서를 아두이노에서 다루어 보았는데, Raspberry Pi Pico에서도 테스트를 해보자 생각이 들었습니다.  Python으로 된 온도와 습도를 가져오는 부분의 소스 설명은 많이 있지만, 실제적으로 hdt11에 1 wire 통신 쪽을 설명해 주는 자료는 많이 없어서 간단하게 Datasheet 보면서 python으로 된 소스를 확인해 보았습니다.  1. hdt11 연결    핀 설명 : SIG 핀, VCC(3~5.5V), GND 핀으로 구성되어 있으며 hdt11 모듈 자체로 구매하면 SIG 핀  Pull-Up 저항을 부착할 것을 권하고 있습니다. 작은 모듈 타입으로 된 것을 구매하면 저항 붙여서 3핀으로 되어있습니다.   - Raspberry Pi Pico     ..

Raspberry Pi Pico 내부 온도 센서 값 읽기

안녕하세요.  이번에는 Raspberry Pi Pico의 온도센서의 값을 읽어 보도록 하겠습니다. Raspberry Pi Pico에는 내부적 온도 센서가 ADC(Analog to Digital Converters) 한 개의 핀에  연결되어 있습니다. 그래서 이 핀을 이용해서 온도를 디지털로 읽어 볼 수가 있습니다.  1. 하드웨어 구성    Raspberry Pi Pico와 시리얼 통신을 통해서 값을 가져오도록 하겠습니다. 그래서 필요한 것은 Pico와 연결할 수 있는 USB Micro 5 pin케이블만 있으면 됩니다.     Pico 핀 맵을 보면 ADC0, 1, 2 가 있고, ADC_VREF가 있습니다. 그런데 물리적으로 온도 센서는 외부 핀으로 나와 있지 않습니다. 그렇다면 어디에 있을까요? 바로 ..

Raspberry Pi Pico “RP2 Boot” 장치 드라이버 경고가 나타날 경우

안녕하세요. Raspberry Pi Pico가 장치로 잡히지 않는 경우가 발생해서 해결하는 방법을 확인해 보았습니다.  1. 문제 발생 현상   Pico를 컴퓨터에 연결하면 프로그램할 수 있는 장치 드라이버로 잡히지 않고 장치 관리자에 RP2 Boot로 경고가 표시됩니다. 혹은 알 수 없는 장치로 나타납니다.   2. 해결방법 1) Raspberry Pi 사이트 RP2040 링크 UF2 파일 다운로드   Resetting Flash Memory UF2 펌웨어 파일을 받아서 Pico에 넣어 보았습니다.  설명대로 메모리 내용은 정리되었습니다.      그러나 파일만 사라지고 장치 드라이버는 잡히지 않았습니다. 2) MicroPython UF2 펌웨어( 해결 완료 )    Raspberry Pi 사이트에서 ..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Power your Raspberry Pi Pico) – 10 (마지막 편)

안녕하세요.   이번 편은 라즈베리 피코 기초 마지막 내용으로 전원을 어떻게 사용할지에 대한 내용과 실제 파일을 올려서 동작시키는 내용을 담고 있습니다.  아두이노에는 Vin이라고 외부 입력 핀을 만들어 놓고 있습니다. 그런데 Raspberry Pi Pico에서는 VSYS 핀으로 입력을 받으며, 5.5V 이상 받을 수가 없습니다. 그러나 낮은 전압에서 동작할 수 있게 되어있습니다.  Pico 작동 전압이 3.3V인데 입력 전원 범위를 1.8V~5.5V로 하고 있습니다. 이것이 가능한 이유는 벅-부스터 (rt6150b-33gqw)가 장착되어 있기 때문입니다.  벅-부스터를 간단하게 설명하면 출력 전압을 입력 전압보다 낮출 수도, 높일 수도 있는 컨버터입니다. 그렇기 때문에 낮은 전압에서도 사용 가능합니다...

[번역 프로젝트] Getting started with Raspberry Pi Pico (Control an LED with an analogue input) – 9

안녕하세요.   이전 내용에서 For문을 이용해서 자동으로 밝기가 조절되게 했는데, 이번에는 가변저항을 부착해서 아날로그 값으로 읽어서 듀티 값으로 적용하는 것입니다. 추가 부품은 가변저항으로, 가능하다면 1KΩ 이상 되는 저항을 이용하는 것을 추천드립니다. 테스트는 10KΩ으로 하였습니다.  가변저항 값을 변경하여 아날로그 핀에 입력되는 전압을 조절합니다. 그 입력되는 값을 사용하여 LED의 밝기를 제어하는 것입니다.    가변저항으로 LED 밝기 조절하기  Raspberry Pi Pico에는 아날로그 신호를 수신할 수 있는 입력 핀이 있습니다. 즉, 1과 0(켜기 및 끄기)의 값만 읽는 대신 그 사이의 값을 읽을 수 있습니다.  가변저항(Potentiometer)은 이 기능을 위한 완벽한 아날로그 장..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Control LED Brightness with PWM) – 8

안녕하세요.  이번에는 켜고 끄는 것을 넘어서, 밝기를 조절할 수 있는 것을 확인할 수 있습니다.밝기 조절하기 위해서 PWM(Pulse Width Modulation)라는 기술이 필요한데, 간단히 말해서 일정한 주기(주파수) 내에서 파형의 폭(Duty)을 조절해서 밝기(전압)를 저절 한다고 보시면 편하지 않을까 합니다.   PWM으로 LED 밝기 조절하기   Pulse Width Modulation을 사용하면 LED와 같은 디지털 장치에 아날로그 동작을 할 수 있습니다. 즉, LED를 단순히 켜거나 끄는 것이 아니라 밝기를 제어할 수 있습니다.   이 내용에서 마지막(이전) 단계에서 사용한 회로를 사용할 수 있습니다.  Thonny에서 새 파일을 열고 다음 코드를 추가합니다. from machine im..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Use digital inputs and outputs) – 7

안녕하세요.  이번 내용은 GPIO 핀을 통한 입력과 출력을 Button과 LED를 통해 테스트해 보는 것입니다.추가로 준비할 것은 3V 혹은 5V LED 1개와 택트(Tack) 스위치 1개, 저항 1개(50Ω~330Ω), M-M 점퍼 3~4개가 필요합니다.  디지털 입력과 출력 사용하기   이제 기본 사항을 알았으므로 Raspberry Pi Pico로 외부 LED를 제어하고 버튼에서 입력을 읽는 것을 배울 수 있습니다.  아래 이미지와 같이 약 50~330Ω 사이의 저항, LED와 한 쌍의 M-M 점퍼 리드를 사용하여 Raspberry Pi Pico와 연결합니다.(추가 내용 : - LED마다 방향성이 있으므로 멀티 메타기로 확인하거나 육안으로 LED를 안을 볼 때 면적이 작은 쪽이 +로 볼 수 있습니다..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Blink the onboard) – 6

안녕하세요.  이번에는 LED가 일정 주기에 맞추어 깜박이게 하는 내용입니다. 어려운 내용은 없고, 주파수와 시간 관계만 조금 알고 있으면 됩니다.   t(시간)는 1 / f(주파수)라는 공식입니다. 예로 2.5Hz라고 하면 400ms로 신호가 발생한다고 생각하시면 됩니다.    셸(Shell)은 모든 것이 제대로 작동하는지 확인하고 빠른 명령을 시도하는데 유용합니다.  그러나 파일에 더 긴 프로그램 코드를 넣는 것이 좋습니다.   Thonny는 MicroPython 프로그램을 Raspberry Pi Pico에 직접 저장하고 실행할 수 있습니다.   이 단계에서는, 루프 안에서 보드의 LED를 켜고 끄는 MicroPython 프로그램을 만들 것입니다.   Thonny의 기본 편집기 창을 클릭합니다.   ..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Use the Shell) – 5

안녕하세요.   이번 내용은 Thonny Shell 창에서 Python 코드를 입력해서 LED를 간단하게 제어해 보는 것입니다.윈도우 버전으로 실행하지만, 라즈베리파이 OS와 리눅스 상에 Thonny도 크게 차이가 없을 것입니다.    이번 단계에서는 Thonny Shell을 사용하여 Raspberry Pi Pico에서 간단한 Python 코드를 실행하는 것입니다.  Raspberry Pi Pico가 컴퓨터에 연결되어 있고 MicroPython (Raspberry Pi Pico) 인터프리터를 선택했는지 확인해 보세요.  Thonny 편집기 하단에 있는 Shell 패널을 확인합니다. 다음과 같은 내용이 표시됩니다.    (추가 내용 : 연결되어 있지 않다면 다음과 같이 내용을 볼 수 있습니다.)    Th..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Add the MicroPython firmware) – 4

안녕하세요.  이번 내용은 Raspberry Pi Pico에 MicroPython 펌웨어를 설치하는 방법을 알려주는 내용입니다.이전에 Thonny 프로그램에서 펌웨어를 설치하는 방법을 알려주고 있습니다.   Raspberry Pi Pico에서 MicroPython을 사용해 본 적이 없다면, MicroPython을 펌웨어를 추가할 필요가 있습니다.  Raspberry Pi Pico에서 BOOTSEL 버튼을 찾습니다.     BOOTSEL 버튼을 누른 상태에서 마이크로 USB 케이블의 다른 쪽 끝을 컴퓨터에 연결합니다. 아래 이미지에는 Raspberry Pi가 표시되어 있지만 모든 컴퓨터에 동일하게 적용됩니다.     이렇게 하면 Raspberry Pi Pico가 USB 대용량 저장 장치 모드로 전환됩니다...

[번역 프로젝트] Getting started with Raspberry Pi Pico (Install Thonny) – 3

안녕하세요.  이번 내용은 Thonny 설치해서 파이썬으로 Hello world를 출력해 보는 것입니다. 리눅스나 Raspberry Pi OS에서 설치해도 되지만, 많은 분들이 Windows OS를 사용하리라 생각됩니다.  Thonny 프로그램은 대중적인 OS에서 설치될 수 있게 배포되고 있습니다.  Install Thonny   이번 스텝에서는 최신 버전을 확인하고 Thonny를 설치할 것입니다. 그런 후에Raspberry Pi Pico 연결해서 Shell 명령어를 사용해서 단순한 Python Code를 실행해 볼 것입니다.  1. Thonny On Raspberry Pi   - Thonny는 Raspberry Pi에 이미 설치되어 있습니다. 그러나 최신 버전으로 업데이트를 해야 할 수 있습니다.  -..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Meet Raspberry Pi Pico) – 2

안녕하세요.   이번 편은 간단하게 브레드보드에 장착하는 방법입니다. 특별하게 어려운 것은 없고 만약 브레드보드가 없다면 점퍼 케이블로 대신할 수도 있습니다. 점퍼 케이블은 양쪽이 Male(수) 방향이 되어야 합니다.    큰 브레드보드 말고 작은 브레드보드를 구매하시는 것도 하나의 방법이라고 생각됩니다.   https://www.devicemart.co.kr/goods/view?no=1328148 브레드보드 400핀 Half Size Breadboard [SZH-BBAD-005]기존 브레드보드801 제품과 호환되는 400핀 규격의 브레드보드 / 사용가능 와이어 규격 : 20 ~ 29AWG / 82mm X 55mm X 8.5mmwww.devicemart.co.kr   Raspberry Pi Pico 만나..

[번역 프로젝트] Getting started with Raspberry Pi Pico (Introduction) – 1

안녕하세요.   라즈베리파이 피코(Raspberry Pi Pico) 공부도 하고 영어공부도 할 겸 번역을 해보았습니다. 내용과 영어 원문 자체가 전반적으로 학생들이 볼 수 있게 만들다 보니 쉽게 되어 있습니다. 그래서 좀 더 쉽게 번역할 수 있었습니다.   쉬운 내용이지만 실제로 실험해 보고 영어원문 내용에서 부족한 내용이 있다면 추가하면서 번역 시리즈로 올려 보도록 하겠습니다.  1. 소  개   이 프로젝트는 당신이 Raspberry Pi Pico와 다른 컴퓨터와 연결하고 어떻게 MicroPython을 이용하여 Raspberry Pi Pico에 프로그램하는지 배우는 것입니다.  Raspberry Pi Pico는 적은 비용의 마이크로 컨트롤러 장비입니다. 마이크로 컨트롤러는 조그마한 컴퓨터입니다. 그러..

아두이노 나노(Arduino Nano)와 아두이노 나노 33 IoT에 FreeRTOS에서 올리기

안녕하세요.   Arduino FreeRTOS 버전이 몇 가지 있는 것 같은데 메인 소스 코어는 동일해 보이고 누가 주로 수정했는지에 따라 조금씩 차이가 있는 듯합니다. 테스트 버전은 아두이노 IDE에 "라이브러리 매니저"로 받을 수 있는 버전으로 해보았습니다. 1.  FreeRTOS 설치하기 1) Arduino Nano 버전   "툴-> 라이브러리 관리" 메뉴를 선택하고 FreeRTOS로 검색합니다. 최신 버전 라이브러리를 설치합니다.   2) Arduino Nano 33 IoT 버전  "툴-> 라이브러리 관리" 메뉴를 선택하고 FreeRTOS로 검색합니다. 위와 다르게 SAMD21 버전을 설치해주어야 합니다. 아두이노 나노 33 IoT 경우 마이크로 컨트롤러가 다르다 보니 SAMD21 버전으로 설치해..

Embedded/Arduino 2024.07.16

Raspberry Pi4를 이용한 멀티캐스트 송신 코드 및 테스트 (Multicast Sender)

안녕하세요.  IPTV나 네트워크 쪽으로 통신 프로그램할 경우가 아니면 주로 사용하는 방식은 아니지만 이번에 확인할 일이 있어서 찾아본 내용 공유드립니다. 송신부는 C 프로그램으로 테스트하였고, 다음 내용에 올릴 수신부는 Qt 소스 공개된 것이 있어서 PC에서 수정해서 테스트해 보았습니다. 1. 멀티캐스트 간단한 개념   컴퓨터 네트워크에서 멀티캐스트(multicast)란 한 번의 송신으로 메시지나 정보를 목표한 여러 컴퓨터에 동시에 전송하는 것을 말한다. 이때 망 접속 형태가 요구할 경우에 한해, 자동으로 라우터와 같은 다른 네트워크 요소들에 메시지의 복사본이 생성된다.   멀티캐스트는 보통 IP 멀티캐스트 형태로 구현되는데, 이는 스트리밍을 위한 인터넷 프로토콜 응용 프로그램(Internet Prot..

아두이노 나노(Arduino Nano) 33 IoT Web Server에서 데이터 JSON으로 출력하기

안녕하세요.   아두이노 나노 33 IoT로 웹서버를 만들어 보았다면, 아두이노 IoT에서 취득한 센서 정보를 어떻게 가져갈까 고민을 하게 될 겁니다. 그래서 웹 데이터를 Json형태로 바꿔 출력해 주고 다른 응용프로그램에서 웹주소로 접속해서 Json으로 가져오면 되겠다 생각하였습니다.  아두이노 IoT에서 가스 센싱 한 값을 Json으로 인코딩하고 웹서버로 출력해 주고 파이썬에서 JSON 데이터로 읽어오는 테스트를 하였습니다.   이전 "아두이노 나노(Arduino Nano) 33 IoT 고정 아이피 설정 방법"에서 SimpleWebServerWIFI 예제에 JSON 코드를 추가하는 형태로 하였습니다. 1. JSON사전 준비   이미 JSON 사용해보았다면 이 과정은 넘어가도 좋습니다. "툴->라이브러..

Embedded/Arduino 2024.07.03

아두이노 나노(Arduino Nano) 33 IoT 고정 아이피(Static IP) 설정 방법

안녕하세요.   단순하게 SimpleWebServerWiFi 샘플 소스를 실행시키면 내부 공유기의 DHCP에서 할당해 주는 내부 네트워크 아이피(IP) 주소를 할당받게 됩니다. 그래서 시리얼 모니터로 할당된 주소를 확인한 후 아두이노 웹서버로 접속을 해야 합니다.   이렇게 하면 IP 주소를 매번 확인해야 하는 불편한 점이 있습니다.  아니면 DDNS를 사용해서 도메인(DNS)으로 접속할 수도 있습니다.   그렇게 하는 것보다 비용도 절감하고 내부 고정 아이피로 사용한다면 위의 불편한 점은 개선할 수 있을 것으로 생각되어 고정으로 하면 좋겠다 생각하게 되어 찾아보게 되었습니다.  1.  고정아이피 할당 예제 1) 예제 소스 불러오기    할당하는 방법에 대해서 간단한 샘플 예제로 하는 방법을 확인해 보도..

Embedded/Arduino 2024.06.28

아두이노 나노(Arduino Nano 33 IoT) BLE를 이용한 자이로 센서(Gyroscope) 값 가져오기 – 3

안녕하세요.   이전 내용에서 간단하게 LED를 제어해 보았습니다. 이번에는 나노 33 IoT 장착되어 있는 자이로 센서를 X, Y, Z 축 값을 가져와 BLE로 전달하는 것을 해보도록 하겠습니다.   1. BLE 구조   BLE 서비스를 만들고 Characteristic을 선언하는데, 조금이나 이해를 하면 좋지 않을까 해서 찾아보았습니다.  애플리케이션 단에서 데이터 교환은 ATT(Attribute protocol) 기반으로 이루어지고 각각의 데이터는 GATT(Generic Attribute Profile) 데이터 구조를 따라 정의됩니다.  ATT는 서버와 클라이언트 사이의 데이터 교환에 대한 규칙을 정의하는 것입니다.    GATT는 Service와 Characteristic으로 구성됩니다. “Ser..

Embedded/Arduino 2024.06.22

아두이노 나노(Arduino Nano 33 IoT) BLE를 이용한 LED 제어 – 2

안녕하세요.  이전 내용에서는 BLE 접속에 대해 알아보았습니다. 이번에는 어떻게 LED를 제어하는지 데이터를 주고받는지를 확인해 보도록 하겠습니다.  1. 아두이노 프로그램  - BLE 라이브러리를 추가하고 BLERead와 BLEWrite 문자열 주고받을 수 있는 서비스를 초기화합니다. #include BLEService ledService("3de2545d-9de6-47ce-84a9-68c5ead85c67");BLEByteCharacteristic switchCharacteristic("3de2545d-9de6-47ce-84a9-68c5ead85c67", BLERead | BLEWrite);const int ledPin = LED_BUILTIN;    - Setup() 함수에서 시리얼 통신 모니터링하..

Embedded/Arduino 2024.06.19

아두이노 나노(Arduino Nano 33 IoT) BLE 사용하기 – 1 (연결하기)

안녕하세요.   아두이노 나노 33 IoT 모듈에는 WiFi 기능이 있고 BLE(Bluetooth) 기능도 있습니다. 이전 내용은 WiFi를 다루어 보았고 이번에는 BLE 관련된 내용으로 해보려고 합니다.  진행은 간단하게 Nano 33 IoT에서 BLE를 사용해 보고 여러 개 데이터를 전달하는 것을 해보려고 합니다. 그리고 추가로 공개된 안드로이드 앱 소스를 수정해서 값까지 받아 보는 것을 해보려고 합니다.  1. BLE(Bluetooth Low Energy) 란 1) 정의   블루투스 저전력 프로토콜(Bluetooth Low Energy)또는 줄여서 BLE은 블루투스 4.0(Bluetooth Smart) 스펙이 2010년 6월 30일에 채택된 이후로 배포되는 저전력 블루투스이다.   이로서 기존의 블..

Embedded/Arduino 2024.06.18