ESP8266 Projekte

Ein Dash Button mit dem ESP8266

Home Button mit dem ESP8266

Offline-Arduino-Projekte sind schön und gut. Aber irgendwann ist es Zeit fürs Internet! In diesem Projekt verbindest du einen ESP8266 auf Knopfdruck mit deinem WLAN-Netzwerk und lässt ihn eine E-Mail versenden.

Wozu das gut ist? Stell dir vor, ein Kind kommt alleine nach Hause und möchte die Eltern informieren, dass es angekommen ist. Oder es ereignet sich Notfall. Oder man benutzt dieses Projekt einfach als “Dash Button”, um einem Mitbewohner zu sagen, dass er Milch mitbringen soll.

Für dieses Projekt benötigst du:

*Amazon Affiliate Link – wenn du dort bestellst, erhalten wir eine kleine Provsion.

Mit dem ESP8266 ins Internet?

Das ist ein sehr günstiger Microcontroller, den du verwenden kannst, um zum Beispiel Messdaten per WLAN zu versenden. Auch andersherum kannst du über das Internet auf dein Projekt zugreifen. Das tolle daran ist, dass du ihn genauso wie deinen Arduino über die IDE programmieren kannst. Kurzum, du stößt mit dem ESP8266 spielend leicht die Tür zum Internet of Things auf!

Wenn du diesen Controller bisher noch nicht verwendet hast, folge zunächst diesem Tutorial auf heise.de – hier erfährst du, wie du deine Arduino IDE vorbereitest.

In diesem Projekt gibt ein Knopfdruck dem Microcontroller den Befehl, sich in dein WLAN einzuwählen und einen externen Dienst (Pushingbox) zu triggern. Dieser versendet dann eine E-Mail an den gewünschten Empfänger. Sobald dein Befehl an den externen Dienst erfolgreich weitergegeben wurde, leuchtet eine LED auf.

Der Aufbau

Du musst für dieses Projekt nicht viel auf deinem Breadboard aufbauen: ein Button samt Pull-Down-Widerstand und eine LED reichen schon.

Aufbau des Home Buttons mit einem ESP8266

Verbinde einen Pol deines Buttons mit einem 3,3V-Ausgang deines ESP8266. Den anderen Pol verbindest du mit dem Eingang D7. Diesen Pol musst du nun auch noch mit der Erde (GND) verbinden, aber: Dazwischen setzt du noch einen 10k Ohm Widerstand. Das ist ein sogenannter Pull-Down-Widerstand, der das Signal des Buttons auf LOW (0) setzt. Erst wenn du ihn drückst, empfängt dein ESP8266 das Signal HIGH (1).

In diesem Video erfährst du mehr über den Pull-Down-Widerstand:

Die LED schließt du wie gewöhnlich inklusive eines 220 Ohm Widerstands an den Eingang D8 des ESP8266 an.

Bei Pushingbox anmelden

Pushingbox ist ein (für unsere Zwecke) kostenloser Service, mit dem von deinem Projekt aus E-Mails verschicken kannst. Aber nicht nur das, du kannst damit auch tweeten oder Push Notifications versenden.

Alles was du zunächst brauchst, ist ein Konto bei Google bzw. eine Gmail-Adresse. Mit der meldest du dich bei pushingbox.com an.

Nach deinem Login klickst du im Menü auf “My Services” und folgender Screen erscheint:

Pushingbox My Services

In diesem Projekt versendest du eine E-Mail. Klicke also neben “Email” auf den Button “Select this service”.

In die folgenden Eingabefelder trägst du den Namen des Empfängers und seine E-Mail-Adresse ein.

Wähle als nächstes im Menü “My Scenarios” und folgender Screen erscheint:

Pushingbox My Scenarios

In das Eingabefeld trägst du jetzt einen Namen für dein Projekt ein – z.B. “HomeButton”. Von Pushingbox wurde jetzt automatisch eine DeviceID erstellt, die du im folgenden Screen siehst. Nun klicke auf den Button “Add Action” und wähle aus der Liste den E-Mail-Eintrag, den du zuvor erstellt hast.

In die nun folgenden Eingabefelder trägst du unter “Subject” einen Betreff für die E-Mail ein und unter “Body” den Text, den du versenden willst.

Das war’s vorerst. Lass das Browser-Tab offen, damit du die DeviceID herauskopieren kannst. Diese benötigst du im folgenden Code.

Der Code

Du musst überraschend wenig programmieren, um deinen Dash Button zum Laufen zu bringen. Im Prinzip basiert der folgende Code auf einem Tutorial von Geektips. Allerdings erweiterst du ihn noch um den Button und die LED.

/************
GeeksTips.com
ESP8266 Arduino Tutorial - Push notification messages example
Arduino code example
www.geekstips.com

- replace the dots with your Wi-fi credentials and
- your deviceId from pushingBox account
*/
#include <ESP8266WiFi.h>

// PushingBox scenario DeviceId code and API
String deviceId = "***"; //DeviceID von pushingbox.com
const char* logServer = "api.pushingbox.com";

const char* ssid = "***"; //Der Name deines WLAN-Netzes
const char* password = "***"; //Dein WLAN-Passwort

int switchState = 0;

void setup() {
  pinMode(13, INPUT);
  pinMode(15, OUTPUT);

  Serial.begin(9600);

}

  void sendNotification(String message){

  Serial.println("- connecting to Home Router SID: " + String(ssid));
  
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println();
  Serial.println("- succesfully connected");
  Serial.println("- starting client");
  
  WiFiClient client;

  Serial.println("- connecting to pushing server: " + String(logServer));
  
  if (client.connect(logServer, 80)) {
    Serial.println("- succesfully connected");
    
    String postStr = "devid=";
    postStr += String(deviceId);
    postStr += "&message_parameter=";
    postStr += String(message);
    postStr += "\r\n\r\n";
    
    Serial.println("- sending data...");
    
    client.print("POST /pushingbox HTTP/1.1\n");
    client.print("Host: api.pushingbox.com\n");
    client.print("Connection: close\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }
    client.stop();
    Serial.println("- stopping the client");
}
  

void loop() {

  switchState = digitalRead(13);
  Serial.println(switchState);
  

  if(switchState == 1){
 
  sendNotification("");

  digitalWrite(15, HIGH);
  delay(200);
   digitalWrite(15, LOW);
  delay(200);
  digitalWrite(15, HIGH);
  delay(200);
  digitalWrite(15, LOW);

}
}

Trage in den Code zunächst deine DeviceID von Pushingbox ein. Dann benötigst du natürlich noch die Login-Daten deines WLAN-Netzwerks, damit sich der ESP8266 damit verbinden kann, sobald der Button gedrückt wurde. Die entsprechenden Stellen sind oben im Code durch Kommentare markiert.

Kernstück ist die Funktion

void sendNotification(String message): {}

Hier stellt der ESP8266 zunächst die Verbindung zu deinem WLAN-Netz her und verbindet sich anschließend mit Pushingbox. Anschließend löst er das Scenario aus, das du vorhin angelegt hast. Sobald das getan ist, wird die Verbindung zu deinem Netzwerk wieder getrennt.

Im Scenario auf Pushingbox wird dann die Action angestoßen – also die E-Mail an den Empfänger versendet.

Im Loop deines Programms geschehen im Prinzip nur ganz einfache Dinge: Du liest am entsprechenden Eingang den Button aus und schaust, ob er gedrückt wurde. Wenn das der Fall ist, wird die oben beschriebene Funktion ausgeführt. Sobald diese beendet wurde, leuchtet dann deine LED zwei Mal kurz auf.

Und das war’s. Schließe dein Projekt an den Strom an, drücke den Button und beobachte dein E-Mail-Postfach! 🙂

Wie kannst du dieses Projekt erweitern? Du könntest zum Beispiel auf Knopfdruck die Temperatur messen und diesen Wert per E-Mail versenden. Lerne hier, wie du einen Temperatursensor am Arduino verwendest.

Einen richtig großen Schritt weiter kannst du gehen, wenn du auf Knopfdruck die neuesten Nachrichten per E-Mail verschickst. Lerne hier, wie du einen eigenen Newsticker baust.

Noch ein Hinweis: Betrachte diese Projekt als Spielerei. Verwende es keinesfalls als Möglichkeit, echte Notrufe abzusetzen.

Vielleicht interessiert dich das auch

Kommentare sind nicht verfügbar