if (isnan(humidity) || isnan(tempC) || isnan(tempF)) {Serial.println("Failed to read from DHT11 sensor!");}
Arduino UNO Q 코드
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:
STM32 MCU는 DHT11 센서를 직접 읽습니다 — 모든 센서 통신은 MCU에서 실행됩니다
Qualcomm MPU는 Debian Linux를 실행하고 Wi-Fi, Python 및 클라우드 연결을 처리합니다
이 섹션에서는 MCU만 프로그래밍됩니다 — Linux 측은 유휴 상태입니다. 나중 섹션에서 두 프로세서가 Bridge를 통해 함께 작동하는 방법을 보여줍니다.
MCU는 3초마다 온도와 습도를 읽고 Serial Monitor에 출력합니다.
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-dht11 */#include <DHT.h>#define DHT11_PIN 2 // Arduino UNO Q MCU pin connected to DHT11 DATA pinDHT dht11(DHT11_PIN, DHT11);voidsetup() {Serial.begin(115200);delay(1500); dht11.begin();Serial.println("Arduino UNO Q DHT11 ready");}voidloop() {delay(3000); // DHT11 requires at least 1 second between readingsfloat humidity = dht11.readHumidity();float tempC = dht11.readTemperature();float tempF = dht11.readTemperature(true);if (isnan(humidity) || isnan(tempC) || isnan(tempF)) {Serial.println("Failed to read from DHT11 sensor!"); } else {Serial.print("Humidity: ");Serial.print(humidity);Serial.print("% | Temperature: ");Serial.print(tempC);Serial.print("°C ~ ");Serial.print(tempF);Serial.println("°F"); }}
빠른 단계
Arduino UNO Q를 처음 사용하시나요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따르세요.
연결: 배선도에 표시된 대로 DHT11 센서 또는 모듈을 Arduino UNO Q MCU에 배선하세요.
Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q를 감지할 때까지 기다리세요.
새 앱 만들기:Create New App 버튼을 클릭하세요.
앱에 이름을 지정합니다(예: Dht11).
Create를 클릭하여 확인합니다.
스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다. 다른 파일은 기본값으로 유지합니다.
Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Search for DHT sensor library created by Adafruit and click the Install button.
My Apps/DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DHT sensor library
DHT sensor libraryAdafruit
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
1.4.6
Install
More Info
업로드: Arduino App Lab에서 Run 버튼을 클릭하세요.
센서에 숨을 불거나 손으로 잡으세요 — 습도 및 온도 읽기가 업데이트되는 것을 확인하세요.
App Lab 콘솔 출력
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
이 섹션은 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하는 방법을 보여줍니다. Linux 측에서 Bridge를 통해 온도 및 습도를 읽을 수 있습니다:
DHT11 센서는 MCU(STM32)에 연결됩니다 — MCU는 3초마다 데이터를 읽고 최신 값을 캐시합니다
MPU는 DHT11에 직접 액세스할 수 없습니다 — Bridge 함수를 호출하여 읽기를 검색해야 합니다
MPU에는 Wi-Fi가 있습니다 — 완전한 Debian Linux를 실행하면서 데이터를 로깅하고, 대시보드에 게시하거나 인터넷을 통해 알림을 보낼 수 있습니다
Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 가능하게 합니다
⚠️ /dev/ttyHS1(Linux) 및 Serial1(MCU)은 라우터에 의해 예약됨 — 사용자 코드에서 절대 열지 마세요
요약하면: MCU는 3초마다 DHT11을 읽고 결과를 캐시합니다 → MPU는 Bridge를 폴링하여 읽기를 검색합니다 → MPU는 Wi-Fi를 통해 게시하거나 경고합니다.
참고: Bridge 스케치에서 loop() 함수는 3초마다 DHT11을 읽어 캐시된 값을 최신 상태로 유지합니다. 모든 Bridge 콜백은 읽기 전용이며 차단 없이 캐시된 데이터를 반환합니다.
MCU 코드(Bridge)
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-dht11 */#include <DHT.h>#include"Arduino_RouterBridge.h"#define DHT11_PIN 2DHT dht11(DHT11_PIN, DHT11);float last_humidity = 0.0;float last_temp_c = 0.0;float last_temp_f = 0.0;unsignedlong last_read_ms = 0;String get_humidity(String arg) {returnString(last_humidity, 1);}String get_temp_c(String arg) {returnString(last_temp_c, 2);}String get_temp_f(String arg) {returnString(last_temp_f, 2);}String get_status(String arg) {return"Temp: " + String(last_temp_c, 2) + "°C / " + String(last_temp_f, 2) + "°F Humidity: " + String(last_humidity, 1) + "%";}voidsetup() {Bridge.begin(); Monitor.begin(); dht11.begin();delay(2000); // allow sensor to stabilizefloat h = dht11.readHumidity();float c = dht11.readTemperature();float f = dht11.readTemperature(true);if (!isnan(h) && !isnan(c) && !isnan(f)) { last_humidity = h; last_temp_c = c; last_temp_f = f; }Bridge.provide("get_humidity", get_humidity);Bridge.provide("get_temp_c", get_temp_c);Bridge.provide("get_temp_f", get_temp_f);Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q DHT11 Bridge ready");}voidloop() {unsignedlongnow = millis();if (now - last_read_ms >= 3000) { last_read_ms = now;float h = dht11.readHumidity();float c = dht11.readTemperature();float f = dht11.readTemperature(true);if (isnan(h) || isnan(c) || isnan(f)) { Monitor.println("Failed to read from DHT11 sensor!"); } else { last_humidity = h; last_temp_c = c; last_temp_f = f; Monitor.println("Humidity: " + String(h, 1) + "% Temp: " + String(c, 2) + "°C / " + String(f, 2) + "°F"); } }}
Python 코드(Bridge)
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-dht11 */from arduino.app_utils import *import timedef loop(): status = Bridge.call("get_status")print(status) time.sleep(3)App.run(user_loop=loop)
빠른 단계
연결: 배선도에 표시된 대로 DHT11 센서를 Arduino UNO Q에 배선하세요.
Arduino App Lab 열기: Arduino App Lab을 시작하고 보드가 감지될 때까지 기다리세요.
새 앱 만들기:Create New App을 클릭하고 Dht11Bridge라는 이름을 지정한 후 Create를 클릭하세요.
MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다.
Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 앱의 Python 파일에 붙여넣습니다.
업로드: Arduino App Lab에서 Run 버튼을 클릭하세요.
Python 콘솔에서 3초마다 온도 및 습도 읽기가 표시되는 것을 확인하세요.
App Lab 콘솔 출력
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))