7장 Arduino UNO Q를 Arduino Cloud에 연결하는 완벽 가이드
다시 보는 Arduino Uno Q개요
이 노트는 Arduino UNO Q 보드를 Arduino Cloud에 연결해, 인터넷 대시보드에서 LED를 켜고 끄는 전 과정을 정리한 문서입니다. UNO Q의 내부 구조(리눅스 MPU와 MCU, Wi‑Fi, Bridge 도구)부터 클라우드 설정, App Lab 예제 사용까지 흐름을 한 번에 이해할 수 있도록 구성했습니다.

Arduino Cloud에서 수동(manual) 디바이스를 만들고, Thing과 cloud 변수(led)를 정의한 뒤, 대시보드에 스위치 위젯을 붙이는 과정까지 모두 다룹니다. 마지막으로 Arduino App Lab의 "Blinking LED from Arduino Cloud" 예제를 실제로 복제하고 수정해, 클라우드 스위치가 실제 보드의 LED를 ON/OFF 하는 전체 데이터 흐름을 단계별로 설명합니다.
강사과정 모집 -> 아두이노 강의 | Arduino Uno로 배우는 임베디드 개발 | Arduino Uno Club
UNO Q와 Arduino Cloud 통신 구조 이해하기
UNO Q는 크게 리눅스를 실행하는 마이크로프로세서(MPU) 부분과, 전통적인 Arduino 스타일의 마이크로컨트롤러(MCU) 부분으로 나뉩니다. MPU 쪽에는 Wi‑Fi가 연결되어 있고, 여기서 Python 프로그램이 실행되며, Arduino Cloud와의 통신도 이 Python 코드가 담당합니다.
Arduino Cloud와의 실제 네트워크 통신은 MPU의 Python 코드가 처리합니다. 이 코드는 Arduino App Lab에서 제공하는 "Arduino Cloud Brick"을 통해 클라우드에 연결되고, device_id와 secret_key를 사용해 특정 디바이스로 인증을 받습니다. 이렇게 해서 클라우드의 Thing과 대시보드와 UNO Q 사이에 안전한 통신 채널이 형성됩니다.
반면, LED를 직접 켜고 끄는 핀 제어는 MCU가 담당합니다. MPU와 MCU 사이의 데이터 전달에는 "Bridge" 도구가 사용됩니다. Python 코드(main.py)가 클라우드에서 받은 led 변수의 상태를 읽어, Bridge를 통해 MCU에 "LED 켜라/꺼라" 같은 메시지를 보내면, MCU가 실제 LED 핀을 ON/OFF 하는 구조입니다.
정리하면, 클라우드와의 통신은 "MPU(Python + Wi‑Fi)", 하드웨어 제어는 "MCU(Arduino 스타일)", 이 둘 사이 연결은 "Bridge"라는 역할 분담 구조를 갖고 있다고 이해하면 됩니다.
Arduino Cloud에서 UNO Q용 Manual Device 만들기
UNO Q는 현재 Arduino Cloud에서 "Manual Device(수동 디바이스)" 방식으로 등록해 사용합니다. 이 방식은 보드가 직접 Cloud Agent 없이, 코드 내부에서 device_id와 secret_key를 사용해 접속하는 방식입니다.
수동 디바이스를 만드는 절차는 다음과 같습니다.
브라우저에서 Arduino Cloud 페이지로 이동해 로그인하거나 새 계정을 만듭니다.
상단 또는 측면 메뉴에서 "Devices(디바이스)" 페이지로 이동합니다.
"Add device" 또는 유사한 버튼을 눌러 새 디바이스를 생성할 때, 디바이스 종류로 Manual Device를 선택합니다.
생성 과정을 진행하면, Arduino Cloud가 해당 디바이스를 위해 device_id와 secret_key를 발급해 줍니다.
이때 표시되는 device_id와 secret_key는 나중에 Arduino App Lab의 Arduino Cloud Brick 설정에 그대로 입력해야 합니다. 다시 보기 번거로우니, 복사해서 안전한 곳에 저장해 두는 것이 좋습니다.
Thing과 cloud 변수 led 생성 및 디바이스 연결
다음 단계는 UNO Q와 연결될 "Thing"을 만드는 것입니다. Thing은 Arduino Cloud에서 "이 디바이스가 주고받는 데이터 묶음"을 표현하는 논리 단위입니다.
순서는 다음과 같습니다.
Arduino Cloud 상단/사이드 메뉴에서 Things 페이지로 이동합니다.
"Create Thing" 또는 비슷한 버튼을 눌러 새 Thing을 생성합니다. 이름은 예를 들어 "UNO Q LED Control" 정도로 알아보기 쉽게 정하면 좋습니다.
Thing 상세 화면 안에서 새 변수를 추가합니다.
변수 타입: boolean
변수 이름: led (소문자 led)
이 변수가 클라우드와 동기화되는 cloud 변수인지 확인합니다(기본적으로 Thing에 추가하는 변수는 클라우드 값으로 사용됩니다).
이제 이 Thing과 앞서 만든 수동 디바이스를 연결해야 합니다.
Thing 화면에서 "Associated Device" 혹은 디바이스 선택 영역을 찾아, 방금 만든 UNO Q Manual Device를 선택합니다.
이 작업을 통해, Arduino Cloud 입장에서는 "UNO Q라는 디바이스가 led라는 boolean 변수를 가진다"는 관계가 설정됩니다.
Dashboard와 스위치 위젯 설정
이제 사용자가 웹 브라우저에서 led 변수를 조작할 수 있도록 대시보드를 만들어야 합니다. 대시보드는 여러 위젯(그래프, 텍스트, 스위치 등)을 배치해 디바이스 상태를 모니터링하고 제어하는 화면입니다.
대시보드 설정 절차는 다음과 같습니다.
Arduino Cloud의 Dashboards 메뉴로 이동합니다.
"Create Dashboard" 버튼을 눌러 새 대시보드를 만듭니다. 이름은 "UNO Q LED Dashboard" 등으로 지정합니다.
대시보드 화면에서 "Edit" 모드로 들어갑니다.
위젯 추가 또는 "Link Thing"과 같은 버튼을 선택하여, 앞에서 만든 Thing(UNO Q LED Control 등)을 선택합니다.
Thing을 대시보드에 연결하면, Arduino Cloud가 Thing 안의 boolean 변수 led를 자동으로 인식합니다. led가 boolean이기 때문에, Arduino Cloud는 일반적으로 이 변수에 자동으로 스위치(Switch) 위젯을 할당합니다.
따라서 대시보드에는 led와 연결된 토글 스위치가 나타나며, 사용자가 이를 ON/OFF 하면 클라우드 상의 led 변수 값이 true/false로 바뀌게 됩니다. 이 상태 변화가 이후 UNO Q로 전달되어 LED를 제어하게 됩니다.
Arduino App Lab에서 Cloud 예제 사용하기
UNO Q는 Arduino App Lab을 통해 프로그래밍합니다. Arduino Cloud와 연동하는 기본 예제는 이미 App Lab에 준비되어 있으며, 이 튜토리얼에서는 "Blinking LED from Arduino Cloud" 예제를 사용합니다.
예제를 사용하는 절차는 다음과 같습니다.
PC에서 Arduino App Lab을 실행합니다.
UNO Q를 USB 케이블 또는 네트워크를 통해 App Lab에 연결합니다(프로그램 상에서 보드를 선택해 연결).
App Lab 왼쪽 메뉴에서 "Examples(예제)" 탭을 엽니다.
예제 목록 중에서 "Blinking LED from Arduino Cloud"를 찾습니다.
예제 오른쪽 상단의 "Copy and edit app" 버튼을 클릭해, 예제를 복제합니다.
이렇게 하면 원본 예제를 건드리지 않고, 내 계정에 수정 가능한 사본이 생성됩니다.
이제 복제한 앱에서 Arduino Cloud 설정을 수정해야 합니다.
앱 편집 화면에서, 블록 또는 구성 요소 영역에서 "Arduino Cloud" Brick을 클릭합니다.
나타나는 패널에서 "Brick Configuration(브릭 설정)" 버튼을 눌러 설정 창을 엽니다.
설정 창에 기본값으로 들어 있는
<YOUR_DEVICE_ID>와<YOUR_SECRET>부분을, 앞에서 Arduino Cloud에서 발급받은 device_id와 secret_key 값으로 각각 교체합니다.
설정이 끝나면 앱을 실제로 실행해 볼 수 있습니다.
App Lab 오른쪽 상단의 "Play" 버튼을 눌러 앱을 실행합니다.
앱이 UNO Q 보드에 배포되고, MPU에서 Python 스크립트(main.py)가 실행될 때까지 잠시 기다립니다.
이제 UNO Q는 Arduino Cloud와 연결된 상태가 되고, 대시보드에서 스위치를 조작하면 LED가 반응하는지 확인할 수 있게 됩니다.
전체 동작 흐름: 스위치 → Cloud → main.py → Bridge → MCU LED
마지막으로, 눈에 보이는 동작이 내부에서 어떻게 이루어지는지를 흐름대로 정리해 보겠습니다. 이 부분을 이해하면, 이후에 다른 센서나 액추에이터로 확장하는 데 큰 도움이 됩니다.
사용자가 대시보드 스위치를 조작
Arduino Cloud Dashboard에서 led 스위치 위젯을 ON 또는 OFF로 변경합니다.
이때 대시보드 UI는 Thing에 연결된 led cloud 변수의 값을 true/false로 업데이트합니다.
Arduino Cloud가 디바이스 상태를 갱신
클라우드 서버는 led 변수의 변경 사항을 감지하고, 해당 Thing과 연결된 디바이스(UNO Q Manual Device)의 상태를 업데이트합니다.
즉, "이 디바이스의 led 속성 값이 바뀌었다"는 정보가 클라우드 측에서 기록됩니다.
UNO Q의 main.py(Arduino Cloud Brick)가 변경을 수신
UNO Q의 MPU(리눅스)에서 실행 중인 Python 스크립트(main.py)는 Arduino Cloud Brick을 통해 클라우드와 지속적으로 통신합니다.
이 스크립트는 led 변수의 값이 변경되었는지를 주기적으로 확인하거나 이벤트로 받아, 새 값(ON/true 또는 OFF/false)을 읽어옵니다.
main.py가 Bridge를 통해 MCU로 명령 전달
main.py는 새 led 값을 기반으로 "LED를 켜라" 또는 "LED를 꺼라"는 의미의 메시지를 Bridge 도구를 통해 MCU로 전송합니다.
Bridge는 MPU와 MCU 사이의 통신 채널 역할을 하며, 간단한 데이터(예: 0/1, 문자열 등)를 서로 주고받을 수 있게 해 줍니다.
MCU가 실제 LED 핀을 제어
MCU는 Bridge를 통해 전달된 값을 읽고, 자신의 GPIO 핀을 제어해 보드의 내장 LED를 ON 또는 OFF 상태로 변경합니다.
결과적으로, 웹 대시보드에서 스위치를 켜면 보드 LED가 켜지고, 끄면 LED가 꺼지는 동작이 이루어집니다.
이 흐름은 "입력(UI) → 클라우드 변수 → 디바이스 상태 → 보드의 Python 코드 → MCU 제어 → 물리적 결과(LED)"라는 일련의 파이프라인으로 이해할 수 있습니다. 같은 패턴을 이용하면, 다른 변수 타입(예: 숫자, 문자열)이나 다른 하드웨어(릴레이, 모터, 센서 등)에도 쉽게 확장할 수 있습니다.
마무리 및 확장 아이디어
이 노트에서는 UNO Q를 Arduino Cloud에 연결해, 대시보드 스위치로 LED를 제어하는 기본 예제를 중심으로 구조와 절차를 정리했습니다. 핵심 포인트는 세 가지입니다. 첫째, UNO Q는 MPU와 MCU로 나뉘고, 클라우드 통신은 MPU(Python), 하드웨어 제어는 MCU, 둘 사이 연결은 Bridge라는 점입니다. 둘째, Arduino Cloud에서는 Manual Device → Thing(led 변수) → Dashboard(스위치 위젯) 순으로 설정해야 한다는 점입니다. 셋째, 실제 프로그램은 Arduino App Lab의 "Blinking LED from Arduino Cloud" 예제를 복제해, device_id와 secret_key만 바꿔 쓰면 된다는 점입니다.
이 구조를 이해했다면, 다음 단계로는 led 외에 다른 cloud 변수를 추가해 여러 LED를 제어하거나, 센서 값을 클라우드 대시보드에 표시하는 실습을 해볼 수 있습니다. 예를 들어 온도 센서를 연결해 float 타입 변수로 올리고, 대시보드에 게이지나 그래프 위젯을 추가하는 것도 같은 패턴으로 구현할 수 있습니다.

