Fernsteuerung für Antennen Rotor - AZ-Delivery

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);
}
Projekte für fortgeschrittene

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery