Hulp bij programmeren van Besturing van electra in huis

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 5
Geregistreerd: 21 Mrt 2014, 14:18

Hulp bij programmeren van Besturing van electra in huis

Berichtdoor JeroenSAR » 01 Apr 2014, 09:08

Beste forumleden.

Ik ben begonnen met een projectje een tijdje geleden. Nu wil ik hem uit gaan bereiden. en heb daarvoor de nodige spulletjes gekocht en gevonden.
Wil het een beetje rustig aan doen maar loop nu al vast.

Spulletjes die ik heb zijn.

Arduino Mega (in de toekomst 2 een voor mijn TFT scherm)
Arduino Uno
Arduino Wifi shield

8 Kanaals relaisblok

Arduino Mega Shield v2.0 per LCD TFT01 (Arduino, Raspberry, DIY, Robot) //Shield voor TFT Scherm
7" 7 Inch TFT LCD Display Module Font IC 800x480 //TFT Schermpje

WT5001M02-28P //Sound Module
PAM8403 5V Digital Amplifier Board USB Power Supply //Amplifier

Wat is mijn project.

Ik zit bij de brandweer en wil graag dat mijn lichten automatisch aangaan. dat is allemaal gelukt. Alleen zou nu ook mijn lichten aan en uit willen doen via de ipad, Iphone of Android telefoon dit via de wifi module ook wil ik daar in de toekomst temperatuur etc op kunnen zien. nou dacht ik ik ga niet meteen beginnen met die stap naar een webserver maar eerst eens beginnen met drukknopjes. dat heb ik geprobeerd maar dat lukt me dus niet helaas. omdat hij dan niet meer afgaat als er alarm is.

dit is mijn code waar ik tot nu toe ben.

Code: Alles selecteren
//librarys
#include <relay8.h>

//Pager Circuit
const int ledOn = 13;                                                                                             //Green led for visible on
const int LED_C = 12;                                                                                             //Relay_8 for switching the light on and after delay off

const int Button_1 = 37;                                                                                          //Button <  Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Button_2 = 38;                                                                                          //Button >  Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Button_3 = 39;                                                                                          //Button || Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Button_4 = 40;                                                                                          //Button (') Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb

const int Opto_Pager = 51;                                                                                       //Pager with Optocoupler
const int Opto_1 = 41;                                                                                            //Optocoupler <  Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Opto_2 = 42;                                                                                            //Optocoupler >  Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Opto_3 = 43;                                                                                            //Optocoupler || Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
const int Opto_4 = 44;                                                                                            //Optocoupler (') Dit zijn knoppen die op mijn pieper zitten die ik verbouwd heb
relay8  relay(22, 23, 24, 25, 26, 27, 28, 29);
                             
void setup() {
  Serial1.begin(9600); 
  pinMode(ledOn, OUTPUT);
  pinMode(Opto_1, OUTPUT);
  pinMode(Opto_2, OUTPUT);
  pinMode(Opto_3, OUTPUT);
  pinMode(Opto_4, OUTPUT);
  pinMode(LED_C, OUTPUT);

  pinMode(Opto_Pager, INPUT);
  pinMode(Button_1, INPUT);
  pinMode(Button_2, INPUT);
  pinMode(Button_3, INPUT);
  pinMode(Button_4, INPUT);
 
                                           
  Serial1.write(0x7E);
  Serial1.write(0x03);
  Serial1.write(0xA7);
  Serial1.write(0x1F); //  volume max
  Serial1.write(0x7E);

  //start sound
  Serial1.write(0x7E);
  Serial1.write(0x04);
  Serial1.write(0xA0); // A0 for SD card
  Serial1.write((byte)0x00);
  Serial1.write(0x02); // track number
  Serial1.write(0x7E);
  delay(3000);
  digitalWrite(ledOn, HIGH);
  relay.on(1);
  relay.on(2);
  WaitForCall();
}

void loop() {
 
}

void WaitForCall()
{
  while (true){
    int val = digitalRead(Opto_Pager);
    if (val == HIGH)
     {           
      digitalWrite(LED_C, HIGH);


      Serial1.write(0x7E);
      Serial1.write(0x03);
      Serial1.write(0xA7);
      Serial1.write(0x1F);                                                                                       //Volume Max.
      Serial1.write(0x7E);
      delay(10);
      Serial1.write(0x7E);
      Serial1.write(0x04);
      Serial1.write(0xA0);                                                                                       //A0 for SD card
      Serial1.write((byte)0x00);
      Serial1.write(0x01);                                                                                       //Track number
      Serial1.write(0x7E);
      delay(300);
      digitalWrite(Opto_4, HIGH);                                                                           //Button on Pager "High"
      delay(5);                                                                                                   //Short Delay
      digitalWrite(Opto_4, LOW);                                                                           //Button on Pager "Low"                                                                                                     
      RelaysOn();                                                                                               //Relays On When Pager is on.
     
    }
  }
}

void CallDone()
{
 
  digitalWrite(LED_C, LOW);
  while(true)
  {
    int val = digitalRead(Opto_Pager);
    if (val == LOW) {   
      WaitForCall();
    }
  }
}
void RelaysOn()
{
  // Switch the first relay on and off a couple of times
  for (int t=0; t<3; t++)
  {

    relay.off(1);                                                                     \\Raar maar waar Off is aan
    relay.off(2);                                                                     \\Raar maar waar Off is aan
    delay(10000);
    relay.on(1);                                                                      \\Raar maar waar On is uit
    relay.on(2);                                                                      \\Raar maar waar On is uit
    delay(5);
    CallDone();
  }
}


Misschien heeft iemand een ideetje hoe ik dat op kan lossen wil het hele project stapje voor stapje doen want daar leer ik weer van.

Grt,

Jeroen

Advertisement

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

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor shooter » 01 Apr 2014, 09:33

de loop is leeg, en dus gebeurt er helemaal niks.
dat moet je of oplossen met een interuptcall of in de loop schrijven if optopager then call relayson
de opzet lijkt prima.
relayson is ook goed, het is simpeler om een stroom naar aarde te schakelen want da kun je hogere voltages van buiten simpeler bedienen met slechts een transistor. (zou ik toch doen hoor, op de relaisuitgangen allemaal transistoren zetten dan hoeft de stroom niet door je mega maar wordt dan door de trasistoren gedaan.
je kunt in realyson ook een waarde meegeven dan schakel je 1 relais.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 21 Mrt 2014, 14:18

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor JeroenSAR » 01 Apr 2014, 12:12

Beste Shooter bedankt voor je reactie,

De loop is inderdaad leeg heb namelijk in mijn setup verwezen naar Void Waitforcall daardoor komt hij hoeft er niets in de loop. tot zover werkt het ook helemaal.
het enige probleem wat ik wil mijn lichten gewoon aan en uit kunnen schakelen straks via ipad etc (dit op de lange termijn). maar wilde dit wel eerst even testen door een simpele schakeling te maken.

dus als ik button druk dat lamp aan gaat button opnieuw drukken lamp uit. maar dat waarneer lamp aanstaat er nog wel gekeken word naar Void Waitforcall.

de relais zijn allemaal via tyristor gestuurd. zelfs vanaf mijn pieper is het galvanisch gescheiden door optocouplers.

Groetjes Jeroen

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

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor nicoverduin » 01 Apr 2014, 18:21

Ik zou zelf een onderscheid maken tussen de activiteiten in de setup en in de loop. Nu zit je inderdaad volledig in de setup in een eindeloze loop in feite.

Zelf zou ik wel de splitsing maken in die zaken die in de setup thuis horen en zij die in de loop.

In de loop zou je dan onderscheid moeten maken tussen het lezen van inputs en het verwerken daarvan. Op die wijze kan je settings via de pager laten maar ook via een IPAD oid kunnen verwerken.
Dus in de volgorde:
lees inputs en bepaal de settings
Verwerk de settings.

Door deze abstractie kan je gemakkelijker uitbreiden en foutopsporing doen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor nicoverduin » 01 Apr 2014, 23:11

Je geeft overigens aan dat je Relais on uit gaan en omgekeerd. Maar dat kan je configuren in relay.h.

zie: http://www.henningkarlsen.com/electroni ... .php?id=57
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 5
Geregistreerd: 21 Mrt 2014, 14:18

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor JeroenSAR » 03 Apr 2014, 09:30

Bedankt voor jullie reacties. ik ga vanavond eens kijken hoe ik dat op kan lossen.
ik zit er ook aan te denken om een last state in te zetten. zodat hij onthoud wanneer mijn licht aan staat dat ie ze niet uit doet.

Nico zijn er voorbeelden van het het scheiden van je inputs en je outputs?

mvg Jeroen

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

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor nicoverduin » 03 Apr 2014, 17:42

De meeste relais op ebay zijn toch al optisch gescheiden? of bedoel je dat niet?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 5
Geregistreerd: 21 Mrt 2014, 14:18

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor JeroenSAR » 04 Apr 2014, 08:23

Beste Nico,

hier bedoelde in meer mee het scheiden van de inputs en de outputs

In de loop zou je dan onderscheid moeten maken tussen het lezen van inputs en het verwerken daarvan. Op die wijze kan je settings via de pager laten maar ook via een IPAD oid kunnen verwerken.
Dus in de volgorde:
lees inputs en bepaal de settings
Verwerk de settings.


groet Jeroen

P.S. wel leuk dat we nu op 2 forums tegen elkaar praten

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

Re: Hulp bij programmeren van Besturing van electra in huis

Berichtdoor nicoverduin » 04 Apr 2014, 11:21

Jeroen,

Je moet het zo zien:

Je loop zou kunnen bestaan uit:
a) leesPager()
b) leesHTTP()
c) verwerkInputs()


Dat betekent dat je de settings van de pager en Ipad bewaart in bijvoorbeeld een array met het relais nummer als index.

In verwerkInputs kun je dan kijken of je een relais aan/uit moet zetten door de inputs te testen. als je tevens een output array maakt met de relais en pas van daaruit de relais stuurt, heb je altijd de laatste stand van de inputs en de outputs ter beschikking en kun je done wat je wilt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 29 gasten