Arduino in een escaperoom
14 berichten
• Pagina 1 van 2 • 1, 2
Arduino in een escaperoom
Beste forumleden,
Voor een escaperoom heb ik een sleutelkastje omgebouwd tot een soort alarmcentrale. het werkt als volgt:
-Wanneer het sleutelkastje geopend word wordt er een verborgen schakelaar geactiveerd, hoofdverlichting van de kamer wordt uitgeschakeld en zwaailamp aan.
-Wanneer vervolgens de sleutelschakelaar in het kastje gebruikt wordt om het alarm te 'deactiveren' word de hoofdverlichting weer ingeschakeld en de zwaailamp uit.
Ik gebruik hiervoor een arduino uno in combinatie met een 433mhz zender en een aantal goedkope klikaan/klikuit achtige ontvangers (karwei eigen merk geloof ik)
Nu heb ik een stukje code geschreven met behulp van een library voor dit type klikaan/klikuit. Alles werkt. helaas blijft de schakeling continu zenden waardoor de batterij vrij snel leeg gaat.
Hoe kan ik dit verhelpen?
Voor een escaperoom heb ik een sleutelkastje omgebouwd tot een soort alarmcentrale. het werkt als volgt:
-Wanneer het sleutelkastje geopend word wordt er een verborgen schakelaar geactiveerd, hoofdverlichting van de kamer wordt uitgeschakeld en zwaailamp aan.
-Wanneer vervolgens de sleutelschakelaar in het kastje gebruikt wordt om het alarm te 'deactiveren' word de hoofdverlichting weer ingeschakeld en de zwaailamp uit.
Ik gebruik hiervoor een arduino uno in combinatie met een 433mhz zender en een aantal goedkope klikaan/klikuit achtige ontvangers (karwei eigen merk geloof ik)
Nu heb ik een stukje code geschreven met behulp van een library voor dit type klikaan/klikuit. Alles werkt. helaas blijft de schakeling continu zenden waardoor de batterij vrij snel leeg gaat.
Hoe kan ik dit verhelpen?
- Code: Alles selecteren
/*
433mhz wireless wall outlet switch remote with arduino.
This code uses the arduino in combination with aa 433mhz transmitter tot send on/off codesignals to wireless walloutlets to switch them on or off.
Inputs are two switches named; button and key.
When botton is switched on a signal code is send and reciever 1 is switched off an reciever 2 switched on.
When key is switched (even when button is still on) reciever 1 is switched on and reciever 2 is switched off.
Used code :
pinmode (input_PullUp) http://www.arduino.cc/en/Tutorial/InputPullupSerial
rcswitch library https://code.google.com/p/rc-switch/
The circuit:
* On/off switch to 8
* On/off keyswitch to 9
* 433mhz tranciever to pin 10
Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
20K-ohm resistor is pulled to 5V. This configuration causes the input to
read HIGH when the switch is open, and LOW when it is closed.
created 22-04-2015
by Rob van Suilen
*/
// variables will change:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int buttonState = 0; // variable for reading the pushbutton status
int keyState = 0; // variable for reading the pushbutton status
void setup() {
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
//configure pin2 as an input and enable the internal pull-up resistor
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
}
void loop() {
//read the pushbutton value into a variable
buttonState = digitalRead(8);
keyState = digitalRead(9);
// Keep in mind the pullup means the pushbutton's
// logic is inverted. It goes HIGH when it's open,
// and LOW when it's pressed. Turn on pin 13 when the
// button's pressed, and off when it's not:
if (keyState== HIGH) {
mySwitch.switchOn(4, 3);
delay(200);
mySwitch.switchOff(4, 4);
}
if (keyState== LOW && buttonState== LOW) {
mySwitch.switchOff(4, 3);
delay(500);
mySwitch.switchOn(4, 4);
}
}
Advertisement
Re: Arduino in een escaperoom
Hallo Flipje81,
Ik schakel mijn licht ook met de KAKU modules. Per groep heb ik een extra variabele gedefinieerd waarin ik vastleg of de groep aan of uit staat. De variabele kun je aanpassen op het moment dat je schakelt.
Als je in je loop het aansturen van de zender afhankelijk maakt van die variabele voorkomen je dat de zender onnodig wordt ingeschakeld, dat bespaart dan weer stroom.
Ik schakel mijn licht ook met de KAKU modules. Per groep heb ik een extra variabele gedefinieerd waarin ik vastleg of de groep aan of uit staat. De variabele kun je aanpassen op het moment dat je schakelt.
Als je in je loop het aansturen van de zender afhankelijk maakt van die variabele voorkomen je dat de zender onnodig wordt ingeschakeld, dat bespaart dan weer stroom.
Re: Arduino in een escaperoom
Interessante oplossing beamer, heb je daar wat code voorbeeld van?
Zelf dacht ik in de richting van edge detection. Zoals ik het begrijp kijkt hiermee de Arduino niet als eerste naar de status van de schakelaars maar eerst of er verandering in de status is. Daarna wordt gekeken wat de aard van de verandering is (dus van aan naar uit of van uit naar aan). Aan de hand daarvan word dan een stuk code uitgevoerd; in mijn geval dus het verzenden van Kaku code met behulp van RC Switch. In mijn ogen zou dat dan eenmalig uitgevoerd worden.
klopt deze redenering?
Zelf dacht ik in de richting van edge detection. Zoals ik het begrijp kijkt hiermee de Arduino niet als eerste naar de status van de schakelaars maar eerst of er verandering in de status is. Daarna wordt gekeken wat de aard van de verandering is (dus van aan naar uit of van uit naar aan). Aan de hand daarvan word dan een stuk code uitgevoerd; in mijn geval dus het verzenden van Kaku code met behulp van RC Switch. In mijn ogen zou dat dan eenmalig uitgevoerd worden.
klopt deze redenering?
Re: Arduino in een escaperoom
ja hoor edgedetection en debounce want anders gaat het flikkeren.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Arduino in een escaperoom
Ik heb wat lopen zoeken, maar vind het lastig om een voorbeeld te vinden waarin edge detection en debounce gecombineerd worden. Iemand een tip?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino in een escaperoom
Ik heb zelf ooit een project gedaan gebruikmakend van een accellerometer om kantelen te ontdekken. Nu is dat in feite hier niet relevan maar de aanpak zou vergelijkend kunnen zijn.
Het proces:
a) Het geheel draait op 3 x AAA batterijen in serie (=iets van 4-4.5V
b) Alles in in slaapmodus. Stroomverbruik iets van 70uA.
c) Als de accellerometer een beweging ontdekt, dan wordt er een interrupt gegenereerd.
d) Die interrupt schopt de processor wakker die vervolgens de accellerometer uitleest.
e) Als er iets gezonden moet worden, dan schakelt die een klein schakelend voedingkje aan die van de batterijspanning (en die mag zakken tot 2V) 5V maakt.
f) die 5V is de voeding voor de RC zender
g) signaal wordt uitgezonden (duurt bij elkaar minder dan 1 seconde)
h) de schakelende voeding wordt uitgeschakeld en trekt nog iets van 5uA
i) De processor en accellerometer worden weer in slaap gezet.
Deze schakeling heeft een berekende levensduur van 2 a 3x schakelen per dag van iets van 2 jaar. Inmiddels ben ik een jaar verder en hij doet het nog steeds.
Het proces:
a) Het geheel draait op 3 x AAA batterijen in serie (=iets van 4-4.5V
b) Alles in in slaapmodus. Stroomverbruik iets van 70uA.
c) Als de accellerometer een beweging ontdekt, dan wordt er een interrupt gegenereerd.
d) Die interrupt schopt de processor wakker die vervolgens de accellerometer uitleest.
e) Als er iets gezonden moet worden, dan schakelt die een klein schakelend voedingkje aan die van de batterijspanning (en die mag zakken tot 2V) 5V maakt.
f) die 5V is de voeding voor de RC zender
g) signaal wordt uitgezonden (duurt bij elkaar minder dan 1 seconde)
h) de schakelende voeding wordt uitgeschakeld en trekt nog iets van 5uA
i) De processor en accellerometer worden weer in slaap gezet.
Deze schakeling heeft een berekende levensduur van 2 a 3x schakelen per dag van iets van 2 jaar. Inmiddels ben ik een jaar verder en hij doet het nog steeds.
Re: Arduino in een escaperoom
hoi nico,
kKinkt interessant. Het hele arduino bord in sleep modus brengen had ik nog niet aan gedacht, ik weet ook niet of dat persé nodig is. Op dit moment moet ik iedere dag een 9 volt blok verwisselen, dat is me wat te gortig, maar eens per week is goed te doen, minder is altijd mooier natuurlijk.
Maar, zou je wat kennis/code willen delen?
kKinkt interessant. Het hele arduino bord in sleep modus brengen had ik nog niet aan gedacht, ik weet ook niet of dat persé nodig is. Op dit moment moet ik iedere dag een 9 volt blok verwisselen, dat is me wat te gortig, maar eens per week is goed te doen, minder is altijd mooier natuurlijk.
Maar, zou je wat kennis/code willen delen?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino in een escaperoom
Wat wil je allemaal weten. Dit was een commercieel project dus ik kan niet alles publiceren....
Re: Arduino in een escaperoom
Ben zelf even aan stoeien geweest met state change. Met als basis voorbeeld uit de library van arduino.
Onderstaande code werkt prima. Als ik echter de tweede button erbij schrijf werkt deze niet. Dus hoe kan ik onder staande voor een tweede knop geschikt maken?
Onderstaande code werkt prima. Als ik echter de tweede button erbij schrijf werkt deze niet. Dus hoe kan ik onder staande voor een tweede knop geschikt maken?
- Code: Alles selecteren
/*
State change detection (edge detection)
This example shows how to send a code from RCSwitch library when a switch changes from off to on.
The circuit:
* keyswitch attached to pin 9 to ground
* LED attached from pin 13 to ground (or use the built-in LED on
most Arduino boards), Hierop komt 433mhz zender.
*/
// this constant won't change:
const int keyPin = 9; // the pin that the keyswitch is attached to
const int ledPin = 13; // the pin that the LED is attached to
// Variables will change:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int keyState = 0; // current state of the key
int lastKeyState = 0; // previous state of the key
void setup() {
// Transmitter is connected to Arduino Pin #13
mySwitch.enableTransmit(13);
// Optional set pulse length.
// mySwitch.setPulseLength(320);
// initialize the button pin as a input:
pinMode(keyPin, INPUT_PULLUP);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the keyswitch input pin:
keyState = digitalRead(keyPin);
// compare the keyState to its previous state
if (keyState != lastKeyState) {
// if the state has changed, increment the counter
if (keyState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
mySwitch.switchOff(4, 4);//zwaailamp uit
delay(500);
mySwitch.switchOn(4, 3);//hoofdverlichting aan
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state,
//for next time through the loop
lastKeyState = keyState;
}
Re: Arduino in een escaperoom
overal waar je iets doet met die key dus een verwijzing zet daar dan een 1 bij, dus key1state key1pin key1laststate.
als je dan nog een toets hebt dan maak key2state etc.
dan zal het wel lukken.
als je dan nog een toets hebt dan maak key2state etc.
dan zal het wel lukken.
paul deelen
shooter@home.nl
shooter@home.nl
14 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten