Arduino in een escaperoom

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 8
Geregistreerd: 27 Sep 2013, 23:50

Arduino in een escaperoom

Berichtdoor flipje81 » 22 Apr 2015, 01:02

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?
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

Berichten: 77
Geregistreerd: 06 Okt 2012, 10:57

Re: Arduino in een escaperoom

Berichtdoor Beamer » 22 Apr 2015, 10:34

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.

Berichten: 8
Geregistreerd: 27 Sep 2013, 23:50

Re: Arduino in een escaperoom

Berichtdoor flipje81 » 22 Apr 2015, 14:36

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?

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino in een escaperoom

Berichtdoor shooter » 22 Apr 2015, 19:12

ja hoor edgedetection en debounce want anders gaat het flikkeren.
paul deelen
shooter@home.nl

Berichten: 8
Geregistreerd: 27 Sep 2013, 23:50

Re: Arduino in een escaperoom

Berichtdoor flipje81 » 23 Apr 2015, 14:19

Ik heb wat lopen zoeken, maar vind het lastig om een voorbeeld te vinden waarin edge detection en debounce gecombineerd worden. Iemand een tip?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino in een escaperoom

Berichtdoor nicoverduin » 23 Apr 2015, 14:31

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.

Afbeelding
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 27 Sep 2013, 23:50

Re: Arduino in een escaperoom

Berichtdoor flipje81 » 23 Apr 2015, 20:12

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?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Arduino in een escaperoom

Berichtdoor nicoverduin » 23 Apr 2015, 21:49

Wat wil je allemaal weten. Dit was een commercieel project dus ik kan niet alles publiceren....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 27 Sep 2013, 23:50

Re: Arduino in een escaperoom

Berichtdoor flipje81 » 30 Apr 2015, 13:16

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?

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;
   


  }










Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino in een escaperoom

Berichtdoor shooter » 30 Apr 2015, 20:55

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.
paul deelen
shooter@home.nl

Volgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 40 gasten