본문 바로가기

개발자/ArduinoUnoQ

Arduino UNO Q 긍극의 가이드 1 사용 설명서

반응형

 

Arduino UNO Q: AI와 엣지 컴퓨팅을 위한 궁극의 가이드 🚀

 

더 이상 '만능'을 찾지 마세요! Arduino UNO의 새로운 시대를 열어줄 궁극의 개발 보드가 여기에 있습니다.

 

Arduino UNO Q는 단순한 마이크로컨트롤러를 넘어섭니다. Qualcomm Dragonwing™ QRB2210 프로세서의 강력한 쿼드 코어 컴퓨팅 파워와 STM32U585 마이크로컨트롤러의 실시간 제어 능력을 하나의 보드에 통합하여, 여러분의 AI 및 IoT 프로젝트를 엣지 컴퓨팅의 새로운 영역으로 끌어올릴 준비가 되어 있습니다.

 

복잡한 객체 인식, 음성 명령, 고급 로보틱스 프로젝트를 꿈꿔왔지만, 기존 UNO의 성능 한계에 부딪혔던 경험이 있으신가요? 이제 그 모든 고민은 끝입니다! Linux 기반의 싱글 보드 컴퓨터(SBC) 기능, 풍부한 연결성(Wi-Fi 5, Bluetooth 5.1), 그리고 납땜 없는 Qwiic 확장성까지 갖춘 UNO Q는 여러분의 아이디어를 현실로 만드는 가장 빠르고, 가장 강력한 경로를 제공합니다.

 

이 가이드는 UNO Q의 잠재력을 100% 해방할 수 있도록 설계되었습니다. 초보자를 위한 기본 사용법부터, SBC로서의 활용, 필수적인 전원 사양, 그리고 시스템을 완전히 커스터마이징하기 위한 이미지 플래싱 방법까지! 이 모든 핵심 정보를 빠짐없이 담았습니다. 

 

 

다음 가이드는 아래 4부분으로 구성하였습니다.

 

1. UNO Q 사용 설명서

2. 싱글 보드 컴퓨터로서의 UNO Q

3. UNO Q 전원 사양

4. UNO Q에 새 이미지 플래싱하기 

 

 

 

Arduino® UNO Q의 하드웨어 및 소프트웨어 기능에 대해 알아보세요.

 

개요

 

이 사용자 설명서는 Arduino UNO Q의 가장 흥미로운 기능을 다루는 실제적인 여정을 안내합니다. 이 사용자 설명서를 통해 Arduino 보드를 설정, 구성 및 사용하는 방법을 배울 수 있습니다.

 

아두이노 우노 Q

 

하드웨어 및 소프트웨어 요구 사항

 

하드웨어 요구 사항

  • Uno Q
  • USB-C 케이블
  • 외부 전원 공급 기능이 있는 USB-C 멀티포트 어댑터(동글)

* Apple 제품을 제외하고 외부 전원 공급 기능이 있는 모든 USB-C 동글을 사용할 수 있습니다 .

 

 

소프트웨어 요구 사항

* Arduino IDE 2+를 사용하면 UNO Q의 마이크로컨트롤러(MCU) 부분만 프로그래밍할 수 있습니다.

 

제품 개요

 

Arduino UNO Q는 Qualcomm의 고급 QRB2210 마이크로프로세서(MPU)의 강력한 컴퓨팅 성능과 업스트림 지원이 포함된 전체 Debian Linux OS, 그리고 Zephyr OS에서 Arduino 스케치를 실행하는 전용 STM32U585 마이크로컨트롤러(MCU)의 실시간 응답성을 결합하여 Arduino 생태계에 새로운 수준의 성능을 제공합니다. 이 모든 것이 단일 보드 컴퓨터에서 가능합니다.

 

보드 아키텍처 개요

 

Arduino UNO Q는 완전한 Linux 환경을 구동하는 고성능 Qualcomm® QRB2210 MPU와 STMicroelectronics® STM32U585(32비트 Arm® Cortex®-M33) MCU의 실시간 정밀도를 모두 하나의 소형 보드에 통합했습니다. 이 혼합 아키텍처는 AIoT, 머신 러닝 및 고급 자동화 애플리케이션에 필요한 성능과 응답성을 제공합니다.

 

 

UNO Q의 주요 구성 요소

 

 

위 이미지에 표시된 대로 보드의 주요 구성 요소에 대한 개요는 다음과 같습니다.

 

  • 마이크로프로세서 : Qualcomm® QRB2210은 2.0GHz로 작동하는 쿼드코어 Arm® Cortex®-A53 프로세서로, 3D 그래픽 가속을 위한 Adreno™ 702 GPU(845MHz)와 30fps에서 최대 25MP를 지원하는 듀얼 ISP를 탑재했습니다. 업스트림을 지원하는 Debian Linux OS를 실행하므로 임베디드 비전 및 엣지 컴퓨팅 애플리케이션에 적합합니다.
  • 마이크로컨트롤러 : STM32U585 마이크로컨트롤러는 최대 160MHz의 Arm® Cortex®-M33 코어와 2MB 플래시 메모리, 786KB SRAM을 탑재하고 있습니다. Zephyr OS를 구동하여 저전력 임베디드 애플리케이션을 위한 안전하고 효율적인 플랫폼을 제공합니다.
  • 무선 연결 : WCBN3536A 무선 모듈은 듀얼 밴드 Wi-Fi® 5(2.4/5GHz) 및 Bluetooth® 5.1 연결을 제공하며, 둘 다 안정적인 무선 성능을 위한 온보드 안테나를 갖추고 있습니다.
  • 메모리 : 이 보드는 16GB 또는 32GB eMMC 스토리지 옵션과 2GB 또는 4GB LPDDR4 RAM 옵션을 제공하여 임베디드 애플리케이션을 위한 빠른 메모리 액세스와 안정적인 스토리지를 제공합니다.
  • 멀티미디어 코덱 : ANX7625 멀티미디어 코덱은 온보드 USB-C 커넥터를 통해 비디오 및 오디오 출력을 지원하여 임베디드 애플리케이션에서 디스플레이 및 사운드 전송을 위한 고속 인터페이스를 제공합니다.
  • 전원 관리 : UNO Q에는 항상 연결된 IoT 기기의 요구 사항을 충족하는 전원 관리 집적 회로(PMIC)인 Qualcomm® PM4145가 포함되어 있습니다.

 

핀아웃

 

 

UNO Q 간단한 핀아웃

 

전체 핀아웃은 다음 링크에서 PDF로 다운로드할 수 있습니다.

 

UNO Q 전체 핀아웃

 

데이터시트

 

전체 데이터시트는 아래 링크에서 PDF로 다운로드할 수 있습니다.

 

UNO Q 데이터시트

 

회로도

 

전체 개략도는 아래 링크에서 PDF로 다운로드할 수 있습니다.

 

UNO Q 회로도

 

STEP 파일

 

전체 STEP 파일은 아래 링크에서 다운로드할 수 있습니다.(STEP 파일은 ISO 표준교환형식인 STEP (제품 데이터 교환 표준 Standard for the Exchange of Product Model Data)으로 포맷된 3D 모델 파일입니다.)

 

UNO Q STEP 파일

 

폼 팩터

 

Arduino UNO Q는 고전적인 UNO 폼팩터를 특징으로 하며, 시간이 지남에 따라 우리와 커뮤니티가 개발한 다양한 UNO 실드와의 호환성을 보장합니다.

 

 

UNO 폼 팩터

 

 

첫 번째 사용

 

보드에 전원 공급

 

Arduino UNO Q는 다음으로 전원을 공급받을 수 있습니다.

  • 5 VDC 3 A를 제공하는 USB-C® 케이블
  • 보드 5V 핀에 연결된 외부 +5 VDC 전원 공급 장치
  • VIN 핀에 연결된 외부 +7-24 VDC 전원 공급 장치

 

UNO Q 전원 옵션

 

여기를 클릭하여 UNO Q 전원 사양에 대해 자세히 알아보세요.

 

Arduino App Lab 설치

 

아두이노는 기존 아두이노 경험을 고성능 컴퓨팅 세계로 확장하는 통합 개발 환경인 아두이노 앱 랩(Arduino App Lab) 을 출시했습니다 . 아두이노 앱 랩을 사용하면 아두이노 스케치, 파이썬 스크립트, 컨테이너화된 리눅스 애플리케이션을 단일 워크플로로 원활하게 통합할 수 있습니다. 브릭(Brick)이라는 직관적인 구성 요소, 사전 구성된 AI 모델, 그리고 통합 오케스트레이션 기능을 통해 복잡성을 줄이는 동시에 간단한 프로토타입부터 고급 컴퓨팅 집약적 애플리케이션까지 모든 것을 개발할 수 있습니다.

 

 

아두이노 앱 랩 IDE

 

설치하려면 공식 웹사이트의 소프트웨어 섹션 으로 가서 Arduino App Lab으로 스크롤한 다음 해당 OS 버전을 선택하세요.

 

 

Arduino 앱 랩 설치

 

* Arduino App Lab은 UNO Q에 사전 설치되어 있으며 싱글보드 컴퓨터 모드로 사용할 수 있습니다. 더 나은 경험을 위해 4GB RAM UNO Q 모델을 적극 권장합니다.

 

Hello World 예제

 

아두이노 생태계의 대표적인 Hello World 예제인 Blink 스케치를 사용하여 UNO Q를 프로그래밍해 보겠습니다 . 이 예제를 사용하여 보드가 아두이노 앱랩에 올바르게 연결되었는지 확인합니다.

 

필수 조건:

  • 아두이노 우노 Q
  • USB-C 케이블
  • 인터넷 접속이 가능한 컴퓨터(PC 호스팅 모드)
  • 모니터, 키보드, 마우스, USB-C 동글(단일 보드 컴퓨터 모드)

 

UNO Q를 PC에 연결합니다(단일 보드 컴퓨터 모드가 아닌 경우).

 

 

SBC 모드 및 PC 호스팅 설정

 

 

Arduino 앱 랩을 열면 예제 섹션 이 열립니다 .

 

 

Arduino 앱 랩 랜딩 페이지

 

 

Blink LED 예제를 엽니다 (앱이 작동하는 방식을 이해하려면 예제 설명서를 읽어보세요).

 

오른쪽 상단의 실행 버튼을 클릭하고 앱이 업로드될 때까지 기다리세요.

 

 

실행 및 깜박임

 

이제 내장된 RGB LED의 빨간색 LED가 1초 동안 켜지고, 1초 동안 꺼지는 것을 반복하는 것을 볼 수 있습니다.

 

 

빨간색 LED 깜박임

 

이 예제에서 제어되는 LED는 Arduino 스케치를 통해 STM32 마이크로컨트롤러에 의해 구동됩니다.

 

온보드 사용자 인터페이스

 

Arduino UNO Q는 다양한 사용자 인터페이스를 제공하여 직관적이고 간단한 상호작용을 제공합니다.

 

LED 매트릭스

 

이 보드의 주요 특징 중 하나는 UNO Q의 STM32 마이크로컨트롤러가 관리하는 8×13 파란색 LED 매트릭스입니다.

 

 

LED 매트릭스

 

 

데이터, 상태 표시기, 아이콘을 표시하거나 간단한 애니메이션과 게임을 만드는 데 사용할 수 있는 다용도 디스플레이입니다.

 

다음은 LED 매트릭스 사용에 대한 기본 예시 목록입니다 . 테스트하려면 아래 단계를 따르세요.

 

UNO Q를 PC에 연결합니다(단일 보드 컴퓨터 모드가 아닌 경우).

 

 

SBC 모드 및 PC 호스팅 설정

 

 

Arduino 앱 랩을 열고 내 앱 으로 이동한 후 새 앱 만들기+를 클릭합니다 .

 

 

새로운 앱을 만드세요

 

아래 각 예를 테스트하려면 새로운 앱을 만들어야 합니다.

 

이미지 드로잉

 

이 예제는 LED 매트릭스에서 사용자 정의 프레임 , 특히 Arduino 로고를 그리는 것입니다 .

 

다음 예제를 Arduino 앱 랩의 새 앱의 "스케치" 부분에 복사하여 붙여넣을 수 있습니다.

 

#include <Arduino_LED_Matrix.h>

uint8_t logo[104] = {
    0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,1,1,1,0,0,0,1,1,1,0,0,
    0,1,0,0,0,1,0,1,0,0,0,1,0,
    1,0,0,0,0,0,1,0,0,1,0,0,1,
    1,0,1,1,1,0,1,0,1,1,1,0,1,
    1,0,0,0,0,0,1,0,0,1,0,0,1,
    0,1,0,0,0,1,0,1,0,0,0,1,0,
    0,0,1,1,1,0,0,0,1,1,1,0,0
};

Arduino_LED_Matrix matrix;

void setup() {
  matrix.begin();
  // display the image
  matrix.setGrayscaleBits(1);
  matrix.draw(logo);

}

void loop() {

}

 

Arduino App Lab에서는 다음과 같이 보여야 합니다.

 

 

업로드할 준비가 된 예시

 

 

위의 예와 같이 1과 0을 사용하여 행렬 형식(8x13)에 따라 배열을 만들어서 나만의 프레임을 만들 수 있습니다.

 

 

매트릭스 프레임 예제

 

 

Arduino 앱 랩에서 실행 버튼을 클릭하여 앱을 실행하면 프레임을 표시하는 LED 매트릭스가 표시됩니다.

 

 

LED 매트릭스 예제 실행

 

디밍 가능한 LED

 

LED 매트릭스는 8단계의 회색조(3비트)를 지원하므로 LED 밝기를 개별적으로 관리할 수 있습니다.

 

밝기 비트는 setGrayscaleBits(bits) 기능으로 설정할 수 있습니다. 아래와 같이 표시됩니다.

 

matrix.setGrayscaleBits(3); // 3 bits result on 8 brightness levels (0 to 7)

 

일반적으로 회색조 변환 도구는 256단계(8비트)를 사용하므로 이 범위를 사용할 수도 있으며, 자동으로 매핑됩니다.

 

matrix.setGrayscaleBits(8); // 8 bits result on 256 brightness levels (0 to 255)

 

이 예는 LED 매트릭스에서 지원되는 회색조를 보여주기 위한 것입니다.

 

다음 예제를 Arduino 앱 랩의 새 앱의 "스케치" 부분에 복사하여 붙여넣을 수 있습니다.

 

#include <Arduino_LED_Matrix.h>

uint8_t shades[104] = {
    0,0,0,0,0,0,0,0,0,0,0,0,0,
    1,1,1,1,1,1,1,1,1,1,1,1,1,
    2,2,2,2,2,2,2,2,2,2,2,2,2,
    3,3,3,3,3,3,3,3,3,3,3,3,3,
    4,4,4,4,4,4,4,4,4,4,4,4,4,
    5,5,5,5,5,5,5,5,5,5,5,5,5,
    6,6,6,6,6,6,6,6,6,6,6,6,6,
    7,7,7,7,7,7,7,7,7,7,7,7,7
};

Arduino_LED_Matrix matrix;

void setup() {
  matrix.begin();
  // display the image
  matrix.setGrayscaleBits(3);
  matrix.draw(shades);

}

void loop() {

}

 

Arduino 앱 랩에서 실행 버튼을 클릭하여 앱을 실행하면 프레임을 표시하는 LED 매트릭스가 표시됩니다.

 

 

LED 매트릭스 예제 실행

 

 

RGB LED

 

UNO Q에는 4개의 RGB LED가 있습니다. 이 중 두 개는 Qualcomm 마이크로프로세서에 의해 연결 및 제어되고, 나머지 두 개는 STM32 마이크로컨트롤러에 의해 제어됩니다.

 

 

UNO Q RGB LED

 

MPU 제어 LED

 

LED #1과 #2는 MPU에 의해 제어됩니다.

 

Linux OS에는 이러한 LED를 제어하기 위한 전용 LED 인터페이스가 있으며, 명령줄에서 /sys/class/leds를 통해 제어하거나, SSH를 사용하거나, PC 터미널에서 ADB 연결을 사용하거나, 단일 보드 컴퓨터 모드에서 사용할 경우 Linux 내장 터미널 애플리케이션을 사용하여 제어할 수 있습니다.

 

echo 1    | sudo tee /sys/class/leds/red:user/brightness   # set HIGH/ON
echo 0    | sudo tee /sys/class/leds/red:user/brightness   # set LOW/OFF

 

 

리눅스 LED 제어

 

LED 색상 세그먼트는 다음과 같이 정의됩니다.

 

LED 1:

 

빨간색: red:user

녹색: green:user

파란색: blue:user

 

LED 2:

 

빨간색: red:panic

녹색: green:wlan

파란색: blue:bt

 

LED 2는 시스템 상태를 표시하는 데 사용됩니다. PANIC, WLAN 그리고 BT. 하지만 사용자가 제어할 수 있습니다.

 

다음과 같이 Python 스크립트에서 이 LED를 제어할 수도 있습니다. Arduino App Lab에서 새 앱을 만든 후 아래 스크립트를 앱의 Python 섹션에 복사하여 붙여넣으세요.

 

import time

LED1_R = "/sys/class/leds/red:user/brightness"
LED1_G = "/sys/class/leds/green:user/brightness"
LED1_B = "/sys/class/leds/blue:user/brightness"

LED2_R = "/sys/class/leds/red:panic/brightness"
LED2_G = "/sys/class/leds/green:wlan/brightness"
LED2_B = "/sys/class/leds/blue:bt/brightness"

def set_led_brightness(led_file, value):
    try:
        with open(led_file, "w") as f:
            f.write(f"{value}\n")
    except Exception as e:
        print(f"Error writing to {led_file}: {e}")

def main():
  # turn off all LEDs
  set_led_brightness(LED1_R, 0)
  set_led_brightness(LED1_G, 0)
  set_led_brightness(LED1_B, 0)
  set_led_brightness(LED2_R, 0)
  set_led_brightness(LED2_G, 0)
  set_led_brightness(LED2_B, 0)

  while True:
    #blink the LED 1 RED segment
    set_led_brightness(LED1_R, 1)
    time.sleep(1)
    set_led_brightness(LED1_R, 0)
    time.sleep(1)

if __name__ == "__main__":
    main()

 

MCU 제어 LED

 

LED #3과 #4는 MCU에 의해 제어됩니다.

 

각각의 GPIO 상태를 digitalWrite 설정하여 제어할 수 있습니다. 평소와 같이 작동합니다.

 

테스트하려면 아래 단계를 따르세요.

 

  • UNO Q를 PC에 연결합니다(단일 보드 컴퓨터 모드가 아닌 경우).
  • Arduino 앱 랩을 열고 내 앱 으로 이동한 후 새 앱 만들기+를 클릭합니다 .

 

다음 예제를 Arduino 앱 랩의 새 앱의 "스케치" 부분에 복사하여 붙여넣을 수 있습니다.

 

void setup(){
  // Configure the pins as outputs
  pinMode(LED3_R, OUTPUT);
  pinMode(LED3_G, OUTPUT);
  pinMode(LED3_B, OUTPUT);
  // As they are active low, turn them OFF initially
  digitalWrite(LED3_R, HIGH);
  digitalWrite(LED3_G, HIGH);
  digitalWrite(LED3_B, HIGH);
}

void loop(){
  digitalWrite(LED3_R, LOW);  // Turn ON red segment
  digitalWrite(LED3_G, HIGH);
  digitalWrite(LED3_B, HIGH);
  delay(1000);
  digitalWrite(LED3_R, HIGH);
  digitalWrite(LED3_G, LOW);  // Turn ON green segment
  digitalWrite(LED3_B, HIGH);
  delay(1000);
  digitalWrite(LED3_R, HIGH);
  digitalWrite(LED3_G, HIGH);
  digitalWrite(LED3_B, LOW);  // Turn ON blue segment
  delay(1000);
}

 

 

MCU LED 제어

 

LED 색상 세그먼트는 다음과 같이 정의됩니다.

 

LED 3:

 

빨간색: LED3_R

녹색: LED3_G

파란색: LED3_B

 

LED 4:

 

빨간색: LED4_R

녹색: LED4_G

파란색: LED4_B

 

RGB LED는 액티브 로우(active low)입니다. 즉, 논리 '0'으로 켜집니다.

 

전원 버튼

 

UNO Q에는 보드를 재부팅하는 데 사용할 수 있는 전원 버튼이 있습니다.

 

 

UNO Q 전원 버튼

 

 

길게 누르기 : 버튼을 5 초 이상 누르면 보드의 Linux 부분이 재부팅됩니다 .

 

* 보드의 전원을 켜기 위해 전원 버튼을 누를 필요는 없습니다. 전원이 공급되면 자동으로 부팅됩니다.

 

USB-C 커넥터

 

UNO Q는 보드에 전원을 공급하고 프로그래밍하는 것 외에도 다양한 용도로 사용할 수 있는 USB-C 커넥터를 갖추고 있습니다.

 

 

USB-C 커넥터

 

 

아래는 UNO Q의 기능을 확장하는 USB-C 커넥터의 주요 기능을 나타낸 표입니다.

 

Feature Description
USB Power (Sink) 5 VDC 3 A (15 W)
USB Standard USB 3.1 Gen 1 (5 Gb/s)
Display over USB-C DisplayPort

 

 

USB-C 동글(어댑터/허브)을 사용하면 다음 기능도 활용할 수 있습니다.

 

Feature Description
Video Output HDMI support
Video Input USB camera support
Audio USB or 3.5mm headset (speaker + microphone)
Ethernet Internet through Ethernet supported
HID USB keyboard/mouse and other HID devices
Storage External microSD card or USB drive support

 

 

Pins

 

UNO Q에는 두 가지 유형의 커넥터가 장착되어 있습니다. 상단에는 프로토타입 제작 및 디버깅을 위해 설계된 클래식 UNO 스타일 헤더가 있어 Arduino UNO Shield와의 완벽한 호환성을 보장하고, 하단에는 UNO Q 캐리어와의 통합을 위해 특별히 제작된 고속 헤더 커넥터가 있습니다.

 

디지털 핀

 

UNO Q에는 STM32 마이크로컨트롤러로 제어되는 47개의 디지털 핀이 있으며 , 그 중 22개는 UNO 스타일 커넥터를 통해 노출되고 25개는 다음과 같이 매핑된 JMISC 커넥터를 통해 노출됩니다.

 

Microcontroller Pin Arduino Pin Mapping Pin Functionality
PB7 D0 / RX GPIO / UART RX
PB6 D1 / TX GPIO / UART TX
PB3 D2 GPIO
PB0 D3 GPIO / OPAMP OUT
PA12 D4 / FDCAN1_TX GPIO / CAN Bus TX
PA11 D5 / FDCAN1_RX GPIO / CAN Bus RX
PB1 D6 GPIO
PB2 D7 GPIO
PB4 D8 GPIO
PB8 D9 GPIO
PB9 D10 / SS GPIO / SPI SS
PB15 D11 / MOSI GPIO / SPI MOSI
PB14 D12 / MISO GPIO / SPI MISO
PB13 D13 / SCK GPIO / SPI SCK
PA4 D14 / DAC0 GPIO / ADC / DAC
PA5 D15 / DAC1 GPIO / ADC / DAC
PA6 D16 GPIO / ADC / OPAMP IN +
PA7 D17 GPIO / ADC / OPAMP IN -
PC1 D18 / SDA2 GPIO / ADC / I2C SDA
PC0 D19 / SCL2 GPIO / ADC / I2C SCL
PB11 D20 / SDA GPIO / I2C SDA
PB10 D21 / SCL GPIO / I2C SCL

 

* D14~D19 핀에도 아날로그 기능이 있다는 점에 유의하세요.

 

UNO Q의 디지털 핀은 Arduino 프로그래밍 언어의 내장 함수를 통해 입력 또는 출력으로 사용할 수 있습니다.

 

디지털 핀의 구성은 다음에서 수행됩니다.setup() 내장 함수를 사용한 함수 pinMode() 아래와 같이 표시됩니다.

 

// Pin configured as an input
pinMode(pin, INPUT);
// Pin configured as an output
pinMode(pin, OUTPUT);
// Pin configured as an input, internal pull-up resistor enabled
pinMode(pin, INPUT_PULLUP);

 

입력으로 구성된 디지털 핀의 상태는 내장 함수를 사용하여 읽을 수 있습니다.digitalRead()아래와 같이 표시됩니다.

 

// Read pin state, store value in a state variable

state = digitalRead(pin);

 

출력으로 구성된 디지털 핀의 상태는 내장 함수를 사용하여 변경할 수 있습니다.digitalWrite()아래와 같이 표시됩니다.

 

// Set pin on

digitalWrite(pin, HIGH);

// Set pin off

digitalWrite(pin, LOW);

 

아래에 표시된 예제 코드는 LED를 제어하기 위해 디지털 핀 D5 를 사용합니다. 디지털 핀 D4 에 연결된 버튼의 상태를 읽습니다.:

 

 

디지털 I/O 예제 배선

 

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

 

#include <Arduino_RouterBridge.h>
// Define button and LED pin
int buttonPin = D4;
int ledPin = D5;

// Variable to store the button state
int buttonState = 0;

void setup() {
  // Configure button and LED pins
  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);

  // Initialize Serial communication
  Monitor.begin();
}

void loop() {
  // Read the state of the button
  buttonState = digitalRead(buttonPin);

  // If the button is pressed, turn on the LED and print its state to the Serial Monitor
  if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
    Monitor.println("- Button is pressed. LED is on.");
  } else {
    // If the button is not pressed, turn off the LED and print to the Serial Monitor
    digitalWrite(ledPin, LOW);
    Monitor.println("- Button is not pressed. LED is off.");
  }

  // Wait for 1000 milliseconds
  delay(1000);
}

 

 

아날로그 핀

 

UNO Q는 JANALOG 커넥터의 잘 알려진 아날로그 핀을 사용합니다. 자세한 내용은 아래와 같습니다.

 

아날로그-디지털 변환기(ADC)

 

JANALOG 커넥터 에서 UNO Q에는 다음과 같이 매핑된 6개의 14비트 ADC 핀이 있습니다.

 

Microcontroller Pin Arduino Pin Mapping Pin Functionality
PA4 A0 GPIO / ADC / DAC
PA5 A1 GPIO / ADC / DAC
PA6 A2 GPIO / ADC / OPAMP IN +
PA7 A3 GPIO / ADC / OPAMP IN -
PC1 A4 GPIO / ADC / I2C SDA
PC0 A5 GPIO / ADC / I2C SCL

 

 

아날로그 입력 핀은 Arduino 프로그래밍 언어의 내장 함수를 통해 사용할 수 있습니다.

 

UNO Q ADC 분해능은 analogReadResolution(bits) 기능을 사용하여 14, 12, 10 또는 8비트 사이에서 구성할 수 있습니다.

 

// ADC resolution set to 14-bit (0 to 16383)

analogReadResolution(14);

 

디폴트트 ADC 전압 기준 은 3.3V이며, 다음 인수를 사용하여 analogReference() 기능을 사용하여 소프트웨어로 변경할 수 있습니다.:

 

Analog Voltage Reference (VREF+) Argument Source
1.5 V AR_INTERNAL1V5 Internal
1.8 V AR_INTERNAL1V8 Internal
2.048 V AR_INTERNAL2V05 Internal
2.5 V AR_INTERNAL2V5 Internal
2 V ~ VDD AR_EXTERNAL External

 

 

* 외부 전압 레퍼런스는 AR_EXTERNAL 참조를 사용할 때 AREF 핀을 통해  제공할 수 있습니다 .

 

기본 아날로그 기준과 다른 아날로그 기준을 설정하려면 다음 예를 참조하세요.

 

analogReference(AR_INTERNAL2V5);

 

아래에 표시된 예제 코드는 전위차계에 연결된 아날로그 입력 값을 읽습니다.A0직렬 모니터에 표시됩니다. UNO Q에 전위차계를 올바르게 연결하는 방법을 알아보려면 다음 이미지를 참조하세요.

 

 

ADC 입력 예제 배선

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

#include <Arduino_RouterBridge.h>

int sensorPin = A0;   // select the input pin for the potentiometer

int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  Monitor.begin();
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);

  Monitor.println(sensorValue);
  delay(100);
}

 

 

디지털-아날로그 변환기(DAC)

 

UNO Q에는 다음과 같이 매핑된 두 개의 DAC 출력이 있습니다.

 

 

Microcontroller Pin Arduino Pin Mapping Pin Functionality
PA4 DAC0 GPIO / ADC / DAC
PA5 DAC1 GPIO / ADC / DAC

 

 

UNO Q의 디지털-아날로그 변환기는 Arduino 프로그래밍 언어의 내장 함수를 통해 아날로그 전압을 출력하는 데 사용할 수 있습니다.

 

DAC 출력 해상도는 analogWriteResolution() 를 사용하여 8~12비트로 구성할 수 있습니다.

 

// DAC resolution set to 12-bit (0 to 4095)

analogWriteResolution(12); // enter the desired resolution in bits (8, 10, 12)

 

DAC 핀을 통해 아날로그 전압 값을 출력하려면 DAC 채널을 인수로 사용하는 함수 analogWrite() 를 사용하십시오

 

analogWrite(DAC0, value);

// the value should be in the range of the DAC resolution (e.g. 0-4095 with a 12 bits resolution)

 

* 일반 GPIO가 전달되면 analogWrite() 기능의 경우 출력은 PWM 신호가 됩니다.

 

다음 스케치는 60Hz 사인파 신호를 A0/DAC0UNO Q 핀에 생성합니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

const float freq = 60.0f;
const int   N    = 256;     // 256 samples/cycle
const uint32_t Ts_us = (uint32_t)llroundf(1e6f / (freq * N));

uint16_t lut[N]; // store the sine wave here

void setup() {
  analogWriteResolution(12);

  for (int i = 0; i < N; ++i){
      lut[i] = 2048 + (1000.0 * sin(2 * PI * i / N));
  }

}

void loop() {
  static uint32_t t_next = micros();
  for (int i = 0; i < N; ++i) {
    analogWrite(DAC0, lut[i]);  // output the sine wave values
    t_next += Ts_us;
    while ((int32_t)(micros() - t_next) < 0) { /* spin */ }
  }
}

 

 

DAC 출력은 아래 이미지와 같아야 합니다.

 

 

아날로그 사인파 DAC 출력

 

PWM 핀

 

UNO Q에는 다음과 같이 매핑된 6개의 PWM(펄스 폭 변조) 핀이 있습니다.

 

 

Microcontroller Pin Arduino Pin Mapping Pin Functionality
PB0 D3 GPIO / OPAMP OUT / PWM
PA11 D5 / FDCAN1_RX GPIO / CAN Bus RX / PWM
PB1 D6 GPIO / PWM
PB8 D9 GPIO / PWM
PB9 D10 / SS GPIO / SPI SS / PWM
PB15 D11 / MOSI GPIO / SPI MOSI / PWM

 

마이크로컨트롤러 핀 아두이노 핀 매핑 핀 기능

 

PB0 디3 GPIO / OPAMP 출력 / PWM

 

파11 D5 / FDCAN1_RX GPIO / CAN 버스 RX / PWM

 

피비1 디6 GPIO / PWM

 

피비8 디9 GPIO / PWM

 

피비9 D10 / SS GPIO / SPI SS / PWM

 

피비15 D11 / 모션 GPIO / SPI MOSI / PWM

 

이 기능은 내장된 analogWrite() 기능과 함께 사용할 수 있습니다. 아래와 같이 표시됩니다.

 

analogWrite(pin, value);

 

기본적으로 출력 해상도는 8비트 이므로 출력 값은 0~255 사이여야 합니다. 더 높은 해상도를 설정하려면

analogWriteResolution  내장 함수를 사용하십시오. 아래와 같이 표시됩니다.

 

// PWM resolution set to 10-bit (0 to 4095)

analogWriteResolution(10);

 

가변 듀티 사이클 PWM 신호를 생성하는 방법의 예는 다음과 같습니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int pwmOutPin = D3;    // PWM output pin

int sensorValue = 0;  // value read from the pot
int outputValue = 0;  // value output to the PWM (analog out)

void setup() {
  // Define the PWM output resolution
  analogWriteResolution(10);  // 0 - 1023 -> 0 - 100% duty-cycle
  analogReadResolution(14);   // 0 - 16383
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 0, 16383, 0, 1024);
  // change the analog out value:
  analogWrite(pwmOutPin, outputValue);

  // wait 2 milliseconds before the next loop for the ADC
  // to settle after the last reading:
  delay(2);
}

 

 

이제 전위차계를 돌려서 PWM 신호 듀티 사이클을 제어할 수 있습니다.

 

 

PWM을 이용한 PWM 출력 신호

 

PWM 주파수는 500Hz로 고정되어 있습니다.

 

 

통신

 

이 사용자 설명서 섹션에서는 Arduino UNO Q가 지원하는 다양한 통신 프로토콜에 대해 설명합니다.

 

브리지 - 원격 프로시저 호출(RPC) 라이브러리

 

Arduino UNO Q는 RPC(원격 프로시저 호출)를 사용하여 Linux(Qualcomm MPU) 측과 실시간 STM32 MCU 간에 데이터를 교환합니다. 이 메커니즘을 통해 한 프로세서에서 실행되는 함수를 마치 로컬 호출처럼 다른 프로세서에서 투명하게 호출할 수 있습니다.

 

 

우노 Q RPC

 

 

개요

 

Bridge 라이브러리는 Arduino_RPClite 프레임워크를 기반으로 구축된 통신 계층을 제공합니다. MPU와 MCU 간의 양방향 RPC 트래픽을 관리하고, 메서드 바인딩, 요청 전달 및 비동기 응답을 처리합니다.

 

  • MPU 측(Qualcomm QRB, Linux) : 상위 레벨 서비스를 실행하고 MCU 기능을 원격으로 호출할 수 있습니다.
  • MCU 측(STM32, Zephyr RTOS) : 시간에 민감한 작업을 처리하고 RPC를 통해 MPU에 기능을 제공합니다.

 

핵심 구성 요소

 

BridgeClass

 

  • RPC 클라이언트와 서버를 관리하는 주요 클래스입니다. 다음 메서드를 제공합니다.
  • 브리지를 초기화합니다(begin())
  • 원격 프로시저 호출(call())
  • 응답을 기다리지 않고 알림 (notify())
  • 원격 실행을 위한 로컬 기능 노출(provide(),provide_safe())
  • 들어오는 요청 처리(update())

 

RpcResult

 

  • 원격 호출의 결과를 나타내는 도우미 클래스입니다. 응답을 기다리고, 반환 값을 추출하고, 필요한 경우 오류 코드를 전파합니다.

 

스레딩 및 안전

 

  • 브리지는 Zephyr 뮤텍스(k_mutex)를 사용하여 전송 계층에서 읽기/쓰기 시 안전한 동시 액세스를 보장합니다. 업데이트는 요청을 지속적으로 폴링하는 백그라운드 스레드에 의해 처리됩니다.

 

사용 예

 

이 예에서는 Linux 측(Qualcomm QRB)이 Bridge를 통해 원격 함수를 호출하여 MCU(STM32) 의 LED를 켜고 끄는 모습을 보여줍니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "Python" 및 "sketch" 부분에 각각 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

1. 원격 MCU 함수를 호출하는 Linux(QRB) 예제

 

이 Python 스크립트는 QRB에서 실행되고 1초에 한 번씩 set_led_state라는 MCU 노출 RPC를 호출합니다.

 

# main.py (QRB side)
from arduino.app_utils import *
import time

led_state = False

def loop():
    global led_state
    time.sleep(1)
    led_state = not led_state
    Bridge.call("set_led_state", led_state)

App.run(user_loop=loop)

 

 

Bridge.call("set_led_state", <bool>)을 사용하여 매초 MCU에 부울 값을 보냅니다.

 

2. Bridge를 포함하고 시작하기 위한 MCU(STM32) 설정

 

이 스케치에는 Bridge 라이브러리가 포함되어 있으며 LED 핀을 구성합니다.

 

#include "Arduino_RouterBridge.h"

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);

    Bridge.begin();
    Bridge.provide("set_led_state", set_led_state);
}

void loop() {
}

void set_led_state(bool state) {
    // LOW state means LED is ON
    digitalWrite(LED_BUILTIN, state ? LOW : HIGH);
}

 

 

이렇게 하면 로컬 MCU 함수 set_led_state가 "set_led_state"라는 이름의 RPC 서비스로 등록되므로 Linux(QRB) 측에서 Bridge.provide("set_led_state", set_led_state);를 사용하여 로컬 함수인 것처럼 원격으로 호출할 수 있습니다.

 

 

* 반대로, Python 함수를 MCU 스케치에 제공하여 로컬에서 사용할 수 있습니다.

 

Python 스크립트를 앱의 Python 파일에 붙여넣고 Arduino 코드를 스케치에 붙여넣은 후 앱을 실행하면 1초마다 LED #3이 빨간색으로 깜박이는 것을 볼 수 있습니다.

 

 

빨간색 LED 깜박임

 

* Arduino App Lab에서 내장된 다양한 예제를 테스트하면 Bridge RPC 라이브러리에 더욱 고급 메서드가 있다는 것을 알 수 있습니다.

 

SPI

 

UNO Q는 SPI 통신을 지원하여 보드와 다른 SPI 호환 장치 간의 데이터 전송이 가능합니다.

 

UNO Q에서 SPI 통신 프로토콜에 사용되는 핀은 다음과 같습니다.

 

 

Microcontroller Pin Arduino Pin Mapping
PB9 SS / D10
PB15 MOSI / D11
PB14 MISO / D12
PB13 SCK / D13

 

 

보드에서의 핀 배열을 확인하려면 사용자 설명서의 보드 핀 배열 섹션을 참조하세요 .

 

SPI 통신 프로토콜을 사용하려면 스케치 상단에 SPI 라이브러리를 사용하세요. SPI 라이브러리는 SPI 통신을 위한 함수를 제공합니다.

 

#include <SPI.h>

 

 

setup() 함수에서 SPI 라이브러리를 초기화하고 칩 선택(SS) 핀을 정의하고 구성합니다.

 

#define SS D10

void setup() {
  // Set the chip select pin as output
  pinMode(SS, OUTPUT);

  // Pull the SS pin HIGH to unselect the device
  digitalWrite(SS, HIGH);

  // Initialize the SPI communication
  SPI.begin();
}

 

SPI 호환 장치로 데이터를 전송하려면 다음 예제에서 사용된 명령을 사용할 수 있습니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

 

#include <SPI.h>

#define SS D10

void setup() {
  // Set the chip select pin as output
  pinMode(SS, OUTPUT);

  // Pull the SS pin HIGH to unselect the device
  digitalWrite(SS, HIGH);

  // Initialize the SPI communication
  SPI.begin();
}

void loop() {
  // Replace with the target device’s address
  byte address = 0x35;
  // Replace with the value to send
  byte value = 0xFA;
  // Pull the SS pin LOW to select the device
  digitalWrite(SS, LOW);
  // Send the address
  SPI.transfer(address);
  // Send the value
  SPI.transfer(value);
  // Pull the SS pin HIGH to unselect the device
  digitalWrite(SS, HIGH);

  delay(2000);
}

 

 

위의 예제 코드는 다음과 같이 출력되어야 합니다.

 

 

SPI 데이터 스트림

 

 

I2C

 

 

UNO Q는 I2C 통신을 지원하여 보드와 다른 I2C 호환 장치 간의 데이터 전송을 가능하게 합니다. UNO Q에서 I2C 통신 프로토콜에 사용되는 핀은 다음과 같습니다.

 

 

Microcontroller Pin Arduino Pin Mapping (Wire) Microcontroller Pin Arduino Pin Mapping (Wire1)
PB10 SCL / D21 PD12 I2C4_SCL (Qwiic)
PB11 SDA / D20 PD13 I2C4_SDA (Qwiic)

 

 

보드에서의 핀 배열을 확인하려면 사용자 설명서의 보드 핀 배열 섹션을 참조하세요 .

 

I2C 통신을 사용하려면 다음을 포함합니다. 스케치 상단에 있는 Wire  라이브러리를 포함하세요. Wire 라이브러리는 I2C 통신을 위한 기능을 제공합니다.

 

#include <Wire.h>

 

setup() 함수에서 I2C 라이브러리를 초기화합니다.

 

// Initialize the I2C communication
Wire.begin(); // I2C in UNO-style headers (D20, D21)
// or
Wire1.begin(); // I2C in Qwiic connector

 

 

I2C 호환 장치로 데이터를 전송하려면 다음 예제에서 사용된 명령을 사용할 수 있습니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

#include <Wire.h>

void setup() {
  // Initialize the I2C communication
  Wire.begin();
}

void loop() {
  // Replace with the target device’s I2C address
  byte deviceAddress = 0x35;
  // Replace with the appropriate instruction byte
  byte instruction = 0x00;
  // Replace with the value to send
  byte value = 0xFA;
  // Begin transmission to the target device
  Wire.beginTransmission(deviceAddress);
  // Send the instruction byte
  Wire.write(instruction);
  // Send the value
  Wire.write(value);
  // End transmission
  Wire.endTransmission();

  delay(2000);
}

 

 

위의 예제 코드는 다음과 같이 출력되어야 합니다.

 

 

I2C 데이터 스트림

 

 

Qwiic

 

Arduino UNO Q에는 I²C 장치를 연결하는 간단하고 도구가 필요 없는 솔루션을 제공하는 온보드 Qwiic 커넥터가 있습니다. SparkFun Electronics에서 개발한 Qwiic 생태계는 I²C 장치를 사용한 신속한 프로토타입 제작의 산업 표준으로 자리 잡았으며, 이를 통해 납땜이나 복잡한 배선 없이 센서, 디스플레이 및 기타 주변 장치를 연결할 수 있습니다.

 

 

I2C Qwiic 커넥터

 

Qwiic 시스템의 주요 장점은 다음과 같습니다.

 

  • 플러그 앤 플레이 연결 : 브레드보드, 점퍼 와이어 또는 납땜이 필요하지 않습니다.
  • 극성 커넥터 : 우발적인 역방향 연결을 방지합니다.
  • 데이지 체인 기능 : 여러 장치를 직렬로 연결
  • 내장 풀업 저항 : 외부 저항이 필요 없음
  • 표준 핀아웃 : 모든 Qwiic 생태계 기기와 호환 가능

 

* UNO Q의 Qwiic 커넥터는 Wire 객체 대신 Wire1 객체를 사용하는 보조 I2C 버스(I2C4)에 연결됩니다. Qwiic 커넥터는 3.3V만 지원합니다.

 

Qwiic 커넥터를 사용하면 납땜이 필요 없는 프로젝트를 개발하기 위해 Modulino 노드를 인터페이스할 수 있습니다.

 

 

모듈리노 노드

 

다양한 센서와 액추에이터를 제공하는 Modulino 제품군을 확인하여 프로젝트를 확장해보세요.

 

UART

 

UART 통신 프로토콜에 사용되는 UNO Q의 핀은 다음과 같습니다.

 

Microcontroller Pin Arduino Pin Mapping
PB6 USART1_TX / D1
PB7 USART1_RX / D0

 

보드에서의 핀 배열을 확인하려면 사용자 설명서의 보드 핀 배열 섹션을 참조하세요 .

 

UART 통신을 시작하려면 setup() 에서 전송 속도(초당 비트 수)를 설정합니다.

 

// Start UART communication at 115200 baud

Serial.begin(115200);

 

UART를 통해 다른 장치로 데이터를 전송하려면 write()기능을 사용할 수 있습니다.

 

// Transmit the string "Hello UNO Q"

Serial.write("Hello UNO Q");

Serial.write("\r\n"); // new line

 

print 및 println()을 사용하여 줄 바꿈 문자 없이 또는 줄 바꿈 문자 뒤에 문자열을 보낼 수도 있습니다.

 

// Transmit the string "Hello UNO Q"

Serial.print("Hello UNO Q");

// Transmit the string "Hello UNO Q" followed by a newline character

Serial.println("Hello UNO Q");

 

UART 전송 방법을 테스트하려면 다음 예를 사용하고, Arduino App Lab에서 새 앱을 만든 다음 아래 예를 복사하여 붙여넣으세요.

 

void setup() {
  // Initialize the hardware UART at 115200 bps
  Serial.begin(115200);
}

void loop() {
  // Transmit the string "Hello UNO Q" followed by a newline character
  Serial.println("Hello UNO Q");
  delay(1000);
}

 

 

UNO Q 보드의 TX 및 RX 핀 에서 다음 내용을 확인해야 합니다 . 저는 로직 분석기를 사용하여 데이터를 캡처하고 있습니다.

 

 

UART 전송

 

 

수신 데이터를 읽으려면 while() 루프를 사용할 수 있습니다. 사용 가능한 데이터를 지속적으로 확인하고 개별 문자를 읽는 루프입니다. 아래 코드는 수신 문자를 문자열 변수에 저장하고 줄 끝 문자가 수신되면 데이터를 처리합니다.

 

String incoming = "";

void setup() {
  // Initialize the hardware UART at 115200 baud
  Serial.begin(115200);
}

void loop() {
  while (Serial.available()) {
    char c = Serial.read();

    if (c == '\n') {
      // Echo the buffered message and add a newline
      Serial.println(incoming);

      // Clear for the next message
      incoming = "";
    } else {
      incoming += c;
    }
  }
}

 

이 예제에서는 UNO Q가 UART에서 수신한 모든 내용을 다시 전송합니다.

 

Serial 에서 모니터로

 

UNO Q의 아키텍처로 인해 Serial을 사용하면 Arduino App Lab Serial Monitor에 예상대로 데이터가 표시되지 않습니다.

다른 Arduino 보드처럼 디버깅을 쉽게 하기 위해 Monitor 객체를 제공합니다. 이 객체를 사용하면 디버깅 메시지, 센서 측정값 또는 기타 정보를 Serial Monitor에 직접 출력할 수 있습니다.

아무리 간단한 전제 조건으로 동일한 작업을 수행할 수 있습니다. 스케치에 Arduino_RouterBridge 라이브러리를 포함해야 합니다.

 

#include <Arduino_RouterBridge.h>

void setup() {
  // Initialize the Monitor
  Monitor.begin();
}

void loop() {
  // Transmit the string "Hello UNO Q" followed by a newline character
  Monitor.println("Hello UNO Q");
  delay(1000);
}

 

 

Wi-Fi

 

UNO Q는 듀얼 밴드 Wi-Fi® 5(2.4/5GHz)를 제공하는 WCBN3536A 무선 모듈을 탑재하고 있으며, Qualcomm 마이크로프로세서에 연결되어 있으므로 마이크로컨트롤러에 연결성을 제공하기 위해 Bridge가 필요합니다.

 

다음 예제에서는 소켓 RPC 호출을 통한 TCP를 사용하여 UTC 시간을 가져와 직렬 모니터에 출력합니다.

 

Arduino 앱 랩에서 새 앱을 만든 다음, 아래 예제를 복사하여 새 앱의 "스케치" 부분에 붙여넣습니다.

 

 

새로운 앱을 만드세요

 

#include <Arduino_RouterBridge.h>

BridgeTCPClient<> client(Bridge);

void setup() {
  if (!Bridge.begin()) {
    while (true) {}
  }
  if (!Monitor.begin()) {
    while (true) {}
  }

  Monitor.println("TCP Daytime Demo started");
}

void loop() {
  Monitor.println("\nConnecting to time.nist.gov ...");

  if (client.connect("time.nist.gov", 13) < 0) {
    Monitor.println("Connection failed!");
    delay(5000);
    return;
  }

  Monitor.println("Connected, reading response...");
  String line;
  while (client.connected() || client.available()) {
    if (client.available()) {
      char c = client.read();
      if (c == '\n') break; // daytime sends one line
      if (c != '\r') line += c;
    }
  }

  Monitor.print("Server says: ");
  Monitor.println(line);

  client.stop();
  delay(10000);
}

 

 

실행 후 Arduino App Lab Serial Monitor를 열면 time.nist.gov 서버에서 검색된 시간과 날짜를 볼 수 있습니다.

 

 

Wi-Fi 예시

 

 

여기까지 고생하셨습니다.

 

아침에 10km 달리고 사무실에 나타난다. 무엇보다 계속 나타나고, 계속 일하고, 계속 성과를 낸다. 

 

위 문서 원문은 다음 링크를 참고하세요.

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩