Alexa-ingeschakelde USB-stroomschakelaar – Slimme controle voor USB-apparaten
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino MKR1000 | 1 |
| 0,1uF 0805 Condensator | 8 |
| LED (standaard) | 4 |
| Drukknop (lang) | 4 |
| INA219 (SOIC-8) | 1 |
| LM3526M | 2 |
| USB-aansluiting (verticaal) | 4 |
| 1k 0805 Weerstand | 4 |
| 0,1 Ohm Stroommeetweerstand | 1 |
| 1uF 0805 Condensator | 1 |
Benodigde tools en machines
- 3D-printer (standaard)
- Solderbout (standaard)
Apps en online diensten
- Amazon Alexa Alexa Skills Kit
- Tinamous
- Amazon Web Services AWS Lambda
Over dit project
Alexa, schakel de ThingyStick in...
Achtergrond
Steeds meer apparaten worden via USB gevoed, maar veel van deze "domme" apparaten (bijv. LED-verlichting) hebben geen internetverbinding of opties voor huisautomatisering. Hoe kunnen we ze op afstand automatiseren of controleren? Een USB-voeding aangesloten op een schakelaar in het stopcontact is overkill, vooral als je vier apparaten apart wilt bedienen.
Dit project stelt je in staat om de stroomvoorziening naar USB-apparaten via internet te controleren. Met de Tinamous SmartHome Skill voor Alexa kun je spraakcontrole inschakelen voor je "domme" USB-apparaten.
Op het moment zijn er weinig apparaten op de markt die USB-stroom op afstand kunnen schakelen. De meeste zijn ongemerkte multi-gang stopcontacten (zoals de ZLD-34UK) met onzekerheden over beveiliging, dataprivacy, levensduur en softwarekwaliteit. Een open-source Arduino-oplossing biedt meer controle en transparantie.
Toepassingen
Voorbeelden van USB-apparaten die je wilt controleren:
- USB-verlichting
- Kindle Fire / Chromecast sticks (vooral in kinderkamers om TV-kijken te beperken)
- USB-luchtbevochtigers
- Echo Dot (Alexa 's nachts uitschakelen of herstarten)
- Ontwikkelborden (herstarten na oneindige lus)
- Moeilijk bereikbare apparaten die occasioneel herstart moeten worden (sensoren op zolder)
- Apparaten op klantlocaties waar stroomverbruik en spanning gemonitoreerd moeten worden
Eenvoudige stroomcontrole
Internet-ingeschakelde stroomschakeling via Alexa-spraakcommando's of Tinamous-opdrachten. Aan en uit.
Slimme stroomcontrole
Veel USB-lampen hebben touch-bediening; remote inschakelen is niet mogelijk, maar uitschakelen wel. Met "slimme stroom" mode schakelt het uit-commando de stroom voor enkele seconden uit en herstelt deze daarna, zodat de lamp normaal blijft functioneren.
Timer-automatisering
Apparaten automatisch uitschakelen op vaste tijden (bijv. Fire Stick om 20:00).
Stroommonitoring
De on-board INA219 meet stroomverbruik (tot ~1 kHz sampling) en spanning. Handig voor hardware-ontwikkeling en batterijprofielen. Spanningval bij hoge stroom wordt gedetecteerd. Een klemblok staat hogere stromen en dikke kabels toe.
Stroomuitvaldetectie
Met de batterijoptie van de MKR1000 kan de USB-voedingsspanning gemonitoreerd worden. Bij stroomuitval wordt een notificatie verstuurd – ideaal voor remote installaties of als eenvoudige netspanningsdetector.
Hardware
De kern vormt een Arduino MKR1000. Twee LM3526M-chips zorgen voor high-side schakeling en foutdetectie (onderspanning, overstroom). De INA219 meet spanning en stroom. LEDs en schakelaars bieden lokale bediening.
De PCB is gefabriceerd via DirtyPCBs.com (of OSHPark.com). De Arduino-socket heeft pads voor uitbreiding (sensoren, OLED-display). Er zijn 2-poorts en 4-poorts versies; de 2-poorts versie had een layoutfout (omgekeerde polariteit USB-sockets), wat leidde tot de verbeterde 4-poorts versie met componenten aan de onderkant.
Uitbreiding naar 6 of 8 poorten is mogelijk, maar LEDs/schakelaars moeten dan mogelijk vervallen.
Het schema ziet complexer uit dan het is; veel weerstanden zijn optioneel (pull-ups voor schakelaars, USB-controle, foutdetectie). Deze kunnen via INPUT_PULLUP in software worden gerealiseerd, tenzij je de Arduino in diepe slaap wilt zetten met interrupts.
Stroominvoer
Drie opties:
- Intern: JP6 pin 1-2 gebridgeerd – stroom via Arduino 5V-pin (alleen voor lage belasting).
- Extern via USB micro (J2): JP6 pin 2-3 gebridgeerd – 5V via onboard USB.
- Extern via klemblok (JP8): Ook JP6 pin 2-3 – voor hogere stromen en dikke kabels.
Externe voeding wordt ook naar Arduino VIn gerouteerd. Optioneel: 0R weerstanden op R10, R11 en J2 voor USB-pass-through (handig bij hardware-ontwikkeling).
Behuizing
Een 3D-printbare behuizing is bijgeleverd. M3 heat-set inserts voor PCB en deksel; deksel past ook via wrijving. Opties: met/zonder batterijcompartiment, met/zonder voeten (montagelochten). De basis is configureerbaar in OpenSCAD voor de drie stroominvoeren.
Verbinden met Tinamous
De Arduino MKR1000 gebruikt WiFi. Voor Tinamous MQTT (beveiligd via SSL) heb je de laatste firmware en SSL-certificaten nodig.
Stap 1: Firmware updaten
Laad de FirmwareUpdater sketch (WiFi101 voorbeelden) en upload naar de MKR1000.
Stap 2: WiFi101 Firmware Updater
Kies Tools → WiFi101 Firmware Updater.
Stap 3: Certificaten installeren
Test verbinding, klik Update Firmware. Voeg via Add domain tinamous.com toe en upload certificaten.
Stap 4: Eigen firmware schrijven
Bestanden vind je in het project en op GitHub. Gebruik de WiFi101 en MQTT Client bibliotheken. Vul secrets.h in met WiFi- en Tinamous MQTT-instellingen:
#define SECRET_SSID "Jouw SSID"
#define SECRET_PASS "Jouw wachtwoord"
#define MQTT_SERVER "jouwaccount.tinamous.com"
#define MQTT_SERVERPORT 8883
#define MQTT_USERNAME "UsbSwitch.jouwaccount"
#define MQTT_PASSWORD "Jouw wachtwoord"
#define MQTT_CLIENT_ID "UsbSwitch"
#define DEVICE_USERNAME "UsbSwitch"
Maak een gratis Tinamous-account aan; de accountnaam wordt onderdeel van de MQTT-URL.
Stap 5: Apparaat toevoegen in Tinamous
Ga naar Devices → Add. Vul de MQTT-instellingen aan met jouw accountnaam.
Stap 6: Code uploaden en testen
Upload de code (met jouw secrets.h). Bestudeer TinamousMQTTClient.ino voor MQTT-afhandeling en Alexa-commando's. Gebruik WiFiSSLClient voor SSL (poort 8883). Reserveer 4096 bytes buffer voor MQTT.
De client abonneert zich op /Tinamous/V1/Status.To/UsbSwitch om berichten van Alexa te ontvangen. Test via de Tinamous-timeline door berichten te sturen als @UsbSwitch Turn On.
De Tinamous Smart Home Skill voor Alexa
De skill (C#, .NET Core 2.0) is generiek: apparaten in Tinamous krijgen tags (Alexa.SmartDevice, MultiPort, Alexa.PowerController, SmartPlug) en worden automatisch gedetecteerd. Voor multi-poort apparaten configureer je PortCount en poortnamen in Tinamous. State reporting werkt via getagde velden (powerState, powerState-port-n).
Account linking
Alexa vraagt authenticatie via de Tinamous Authorize-pagina (accountnaam, gebruikersnaam, wachtwoord).
Discovery
Na koppeling voert Alexa discovery uit. De skill zoekt apparaten met tag Alexa.SmartDevice. Bij MultiPort worden individuele poorten als afzonderlijke apparaten toegevoegd.
State Report
Alexa vraagt status via StateReport. Velden in Tinamous krijgen tags (powerState of powerState-port-n) om capabilities aan te duiden.
Stroomcontrole
Alexa stuurt TurnOn en TurnOff directives. De skill publiceert een statusbericht op de Tinamous-timeline (bijv. @UsbSwitch Turn On port-1). Het apparaat reageert via MQTT.
AWS Lambda-functie aanmaken
Publiceer de skill via Visual Studio AWS Tools naar Lambda. Kies de juiste regio (EU-West voor UK/Engels). Maak een rol aan (bijv. Simple Microservices). Publiceer een versie en koppel de Skill ID als trigger.
Skill aanmaken in de Alexa Developer Console
Maak een Smart Home Skill (V3 payload). Vul de Lambda ARN in (met versie, bv. :1). Koppel de Skill ID in Lambda. Voor account linking: voeg een Alexa Bot toe in Tinamous (niet nodig voor gepubliceerde skill). Vul OAuth-gegevens in de console in. Test de skill in de Alexa-app.
Succes!
Na discovery kun je apparaten stemmen: "Alexa, schakel de USB-lamp uit". Logs vind je in CloudWatch.
Debugging & tips
- Vermijd speciale tekens in endpoint IDs.
- Log alles; controleer CloudWatch.
- Gebruik dezelfde e-mail voor AWS en Alexa.
- Houd Lambda en skill in dezelfde regio.
- Geen respons? Controleer response-formaat.
- Gebruik Amazon Households voor een tweede ontwikkelaarsaccount.
- Schakel profielen met "Alexa, schakel profielen".
Eén skill, elk IoT-ding
Met de Tinamous SmartHome skill voeg je Alexa-controle toe aan elk apparaat dat verbindt met Tinamous MQTT. Alleen tags toevoegen en "Alexa, ontdek slimme apparaten".
Code
AlexaUsbSwitcher.ino– HoofdprogrammaTinamousMQTTClient.ino– MQTT connectiviteit & Alexa-commando'sUsbControl.ino– USB-stroomschakeling & indicatieWiFiClient.ino– WiFi-afhandelingSecrets.h– Jouw instellingen (niet meegeleverd)
Bekijk de volledige code in de GitHub-repository: USBPowerSwitcher (map Arduino/StandAlone/, 4-poorts versie).
Schematics & PCB
Eagle-bestanden (.brd, .sch) zijn bijgeleverd voor OSHPark of DirtyPCBs. De 3D-printbestanden voor de behuizing zitten in de repository.
Productieproces
- Efficiënte 230 VAC stroomuitvalsensor voor Raspberry Pi – Laagkost, compact en veilig
- SMS-gestuurde Slimme AC-stroomschakelaar met Raspberry Pi & Hologram
- Windenergie: Omzetten van Luchtbeweging in Schone Elektriciteit
- Power Hammers onder de knie: Een uitgebreide gids voor moderne smederij
- Automatische krachtpressen: kenmerken, voordelen en toepassingen
- Krachtspankoppen Begrijpen: Definitie, Gebruik en Voordelen
- Krachtspankoppen: Uitgebreide Gids voor Precisie Bewerking
- Waterkracht Benutten: Complete Gids voor Hydroelektrische Energie
- Stroombronnen: AC en DC Uitgelegd
- TI introduceert ultra‑compacte, hoge‑efficiënte BQ25790/BQ25792 buck‑boost batterijladders
- De C# Switch Statement: Syntaxis, Voorbeelden & Best Practices