반응형

아두이노로 무게를 측정하려면 무게에 따라 저항 값이 변하는 로드셀(Load Cell)을 사용한다. 하지만 로드셀에서 나오는 신호는 수 mV 정도로 매우 작아서, 아두이노 우노에 내장된 10비트 ADC로 직접 읽으면 1g 단위는커녕 수백 g의 변화도 제대로 구분하기 어렵다. 그래서 로드셀의 작은 신호를 크게 증폭하고 정밀하게 디지털 값으로 바꿔 주는 별도의 변환 모듈이 필요하다.

HX711은 로드셀 전용으로 만들어진 24비트 ADC 칩으로, 증폭기와 ADC가 하나의 칩에 들어 있어 로드셀을 연결하기만 하면 아두이노에서 2개의 선으로 무게 값을 읽을 수 있다. 이 글에서는 HX711의 주요 사양과 로드셀 종류, 연결 방법, 라이브러리 설치 방법, 보정(Calibration) 방법과 전자저울 예제 코드를 소개한다.


1. HX711과 로드셀 소개

로드셀은 금속 몸체에 스트레인 게이지(Strain Gauge)를 붙인 센서로, 무게가 가해지면 금속이 아주 조금 휘어지면서 스트레인 게이지의 저항 값이 변한다. 일반적인 로드셀은 스트레인 게이지 4개를 휘트스톤 브리지(Wheatstone Bridge) 회로로 연결하여, 무게에 비례하는 아주 작은 전압 차이를 출력한다.

HX711은 이 작은 전압 차이를 최대 128배로 증폭한 후 24비트 디지털 값으로 변환한다. 아두이노와는 DT(데이터)와 SCK(클럭) 2개의 핀으로 통신하며, I2C나 SPI가 아닌 HX711 전용 방식이므로 아무 디지털 핀에나 연결할 수 있다.

특징:

  • 24비트 해상도로 로드셀의 아주 작은 변화까지 측정할 수 있다.
  • 로드셀에 공급할 전원(E+, E-)을 모듈에서 만들어 주므로 별도의 전원 회로가 필요 없다.
  • 입력 채널이 2개(A, B)이며, 일반적으로 증폭률이 높은 A 채널을 사용한다.
  • 초당 10회(10SPS) 또는 80회(80SPS)로 측정할 수 있으며, 대부분의 모듈은 10SPS로 설정되어 있다.

2. 주요 사양 및 로드셀 종류

HX711과 아두이노 우노에 내장된 ADC의 사양 차이는 다음과 같다.

항목 아두이노 우노 내장 ADC HX711
해상도 10-bit (1,024단계) 24-bit (약 1,677만 단계)
증폭기 없음 내장 (128배, 64배, 32배)
입력 방식 단일 입력 (GND 기준) 차동 입력 (A+, A- 사이 전압)
입력 채널 6채널 2채널 (A: 128/64배, B: 32배)
측정 속도 약 10,000회/초 10회/초 또는 80회/초
동작 전압 5V 2.6~5.5V
소비 전류 - 1.5mA 이하 (절전 시 1μA 이하)
통신 방식 - DT, SCK 2선 직렬 통신

 

로드셀은 측정할 무게와 모양에 따라 여러 종류가 있으며, 아두이노에서는 주로 다음 두 가지를 많이 사용한다.

종류 측정 범위 배선 주요 용도
바(Bar) 타입 1kg, 5kg, 10kg, 20kg 등 4선 (풀 브리지) 주방 저울, 소형 전자저울
하프 브리지 타입 개당 50kg 3선 (4개를 조합해 사용) 체중계, 대형 저울

 

처음 사용한다면 4선 바 타입 로드셀이 연결과 고정이 쉬워 가장 좋으며, 측정할 최대 무게보다 조금 큰 용량의 로드셀을 선택한다. 이 글에서는 5kg 바 타입 로드셀을 기준으로 설명한다.


3. PIN 배열 및 연결

HX711 모듈은 한쪽에 로드셀을 연결하는 핀(E+, E-, A-, A+, B-, B+), 다른 쪽에 아두이노를 연결하는 핀(GND, DT, SCK, VCC)이 있다.

 

1) 로드셀과 HX711 연결

로드셀 선 색 기능 HX711 핀
빨강 여기 전압 + E+
검정 여기 전압 - E-
흰색 신호 - A-
초록 신호 + A+

 

선 색은 제조사마다 다를 수 있으므로 판매 페이지의 배선도를 확인한다. 무게를 올렸을 때 값이 줄어든다면 흰색과 초록색 선(A-, A+)을 서로 바꿔 연결하면 된다.

2) HX711과 아두이노 우노 연결

  • VCC: 5V (ESP32는 3.3V)
  • GND: GND
  • DT: D3
  • SCK: D2

3) 로드셀 고정 방법

바 타입 로드셀은 한쪽 끝을 바닥판에, 반대쪽 끝을 저울판에 나사로 고정해야 휘어짐이 생겨 무게를 측정할 수 있다. 로드셀 몸체에 표시된 화살표가 무게가 가해지는 방향(아래쪽)을 향하도록 설치하고, 가운데의 스트레인 게이지 부분은 다른 물체에 닿지 않도록 띄워야 한다.

 


4. 라이브러리 설치

  1. 아두이노 IDE에서 툴 -> 라이브러리 관리를 선택한다.
  2. 검색창에 "HX711"을 입력하고 Bogdan Necula의 HX711 Arduino Library를 설치하면 된다.

[이미지: 라이브러리 매니저에서 HX711 Arduino Library 설치 화면]

이 라이브러리의 주요 함수는 다음과 같다.

  • tare(): 현재 값을 0으로 맞추는 영점 설정 함수이다.
  • set_scale(값): 측정값을 g 단위로 바꾸기 위한 보정 계수를 설정한다.
  • get_value(횟수): 지정한 횟수만큼 측정한 평균값에서 영점 값을 뺀 원시 값을 돌려준다.
  • get_units(횟수): get_value() 값을 보정 계수로 나눈 실제 무게 값을 돌려준다.

5. 예제 코드

1) 보정 계수 구하기

로드셀은 같은 제품이라도 출력 값이 조금씩 다르기 때문에, 무게를 알고 있는 물건을 올려 보정 계수(Calibration Factor)를 먼저 구해야 한다. 무게를 정확히 알고 있는 물건(예: 500g 생수병, 주방 저울로 잰 물건)을 준비한다.

#include <HX711.h>

const int DOUT_PIN = 3;
const int SCK_PIN = 2;

HX711 scale;

void setup() {
  Serial.begin(9600);
  scale.begin(DOUT_PIN, SCK_PIN);

  Serial.println("저울 위의 물건을 모두 치우세요.");
  delay(3000);
  scale.tare();
  Serial.println("영점 설정 완료. 무게를 알고 있는 물건을 올리세요.");
}

void loop() {
  float value = scale.get_value(10);
  Serial.print("측정값: ");
  Serial.println(value);
  delay(1000);
}
  • 1 Line: HX711 라이브러리를 포함한다.
  • 3~4 Line: HX711의 DT, SCK 핀을 연결한 아두이노 핀 번호를 지정한다.
  • 10 Line: 지정한 핀으로 HX711과 통신을 시작한다.
  • 12~14 Line: 저울 위를 비울 수 있도록 3초 기다린 후 tare() 함수로 영점을 설정한다.
  • 19 Line: 10회 측정한 평균값에서 영점 값을 뺀 원시 값을 읽는다.
  • 20~21 Line: 읽은 값을 1초마다 시리얼 모니터에 출력한다.

물건을 올린 후 출력되는 측정값을 물건의 무게(g)로 나누면 보정 계수가 된다. 예를 들어 500g 물건을 올렸을 때 측정값이 210000 정도라면 보정 계수는 210000 ÷ 500 = 420이 된다. 측정값이 음수로 나오면 로드셀의 A-, A+ 선을 바꾸거나 보정 계수를 음수로 사용하면 된다.

[이미지: 보정용 물건을 올리고 시리얼 모니터에서 측정값을 확인하는 모습]

2) 영점 버튼이 있는 전자저울

앞에서 구한 보정 계수를 사용하여 무게를 g 단위로 출력하고, D4에 연결한 버튼을 누르면 영점을 다시 설정하는 전자저울 예제이다. 버튼은 한쪽을 D4, 다른 쪽을 GND에 연결한다.

#include <HX711.h>

const int DOUT_PIN = 3;
const int SCK_PIN = 2;
const int TARE_BTN = 4;
const float CAL_FACTOR = 420.0;

HX711 scale;

void setup() {
  Serial.begin(9600);
  pinMode(TARE_BTN, INPUT_PULLUP);
  scale.begin(DOUT_PIN, SCK_PIN);
  scale.set_scale(CAL_FACTOR);
  scale.tare();
  Serial.println("저울 준비 완료");
}

void loop() {
  if (digitalRead(TARE_BTN) == LOW) {
    scale.tare();
    Serial.println("영점 설정");
    delay(300);
  }

  float weight = scale.get_units(5);
  if (weight > -0.5 && weight < 0.5) {
    weight = 0;
  }
  Serial.print("무게: ");
  Serial.print(weight, 1);
  Serial.println(" g");
  delay(500);
}
  • 5 Line: 영점 버튼을 연결한 핀 번호를 지정한다.
  • 6 Line: 앞의 예제에서 구한 보정 계수를 입력한다.
  • 12 Line: 버튼 핀을 내부 풀업 저항을 사용하는 입력으로 설정한다. 버튼을 누르면 LOW가 된다.
  • 14 Line: 보정 계수를 설정하여 get_units() 함수가 g 단위 값을 돌려주도록 한다.
  • 15 Line: 전원이 켜질 때 저울 위의 무게를 0으로 설정한다.
  • 20~24 Line: 버튼이 눌리면 영점을 다시 설정한다. 그릇을 올려놓고 버튼을 누르면 그릇 무게를 뺀 내용물의 무게만 측정할 수 있다.
  • 26 Line: 5회 측정한 평균 무게(g)를 읽는다.
  • 27~29 Line: 아무것도 올리지 않았을 때 0.1~0.3g 정도 값이 흔들리는 것을 막기 위해 ±0.5g 이내의 값은 0으로 처리한다.
  • 30~32 Line: 무게를 소수점 첫째 자리까지 출력한다.

코드를 업로드한 후 저울 위에 물건을 올리면 시리얼 모니터에 무게가 g 단위로 출력되는 것을 확인할 수 있다. 시리얼 모니터 대신 I2C LCD나 OLED에 무게를 출력하면 독립된 전자저울로 사용할 수 있다.

[이미지: 완성된 전자저울과 시리얼 모니터 출력 화면]


6. 주요 용도 및 주의사항

추천 주요 용도:

  • 전자저울: 주방 저울, 택배 무게 측정기, 커피 원두 계량기 등을 만들 수 있다.
  • 잔량 감지: 사료통, 물통, 가스통, 정수기 물병 등의 무게로 남은 양을 확인하고 부족하면 알림을 보낼 수 있다.
  • 체중계: 50kg 하프 브리지 로드셀 4개를 조합하여 체중계를 만들 수 있다.
  • 힘 측정: 당기는 힘이나 누르는 힘을 측정하는 실험 장치, 추력 측정 장치 등에 사용할 수 있다.

사용 시 주의사항:

  • 로드셀 고정: 로드셀을 제대로 고정하지 않으면 값이 흔들리거나 무게가 정확히 측정되지 않으므로, 단단한 판에 나사로 고정해야 한다.
  • 과부하 주의: 로드셀의 정격 용량을 넘는 무게를 올리거나 충격을 주면 로드셀이 영구적으로 변형될 수 있다.
  • 예열과 온도 변화: 전원을 켠 직후에는 값이 조금씩 변하므로 1~2분 정도 지난 후 영점을 다시 잡는 것이 좋고, 온도가 크게 변하면 영점이 틀어질 수 있다.
  • 배선 노이즈: 로드셀 선이 길거나 모터, 전원선 근처를 지나면 노이즈가 생기므로 선은 짧게 하고 꼬아서 연결하는 것이 좋다.
  • 측정 속도: 기본 10SPS에서 get_units(10)처럼 평균 횟수를 크게 하면 한 번 측정하는 데 1초가 걸리므로, 반응 속도와 안정성에 맞게 횟수를 조절한다.

구매좌표:

 

반응형
반응형

ESP32 두 대 사이에 데이터를 주고받으려면 보통 두 보드를 같은 공유기에 연결하고 HTTP나 MQTT 같은 방식으로 통신한다. 하지만 이 방법은 공유기가 반드시 있어야 하고, 전원을 켤 때마다 공유기에 접속하는 데 수 초가 걸리며, 공유기가 없는 야외나 공유기와 멀리 떨어진 곳에서는 사용할 수 없는 한계가 있다. 블루투스를 사용하면 공유기는 필요 없지만 페어링과 연결 과정이 번거롭고 통신 거리도 짧다.

ESP-NOW는 Espressif에서 만든 무선 통신 방식으로, 공유기 없이 ESP32끼리 MAC 주소만으로 바로 데이터를 주고받을 수 있다. 연결 과정이 없어 전원을 켜자마자 통신할 수 있고 반응 속도도 매우 빠르다. 이 글에서는 ESP-NOW의 특징을 Wi-Fi, BLE와 비교하고, MAC 주소 확인 방법과 버튼으로 다른 ESP32의 LED를 켜는 송신, 수신 예제 코드를 소개한다.

 

ESP-NOW 통신 구조 (Initiator와 Responder)

 

출처: Espressif ESP-NOW 공식 문서, Apache License 2.0


1. ESP-NOW 소개

ESP-NOW는 ESP32의 2.4GHz Wi-Fi 하드웨어를 그대로 사용하지만, 공유기 접속이나 IP 주소 같은 TCP/IP 과정을 모두 생략하고 Wi-Fi 데이터 프레임에 짧은 데이터를 직접 담아 보내는 방식이다. 데이터를 받을 기기의 MAC 주소를 상대(Peer)로 등록하기만 하면 바로 데이터를 보낼 수 있다.

특징:

  • 공유기가 필요 없으며, 전원을 켠 후 바로 통신할 수 있다.
  • 한 번에 최대 250바이트의 데이터를 보낼 수 있다. 센서 값, 버튼 상태, 명령어 등을 보내기에 충분한 크기이다.
  • 1:1 통신뿐 아니라 1:N(여러 대에 보내기), N:1(여러 대에서 받기), 양방향 통신이 모두 가능하다.
  • 데이터를 보낸 후 바로 딥슬립에 들어갈 수 있어 배터리로 동작하는 센서에 적합하다.
  • ESP32, ESP32-S3, ESP32-C3, ESP32-C6, ESP8266 등 Espressif의 Wi-Fi 칩끼리 서로 통신할 수 있다.

ESP-NOW는 아두이노 ESP32 보드 패키지에 기본으로 포함되어 있어 별도의 라이브러리를 설치할 필요가 없다. 최신 ESP-IDF 5.4 이상에서는 한 번에 보낼 수 있는 데이터가 최대 1470바이트로 늘어난 ESP-NOW v2도 지원하지만, 이 글에서는 모든 보드에서 사용할 수 있는 250바이트 기준으로 설명한다.


2. 주요 사양 및 Wi-Fi, BLE 통신과의 비교

ESP32에서 사용할 수 있는 무선 통신 방식의 차이는 다음과 같다.

항목 Wi-Fi (공유기 경유) BLE ESP-NOW
공유기 필요 불필요 불필요
연결 과정 공유기 접속, IP 할당 (수 초) 검색, 연결 (수 초) 없음 (MAC 주소 등록)
1회 전송 크기 제한 거의 없음 기본 20바이트 (확장 시 수백 바이트) 250바이트 (v2: 1470바이트)
반응 속도 수십~수백 ms 수십 ms 수 ms
통신 거리 공유기 범위 약 10~30m 실내 수십 m, 야외 약 100~200m
연결 기기 수 공유기 성능에 따라 다름 수 대 최대 20대 (암호화 시 최대 17대)
인터넷 연결 가능 불가 불가
스마트폰 연결 가능 가능 불가

 

ESP-NOW는 스마트폰이나 인터넷과는 직접 통신할 수 없지만, ESP32끼리 짧은 데이터를 빠르게 주고받는 데는 가장 간단하고 빠른 방법이다. 인터넷 연결이 필요하면 여러 ESP32의 데이터를 ESP-NOW로 한 대에 모은 후, 그 한 대만 Wi-Fi로 서버에 보내는 방식으로 함께 사용할 수 있다.


3. 준비물 및 연결

이 글의 예제는 ESP32 개발보드 2대를 사용하며, 한 대는 버튼 상태를 보내는 송신기, 다른 한 대는 데이터를 받아 LED를 켜는 수신기로 사용한다.

  • 송신기: 버튼의 한쪽을 GPIO4, 다른 쪽을 GND에 연결한다. 내부 풀업 저항을 사용하므로 저항은 필요 없다.
  • 수신기: 대부분의 ESP32 개발보드는 GPIO2에 파란색 LED가 내장되어 있으므로 그대로 사용한다. 내장 LED가 없는 보드는 GPIO2에 220Ω 저항과 LED를 연결한다.

4. 개발환경 및 MAC 주소 확인

아두이노 IDE에 ESP32 보드 패키지(esp32 by Espressif Systems)가 설치되어 있으면 ESP-NOW를 바로 사용할 수 있다. 이 글의 코드는 보드 패키지 3.x 버전을 기준으로 작성되었다.

ESP-NOW로 데이터를 보내려면 먼저 수신기 ESP32의 MAC 주소를 알아야 한다. 다음 코드를 수신기로 사용할 보드에 업로드하고 시리얼 모니터(115200bps)를 열면 MAC 주소가 출력된다.

#include <WiFi.h>
#include <esp_wifi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.STA.begin();

  uint8_t mac[6];
  esp_wifi_get_mac(WIFI_IF_STA, mac);
  Serial.printf("MAC 주소: %02X:%02X:%02X:%02X:%02X:%02X\n",
                mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
}

void loop() {
}
  • 6~7 Line: ESP32를 Wi-Fi 스테이션 모드로 설정하고 Wi-Fi 기능을 시작한다. ESP-NOW는 스테이션 모드의 MAC 주소를 사용한다.
  • 9~10 Line: 스테이션 모드의 MAC 주소 6바이트를 읽는다.
  • 11~12 Line: MAC 주소를 "24:6F:28:AA:BB:CC" 같은 16진수 형식으로 출력한다.

출력된 MAC 주소는 메모해 두었다가 송신기 코드에 입력한다. 시리얼 모니터에 아무것도 나오지 않으면 보드의 RESET(EN) 버튼을 한 번 누르면 된다.

[이미지: 시리얼 모니터에 출력된 MAC 주소]


5. 예제 코드

1) 송신기 코드

버튼 상태와 전송 횟수를 구조체에 담아 0.2초마다 수신기로 보내는 코드이다.

#include <WiFi.h>
#include <esp_now.h>

uint8_t receiverMac[] = {0x24, 0x6F, 0x28, 0xAA, 0xBB, 0xCC};

typedef struct {
  int count;
  bool button;
} Message;

Message msg;
const int BTN_PIN = 4;
esp_now_peer_info_t peerInfo;

void setup() {
  Serial.begin(115200);
  pinMode(BTN_PIN, INPUT_PULLUP);
  WiFi.mode(WIFI_STA);

  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW 초기화 실패");
    return;
  }

  memcpy(peerInfo.peer_addr, receiverMac, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;
  esp_now_add_peer(&peerInfo);
}

void loop() {
  msg.count++;
  msg.button = (digitalRead(BTN_PIN) == LOW);

  esp_err_t result = esp_now_send(receiverMac, (uint8_t *)&msg, sizeof(msg));
  if (result == ESP_OK) {
    Serial.printf("전송: count=%d, button=%d\n", msg.count, msg.button);
  } else {
    Serial.println("전송 실패");
  }
  delay(200);
}
  • 1~2 Line: Wi-Fi 라이브러리와 ESP-NOW 라이브러리를 포함한다.
  • 4 Line: 앞에서 확인한 수신기의 MAC 주소를 입력한다. "24:6F:28:AA:BB:CC"라면 각 자리 앞에 0x를 붙여 입력하면 된다.
  • 6~9 Line: 보낼 데이터의 형식을 구조체로 정의한다. 수신기 코드에도 똑같은 구조체를 정의해야 한다.
  • 11~13 Line: 보낼 데이터 변수, 버튼 핀 번호, 상대 기기 정보를 담을 변수를 선언한다.
  • 18 Line: ESP-NOW를 사용하기 위해 Wi-Fi를 스테이션 모드로 설정한다. 공유기에는 연결하지 않는다.
  • 20~23 Line: ESP-NOW를 초기화하고, 실패하면 메시지를 출력한다.
  • 25~28 Line: 수신기의 MAC 주소를 상대 기기(Peer)로 등록한다. channel을 0으로 하면 현재 Wi-Fi 채널을 사용하고, encrypt를 false로 하면 암호화 없이 보낸다.
  • 32~33 Line: 전송 횟수를 1 증가시키고, 버튼이 눌렸으면 true, 아니면 false를 저장한다.
  • 35 Line: 구조체 데이터를 바이트 배열로 바꿔 수신기로 보낸다.
  • 36~40 Line: 전송 요청 결과를 시리얼 모니터에 출력한다.
  • 41 Line: 0.2초마다 데이터를 보낸다.

esp_now_send()의 결과가 ESP_OK인 것은 전송 요청이 정상적으로 처리되었다는 의미이며, 수신기가 실제로 받았는지까지 확인하려면 esp_now_register_send_cb() 함수로 전송 완료 콜백 함수를 등록하면 된다. 단, 전송 완료 콜백 함수의 형식은 보드 패키지 버전에 따라 다르므로 사용하는 버전의 예제(파일 -> 예제 -> ESP32 -> ESPNow)를 참고한다.

2) 수신기 코드

송신기에서 받은 데이터를 시리얼 모니터에 출력하고, 버튼이 눌린 상태이면 LED를 켜는 코드이다.

#include <WiFi.h>
#include <esp_now.h>

typedef struct {
  int count;
  bool button;
} Message;

Message msg;
const int LED_PIN = 2;

void onReceive(const esp_now_recv_info_t *info, const uint8_t *data, int len) {
  memcpy(&msg, data, sizeof(msg));
  digitalWrite(LED_PIN, msg.button ? HIGH : LOW);
  Serial.printf("수신: count=%d, button=%d\n", msg.count, msg.button);
}

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  WiFi.mode(WIFI_STA);

  if (esp_now_init() != ESP_OK) {
    Serial.println("ESP-NOW 초기화 실패");
    return;
  }
  esp_now_register_recv_cb(onReceive);
}

void loop() {
}
  • 4~7 Line: 송신기와 똑같은 형식의 구조체를 정의한다. 구조체의 형식이 다르면 데이터가 잘못 읽힌다.
  • 12 Line: 데이터를 받았을 때 자동으로 실행되는 콜백 함수이다. info에는 보낸 기기의 MAC 주소 등이 들어 있고, data와 len은 받은 데이터와 길이이다.
  • 13 Line: 받은 데이터를 구조체 변수에 복사한다.
  • 14 Line: 버튼이 눌린 상태이면 LED를 켜고, 아니면 끈다.
  • 15 Line: 받은 데이터를 시리얼 모니터에 출력한다.
  • 21 Line: Wi-Fi를 스테이션 모드로 설정한다.
  • 23~26 Line: ESP-NOW를 초기화한다.
  • 27 Line: 데이터를 받았을 때 실행할 콜백 함수를 등록한다.
  • 30~31 Line: 데이터 수신은 콜백 함수에서 처리하므로 loop()에는 코드가 없다.

보드 패키지 2.x 버전을 사용한다면 12 Line의 콜백 함수 첫 번째 인자를 const uint8_t *mac으로 바꿔야 컴파일된다. 두 보드에 각각 코드를 업로드하고 송신기의 버튼을 누르면, 공유기 없이도 수신기의 LED가 거의 바로 켜지는 것을 확인할 수 있다.

[이미지: 송신기 버튼을 누르자 수신기 LED가 켜진 모습과 시리얼 모니터 출력]

3) 여러 대와 통신하기

  • 1:N 전송: 송신기에서 여러 수신기의 MAC 주소를 각각 esp_now_add_peer()로 등록한 후, esp_now_send()의 첫 번째 인자에 원하는 수신기의 주소를 넣거나 NULL을 넣으면 등록된 모든 기기로 보낸다.
  • N:1 수신: 여러 송신기가 같은 수신기 주소로 데이터를 보내면 되고, 수신기에서는 콜백 함수의 info->src_addr로 어느 송신기가 보냈는지 구분할 수 있다.
  • 양방향 통신: 두 보드가 서로의 MAC 주소를 상대 기기로 등록하고, 송신 코드와 수신 콜백 함수를 모두 넣으면 된다.

6. 주요 용도 및 주의사항

추천 주요 용도:

  • 무선 리모컨: RC카, 로봇, 조명, 블라인드 등을 버튼이나 조이스틱으로 제어하는 무선 리모컨을 만들 수 있다.
  • 무선 센서 네트워크: 여러 곳에 배치한 온습도 센서, 문열림 센서의 값을 한 대의 ESP32로 모을 수 있다.
  • 배터리 센서: 깨어나서 측정하고 데이터를 보낸 후 바로 딥슬립에 들어가는 방식으로 배터리 수명을 크게 늘릴 수 있다.
  • 공유기가 없는 장소: 야외, 창고, 작업장처럼 공유기가 없는 곳에서 기기끼리 통신하는 장치를 만들 수 있다.

사용 시 주의사항:

  • Wi-Fi 채널 일치: ESP-NOW와 공유기 연결을 함께 사용하는 보드는 공유기의 채널로 동작하므로, 다른 보드들도 같은 채널을 사용하도록 설정해야 통신이 된다.
  • 데이터 크기 제한: 한 번에 250바이트까지만 보낼 수 있으므로 큰 데이터는 나누어 보내야 한다.
  • 전송 보장 없음: 데이터를 받지 못해도 자동으로 다시 보내지 않으므로, 중요한 데이터는 전송 완료 콜백으로 결과를 확인하고 실패하면 다시 보내도록 만들어야 한다.
  • 콜백 함수 처리: 수신 콜백 함수는 Wi-Fi 작업 중에 실행되므로 delay()나 오래 걸리는 작업을 넣지 말고, 데이터만 저장한 후 loop()에서 처리하는 것이 좋다.
  • 보안: 암호화하지 않은 데이터는 다른 기기에서도 받을 수 있으므로 도어락처럼 보안이 필요한 장치에는 암호화(encrypt) 기능을 사용해야 한다.

구매좌표:

 

반응형
반응형

아두이노 우노 R3(Arduino UNO R3)는 아두이노를 처음 시작하는 사용자라면 누구나 한 번쯤 사용해 보는 대표적인 입문용 보드이다. 하지만 8비트 ATmega328P 마이크로컨트롤러(MCU)를 사용하기 때문에 2KB에 불과한 SRAM, 16MHz의 낮은 클럭 속도로 인해 복잡한 연산이나 큰 데이터를 다루기 어렵고, 무선 통신 기능도 없어 IoT 프로젝트에는 별도의 Wi-Fi 모듈을 추가해야 하는 한계가 있었다.

아두이노 우노 R4 WiFi(Arduino UNO R4 WiFi)는 기존 우노의 보드 크기와 핀 배치, 5V 동작 전압을 그대로 유지하면서 MCU를 32비트 Renesas RA4M1(Arm Cortex-M4)으로 바꾸고, ESP32-S3 무선 모듈과 12x8 LED 매트릭스까지 탑재한 보드이다. 이 글에서는 우노 R4 WiFi의 주요 사양을 기존 우노 R3와 비교하고, 개발환경 설치 방법과 LED 매트릭스 및 Wi-Fi 예제 코드를 소개한다.


1. 아두이노 우노 R4 WiFi (Arduino UNO R4 WiFi) 소개

아두이노 우노 R4는 2023년에 출시된 우노 시리즈의 4번째 개정판으로, 무선 기능이 없는 UNO R4 Minima와 무선 기능이 포함된 UNO R4 WiFi 두 가지 모델로 구성된다. 두 모델 모두 메인 MCU로 Renesas RA4M1을 사용하며, UNO R4 WiFi는 여기에 Espressif의 ESP32-S3-MINI-1 모듈을 보조 프로세서로 추가하여 Wi-Fi와 블루투스(BLE) 통신을 지원한다.

사용자가 작성한 스케치는 RA4M1에서 실행되고, 무선 통신이 필요할 때 RA4M1이 ESP32-S3에 명령을 보내 처리하는 구조이다. 따라서 사용자는 기존 우노와 같은 방식으로 코드를 작성하면서 WiFiS3 라이브러리만으로 간단하게 무선 기능을 사용할 수 있다.

특징:

  • 기존 우노 R3와 동일한 보드 크기(68.6 x 53.4 mm)와 헤더 배치를 유지하여 기존 실드(Shield)를 대부분 그대로 사용할 수 있다.
  • 동작 전압 5V를 유지하여 기존 5V 센서와 모듈을 레벨 시프터 없이 연결할 수 있다.
  • 보드 위에 12x8(96개) 빨간색 LED 매트릭스가 있어 별도 부품 없이 글자나 아이콘을 표시할 수 있다.
  • USB 단자가 USB-B에서 USB-C로 바뀌었고, 외부 전원 입력(VIN) 범위가 6~24V로 넓어졌다.

2. 주요 사양 및 UNO R3와의 비교

기존 8비트 기반 우노 R3와 32비트로 업그레이드된 우노 R4 WiFi의 핵심 사양 차이는 다음과 같다.

항목 기존 아두이노 우노 (UNO R3) 신형 아두이노 우노 R4 WiFi
메인 MCU ATmega328P (8-bit AVR) Renesas RA4M1 (32-bit Arm Cortex-M4)
클럭 속도 16 MHz 48 MHz (3배 향상)
플래시 메모리 32 KB 256 KB (8배 증가)
SRAM 2 KB 32 KB (16배 증가)
EEPROM 1 KB 8 KB (데이터 플래시)
무선 통신 없음 Wi-Fi 2.4GHz, BLE 5 (ESP32-S3)
동작 전압 5V 5V
입력 전압 (VIN) 7~12V 6~24V
디지털 / 아날로그 핀 14개 / 6개 14개 / 6개
ADC 해상도 10-bit 최대 14-bit
DAC 없음 12-bit 1채널 (A0)
핀당 출력 전류 20 mA 8 mA
USB 단자 USB-B USB-C
부가 기능 없음 12x8 LED 매트릭스, Qwiic 커넥터, CAN, RTC, OP-AMP, USB HID

 

클럭은 3배, SRAM은 16배 늘어나 R3에서 메모리 부족으로 실행이 어려웠던 그래픽 디스플레이 제어나 여러 센서를 동시에 다루는 코드도 여유 있게 실행할 수 있다. 반면 핀당 출력 전류는 20mA에서 8mA로 줄어들었으므로 사용 시 주의가 필요하다.

 


3. PIN 배열 및 연결

우노 R4 WiFi는 기존 우노 R3와 동일한 위치에 디지털 핀(D0~D13), 아날로그 핀(A0~A5), 전원 핀(5V, 3.3V, GND, VIN)이 배치되어 있어 기존 회로와 실드를 그대로 연결할 수 있다.

[이미지: 아두이노 우노 R4 WiFi 핀 배열도]

1) 디지털 및 아날로그 핀

  • 디지털 입출력 핀 14개(D0~D13) 중 PWM 출력이 가능한 핀은 D3, D5, D6, D9, D10, D11이다.
  • 아날로그 입력 핀 6개(A0~A5)는 analogReadResolution() 함수로 최대 14비트(0~16383)까지 해상도를 높일 수 있다.
  • A0 핀은 12비트 DAC 출력을 지원하여 PWM이 아닌 실제 아날로그 전압을 출력할 수 있다.

2) 통신 핀

  • UART: D0(RX), D1(TX)는 Serial1으로 사용한다. R3와 달리 USB 시리얼(Serial)과 분리되어 있어 업로드 중에도 충돌이 없다.
  • I2C: A4(SDA), A5(SCL) 핀은 Wire로 사용하고, 보드 측면의 Qwiic 커넥터는 Wire1로 사용한다.
  • SPI: D11(COPI), D12(CIPO), D13(SCK)과 ICSP 헤더를 사용한다.
  • CAN: D4(CAN TX), D5(CAN RX) 핀을 지원하며, 실제 CAN 버스에 연결하려면 별도의 CAN 트랜시버 모듈이 필요하다.

3) 추가 커넥터 및 핀

  • Qwiic 커넥터: 3.3V 전용 I2C 커넥터로, 납땜 없이 Qwiic/STEMMA QT 규격 센서를 케이블 하나로 연결할 수 있다.
  • VRTC 핀: 코인 배터리를 연결하면 메인 전원이 꺼져도 내장 RTC(실시간 시계)가 계속 동작한다.
  • OFF 핀: GND에 연결하면 보드의 전원 레귤레이터를 끌 수 있다.

4. 개발환경 설치 (보드 패키지)

우노 R4 WiFi는 기존 AVR 보드와 다른 보드 패키지를 사용하므로, 아두이노 IDE에서 보드 패키지를 먼저 설치해야 한다.

  1. 아두이노 IDE 2.x를 실행한 후 툴 -> 보드 -> 보드 매니저를 선택한다.
  2. 검색창에 "UNO R4"를 입력하고 Arduino UNO R4 Boards를 찾아 설치 버튼을 누르면 된다.
  3. 설치가 끝나면 툴 -> 보드 -> Arduino UNO R4 Boards -> Arduino UNO R4 WiFi를 선택한다.
  4. USB-C 케이블로 보드를 PC에 연결하고 툴 -> 포트에서 해당 COM 포트를 선택해 주면 된다.

Wi-Fi 기능을 사용하는 WiFiS3 라이브러리와 LED 매트릭스를 제어하는 Arduino_LED_Matrix 라이브러리는 보드 패키지에 포함되어 있으므로 별도로 설치할 필요가 없다.


5. 예제 코드

1) LED 매트릭스에 하트 표시하기

보드에 내장된 12x8 LED 매트릭스에 하트 모양을 표시하는 기초 예제이다.

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

byte heart[8][12] = {
  { 0,0,1,1,0,0,0,1,1,0,0,0 },
  { 0,1,0,0,1,0,1,0,0,1,0,0 },
  { 0,1,0,0,0,1,0,0,0,1,0,0 },
  { 0,0,1,0,0,0,0,0,1,0,0,0 },
  { 0,0,0,1,0,0,0,1,0,0,0,0 },
  { 0,0,0,0,1,0,1,0,0,0,0,0 },
  { 0,0,0,0,0,1,0,0,0,0,0,0 },
  { 0,0,0,0,0,0,0,0,0,0,0,0 }
};

void setup() {
  matrix.begin();
  matrix.renderBitmap(heart, 8, 12);
}

void loop() {
}
  • 1 Line: LED 매트릭스 제어용 Arduino_LED_Matrix 라이브러리를 포함한다.
  • 3 Line: LED 매트릭스 객체(matrix)를 생성한다.
  • 5~14 Line: 8행 12열 배열로 하트 모양을 정의한다. 1은 LED 켜짐, 0은 꺼짐을 의미한다.
  • 17 Line: LED 매트릭스를 초기화한다.
  • 18 Line: renderBitmap() 함수로 배열 내용을 LED 매트릭스에 표시한다.

코드를 업로드하면 보드의 LED 매트릭스에 하트 모양이 표시되는 것을 확인할 수 있다.

[이미지: LED 매트릭스에 하트가 표시된 모습]

2) Wi-Fi로 LED 켜고 끄기 (웹서버)

우노 R4 WiFi를 공유기에 연결하고, 같은 네트워크의 스마트폰이나 PC 웹브라우저에서 보드의 내장 LED(D13)를 켜고 끄는 예제이다.

#include <WiFiS3.h>

char ssid[] = "공유기이름";
char pass[] = "비밀번호";

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);

  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
    Serial.println("Wi-Fi 연결 중...");
    delay(3000);
  }
  server.begin();
  Serial.print("접속 주소: http://");
  Serial.println(WiFi.localIP());
}

void loop() {
  WiFiClient client = server.available();
  if (!client) return;

  String request = client.readStringUntil('\r');
  if (request.indexOf("GET /on") >= 0)  digitalWrite(LED_BUILTIN, HIGH);
  if (request.indexOf("GET /off") >= 0) digitalWrite(LED_BUILTIN, LOW);

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html; charset=utf-8");
  client.println("Connection: close");
  client.println();
  client.println("<h2>UNO R4 WiFi LED 제어</h2>");
  client.println("<a href=\"/on\">LED 켜기</a> | <a href=\"/off\">LED 끄기</a>");
  delay(10);
  client.stop();
}
  • 1 Line: 우노 R4 WiFi 전용 Wi-Fi 라이브러리인 WiFiS3를 포함한다.
  • 3~4 Line: 연결할 공유기의 이름(SSID)과 비밀번호를 입력한다. 우노 R4 WiFi는 2.4GHz 대역만 지원하므로 5GHz 전용 공유기에는 연결되지 않는다.
  • 6 Line: 80번 포트를 사용하는 웹서버 객체를 생성한다.
  • 12~15 Line: Wi-Fi 연결에 성공할 때까지 3초 간격으로 연결을 시도한다.
  • 16~18 Line: 웹서버를 시작하고, 공유기에서 할당받은 IP 주소를 시리얼 모니터에 출력한다.
  • 22~23 Line: 접속한 클라이언트(웹브라우저)가 없으면 loop()를 다시 시작한다.
  • 25~27 Line: 요청 주소에 /on이 있으면 LED를 켜고, /off가 있으면 LED를 끈다.
  • 29~34 Line: 웹브라우저에 LED 켜기/끄기 링크가 있는 간단한 HTML 페이지를 보낸다.
  • 36 Line: 응답을 보낸 후 연결을 종료한다.

코드를 업로드한 후 시리얼 모니터(115200bps)를 열면 다음과 같이 접속 주소가 출력된다. 같은 공유기에 연결된 스마트폰에서 이 주소로 접속하여 링크를 누르면 보드의 LED가 켜지고 꺼지는 것을 확인할 수 있다.

[이미지: 시리얼 모니터에 출력된 IP 주소와 스마트폰 접속 화면]


6. 주요 용도 및 주의사항

추천 주요 용도:

  • IoT 입문 프로젝트: 별도의 Wi-Fi 모듈 없이 온습도 모니터링, 원격 릴레이 제어, 웹서버 등을 바로 만들 수 있어 IoT 입문용으로 적합하다.
  • 기존 우노 프로젝트 업그레이드: 우노 R3로 만든 프로젝트에 무선 기능을 추가하거나 메모리 부족 문제를 해결할 때 보드만 교체하여 사용할 수 있다.
  • 교육용 보드: LED 매트릭스와 Qwiic 커넥터 덕분에 추가 부품 없이도 출력 결과를 바로 확인할 수 있어 수업용으로 유리하다.
  • USB HID 장치: 키보드나 마우스로 PC에 인식되므로 매크로 키패드 같은 입력장치를 만들 수 있다.

사용 시 주의사항:

  • 핀당 출력 전류 8mA: R3(20mA)보다 출력 전류가 크게 낮으므로 LED는 저항값을 높여 연결하고, 모터나 릴레이 코일 같은 부하는 반드시 트랜지스터나 드라이버 모듈을 거쳐 구동해야 한다.
  • Qwiic 커넥터는 3.3V 전용: 헤더의 I2C 핀(A4, A5)은 5V 로직이고 Qwiic 커넥터는 3.3V이므로, 센서의 동작 전압에 맞는 쪽을 사용해야 한다.
  • AVR 전용 코드 호환성: AVR 레지스터를 직접 다루는 코드나 일부 AVR 전용 라이브러리(예: 타이머 직접 제어)는 동작하지 않을 수 있으므로 라이브러리의 지원 보드를 확인해야 한다.
  • 2.4GHz Wi-Fi 전용: 5GHz 대역 Wi-Fi에는 연결할 수 없다.

구매좌표:

 

 

Arduino UNO R4 WIFI ABX00087 Renesas RA4M1 Development board imported from Italy New original authentic Italian import - AliExpr

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

 

반응형
반응형

1. 아두이노 나노 R4 (Arduino Nano R4) 소개

기존 아두이노 나노(Nano R3 / Classic Nano)는 브레드보드에 직접 꽂아 쓸 수 있는 콤팩트한 크기와 우수한 접근성 덕분에 소형 시제품 개발이나 소형 로봇 제작에 널리 사용되어 온 보드이다. 하지만 8비트 ATmega328P 마이크로컨트롤러(MCU)를 탑재하고 있어 2KB에 불과한 SRAM 메모리와 16MHz 클럭의 한계로 인해, 복잡한 연산이나 고주파 신호 처리, 신형 센서 라이브러리 구동 시 메모리 부족 현상이 자주 발생했다.
**아두이노 나노 R4(Arduino Nano R4)**는 이러한 성능적 한계를 극복하기 위해 기존 나노의 소형 폼팩터(45 x 18 mm)를 유지하면서, 내부 핵심 두뇌를 32비트 Renesas RA4M1 (Arm Cortex-M4) 프로세서로 전면 교체한 최신 하이브리드 보드이다. 연산 속도와 메모리가 비약적으로 향상되었을 뿐만 아니라, 산업용 통신 규격인 CAN Bus, 정밀 12-bit DAC, 온보드 RGB LED, Qwiic I2C 커넥터 등 고급 주변장치가 대거 추가되었다.

2. 주요 사양 및 R3(기존 Nano)와의 비교

기존 8비트 기반 나노 R3와 32비트로 업그레이드된 신형 나노 R4의 핵심 사양 차이는 다음과 같다.

항목기존 아두이노 나노 (Nano R3)신형 아두이노 나노 R4 (Nano R4)

메인 MCU
ATmega328P (8-bit AVR)
Renesas RA4M1 (32-bit Arm® Cortex®-M4)
클럭 속도 (Clock)
16 MHz
48 MHz (3배 향상)
플래시 메모리 (Flash)
32 KB
256 KB (8배 확장)
SRAM (메모리)
2 KB
32 KB (16배 확장)
EEPROM
1 KB
8 KB
동작 전압 (Logic Voltage)
5V
5V (5V 로직 유지로 기존 센서 호환)
입력 전압 (VIN)
7 ~ 12 V
6 ~ 21 V (전원 허용범위 확대)
USB 커넥터
Mini-USB / Micro-USB
USB-C
신규 주변장치
없음
12-bit DAC, CAN Bus, Op-Amp, RTC, Qwiic, RGB LED
보드 형태
DIP 스루홀 핀전용
DIP 스루홀 + 캐슬레이티드(Castellated) SMD 납땜 지원

 


3. PIN 배열 및 새로운 주변장치(Peripheral) 특징

아두이노 나노 R4는 기존 나노 R3와 거의 동일한 핀 배치를 유지하여 빵판(Breadboard) 연결 호환성을 보장하면서도 내부에 강력한 부가 기능들을 새로 탑재했다.
1) 5V 로직 및 입출력 핀
  • 32비트 ARM 칩셋으로 변경되었음에도 동작 전압 5V를 그대로 유지한다. 따라서 기존 5V 센서나 모듈, 릴레이 등을 전압 변환기(Level Shifter) 없이 직접 연결할 수 있다.
  • 디지털 입출력 핀 14개, 아날로그 입력 핀 8개가 제공된다.
2) 정밀 12-bit DAC (A0 핀)
  • 기존 R3는 진짜 아날로그 전압 출력이 불가능하여 PWM(아날로그 시늉)만 가능했으나, 나노 R4는 A0 핀을 통해 **진짜 아날로그 가변 전압(12-bit DAC, 0~4095 단계)**을 출력할 수 있어 오디오 음원 합성 및 파형 생성에 유리하다.
3) Qwiic 커넥터 및 온보드 RGB LED
  • 보드 측면에 SparkFun 규격의 Qwiic I2C 커넥터가 기본 탑재되어 케이블 연결만으로 각종 I2C 센서를 납땜 없이 직렬 연결할 수 있다.
  • 시스템 상태를 직관적으로 표현할 수 있는 사용자 제어용 RGB LED가 내장되어 있어 별도 외장 LED 배선 없이도 다채로운 피드백을 구현할 수 있다.
4) 캐슬레이티드(Castellated) 모듈 설계
  • 보드 가장자리에 캐슬레이티드 홈이 파여 있어, 사용자가 제작한 맞춤형 메인 PCB 표면에 나노 R4 보드 자체를 직접 모듈 형태로 겉납땜(SMD Assembly)하여 양산 제품에 이식하기 쉽다.

4. 개발환경 준비 (Arduino IDE / PlatformIO)

아두이노 나노 R4는 기존 아두이노 IDE 및 VS Code 기반 PlatformIO 환경 모두에서 쉽게 설정하여 작성할 수 있다.
  1. 아두이노 IDE 2.0+ 설정:
    • 아두이노 IDE 실행 후 **[도구] → [보드] → [보드 매니저(Boards Manager)]**로 이동한다.
    • 검색창에 UNO R4 또는 Nano R4를 검색한 뒤, Arduino UNO R4 Boards 패키지를 설치한다. (나노 R4는 UNO R4 코어 라이브러리를 함께 공유한다.)
    • 보드 선택 메뉴에서 Arduino Nano R4를 선택하고 USB-C 포트로 연결한다.
  2. PlatformIO (VS Code) 설정:
    • platformio.ini 파일에 다음과 같이 보드 환경을 지정해 준다.
[env:nano_r4]
platform = renesas-ra
board = nano_r4
framework = arduino

5. 예제 코드: 온보드 RGB LED 제어 및 12-bit DAC 아날로그 전압 출력

다음 예제는 나노 R4의 온보드 RGB LED 색상을 변경함과 동시에 A0(DAC) 핀으로 정밀한 아날로그 전압 파형을 출력하는 기초 스케치 코드이다.
#define DAC_PIN A0

void setup() {
  // 1. DAC 출력 해상도를 12비트(0~4095)로 설정
  analogWriteResolution(12);
  
  // 2. 온보드 RGB LED 핀 출력 설정 (Nano R4 전용 핀 정의)
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
  
  // RGB LED 초기화 (High 전압 시 꺼짐)
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);
}

void loop() {
  // [단계 1] RGB LED 빨간색 점등 & DAC 전압 상승 (0V -> 5V)
  digitalWrite(LEDR, LOW);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);
  
  for (int val = 0; val <= 4095; val += 50) {
    analogWrite(DAC_PIN, val);  // 12-bit DAC 아날로그 전압 출력
    delay(1);
  }
  delay(300);

  // [단계 2] RGB LED 파란색 점등 & DAC 전압 하강 (5V -> 0V)
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, LOW);

  for (int val = 4095; val >= 0; val -= 50) {
    analogWrite(DAC_PIN, val);
    delay(1);
  }
  delay(300);
}
  • 1 Line: 12-bit DAC 전용 아날로그 출력 핀인 A0를 DAC_PIN으로 정의한다.
  • 5 Line: analogWriteResolution(12) 명령어를 사용하여 아날로그 출력 해상도를 기본 8비트(0255)에서 12비트(04095)로 끌어올린다.
  • 8~10 Line: Nano R4 보드에 내장된 RGB LED 제어용 핀(LEDR, LEDG, LEDB)을 출력 모드로 설정한다.
  • 21~24 Line: analogWrite(DAC_PIN, val)를 호출하여 A0 핀에 실제 0V부터 5V까지의 아날로그 가변 전압 신호를 생성해 출력한다.
  • 31~34 Line: 전압을 5V에서 0V로 단계적으로 낮추며 파형을 완성한다.

6. 주요 용도 및 주의사항

  1. 추천 주요 용도:
    • 고속 센서 데이터 처리 및 필터링: 48MHz 32비트 MCU와 32KB RAM 덕분에 DSP 연산이나 복잡한 센서 융합 알고리즘 처리에 적합하다.
    • 아날로그 음원/신호 생성기: 12-bit DAC를 활용하여 오디오 소리 합성이나 정밀 제어용 아날로그 전압 신호를 만들 수 있다.
    • CAN 통신 임베디드 장치: 자동차 및 산업용 현장 장비 통신(CAN Bus) 프로토타입 제작에 유용하다.
    • 양산형 소형 시제품: 캐슬레이티드 홈을 활용하여 자체 커스텀 PCB 보드에 모듈 형태로 직접 납땜 이식이 가능하다.
  2. 사용 시 주의사항:
    • 5V 동작 방식 유지: 32비트 ARM 칩셋이지만 5V 동작 전압을 사용하므로, 3.3V 전용 I2C 센서나 3.3V 전용 통신 모듈을 연결할 때는 전압 레벨에 주의하여 Qwiic 포트(3.3V 전용)를 활용하거나 레벨 시프터를 연결해야 한다.

구매좌표:

 

Original genuine Italian product Arduino Nano R4 Development board ABX00142 UNO REV3 NANO V3.0 R4 WIFI MINIMA - AliExpress 502

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 



반응형

+ Recent posts