Bouw een Sith-geïnspireerd slimme thuiskomstsysteem
Onderdelen en benodigdheden
| Particle Photon | 2 |
| Arduino UNO | 1 |
| Adafruit Music Maker MP3 Shield | 1 |
| Adafruit PIR Bewegingssensor | 1 |
| LED (standaard) | 2 |
| Weerstand 220 ohm | 2 |
| Draadbruggen | 1 |
| Luidspreker: 3W, 4 ohm | 1 |
| Breadboard (standaard) | 2 |
| USB Micro B Wandlader | 1 |
| USB-A naar B Kabel | 1 |
| Male-Header 36 Positie 1 Rij - Lang (0.1") | 1 |
Benodigde tools en machines
- Solderbout (standaard)
Apps en online diensten
- Particle Cloud
Over dit project
Mijn dochter is een enorme Star Wars-fan (hoewel ze nog geen van de films heeft gezien). Natuurlijk was ze enthousiast toen ik vroeg of ze een Star Wars-thema project wilde bouwen. Ik weet niet hoe vaak ze me heeft laten de Imperial March (Darth Vader's thema) afspelen toen ze haar Darth Vader-kostuum droeg, zodat ze een feerlijke intrede in de kamer kon maken. Dus we besloten snel dit project: automatisch iemand thuiskomen detecteren en dan de Imperial March afspelen net voordat de persoon het huis binnenloopt.
Dit is een redelijk simpel project, dus goed geschikt voor beginners. Ik vond het interessant omdat het de eerste keer was dat ik het publiceren/abonneren-patroon naar/van de cloud gebruikte. Het was ook de eerste keer dat ik verschillende typen microcontrollers in één project integreerde. Ik hou van de Photon's eenvoud en gemak bij het maken van een cloud-verbonden oplossing. En je kunt de verscheidenheid en omvang van add-on hardware voor de Arduino niet kloppen. Het kunnen combineren van beide maakte dit project snel mogelijk.
Stap 1: De sensor samenstellen
Tijd: 10 minuten
Onderdelen: Photon, 220 Ohm weerstand, LED, PIR-bewegingssensor, breadboard, male/male draadbruggen, USB micro B-kabel
Tools: N/A
Eerst de LED met de Photon verbinden. Monteer de Photon op het breadboard. Verbind de weerstand tussen een GND-pin van de Photon en een vrije rij op het breadboard. Verbind de lange poot van de LED met een digitale pin op de Photon (ik gebruikte pin D0) en de korte poot met de rij waar de weerstand aan zit. De LED is optioneel, maar ik gebruik hem om de status van de sensor aan te geven, omdat de PIR-sensor zelf geen indicatie geeft van wanneer beweging gedetecteerd wordt, noch de Photon wanneer het het event naar de cloud publiceert.
Vervolgens de PIR-sensor met de Photon verbinden. Monteer de PIR-sensor op het breadboard – ik gebruik rechtgehoekte female header pins om de PIR-sensor met het breadboard te verbinden, zodat ik de sensor verticaal kan 'bevestigen'. (Als je geen rechtgehoekte header pins hebt, gebruik dan dubbelzijdig tape of plakkerig gum om je PIR-sensor op tafel of waar je hem monteert te bevestigen en gebruik female/male draadbruggen rechtstreeks van de mannelijke pinnen van de PIR-sensor naar het breadboard.) Gebruik draadbruggen om de GND van de PIR met een GND-pin van de Photon te verbinden, de 5V-pin van de PIR met de Vin-pin van de Photon, en de signaalpin van de PIR met een digitale pin op de Photon (ik gebruikte pin D7).
Controleer de datasheet van je sensor om zeker te zijn dat je de 5V-, GND- en signaalpin correct identificeert, omdat hun volgorde per fabrikant verschilt. Hoewel mijn PIR-sensor op 5 volt werkt, werkt de signaalpin op slechts 3,3V, weshalb het direct aan een digitale pin van de Photon kan worden aangesloten. Controleer ook de datasheet om te verzekeren dat de signaalspanning 3,3V is.
Voed de opstelling via de USB Micro B-connector van de Photon aan een pc of stopcontact. Open de Particle IDE en plak de sensorcode (hieronder). Flash de code naar de Photon.
Nu, als je je hand voor de sensor beweegt, moet de LED oplichten. Je kunt ook je logs op het Particle Dashboard controleren om te zien of het event gepubliceerd is.
Stap 2: De trigger samenstellen
Tijd: 10 minuten
Onderdelen: Photon, 220 Ohm weerstand, LED, breadboard, male/female draadbruggen
Tools: N/A
Verbind de LED en weerstand met de photon net zoals in de vorige stap. De LED is weer optioneel, maar ik vind het handig om aan te geven wanneer een event van de Particle Cloud wordt ontvangen. Vervolgens verbind de mannelijke uiteinden van de draadbruggen met de Vin, GND en een digitale pin (ik gebruikte pin D7) van de Photon. De digitale pin van de Photon zal verbonden worden met een van de GPIO-pinnen van de Music Maker om de muziek te triggeren. De Vin- en GND-verbindingen van de Photon worden gebruikt om de Photon te voeden vanuit de Arduino.
Maar eerst, voordat we verbinden met de Arduino, voed de opstelling via de USB Micro B-connector van de Photon aan een pc of stopcontact. Open de Particle IDE en plak de triggercode (hieronder). Flash de code naar de Photon – zorg ervoor dat je het juiste apparaat selecteert nu je twee apparaten met de Particle IDE verbonden hebt.
Stap 3: De Arduino en Music Maker Shield samenstellen
Tijd: 20 minuten
Onderdelen: Arduino Uno, Adafruit Music Maker shield, Photon, 220 Ohm weerstand, LED, mini breadboard, draadbruggen, USB-kabel
Tools: solderbout
Header pins worden meegeleverd met de Music Maker shield, maar je moet ze solderen. Naast de header pins om de shield met de Arduino te verbinden, voegde ik mannelijke header pins bovenop de shield toe voor GPIO- en stroomverbindingen van de Photon. (Als ik female header pins had gehad, had ik die gebruikt zodat ik alleen male/male draadbruggen nodig had. Maar ik had alleen male header pins bij de hand (naast male/female draadbruggen) dus ging ik die manier.)
Verbind de draadbrug van de digitale pin van de Photon met een GPIO-pin op de shield (ik gebruikte pin 7 op de shield). Verbind de draadbrug van de Vin van de Photon met de 5V-pin op de shield en de GND-draadbrug met de GND-pin van de shield.
Ten slotte, verbind je luidspreker(s) met de terminalblokken op de shield – er is één terminalblok voor een rechter luidspreker en één voor een linker luidspreker. Ik heb slechts één luidspreker aangesloten – ik haalde een kleine luidspreker uit een van de kapotte speelgoedjes van mijn dochter voordat we het weggooiden.
Verbind de Arduino met je ontwikkelmachine, plak de Arduino-sketch (hieronder) in de Arduino IDE, en upload het.
Dat is het. Loop voor de sensor en wacht tot de muziek begint.
Over de code
Zoals ik eerder zei, was dit de eerste keer dat ik het publiceren/abonneren-patroon gebruikte. Het was heel eenvoudig met de Photon. In de sensorcode, wanneer de signaalpin van de PIR-sensor HOOG gaat, zet ik de LED aan en publiceer ik een event naar de Particle Cloud. Publiceren van een event vereist slechts één regel:
published = Particle.publish("motion-detected", NULL, 60, PRIVATE);
Oorspronkelijk maakte ik de publicatie niet privé – het maakte me niet uit omdat er geen persoonlijk identificeerbare informatie in zat. Maar toen ik ging abonneren op het event, kreeg ik veel valse alarmen – blijkbaar publiceren veel andere gebruikers "motion"-gerelateerde events. Dus ik veranderde de subscribe-aanroep om alleen te abonneren op events van mijn eigen apparaten door de parameter "MY_DEVICES" toe te voegen:
Particle.subscribe("motion", soundAlarm, MY_DEVICES);
En om de subscribe-functie te laten beperken tot alleen mijn apparaten, moest ik de publicatie privé maken.
De triggercode roept simpelweg de event-handler soundAlarm aan wanneer het motion-event optreedt. De handler doet niets anders dan de LED aanzetten en de GPIO-pin op de Music Maker shield HOOG zetten. De Arduino-sketch detecteert de GPIO-pin HOOG en wacht dan 60 seconden (om mijn auto te parkeren, mijn spullen te pakken en het huis binnen te gaan) voordat het het MP3-bestand op de SD-kaart afspeelt.
Het project implementeren
Ik plaatste de sensor in de garage op de planken recht naast waar ik mijn auto parkeer. Ik plaatste de trigger en de Arduino met Music Maker shield en luidspreker op het keukenblad, omdat mijn dochter meestal aan de keukentafel zit wanneer ik thuiskom. Beide locaties hebben stopcontacten in de buurt, wat het makkelijk maakte om beide delen van het project te voeden.
Code
Sensorcode
// definieer LED op pin D0
int led = D0;
// definieer PIR-sensor input op pin D6
int pir = D6;
// bijhouden of publicatie succesvol was
bool published;
void setup() {
pinMode(led, OUTPUT);
pinMode(pir, INPUT);
digitalWrite(led, LOW);
}
void loop() {
if (digitalRead(pir) == HIGH) {
digitalWrite(led, HIGH);
published = Particle.publish("motion-detected", NULL, 60, PRIVATE);
if (!published) {
for (int i = 0; i < 10; i++) {
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(500);
}
}
} else {
digitalWrite(led, LOW);
}
delay(2000);
}
Triggercode
// definieer LED op pin D0
int led = D0;
// definieer trigger voor Arduino op pin D7
int trigger = D7;
void soundAlarm(const char *event, const char *data) {
digitalWrite(led, HIGH);
digitalWrite(trigger, HIGH);
delay(2000);
digitalWrite(trigger, LOW);
digitalWrite(led, LOW);
}
void setup() {
Particle.subscribe("motion", soundAlarm, MY_DEVICES);
pinMode(led, OUTPUT);
pinMode(trigger, OUTPUT);
}
void loop() {
}
Arduino en Music Maker shield code
/************************************************************
Deze sketch speelt een MP3 van de SD-kaart af met de Adafruit
Music Maker shield wanneer getriggerd door een Photon die
verbonden is met een van de GPIO-pinnen van de shield.
Dank aan Adafruit voor de goed geschreven tutorial en bibliotheek.
https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/pinouts
*************************************************************/
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
#define SHIELD_RESET -1
#define SHIELD_CS 7
#define SHIELD_DCS 6
#define CARDCS 4
#define DREQ 3
Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
int photonPin = 7;
void setup() {
musicPlayer.begin();
SD.begin(CARDCS);
musicPlayer.setVolume(1,1);
musicPlayer.GPIO_pinMode(photonPin, INPUT);
}
void loop() {
if (musicPlayer.GPIO_digitalRead(photonPin) == HIGH) {
delay(60000);
musicPlayer.playFullFile("track001.mp3");
}
delay(500);
}
Schema's
sensor.fzz, trigger.fzz
Productieproces
- Annoy-O-Bug: Bouw een compacte LED-buzzer-grap met ATtiny85
- Essentiële Onderdelen van Dubbele-Kolom Bandsagemachines
- Beheersing van gefabriceerd onderdeelontwerp: Een uitgebreide gids
- Markttrends in Luchtvaart en Precisie Vliegtuigcomponenten
- Essentiële elementen van effectieve crisiscommunicatie
- Toekomst van de productie: Trends, Talent en Innovatie
- De technicus van morgen: vaardigheden, tools en rollen in een digitale fabriek
- Belangrijkste Onderdelen van een CNC-Machine Uitgelegd
- Essentiële componenten van een betrouwbaar gecomprimeerde lucht systeem
- Hoe Kraanmodernisering Kerncomponenten Transformeert Voor Piekaanprestaties
- Nanotechnologie: De Volgende Grens in IoT-beveiliging