INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 3 Bewertungen - 4.33 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Blind wie immer???? :P
08.11.2015, 19:23
Beitrag #1
Question Blind wie immer???? :P
Hi Forum Smile


ich habe zz ein projekt, in welchem ich eine laserschranke und einen photoresistor benutze, um das eintreten in einen raum zu erfassen, weiter folgen wird ein PIR, aber erstmal den basiscode überprüfen Tongue

wie im code zu sehen, sende ich per laser licht auf die zelle und bestimme dann eine grenze ab welcher mein alarm ausgelöst werden soll

stelle wifi her und sende per tcp an server "alarm", dann blinke "SOS" als morsezeichen (rein just for fun Tongue) und dann guck ma weiter script... wer weiss was mir noch einfällt später Big Grin


Code:
#include <SoftwareSerial.h>

int photocell = 5;            // the cell and 10K pulldown are connected to a5

int led = 2;                  // alarm led

int laser = 3;                // laser

int photocellReading;

#define SSID "MEINE WLANBOX"

#define PASS "MEIN PWD"

#define IP "MEINE ZIEL-IP"

String GET = "alarm";

SoftwareSerial esp(2,3);


void setup(void)
{
  
  Serial.begin(9600);
  
  esp.begin(9600);

  pinMode(led, OUTPUT);

  pinMode(laser, OUTPUT);
  
  digitalWrite(led, LOW);

  digitalWrite(laser, HIGH);
  
}


void loop(void)
{
  
  photocellReading = analogRead(photocell);  

  Serial.print("Laser - Messwert = ");
  
  Serial.println(photocellReading);
  
    if (photocellReading < 600)
      {
        
        connectWiFi();
        
        if ( connectWiFi() == true )
          {
                
            alert();
        
            delay(500);
          
          }
          
        else
          {
            
            Serial.println("Fehler bei WiFi - Verbindung!!!");
            
          }
        
      signal(250);
        
      signal(500);
        
      signal(250);
                      
      }

  delay(10);
  
}


boolean connectWiFi()
{
  
  Serial.println("AT+CWMODE=1");
  
  delay(2000);
  
  String cmd="AT+CWJAP=\"";
  
  cmd+=SSID;
  
  cmd+="\",\"";
  
  cmd+=PASS;
  
  cmd+="\"";
  
  Serial.println(cmd);
  
  delay(2000);
  
  if(Serial.find("OK"))  
  {
    
    return true;
    
  }
  
  else  
  {
    
    return false;
    
  }
  
}


void alert()
{
  
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  
  cmd += IP;
  
  cmd += "\",8888";  // port
  
  Serial.println(cmd);
  
  delay(2000);
  
  if(Serial.find("Error"))
    {
      
      return;
      
    }
  
  cmd = GET;
  
  cmd += "\r\n";
  
  Serial.print("AT+CIPSEND=");
  
  Serial.println(cmd.length());
  
  if(Serial.find(">"))
    {
      
      Serial.print(cmd);
      
    }
    
  else  
    {
      
      Serial.println("AT+CIPCLOSE");
      
    }
    
  return;
    
}


void signal(int time)
{

  for ( int i = 0; i < 3; i++ )
           {
            
            digitalWrite(led, HIGH);
            
            delay(time);
            
            digitalWrite(led, LOW);
            
            delay(250);
          
            }

}


jetzt hab ich mir mühe gemacht und dachte das soll doch klappen, aber.... tuts nich....

jemand vlt ne idee was das problem sein könnte, compilerüberprüfung fehlerfrei, aber wer mich wieder erkennt, weiss, oftmals liege meine probleme im verständnis der sache, als an der falschen semantik...


soweit n schönen sonntag noch Smile


gruss hilgi

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2015, 20:01
Beitrag #2
Rainbow RE: Blind wie immer???? :P
OT
welcher Witzbold hat denn diesem Topic ein 5 Sterne-Rating verpasst ???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2015, 20:57
Beitrag #3
RE: Blind wie immer???? :P
Sehr hilfreich..... Nächster

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2015, 21:47 (Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2015 22:09 von Klaus(i).)
Beitrag #4
RE: Blind wie immer???? :P
Weil es in dem Code nur so von erklärenden Kommentaren wimmelt und ich selber noch keinen Wireless-Adapter anprogrammiert habe, kann ich nur Vermutungen anstellen.

Ich nehme mal an, dass Wifi über SoftwareSerial angesprochen wird.
PHP-Code:
SoftwareSerial esp(2,3); 

Eine Instanz (esp) gibt es ja, nur warum nutzt Du sie nicht?

Gruß, Klaus

EDIT:
Dies ist doppelt gemoppelt!
PHP-Code:
connectWiFi();
if ( 
connectWiFi() == true 

ob das so gut ist?
PHP-Code:
if(Serial.find("OK")) 
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.11.2015, 03:28
Beitrag #5
RE: Blind wie immer???? :P
Ja stimmt mit dem Serial, habs übersehen... danke Tongue


hier mein korrigierter code, teste den mal morgen, diesmal ein paar bezeichnungen
Big Grin


Code:
#include <SoftwareSerial.h>

int photocell = 5;    //Die Zelle liegt an Analog 5, mit einem 10kOhm pullup

int led = 6;    //Alarm Led

int laser = 5;    //Laser

int pieper = 4;    //Piezzo Alarm

int photocellReading;    //Variable für photocell

#define SSID "WLAN NAME"

#define PASS "WLAN PASSWORT"

#define IP "PHP ZIEL-IP"    //Ziel IP für die Alarmierung

String nachricht = "alarm";    //Alarm Nachricht

SoftwareSerial esp( 2 , 3 );    //Serielle Schnittstelle für den esp erzeugen


void setup(void)
{
  
  Serial.begin(9600);
  
  esp.begin(9600);

  pinMode(led, OUTPUT);

  pinMode(laser, OUTPUT);

  pinMode(pieper, OUTPUT);
  
  digitalWrite(led, LOW);
  
  digitalWrite(laser, HIGH);

  digitalWrite(pieper, LOW);
  
}


void loop()
{
  
  photocellReading = analogRead(photocell);    //Lese Photozellenwert

  Serial.print("Laser - Messwert = ");
  
  Serial.println(photocellReading);
  
    if (photocellReading < 600)    //Mein Durchschnittswert mit dem Laser lag bei ca. 900, ohne Laser unter 100
      {
        
        connectWiFi();    //Stelle WiFi Verbindung her, siehe unten
        
        if ( connectWiFi() == true )
          {
                
            alert();    //Setze Alarm-Nachricht ab, siehe unten
        
            delay(50);
          
          }
          
        else
          {
            
            Serial.println("Fehler bei WiFi - Verbindung!!!");
            
          }
        
      signal(led, 250);    //Setze Signal ab - LED
        
      signal(led, 500);    //Bei dieser Anordnung
        
      signal(led, 250);    //Ergibt es "SOS"
      
      Serial.println("!SOS!");
      
      signal(pieper, 250);    //Setze Signal ab - Piezzo
                      
      }

  delay(50);
  
}


boolean connectWiFi()    //WiFi Verbindungsprogramm, Quelle: http://fkainka.de/kurzinfos-zum-wlan-modul-esp8266-wi07c/
{
  
  esp.println("AT+CWMODE=1");    //Wlan Modus: Client - Befehl
  
  delay(2000);
  
  String cmd = "AT+CWJAP=\"";    //WLan Verbinden - Befehl
  
  cmd += SSID;
  
  cmd += "\",\"";
  
  cmd += PASS;
  
  cmd += "\"";
  
  esp.println(cmd);    //Wlan SSID und Passwort an esp senden
  
  delay(3000);
  
  if(esp.find("OK"))    //Esp meldet immer OK bei Erfolg!
  {
    
    Serial.println("WiFi verbunden");
    
    return true;
    
  }
  
  else  
  {
    
    Serial.println("WiFi nicht verbunden!");

    return false;
    
  }
  
}


void alert()    //Alarmierung an IP Adresse (php)
{
  
  String cmd = "AT+CIPSTART=\"TCP\",\"";    //Verbindungsaufbau zur IP via TCP
  
  cmd += IP;
  
  cmd += "\",80";  //Port
  
  esp.println(cmd);
  
  delay(2000);
  
  if(esp.find("Error"))
    {
      
      Serial.println("Fehler bei WiFi - Alarmierung!!! - Verbindungsaufbau");
      
      return;
      
    }
  
  cmd = nachricht;
  
  cmd += "\r\n";
  
  esp.print("AT+CIPSEND=");   //An IP senden
  
  esp.println(cmd.length());
  
  if(esp.find(">"))
    {
      
      Serial.println("WiFi - Alarmierung!!!");
      
      esp.print(cmd);    //nachricht senden
      
    }
    
  else  
    {
      
      Serial.println("Fehler bei WiFi - Alarmierung!!! - Senden");
      
      esp.println("AT+CIPCLOSE");    //An IP senden beenden
      
    }
    
  esp.println("AT+CWQAP");    //WiFi trennen  
  
  Serial.println("WiFi getrennt");
    
  return;
    
}


void signal(int ausgabe, int zeit)    //Morse Programm :P
{

  for ( int i = 0; i < 3; i++ )
           {
            
            digitalWrite(ausgabe, HIGH);
            
            delay(zeit);
            
            digitalWrite(ausgabe, LOW);
            
            delay(250);
          
            }

}


gruss hilgi Wink

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 744 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Wieso immer int ? Mathias 7 346 12.06.2016 17:23
Letzter Beitrag: Mathias
  Display Blinkt immer arduino_weatherstation 29 1.629 12.03.2016 13:10
Letzter Beitrag: hotsystems
  Hexzahl immer mit 2 Zeichen ausgeben. arduinofan 11 793 12.01.2016 09:00
Letzter Beitrag: arduinofan
  bei Tastendruck Variable immer +1 matze.lingen 8 3.436 04.05.2015 13:45
Letzter Beitrag: SkobyMobil
Bug Due: seltsamer Compiler-error mit lib - sonst gings immer HaWe 1 728 27.04.2015 16:59
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste