กลับไปหน้ารวมไฟล์
diy-air-humidifier-with-backlight-controlled-by-alexa-106a2f.md

ชื่อโปรเจกต์: เครื่องเพิ่มความชื้นในอากาศแบบ DIY พร้อมไฟแบ็คไลท์ควบคุมด้วย Alexa

Intro

ที่กรุงเคียฟ ประเทศยูเครน ฤดูหนาวอากาศหนาวจัดมาก ระบบทำความร้อนส่วนกลางจึงจำเป็นอย่างยิ่งในการรักษาอุณหภูมิห้องให้อบอุ่น แต่นอกจากการทำให้บ้านของฉันอุ่นขึ้นแล้ว ระบบทำความร้อนส่วนกลางยังทำให้อากาศในอพาร์ตเมนต์ของฉันแห้งอีกด้วย อากาศที่แห้งทำให้โพรงจมูกของฉันแห้งผากและทำให้ผ่านพ้นฤดูหนาวไปได้โดยไม่เจ็บป่วยเป็นเรื่องยาก ด้วยความเบื่อหน่ายกับการเจ็บป่วย ฉันจึงตัดสินใจจัดการกับอากาศแห้งในบ้านของฉันในปีนี้ แม้จะมีเครื่องเพิ่มความชื้นมากมายวางขายตามร้านค้า แต่ฉันก็ตัดสินใจว่าการสร้างเครื่องเพิ่มความชื้นอัจฉริยะที่ควบคุมด้วย Alexa สำหรับตัวเองจะเป็นความท้าทายที่น่าสนใจ

Reverse Engineering ของ Numidifier

ในการควบคุมโมดูลเครื่องเพิ่มความชื้น เราจำเป็นต้องรู้วิธีเปิดและปิด และวิธีรับสถานะปัจจุบันของเครื่องเพิ่มความชื้น (ว่าเปิดหรือปิดอยู่)

ในภาพ เราจะเห็นด้านล่างของแผงวงจรเครื่องเพิ่มความชื้น มีคอนเนกเตอร์จ่ายไฟและปุ่มกด จากคู่มือของโมดูล ฉันรู้ว่าหน้าสัมผัสภายในของคอนเนกเตอร์จ่ายไฟแบบกลมคือขั้วบวกของไฟเลี้ยง และหน้าสัมผัสภายนอกคือกราวด์ โมดูลนี้ถูกควบคุมโดยการกดปุ่ม ในภาพเราจะเห็นว่าปุ่มมี 4 พิน: สองพินเชื่อมต่อกับกราวด์ หนึ่งพินไม่ได้เชื่อมต่อ และอีกหนึ่งพินเชื่อมต่อกับเส้นทางที่ต่อไปยังพินที่ 4 ของชิปสี่เหลี่ยมสีดำ ในการสลับสถานะการทำงานของโมดูล เราจำเป็นต้องช็อตพินนี้กับกราวด์ ฉันค้นพบว่าจุดใดบนแผงวงจรมีการเปลี่ยนแปลงแรงดันไฟฟ้าเมื่อโมดูลเปิดหรือปิด โดยการกดปุ่มซ้ำๆ และตรวจสอบแรงดันไฟฟ้าที่จุดต่างๆ บนแผงวงจรแบบสุ่ม พินที่ 5 ของชิปสี่เหลี่ยมสีดำจะมีค่า 0V เมื่อเครื่องเพิ่มความชื้นปิดอยู่ และ 2.5V เมื่อเปิดอยู่ ดังนั้น สถานะของเครื่องเพิ่มความชื้นสามารถทราบได้โดยการอ่านสถานะบนพินนี้

ตอนนี้เรามีเกือบทุกอย่างที่จำเป็นในการควบคุมโมดูลนี้แล้ว พินที่ห้าของชิปดูเหมือนจะเป็นเอาต์พุต ฉันวัดความถี่บนพินนี้ได้ประมาณ 110 kHz ไม่สะดวกที่จะวัดสัญญาณโมดูเลตแบบนี้ด้วย Arduino เนื่องจากมันสามารถเป็น HIGH หรือ LOW (ได้ตลอดเวลา) ดังนั้นฉันจึงตัดสินใจใช้วงจรอินทิเกรเตอร์แบบพาสซีฟเพื่อแปลงสัญญาณ PWM จากโมดูลเป็นสัญญาณ DC ที่ง่ายต่อการอ่านด้วย Arduino

ไฟ LED

เพื่อให้เครื่องเพิ่มความชื้นดูสวยงามยิ่งขึ้น ฉันจึงตัดสินใจเพิ่มไฟแบ็คไลท์เข้าไป ฉันเลือก WS2812 RGB LEDs สำหรับวัตถุประสงค์นี้

มีไลบรารีจำนวนมากให้ใช้งานสำหรับการควบคุม LED เหล่านี้ และเชื่อมต่อได้ง่ายโดยใช้สายไฟเพียงไม่กี่เส้น

แผนผังวงจร

Electronic Schema

การเชื่อมต่อระหว่างส่วนประกอบทั้งหมดแสดงอยู่ในแผนผังด้านบน ฉันบัดกรีสายไฟเข้ากับพิน GND, +5V, Button และ State และเสียบเข้ากับ breadboard องค์ประกอบที่เหลือถูกประกอบบน breadboard ฉันเชื่อมต่อสายไฟเข้ากับแหล่งจ่ายไฟของ breadboard และวางทั้งหมดไว้ใต้ฝาเครื่องเพิ่มความชื้น

โค้ด

อุปกรณ์เชื่อมต่ออินเทอร์เน็ตโดยใช้โปรโตคอล MQTT ฉันใช้ test.mosquito.org สำหรับการสาธิต เพราะไม่ต้องมีการยืนยันตัวตนและไม่ต้องตั้งค่าเพิ่มเติม หลังจากที่อุปกรณ์เชื่อมต่อกับเครือข่าย ซึ่งคุณอาจระบุโดยตรงในโค้ดของสเก็ตช์ มันจะเชื่อมต่อกับ broker และสมัครรับหัวข้อ (topic) ต่อไปนี้:

"humidifier/on" - เพื่อรับคำสั่ง 'เปิด'

"humidifier/off" - เพื่อรับคำสั่ง 'ปิด'

"humidifier/reportState" - เพื่อรับคำสั่งรายงานสถานะ (เปิด/ปิด)

"humidifier/reportColorState" - เพื่อรับคำสั่งรายงานสถานะไฟแบ็คไลท์

"humidifier/color" - เพื่อรับคำสั่งเปลี่ยนสีไฟแบ็คไลท์

เมื่อใดก็ตามที่อุปกรณ์ได้รับข้อความเหล่านี้ มันจะดำเนินการตามคำสั่งที่เกี่ยวข้องและส่งข้อความกลับพร้อมข้อมูลสถานะของอุปกรณ์

#include <SoftwareReset.h> 
// เลือกรุ่นโมเด็มของคุณ:
#define TINY_GSM_MODEM_ESP8266

// กำหนดพินสำหรับบอร์ดของคุณ
#define LED_STRIP_PIN 5
#define TOGGLE_PIN 4
#define STATE_PIN 2
#define ESP_ENABLE_PIN 6
#define LED_NUM 8

uint32_t color;

#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NUM, LED_STRIP_PIN, NEO_GRB + NEO_KHZ800);

#include <TinyGsmClient.h>
#include <PubSubClient.h>

const char ssid[] = "ssid";
const char pass[] = "password";

//// ใช้ Hardware Serial บน Mega, Leonardo, Micro
#define SerialAT Serial1

TinyGsm modem(SerialAT);
TinyGsmClient client(modem);
PubSubClient mqtt(client);

// ตั้งค่า broker
const char* broker = "test.mosquitto.org";
const char* mqttDeviceId = "yourDeviceId";
const char* mqttUsername = "";
const char* mqttPass = "";

// ตั้งค่า topic
const char* topicTurnOn = "humidifier/on";
const char* topicTurnOff = "humidifier/off";
const char* topicReportState = "humidifier/reportState";
const char* topicStateReport = "humidifier/stateReport";
const char* topicReportColorState = "humidifier/reportColorState";
const char* topicSetColor = "humidifier/color";
const char* topicColorStateReport = "humidifier/colorStateReport";

long lastReconnectAttempt = 0;

// กำหนดสีของ strip หรือ WS2812 โมดูลใดๆ
void setStripColor(uint32_t c) {
// เติมสีทีละจุดด้วยสีที่กำหนด
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
}

// เปิดหรือปิดเครื่องเพิ่มความชื้น
void ToggleHumidifier() {
digitalWrite(TOGGLE_PIN, LOW);
delay(100);
digitalWrite(TOGGLE_PIN, HIGH);
}

void setup() {
pinMode(TOGGLE_PIN, OUTPUT);
digitalWrite(TOGGLE_PIN, HIGH);
pinMode(ESP_ENABLE_PIN, OUTPUT);
digitalWrite(ESP_ENABLE_PIN, HIGH);

ข้อมูล Frontmatter ดั้งเดิม

title: "DIY Air Humidifier with Backlight Controlled by Alexa"
description: "An easy-to-build humidifier with RGB backlight that can be controlled by Amazon Alexa."
author: "bytehead"
category: "Sensors & Environment"
tags:
  - "lights"
  - "embedded"
  - "home automation"
  - "remote control"
  - "internet of things"
views: 11953
likes: 8
price: 2450
difficulty: "Intermediate"
components:
  - "1x Capacitor 100 nF"
  - "1x Resistor 4.75k ohm"
  - "1x Soldering iron (generic)"
  - "1x 3D Printer (generic)"
  - "1x 20mm 113KHz Ultrasonic Mist Maker"
  - "1x Breadboard (generic)"
  - "1x SparkFun Breadboard Power Supply Stick 5V/3.3V"
  - "1x Arduino Micro"
  - "1x ESP8266 ESP-01"
  - "1x WS2812B 5050 NeoPixel Ring 8"
tools: []
apps:
  - "1x Arduino IDE"
  - "1x MQTT"
  - "1x Alexa Skills Kit"
  - "1x AWS Lambda"
downloadableFiles:
  - "https://github.com/fdistorted/ArduinoCloudHumidifier/tree/master/arduino_humidifier"
  - "https://github.com/fdistorted/ArduinoCloudHumidifierAlexaSkill"
  - "https://github.com/fdistorted/ArduinoCloudHumidifier/tree/master/arduino_humidifier"
  - "https://github.com/fdistorted/ArduinoCloudHumidifierAlexaSkill"
documentationLinks: []
passwordHash: "969e08348b714a3b2e8dbe873a599e0ba801ab689e7dbeb0a9d975e7c7e31b13"
encryptedPayload: "U2FsdGVkX1+4S8fuj6OFi7o3Va0NIzyIvDo5Ml9NydR+Hh2zjE8IqFGbPD9jttTcZYbFHccHrgTtQeqMOhX1qGGk3B1Z9Cg5k7Sm6royjnhaLQR8kA4wk8uZ3kB0pkbXOGVBeT3LzwFUjEoIvN5yPpter0Vg1ZdSbnLRSVeORcc="
seoDescription: "Build a DIY Air Humidifier with RGB Backlight and Alexa control. Easy smart home project for Arduino enthusiasts."
videoLinks:
  - "https://www.youtube.com/embed/GsMm_9r0mWw"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/diy-air-humidifier-with-backlight-controlled-by-alexa-106a2f_cover.jpg"
lang: "th"