Der im letzten Beitrag beschriebene Antennenrotor kann über WLAN gesteuert werden. Wer dazu nicht sein Smartphone benutzen möchte kann dies auch mit der in diesem Beitrag beschriebenen Fernbedienung machen.
Diese Fernbedienung hat zwei Tasten und ein Potentiometer. Ein als Web-Client arbeitendes NodeMCU LUA Modul mit ESP8266 sendet jede Änderung der Tasten an einen Web-Server. Zusätzlich wird immer ein Wert zwischen 1 und 10 mitgeschickt, abhängig von der Potentiometer Stellung.
Schaltung:
Immer wenn sichder Zustand der beiden Taster ändert wird ein Request an den Server gesendet.
Stückliste:
Arduino Sketch:
/** * BasicHTTPClient.ino * * Created on: 24.05.2015 * */ #include <Arduino.h> #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <ESP8266HTTPClient.h> //Globale Variablen const char *ssid = "Antenne"; const char *password = "womo12345"; String message; //Nachricht für Request int speed; //aktuelle Geschwindigkeit 1 bis 10 int btn; //aktueller Tasterwert int lastBtn = 0; //Tasterwert für letzte Aktion ESP8266WiFiMulti WiFiMulti; //Diese Funktion sendet einen Request an den Web Server void sendRequest( String cmd, int spd) { Serial.println("Start Request"); if((WiFiMulti.run() == WL_CONNECTED)) { HTTPClient http; //Declare object of class HTTPClient http.begin("http://192.168.4.1/data"); //URL um Formulardaten an den Webserver zu senden http.addHeader("Content-Type", "text/plain"); //Specify content-type header message = "SPEED="+String(spd)+"&"+cmd+"=1"; //Argumente für den HTTP-Request Serial.println("Start Post"); int httpCode = http.POST(message); //Send the request String payload = http.getString(); //Hole Antwort kann aber ignoriert werden Serial.println(httpCode); //Print HTTP return code http.end(); //Verbindung beenden } else { Serial.println("connection Problem"); } } void setup() { Serial.begin(115200); //Pins vorbereiten pinMode(D6,INPUT_PULLUP); //D6 ist Taster für links pinMode(D7,INPUT_PULLUP); //D7 ist Taster für rechts //warten bis ESP8266 bereit ist for(uint8_t t = 4; t > 0; t--) { Serial.printf("[SETUP] WAIT %d...\n", t); Serial.flush(); delay(1000); } //mit dem WLAN Antenne verbinden WiFi.mode(WIFI_STA); WiFiMulti.addAP(ssid,password); } //Hauptschleife void loop() { //lese Potentiometer Wert von A0 //Wert liegt zwischen 0 und 1024 //dividiert durch 100 ergibt 0 bis 10 speed = analogRead(A0)/100; Serial.println(speed); //Minimalwert auf 1 setzen if (speed < 1) speed = 1; //Taster einlesen beide in eine Variable //links = 1; //rechts = 2; //keiner = 3; //beide = 0; btn = digitalRead(D6) + 2 * digitalRead(D7); //Nur wenn sich der Tasterwert geändert hat if (btn != lastBtn) { //Tastenwert merken und entsprechenden Request absenden lastBtn = btn; switch(btn) { case 0: Serial.println("STOP"); sendRequest("STOP",speed); break; case 1: Serial.print("LINKS "); Serial.println(speed); sendRequest("LINKS",speed); break; case 2: Serial.print("RECHTS "); Serial.println(speed); sendRequest("RECHTS",speed); break; case 3: Serial.println("STOP"); sendRequest("STOP",speed); break; } } //0.1 s warten delay(100); }