Alexa-ingeschakelde Arduino Thuiscontroller: Slimme Automatisering Made Simple
Onderdelen en benodigdheden
| Arduino Yun | 1 |
| ControlEverything.com 4-KANALS RELAY CONTROLLER VOOR I2C | 1 |
| DHT11 Temperatuur & Vochtigheid Sensor (4 pins) | 1 |
| Weerstand 10k ohm | 2 |
| SparkFun RedBot Buzzer | 1 |
| Algemene Doel Transistor NPN | 1 |
| LM2596 DC-DC Buck Converter | 1 |
| Amazon Alexa Echo Dot | 1 |
| Arduino Proto Shield | 1 |
| USB WebCam | 1 |
| Witte Klemdoos 200x155x80mm | 1 |
Benodigde tools en machines
- Solderbout
Apps en online diensten
- Arduino IDE
- Amazon Alexa Skills Kit
- Amazon Web Services AWS Lambda
- PubNub Publish/Subscribe API
Over dit project
Overzicht
Toen Amazon Alexa en apparaten als de Echo Dot lanceerde, openden zich oneindige mogelijkheden voor een slimme huisvoering via spraakcommando's in natuurlijke taal.
Dit project maakt een Arduino Thuiscontroller die veel sensoren en apparaten met het internet verbindt, te besturen via een Amazon Alexa-skill. Je kunt mijn skill "Arduino Home Controller" installeren (makkelijkst) of zelf een skill maken via deze tutorial.
Momenteel te besturen:
- Vier lampen: slaapkamer, garage, keuken, woonkamer
- Temperatuur- en vochtigheidsensor
- Buzzer alarm
- WebCam voor beveiligingsfoto's per e-mail
Voor demo-doeleinden worden LEDs op een breadboard gebruikt als simulatie van lampen. Voor echte modules, zie mijn complementaire project "Arduino Home Controller Remote Modules".
Blokdiagram
Vier hoofdcomponenten:
- Amazon Echo Dot ontvangt spraakcommando's en stuurt ze naar AWS.
- AWS met Alexa Skill en Lambda-functie interpreteert commando's. Skillnaam: "Arduino Home Controller".
- MQTT Broker via PubNub cloud ontvangt besturingsberichten in twee kanalen: één voor instellen, één voor uitlezen van sensoren. Geen eigen PubNub-account nodig voor demo (mijn account kan gebruikt worden).
- Thuiscontroller met Arduino Yun - gekozen omdat het een ingebouwde Ethernet/Wi-Fi heeft en een kleine Linux-machine draait voor Python-scripts. Bestuurd relais voor lampen, leest DHT11 sensor, activeert buzzer, bedient webcam.
Software installeren
Optie 1: Mijn skill gebruiken (demo)
Open de Alexa-app, ga naar Skills, zoek "Arduino", selecteer "Arduino Home Controller", klik "Inschakelen". Koppel je Amazon-account (e-mailadres wordt als ID gebruikt voor commando's, niet voor e-mails).
Optie 2: Eigen skill maken
Registreer je als developer op developer.amazon.com.
- Maak een nieuwe Custom Skill: Taal "English US", naam "TestSkill", invocation name "Test Skill".
- Interaction Model: definieer Intents, Slots (States: on/off; HabRooms: room/kitchen/garage/living room) en Utterances (bijv. "Turn {which} light {light}").
- Maak een Lambda-functie op AWS Console: Author from Scratch, Node.js 6.10, custom IAM role met logging en IoT rechten. Upload de
data.zipmetindex.js. Pas de Application ID aan in regel 23. Noteer de ARN. - Koppel Skill en Lambda: in Skill Configuration, Endpoint = AWS Lambda ARN, plak ARN. Account Linking: stel OAuth 2.0 in via "Login with Amazon" (Security Profile). Voeg Redirect URLs toe. Vul Client ID/Secret in bij Account Linking.
- Publiceer/Installeer de skill in de Alexa-app.
Arduino Yun Configureren
Bij eerste gebruik: volg de "Getting started with Arduino Yun" handleiding. Voor foto/e-mail functionaliteit:
- SSH naar Yun:
ssh root@yourYunName.local(standaard wachtwoord: arduino) - Update packages:
opkg update - Installeer UVC drivers:
opkg install kmod-video-uvc - Installeer Python SSL:
opkg install python-openssl - Installeer fswebcam:
opkg install fswebcam - Controleer SD-kaart mount:
mount(moet/dev/sda1 on /mnt/sda1 type vfattonen) - Test camera:
cd /mnt/sda1 && fswebcam test.png - Installeer e-mail script: kopieer
AHC_SendEmail.pynaar SD-kaart, pas Gmail-gegevens aan (regels 11-13, 36). Test:python /mnt/sda1/AHC_SendEmail.py /mnt/sda1/ test.png
Hardware aansluiten
Volg het elektronische schema. Belangrijk: DHT11 sensor (pin 2) en buzzer (pin 8) voor testen.
Sketch uploaden
Download libraries.zip van GitHub (bevat ArduinoJson, DHT_sensor_library, pubsubclient-master) en pak uit in Arduino IDE libraries map. Open ArduinoHomeMQTT.ino, pas aan:
- Regel 16: jouw Amazon e-mail (gekoppeld aan skill)
- Regel 50: jouw UUID (genereer op uuidgenerator.net)
Testen met Alexa Echo Dot
De skill "Arduino Home Controller" ondersteunt deze uitspraken:
Lampen: "Alexa, ask arduino home to turn room light on/off", "kitchen light on/off", "garage light on/off", "living room light on/off"
Alarm: "Alexa, ask arduino home to turn alarm on/off"
Sensoren: "Alexa, ask arduino home to read temperature", "read humidity"
Foto: "Alexa, ask arduino home to take a photo"
Info: "Alexa, ask arduino home about", "help"
Software Details
Alle bestanden op GitHub: https://github.com/jcruzp/ArduinoHomeController
ArduinoHomeMQTT→ ino + libraries voor Arduino Yunlambda→ Node.js Lambda functie voor AWSpython→ e-mail script voor fotoschematic→ Fritzing schema
Workflow: (1) Echo Dot → Skill → (2) Lambda (Node.js) → (3) MQTT JSON naar PubNub (kanaal AHC_IOT_01) → (4) Arduino Yun ontvangt via bridge → (5) Actueert relais/leest sensor/maakt foto → (6) Python script stuurt foto per e-mail.
MQTT berichtformaat: {"topic": "Topic_xxxx", "command": "on/off", "id": "email"}. Topics: Topic_room, Topic_livingroom, Topic_kitchen, Topic_garage, Topic_alarm, Topic_temperature, Topic_humidity, Topic_photo.
Hardware Details
Arduino Yun is het hart. Digitale pinnen:
Pin 2: DHT11 sensor
Pin 8: Buzzer alarm (via NPN transistor)
Pin 9: Slaapkamer licht
Pin 10: Keuken licht
Pin 11: Garage licht
Pin 12: Woonkamer licht
USB: Webcam
Voeding: 12V DC → buck converter → 5V. Alles op Proto Shield gemonteerd in kunststof doos met sensoren/buzzer/webcam buiten.
Gemaakt in herinnering aan mijn vader, overleden vorig jaar. R.I.P. Dad.
Code
ArduinoHomeMQTT.ino (Arduino)
Zie de volledige code in de GitHub repository. Belangrijkste functies: MQTT verbinding met PubNub, callback voor commando-afhandeling, DHT11 uitlezen, foto maken met fswebcam, e-mail versturen via Python script.
AHC_SendEmail.py (Python)
Script op Arduino Yun (OpenWRT) om foto als bijlage per Gmail te versturen. Pas fromaddr, toaddr, emailpassword en SMTP-instellingen aan.
index.js (JavaScript - AWS Lambda)
Lambda functie die Alexa-intents vertaalt naar MQTT-berichten naar PubNub. Bevat handlers voor LightIntent, AlarmIntent, TakePhotoIntent, GetTemperatureIntent, GetHumidityIntent, Help/Stop/Cancel. Gebruikt PubNub SDK.
Schema's
Hoofdprint met relais, temperatuur/vochtigheidssensor, buzzer alarm en webcam.
Productieproces
- Web-gestuurd DMX-verlichtingssysteem – Arduino Master Controller
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
- Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
- Slimme Plantenwateringssysteem met Arduino Nano
- Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
- Arduino-gebaseerde Vacuum Fluorescent Display (VFD) Controller Kit
- Bouw een Autonome Thuisassistent Robot: Complete Onderdelenlijst & Opzetgids
- NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
- Arduino DMX-512 Tester Controller – Complete Onderdelenkit voor Betrouwbare Verlichtingsbesturing
- DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano