스케치 붙여넣기: 위의 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
Search for DIYables LCD I2C created by DIYables.io 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
DIYables LCD I2C
DIYables LCD I2CDIYables.io
This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico.
1.0.0
Install
More Info
업로드: Arduino App Lab에서 실행 버튼을 클릭합니다.
3초마다 온도와 습도가 LCD와 시리얼 모니터에 나타나는 것을 관찰합니다.
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를 통해 DHT22 데이터를 읽고 LCD를 제어하는 방법을 보여줍니다:
DHT22 센서 및 LCD는 MCU에 연결됩니다 — 모든 읽기 및 디스플레이 로직은 MCU에서 3초마다 실행됩니다
MPU는 센서 또는 LCD에 직접 액세스할 수 없습니다 — Bridge 함수를 호출하여 읽기를 검색하거나 디스플레이를 지웁니다
MPU는 Wi-Fi를 가지고 있습니다 — 전체 Debian Linux를 실행하는 MPU는 읽기를 기록하고, 대시보드에 게시하거나, Telegram 알림을 보낼 수 있습니다
Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 가능하게 합니다
⚠️ /dev/ttyHS1(Linux) 및 Serial1(MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 마십시오
간단히 말해: MCU는 3초마다 DHT22를 읽고 LCD를 업데이트 → MPU는 Bridge를 통해 읽기 → MPU는 Wi-Fi를 통해 알림 전송
MCU 코드 (Bridge)
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-dht22-lcd */#include <DHT.h>#include <DIYables_LCD_I2C.h>#include"Arduino_RouterBridge.h"#define DHT22_PIN 2DHT dht22(DHT22_PIN, DHT22);DIYables_LCD_I2C lcd(0x27, 16, 2);float last_humidity = 0.0;float last_temp_c = 0.0;float last_temp_f = 0.0;unsignedlong last_read_ms = 0;void lcd_show(float tempC, float tempF, float humidity) { lcd.setCursor(0, 0); lcd.print("T: "); lcd.print(tempC, 1); lcd.print((char)223); lcd.print("C "); lcd.print(tempF, 1); lcd.print((char)223); lcd.print("F "); lcd.setCursor(0, 1); lcd.print("Humidity: "); lcd.print(humidity, 1); lcd.print("% ");}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 clear_lcd(String arg) { lcd.clear(); Monitor.println("LCD cleared");return"OK";}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(); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("DHT22 Sensor"); lcd.setCursor(0, 1); lcd.print("Initializing..."); dht22.begin();delay(2000); // allow sensor to stabilizefloat h = dht22.readHumidity();float c = dht22.readTemperature();float f = dht22.readTemperature(true);if (!isnan(h) && !isnan(c) && !isnan(f)) { last_humidity = h; last_temp_c = c; last_temp_f = f; lcd_show(c, f, h); }Bridge.provide("get_humidity", get_humidity);Bridge.provide("get_temp_c", get_temp_c);Bridge.provide("get_temp_f", get_temp_f);Bridge.provide_safe("clear_lcd", clear_lcd);Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q DHT22 + LCD Bridge ready");}voidloop() {unsignedlongnow = millis();if (now - last_read_ms >= 3000) { last_read_ms = now;float h = dht22.readHumidity();float c = dht22.readTemperature();float f = dht22.readTemperature(true);if (isnan(h) || isnan(c) || isnan(f)) { Monitor.println("Failed to read from DHT22 sensor!"); } else { last_humidity = h; last_temp_c = c; last_temp_f = f; lcd_show(c, f, h); 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-dht22-lcd */from arduino.app_utils import *import timedef loop(): status = Bridge.call("get_status")print(status) time.sleep(3)App.run(user_loop=loop)
빠른 단계
연결: 배선 다이어그램에 표시된 대로 DHT22 및 LCD를 Arduino UNO Q에 배선합니다.
DHT22 읽기를 원격으로 모니터링하고 온도 또는 습도가 임계값을 초과할 때 자동 Telegram 알림을 받습니다.
MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지합니다.
Python 코드 (Telegram)
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-dht22-lcd */from arduino.app_utils import *import requestsimport timeTELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"CHAT_ID = "YOUR_CHAT_ID"last_update_id = 0TEMP_THRESHOLD_C = 35.0HUMIDITY_THRESHOLD = 80.0temp_alert_sent = Falsehumidity_alert_sent = Falsedef get_updates():global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5}try: response = requests.get(url, params=params, timeout=10) data = response.json()if data["ok"]:return data["result"]exceptExceptionas e:print(f"Error getting updates: {e}")return []def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text}try: requests.post(url, data=payload, timeout=10)exceptExceptionas e:print(f"Error sending message: {e}")def loop():global temp_alert_sent, humidity_alert_sent# Auto-alerts temp_c_str = Bridge.call("get_temp_c") humidity_str = Bridge.call("get_humidity")try: temp_c = float(temp_c_str) humidity = float(humidity_str)if temp_c > TEMP_THRESHOLD_C andnot temp_alert_sent: temp_alert_sent = True temp_f = Bridge.call("get_temp_f") msg = f"⚠️ High temperature alert: {temp_c_str}°C / {temp_f}°F"print(msg) send_message(CHAT_ID, msg)elif temp_c <= TEMP_THRESHOLD_C: temp_alert_sent = Falseif humidity > HUMIDITY_THRESHOLD andnot humidity_alert_sent: humidity_alert_sent = True msg = f"⚠️ High humidity alert: {humidity_str}%"print(msg) send_message(CHAT_ID, msg)elif humidity <= HUMIDITY_THRESHOLD: humidity_alert_sent = FalseexceptValueError:pass# Handle Telegram commands updates = get_updates()for update in updates: last_update_id = update["update_id"]if"message"notin update:continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip()print(f"Received: {text}")if text == "/start": send_message(chat_id,"Arduino UNO Q DHT22 + LCD Bot\n""/temp - Temperature (°C and °F)\n""/humidity - Humidity reading\n""/clear - Clear LCD display\n""/status - Full sensor status")elif text == "/temp": temp_c = Bridge.call("get_temp_c") temp_f = Bridge.call("get_temp_f") send_message(chat_id, f"Temperature: {temp_c}°C = {temp_f}°F")elif text == "/humidity": result = Bridge.call("get_humidity") send_message(chat_id, f"Humidity: {result}%")elif text == "/clear": result = Bridge.call("clear_lcd") send_message(chat_id, f"LCD cleared: {result}")elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result)else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(3)App.run(user_loop=loop)
빠른 단계
YOUR_TELEGRAM_BOT_TOKEN을 BotFather에서 받은 실제 봇 토큰으로 바꿉니다.
YOUR_CHAT_ID를 귀하의 Telegram 채팅 ID로 바꿉니다.
이 Python 코드를 앱의 Python 파일에 붙여넣습니다(동일한 MCU 스케치 유지).
실행 버튼을 클릭합니다. Telegram에서 /temp 또는 /humidity를 보내거나 센서를 따뜻하게 하여 고온 알림을 트리거합니다.
App Lab 콘솔 출력
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages...
[2026-04-29 09:10:18] ⚠️ High temperature alert: 36.20°C / 97.16°F
[2026-04-29 09:10:35] Received: /humidity
Telegram12:45
Welcome to Telegram!
ArduinoBot10:19
Chatting with Arduino...
BotFatherYesterday
Your bot has been created.
ArduinoBot
bot
Today
/temp
10:15 AM✓✓
Temperature: 26.30°C = 79.34°F
10:16 AM
/humidity
10:17 AM✓✓
Humidity: 55.2%
10:18 AM
/clear
10:19 AM✓✓
LCD cleared: OK
10:20 AM
/status
10:21 AM✓✓
Temp: 26.30°C / 79.34°F Humidity: 55.2%
10:22 AM
⚠️ High temperature alert: 36.20°C / 97.16°F
10:23 AM
⚠️ High humidity alert: 82.1%
10:24 AM
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial
프로젝트 아이디어
Arduino UNO Q에서 DHT22 및 LCD로 많은 유용한 프로젝트를 구축할 수 있습니다:
정밀 실내 온습도계: DHT22의 ±0.5°C 정확도와 LCD의 명확한 읽기를 결합하면 실내 기후 모니터링을 위한 안정적인 독립형 기기가 됩니다
식품 저장소 모니터: 식료품 저장실 또는 와인 셀러의 습도 및 온도를 주시합니다 — Telegram 알림은 조건이 안전한 범위를 벗어날 때 알려줍니다
식물 재배 스테이션: LCD에 온도 및 습도를 표시하여 이상적인 재배 조건 확보 — 읽기가 떨어질 때 Bridge를 통해 가습기 또는 팬을 트리거합니다
교실 날씨 스테이션: 교실에 DHT22 및 LCD를 마운트합니다 — 학생들은 실시간 읽기를 관찰하고 Bridge Python 측을 사용하여 하루 종일 기후 데이터를 기록하고 그래프로 표시할 수 있습니다
서버실 감시자: DHT22의 확장된 온도 범위(최대 80°C)를 사용하여 랙 온도를 모니터링합니다 — LCD는 실시간 상태를 표시하고 Telegram은 장비 손상이 발생하기 전에 즉시 알림을 보냅니다
도전 과제
Arduino UNO Q에서 DHT22 및 LCD를 더 사용하도록 준비되었나요? 이러한 도전 과제를 시도해 보세요:
쉬움: LCD에 스크롤 텍스트 추가 — 온도가 35°C를 초과하면 lcd.scrollDisplayLeft()를 사용하여 하단 행에 걸쳐 경고 메시지를 스크롤합니다.
중간: Telegram /setthreshold 명령 구현으로 인수로 온도 값을 받고 Python 측에서 알림 임계값을 동적으로 업데이트합니다(예: /setthreshold 30).
고급: 이중 모드 디스플레이 구축 — LCD를 Celsius/Fahrenheit 디스플레이와 노점 디스플레이 사이에 5초마다 전환하고, 노점을 Python을 통해 Bridge로 계산하고 set_dew_point(String) Bridge 함수를 통해 MCU로 다시 보냅니다.