หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ Chris' Arduino Smart Home Solution ที่ใช้งานจริงในบ้านของผม

Modular Smart Home Solution ที่เป็นทางเลือกแทน KNX และ Loxone! ใกล้จะพร้อมสำหรับการผลิตแบบ series-production และใช้งานจริงในบ้านของผมแล้ว

โปรเจกต์ Chris' Arduino Smart Home Solution ที่ใช้งานจริงในบ้านของผม

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

รายการอุปกรณ์และเครื่องมือ

1x piggyback for mainboard
-
1x DIN Rail B6504121
🛒 สั่งซื้อ
1x Arduino Ethernet Rev. 3
-
1x Raspberry Pi 3 Model B
-
1x Housing for Sensor board GH02KS030/010 Größe 1
-
1x RGB Shield for Arduino
-
1x Soldering iron (generic)
-
1x DHT22 Temperature Sensor
🛒 สั่งซื้อ
1x Echo Dot
-
1x JUNG LS5236TSM - Pushbutton sensor ( alternative to gira)
-
1x PIR Motion Sensor (generic)
🛒 สั่งซื้อ
1x Mainboard
-
1x drilling machine
-
1x saw
-
1x 24 V Relais ( e.g. WAGO 788-304)
🛒 สั่งซื้อ
1x Arduino Ethernet Rev. 3
-
1x Pushbutton sensor 2, 3-gang 24 V zero-voltage with inscription space
-

รายละเอียดและวิธีทำ

โปรดรับชมวิดีโอเพื่อดูการแนะนำสั้นๆ และการทำงานบางส่วน :

วิดีโอแนะนำ

[ลิงก์ dropbox สำหรับวิดีโอ : https://www.dropbox.com/s/6d0p0y16j1kb6az/20180220_CARDUINO_System.mp4?dl=0 ]

โปรเจกต์นี้แสดงโซลูชัน Home Automation ที่ใช้ Arduino Ethernet (A000068) และ openHAB2 โดยมีเป้าหมายเพื่อพัฒนาโซลูชันที่พร้อมสำหรับการใช้งานจริงในบ้านของผมเอง

ฟังก์ชันการทำงานต่างๆ ที่กำหนดไว้สำหรับห้อง "มาตรฐาน" มีดังนี้

การสวิตช์ (Switch):

- แสงสว่าง (ใช้ Relays)

- สวิตช์หนึ่งตัวสำหรับควบคุม Servomotor ของระบบทำความร้อนใต้พื้น (ใช้ Relays)

- Relays สองตัวต่อหน้าต่างเพื่อควบคุมม่านไฟฟ้า (สูงสุด 2 หน้าต่างต่อห้อง)

ปุ่มกด (Button):

- ควบคุมไฟ

- ควบคุมม่าน

- อื่นๆ เช่น ควบคุมปลั๊กไฟ

เซนเซอร์ (Sensors):

- อุณหภูมิ (DHT 22)

- ความชื้น (DHT 22)

- ความสว่าง

- การตรวจจับการเคลื่อนไหว (โดยเฉพาะในทางเดิน, HC-SR501)

- สถานะหน้าต่าง (เปิด, ปิด, แง้ม)

- ตัวรับสัญญาณ IR (ตัวเลือกเสริม)

--------------------------------------------------------

หลังจากศึกษาข้อมูลในอินเทอร์เน็ตแล้ว ได้มีการนำโซลูชัน Hardware ต่อไปนี้มาใช้งาน:

- Mainboard หนึ่งบอร์ด (ทำงานด้วย Arduino (Arduino Ethernet แบบไม่มี PoE, Code: A000068)) เพื่อจัดการข้อมูลจาก Sensor และ Button รวมถึงสั่งสวิตช์ Relays (ติดตั้งในตู้ควบคุมไฟฟ้า บรรจุในเคสขนาด 6 sub-units)

- Sensor Board หนึ่งบอร์ด ติดตั้งแยกตามจุดในแต่ละห้อง เชื่อมต่อด้วยสาย Ethernet

- แผงปุ่มกด 6 ช่องต่อห้อง เชื่อมต่อด้วยสาย Ethernet

- Relays 8 ตัวต่อห้อง

--------------------------------------------------------

หลังจากศึกษาข้อมูล Software และทำ Prototype เพิ่มเติม ผมได้เลือกใช้สภาพแวดล้อม openHAB2 ร่วมกับโปรโตคอล MQTT เป็นโครงสร้างพื้นฐานของระบบเครือข่าย เพื่อให้ง่ายต่อการควบคุมและแสดงข้อมูล (และยังมีรูปลักษณ์ที่ทันสมัยสำหรับการใช้งานบนอุปกรณ์มือถือ)

--------------------------------------------------------

ส่วนของ Mainboard:

- รูปลักษณ์ดูเป็นมืออาชีพเพื่อให้มั่นใจว่าผ่านเกณฑ์การใช้งานในตู้ควบคุมไฟฟ้า

- ออกแบบมาให้ประหยัดพื้นที่

- ง่ายต่อการเปลี่ยนใหม่ในกรณีที่เกิดข้อผิดพลาด

- จัดวางตำแหน่งปุ่ม Reset และพอร์ตสำหรับ Programming ได้อย่างเหมาะสม

- ช่องรับไฟ Input (7-12V) พร้อมฟิวส์เพิ่มเติม

- สามารถขยายและปรับขนาดระบบได้

- ราคาประหยัดโดยใช้อุปกรณ์มาตรฐาน (ประมาณ 40 € เมื่อสั่งจากผู้ผลิตบอร์ดในเยอรมนี - รวมประกอบเสร็จสรรพ!)

ส่วนของ Sensor Board:

- ติดตั้งแบบฝังผนัง

- DHT 22 (สำหรับควบคุมระบบทำความร้อนใต้พื้น)

- อุปกรณ์ 1 wire รหัส DS2438 สำหรับตรวจวัดอุณหภูมิและรองรับ ADC สองช่อง

- จุดเชื่อมต่อ 1 wire สำหรับเพิ่มอุปกรณ์อื่นๆ (เช่น เซนเซอร์อุณหภูมิ DS18B20)

- เซนเซอร์วัดความสว่าง (เชื่อมต่อกับ ADC ของตัวตรวจสอบแบตเตอรี่ DS2438)

- อินพุต TTL สองช่อง (สำหรับสถานะหน้าต่าง: เปิด, ปิด, แง้ม)

- อินพุต TTL หนึ่งช่องสำหรับตัวตรวจจับการเคลื่อนไหว

- ตัวรับสัญญาณ IR

- สร้างได้ง่าย (เช่น สามารถบัดกรีเองได้ที่บ้าน)

อุปกรณ์อื่นๆ ที่ใช้:

- Raspberry Pi รันระบบ openhabian

- ปุ่มกด SPS (ยี่ห้อ Jung, Gira)

- Relays เกรดอุตสาหกรรม (Wago 788-30??, 24 V)

- แหล่งจ่ายไฟ (Power supplies)

---------------------------------------------------------------------------------

การเชื่อมต่อระหว่างบอร์ด Arduino ทั้งหมดกับ Alexa ทำผ่าน openHAB cloud connector และ Alexa openHAB skill

-----------------------------------------------------------------------------------

ตอนนี้ผมขอให้รายละเอียดด้าน Hardware เพิ่มเติม

ส่วนประกอบหลักและอินเทอร์เฟซของ Mainboard แสดงอยู่ในรูปถัดไป โดยติดตั้ง Arduino ลงบน Mainboard ซึ่งตัว Mainboard รองรับ:

- I2C 16 I/O port expander สองตัว ตัวหนึ่งใช้สำหรับ Relays 8 ตัว (ร่วมกับ ULN) และ Pin Header สำหรับต่อกับบอร์ดเสริม (Piggy back board) อีกตัวใช้สำหรับ Input 6 ช่อง, พอร์ต I/O สองช่อง และ Pin Header สำหรับบอร์ดเสริม อินเทอร์เฟซสำหรับ Input ทั้ง 6 ช่อง, Vcc และ GND ใช้แจ็ค RJ 45 พอร์ตเพิ่มเติมอีกสองพอร์ตเชื่อมต่อกับ Pin Header บน Mainboard โดยตรง ส่วน Relays เชื่อมต่อผ่านขั้วต่อสกรูแบบเสียบได้ (Pluggable screw terminal)

- ไฟ Input 7-12 V ผ่านขั้วต่อสกรูแบบเสียบได้ (ป้องกันด้วย SMD fuse)

- แจ็ค RJ45 สองช่องสำหรับ Sensor Board สองบอร์ด

- เอาต์พุต I2C บนแจ็ค RJ45

ส่วนประกอบหลักและอินเทอร์เฟซของ Mainboard

Mainboard สามารถขยายการทำงานได้ด้วยการเสียบบอร์ดเสริม (Extension board piggy backed) บอร์ดเสริมนี้จะเพิ่มช่องเอาต์พุต Relays อีก 8 ช่อง และแจ็ค RJ45 สำหรับ Input อีก 6 ช่อง เพื่อเชื่อมต่อกับปุ่มกด SPS แบบ 6 ช่องในห้อง ส่วนพอร์ต I/O อีกสองพอร์ตของ I/O port expander จะเชื่อมต่อกับ Pin Header ในตัว เพื่อใช้เป็น LED แสดงสถานะหรือปุ่มสำหรับส่งข้อความทดสอบไปยัง MQTT server

Extension Board (บอร์ดเสริม)

นอกจากนี้ คุณยังสามารถพัฒนาบอร์ดเสริมในเวอร์ชันของคุณเองได้ เช่น รองรับ Relays 16 ตัว หรือแจ็ค RJ 45 สองช่องสำหรับเซนเซอร์ปุ่มกดสองชุด

หากบอร์ดเสริมยังมีปุ่มกดหรือเอาต์พุต Relays ไม่เพียงพอ คุณสามารถเชื่อมต่อ Mainboard อีกบอร์ดผ่าน I2C โดยไม่ต้องใช้ Arduino ซึ่งบอร์ดเวอร์ชันนี้ผมยังไม่ได้พัฒนาขึ้นมา แต่คุณจะเห็นข้อเสนอแนะด้านล่าง รวมถึงบอร์ดเสริมสำหรับส่วนขยายนั้นก็สามารถพัฒนาได้ตามความต้องการเฉพาะของคุณ

Mainboard เวอร์ชันที่ไม่มี Arduino

นี่คือภาพบางส่วนของ Hardware จริง

บอร์ดเสริม (Piggy back board)

Mainboard ที่ประกอบพร้อมบอร์ดเสริมและ Arduino

ด้านหน้าของ Sensor Board

ด้านหลังของ Sensor Board

มีการวางสาย LAN มาตรฐานสองเส้นจาก Mainboard (ในตู้ควบคุมไฟฟ้า) ไปยังแต่ละห้อง เพื่อเชื่อมต่อกับปุ่มกด (6 ช่อง) และ Sensor Board ดังนั้น โดยรวมแล้ว Mainboard พร้อมบอร์ดเสริมหนึ่งตัวสามารถรองรับห้องมาตรฐานได้สองห้อง โดยใช้ปุ่มกด 6 ช่องสองชุด, Sensor Board สองบอร์ด และ Relays สูงสุด 16 ตัวเพื่อควบคุมไฟ, ม่าน และอื่นๆ

ทีนี้มาดูในส่วนของ Software กันบ้าง openhabian ที่รันบน Raspberry Pi คือหัวใจของโครงสร้างพื้นฐาน Software โดยมีส่วนประกอบหลักคือ:

- openHAB 2

- Mosquitto Server (MQTT Server ซึ่งรวมอยู่ในชุดติดตั้ง openhabian แล้ว)

- openhab cloud connector (add-ons-> misc)

- MQTT actions (add-ons-> actions)

- MQTT binding (add-ons-> bindings)

- item file (ไฟล์ items ส่วนตัวของคุณ คุณสามารถดูตัวอย่างได้ที่นี่)

---------------------------------------------------------------------------------

บทช่วยสอน (TUTORIAL) :

การติดตั้ง Openhabian และกำหนดค่า openHAB

อุปกรณ์ Raspberry Pi (พร้อมอุปกรณ์เสริม)

  • ติดตั้ง Openhbian (https://docs.openhab.org/installation/openhabian.html)
  • ดาวน์โหลด SD Card Image \t\t
  • ใช้โปรแกรม เช่น Etcher เพื่อ Flash ตัว Image ลงใน SD Card
  • เสียบ SD Card เข้ากับ Raspberry Pi และเชื่อมต่อ Raspberry Pi ของคุณผ่านสาย LAN (เข้ากับ Router ที่มีการรัน DHCP Server อยู่)
  • รอสักครู่ (ขั้นตอนนี้อาจใช้เวลาสักพัก) และตรวจสอบรายชื่อ DHCP Client จนกว่า Raspberry Pi จะได้รับ IP Address (หรือใช้ IP Scanner เช่น Angry IP Scanner เพื่อตรวจหา Raspberry Pi ของคุณ)
Raspberry Pi ได้รับ IP Address แล้ว

หาก Raspberry Pi พร้อมใช้งานในชื่อ openhabian ให้เปิด Browser ของคุณแล้วพิมพ์: (พอร์ตเริ่มต้นคือ 8080 เพื่อเข้าสู่หน้าต่อไปนี้)

ผมเลือกใช้การติดตั้งแบบ Standard:

เริ่มต้นการติดตั้ง Openhabian

จากนั้นคุณสามารถเลือก openhab log viewer เพื่อติดตามสถานะการติดตั้งได้

สถานะการติดตั้งใน Log Viewer

ดูผลลัพธ์จาก openhab log viewer ด้านบน (คุณจะเห็นว่าพอร์ตของ log viewer คือ 9001)

หากคุณรัน "IpOfYourRaspberryPi:8080" อีกครั้ง คุณจะเห็นหน้าจอดังนี้:

เลือกเมนู Paper UI

ในหน้าถัดไป ให้เลือก add-ons และ misc จากนั้นค้นหาคำว่า cloud

การติดตั้ง Openhab Cloud connector

ติดตั้ง openHAB cloud add-on

สำหรับการสื่อสารผ่าน MQTT ให้ติดตั้ง add-ons ต่อไปนี้ด้วยวิธีเดียวกันกับข้างต้น

-Add-Ons -> Bindings -> MQTT Binding

-Add-Ons -> Actions -> MQTT Action

การใช้ Openhabian และ Putty

การเข้าถึง openhabian ผ่าน Putty

ยืนยันหน้าต่างโต้ตอบด้วย yes - หลังจากเชื่อมต่อได้แล้ว ให้ใช้ชื่อผู้ใช้ „openhabian“ และรหัสผ่าน „openhabian“ จากนั้นคุณจะเห็นหน้าจอเริ่มต้นดังนี้

ใช้คำสั่ง:

„sudo openhabian-config“ และยืนยันด้วยรหัสผ่านมาตรฐาน „openhabian“

คุณจะเห็นหน้าจอดังนี้

เลือก optional components:

เลือก mosquitto และกด „continue“ ในหน้าถัดไป

คุณจะถูกถามรหัสผ่าน (ชื่อผู้ใช้สำหรับ login ของ mosquitto server คือ openhabian)

หลังจากเลือกรหัสผ่าน การติดตั้งจะเสร็จสิ้นโดยอัตโนมัติ

(หมายเหตุ: ใช้ System Settings เพื่อเปลี่ยนรหัสผ่านมาตรฐาน)

ผมคิดว่าการตั้งค่า IP Address แบบ Static ให้กับระบบ openhabian นั้นมีประโยชน์ โดยทำตามขั้นตอนต่อไปนี้เพื่อเปลี่ยนเป็น Static (ขั้นตอนนี้ใช้ได้สำหรับ Raspberry Pi 3)

รันคำสั่ง "sudo nano /etc/dhcpcd.conf" บน putty console

ลบเครื่องหมาย comment ออกจากบรรทัดเหล่านี้และใส่ IP Address ที่คุณต้องการ

static ip_address=XXXXXXXXXX

static_ routers = XXXXXXXXXX

static domain_name_server=XXXXXXXXXXXXXXXXX

และ restart บริการ network ด้วยคำสั่ง

sudo /etc/init.d/networking restart

คุณสามารถใช้ MQTT client อย่างเช่น mqttfx เพื่อทดสอบ mosquitto server ได้

การกำหนดค่า mqttfx เพื่อเชื่อมต่อกับ openhabian mosquitto server :

กำหนดค่า MQTT binding บน OH2: /etc/openhab2/services/mqtt.cfg

mqtt:broker.url=tcp://localhost:1883

mqtt:broker.clientId=openhab

mqtt:broker.retain=true

mqtt:broker.async=false

Restart OH2

sudo /etc/init.d/openhab2 restart

ตอนนี้เราพร้อมที่จะสร้างการกำหนดค่า items แล้ว

โปรดจำไว้ว่า Raspberry Pi ของคุณสามารถเข้าถึงได้ในรูปแบบ Network Drive ให้เปิด Windows Explorer คลิกขวาที่ Network แล้วเลือก Map network drive และกรอกข้อมูลต่อไปนี้

\\\\IPAddressOfYourRaspberryPi\\openhab-conf

แล้วเลือก „log in with different credentials“

Network Drive ที่เชื่อมต่อแล้วจะมีหน้าตาดังนี้

คุณสามารถหาไฟล์ item ได้ที่นี่ - บันทึกลงในโฟลเดอร์ item

ตรวจสอบที่ LogViewer ว่าไฟล์ item สามารถโหลดได้สำเร็จหรือไม่

ไปที่ myopenhab.org และสร้างบัญชีผู้ใช้:

ลงทะเบียนบน myopenhab.org

ใช้อีเมลของคุณและเลือกรหัสผ่าน

log in เข้าสู่ openhabian ผ่าน ssh ( putty ) และตรวจสอบไฟล์ต่อไปนี้เพื่อดู uuid และ secret

uuid : /var/lib/openhab2/uuid

secret : /var/lib/openhab2/openhabcloud/secret

เปิดไฟล์ด้วยคำสั่ง

sudo nano /var/lib/openhab2/openhabcloud/secret

sudo nano /var/lib/openhab2/uuid

หลังจากสร้างบัญชีแล้วให้ restart OH 2 :

sudo systemctl restart openhab2.service

(คุณสามารถติดตามสถานะได้ด้วย log viewer ใน browser)

ควรมีข้อความปรากฏใน log ว่าการเชื่อมต่อสำเร็จ

[INFO ] [io.openhabcloud.internal.CloudClient] - Connected to the openHAB Cloud service

ติดตั้ง Alexa บนโทรศัพท์มือถือของคุณ

เปิดแอป

เลือก skills

ค้นหาคำว่า openhab

ติดตั้ง skill และเปิดใช้งานโดยลงชื่อเข้าใช้ด้วยข้อมูลบัญชี myopenhab.org ของคุณ

อนุญาตให้แอปเข้าถึงบัญชีของคุณและเริ่มการค้นหาอุปกรณ์ที่ติด Tag สำหรับ Alexa ไว้

"Alexa, discover my devices."

จากนั้นคุณสามารถสั่งว่า:

"Alexa, switch Guest Room Lighting on"

"Alexa, switch Hochfahren on",

"Alexa, switch runter on" ,

คุณจะพบไฟล์ต่อไปนี้ให้ดาวน์โหลด:

1. Arduino Ethernet Sketch สำหรับ Mainboard (เผยแพร่ข้อมูลปุ่มกดและเซนเซอร์ และบอกรับข้อมูล (Subscribe) สำหรับ Relays และ Window Topic สำหรับห้องมาตรฐาน)

2. ไฟล์ item สำหรับห้องมาตรฐาน

3. Standard Room Widget สำหรับ Habpanel บน openHAB 2

4. ไฟล์ Rule สำหรับห้องมาตรฐานและกฎของ Alexa

นอกจากนี้ คุณยังจะพบไฟล์สำหรับควบคุม RGB LED strip ด้วย Arduino Ethernet ที่ทำงานร่วมกับ RGB shield ( https://www.velleman.eu/products/view/?id=412138 )

1. Sketch สำหรับ Arduino Ethernet + RGB Shield ที่ทำงานเป็น MQTT Client

2. ไฟล์ Items สำหรับ RGB

3. ไฟล์ Rules สำหรับควบคุม RGB

และยังมีฟังก์ชันอีกมากมายที่อยู่ใกล้แค่เอื้อม:

- ควบคุมและรับข้อมูลอุณหภูมิและความชื้นผ่าน Alexa

- เพิ่มกฎเพื่อควบคุมพัดลมเมื่อความชื้นสูงเกินไป

- เพิ่มกฎเพื่อควบคุม Relays เพื่อเปิด/ปิด ระบบทำความร้อนใต้พื้นตามอุณหภูมิ

- RGB strip: เพิ่ม item สำหรับหรี่ไฟ (Dimmer) และอัปเดต Sketch RGB เพื่อบอกรับข้อมูลหัวข้อนี้เพื่อเปลี่ยนความสว่างของ RGB LED strip

- RGB strip: เพิ่ม item สำหรับไฟ "กะพริบ" (Flash) และอัปเดต Sketch RGB เพื่อบอกรับข้อมูลหัวข้อนี้เพื่อให้ไฟ RGB LED strip กะพริบ

- ควบคุมปลั๊กไฟผ่าน Alexa เพื่อปิดอุปกรณ์ที่เปิดรอใช้งาน (Standby)

- วิทยุ WLAN บางรุ่นสามารถควบคุมได้ผ่าน openhab 2 - ซึ่งไม่ยากเกินไปที่จะเชื่อมต่อกับ Alexa (เปิด/ปิด, เพิ่ม/ลดเสียง เหมือนตัวหรี่ไฟ)

- esp8266 น่าสนใจมาก โดยเฉพาะการนำมาใช้ร่วมกับ Sensor Board เพื่อยกเลิกการใช้สายเคเบิล

Arduino Ethernet และ openHAB 2 เปิดโลกแห่ง Home Automation ที่ไร้ขีดจำกัดให้กับผม และ Alexa คือส่วนเติมเต็มที่ยอดเยี่ยมที่สุดครับ :-)

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: chris-arduino-smart-home-solution-working-in-my-own-house-f24a1e
2450 บาท
PromptPay QR Code

ประเมิน Project

อยากได้งานคล้ายโปรเจคนี้? กดไปหน้าประเมินราคา

เอาฟอร์มยาวออกจากท้ายหน้า Project แล้ว เหลือเป็นปุ่มให้กดไปกรอกหน้าเดียว ตัวใหญ่ เว้นบรรทัดเยอะ อ่านง่ายกว่า

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...