Voor de ontvangst van satelliettelevisie in de camper kunt u een dure automatische satellietantenne kopen of een eenvoudige goedkope satellietantenne op een statief zetten en handmatig aanpassen.Dit is meestal zeer tijdrovend en aangezien de antenne buiten de televisieontvanger, maar binnen, het succes van de actie kan alleen maar slecht worden waargenomen.
Een veel gemakkelijke en toch betaalbare oplossing is de antenne rotor gepresenteerd hier met stap motor controle.De stepper motor wordt gecontroleerd door een NodeMCU LUA Amica VS module met ESV8266 12F, zodat het kan worden bediend via WLAN.Hiertoe wordt de ESV8266 als toegangspunt gebruikt.Met een smartphone kun je gemakkelijk de antenne motor controleren.
In deze modus ontvangt de ESV8266 altijd het IP-adres 192.168.4.1
Het gepresenteerde programma creëert een WLAN met de SSID "antenne" en het wachtwoord "womo12345".Dit kan natuurlijk worden gewijzigd door wijzigingen in het programma.
Als de antenne rotor wordt geleverd met elektriciteit, kunt u een WLAN genaamd "antenne" vinden in de smart phone in de WLAN lijst.We verbinden ons nu aan deze WLAN en starten een browser app.Als URL voeren we 192.168.4.1 in.
We moeten nu de volgende homepage in de browser zien:
Als we op een van de knoppen klikken, moet de antenne draaien in de gewenste richting.
Onderdelen:
- LUA NODE
- Drijvers voor stapmotor
- Step-motor
- omzetter van spanning 12V tot 5V
- 2 dubbele schroefklemmen
- Klasse 3D printen
- Camping SAT-Anlage
/* *Copyright (c) 2015, Majenko Technologies Alle rechten voorbehouden. * *Heroriëntatie en gebruik in broncode en binaire vormen, met of zonder modificatie; *zijn toegestaan mits aan de volgende voorwaarden is voldaan: * * *Heristributions of source code moet de bovengenoemde copyright aankondiging, dit *lijst van voorwaarden en de volgende disclaimer. * * *Redistributions in binaire vorm moeten de bovenstaande copyright aankondiging reproduceren, dit *lijst van voorwaarden en de volgende disclaimer in de documentatie en/of *andere materialen voorzien van de distributie. * *Noch de naam van Majenko Technologies, noch de namen van de *contribuanten kunnen worden gebruikt om producten van *deze software zonder specifieke schriftelijke toestemming. * *DEZE SOFTWARE IS VERSTREKT DOOR DE COPYRECHTS HOUDERS EN VERDRAAGERS "AS IS" EN *EEN EXPRESSIE OF BETERE WAARSCHUWINGEN, MET INCLUSIEF, maar NIET BEPERKT, DE GEVOLGEN *WAARSCHUWINGEN VAN MECHANTIABILITEIT EN RECHTVAARDIGHEID VOOR EEN GEGEVENS DOEL ZIJN Disclaimed.In geen geval zal de COPYRIGHT HOUDER OF VERDRAAGERS aansprakelijk zijn voor *DIRECTE, INDIRECT, INCIDENT, SPECIALE, VOORBEELDEN OF CONEQUENTELE GEGEVENS * (met inbegrip van, maar niet beperkt tot, het aantonen van SUBSTUTE GOEDEREN of DIENSTEN; *Verlies van GEBRUIK, GEGEVENS, OF PROFITS; OF ONDERNEMINGEN) *EEN THEORIE VAN DE VERPLICHTHEID, OF HET IN CONTRACT, STRICT AANSPRAKELIJKHEID OF OVERZICHT * (INCLUSIEF ONDERNEMING OF ANDERE) IN EEN KADER UIT HET GEBRUIK VAN DIT *Software, zelfs al is het geboden van de mogelijkheid of zo'n schade. */ /*Maak een WiFi-toegangspunt en geef er een web server op.*/ "35; omvat <ESP826WiFi.H> "35; omvat <WiFiClient.H> "35; omvat <ESP826WebServer.H> /*HTML-code voor de controlehomepage *Het is een eenvoudige vorm met een *Snelheidsveld en drie knoppen *Rechts, links en stop */ const char HTML INDEX[] = Goed?DOCTYPE HTML>" "<html>" "<head>" "<meta naam ="viewport"content "breedte = apparaat-breedte, initiële schaal = 1.0, maximum-schaal = 1.0, gebruiker-schaalbare=0">" "<titel>Antennenrotor</titel>" "<style>" "body {achtergrondkleur: 35; d2f3eb; font-familie: Arial, Helvetica, Sans-Serif; Color: 35; 000000;}" "input {font-size:16pt;} "</style>" "</head>" "<body>" "<h1>Antennenrotor</h1>" "<FORM-actie=\\\\\\" "<P>" "<INPUT-type=\"submit"naam="LINKS"waarde="Links\\\> " "<INPUT-type="submit"naam="STOP"waarde="Stop"> " "<INPUT-type=\\\\\\\\\\\\\\"subal\"naam;;br>" "Speed (1-10):<br>" "<INPUT-type=\"text"waarde="%i"naam="SPEED\\\;" "</P>" "</FORM>" "</body>" "</html>"; /Globale variabelen const char *pagina = Antenne.; Naam van de WLAN const char *wachtwoord = womo12345; Wachtwoord voor de WLAN const int stp = 12; /Pin-nummer voor de stapsverbinding van de motorbestuurder const int jij = 13; /Pin-nummer voor de richtingaansluiting van de bestuurder int richting = 0; lopende richting int dly = 100; stappen vertraging van de motor int spd = 1; actuele snelheid ESP826WebServer server(80); Website op Port 80 Deze functie wordt opgeroepen wanneer het verzoek aan de web server = /is Leeg HandeleRoot() { char html[1000];Request buffer /Stuur de homepage naar de browser met de snelheid invoer met welke de huidige snelheid is ingesteld sprint(html, HTML INDEX,spd); server.verzenden(200, "tekst/html", html ); } Deze functie wordt opgeroepen wanneer het verzoek "/links" is Leeg handeLeft() { richting = 1;Antwoord naar links en met homepage HandeleRoot(); } Deze functie wordt opgeroepen wanneer het verzoek "/right" is Leeg rechts() { richting = 2; Antwoord naar rechts en met homepage HandeleRoot(); } Deze functie wordt opgeroepen wanneer het verzoek "/stop" is Leeg handeStop() { richting =0; regie om te stoppen en te beantwoorden met homepage HandeleRoot(); } Deze functie wordt opgeroepen wanneer het verzoek "/data?..."is Leeg handeData() { String sspdName; /Afhankelijk van de argumenten van het verzoek, richting en Snelheid set.Snelheid tussen 1 en 10 indien (server.hasargworld.kgm(VERBAND)) richting = 1; indien (server.hasargworld.kgm("Juist")) richting = 2; indien (server.hasargworld.kgm(Stop.)) richting = 0; indien (server.hasargworld.kgm(SPELD)) { sspdName = server.boos(SPELD); spd = sspdName.TOIntName(); indien (spd < 1) spd = 1; indien (spd > 10) spd = 10; dly = (11-spd)*10; Step distance 100 bij snelheid 1 en 10 bij snelheid 10 } HandeleRoot(); Antwoord met homepage } Leeg setup() { Voorbereiding van pinnen PinMode(stp, UITVOER); PinMode(jij, UITVOER); digitalisWriteName(stp,HOGE); digitalisWriteName(jij,HOGE); vertraging(1000); Serie.start(115200); Serie.Afdrukken(); Serie.print("Access point instellen..."); WiFi..Zacht(pagina, wachtwoord); IPAdres myIP = WiFi..softAPIP(); Serie.print("AP IP-adres:); Serie.Afdrukken(myIP); IP is altijd 192.168.4.1 /Definitie van responsfuncties server.op("/", HandeleRoot); server.op("links", handeLeft); server.op("Juist", rechts); server.op(Stop., handeStop); server.op("Datum", handeData); /Start Web Server server.start(); Serie.Afdrukken("HTTP server gestart"); } Hoofd lus Leeg ren() { Controle op verzoek server.handeClient(); afhankelijk van de richting ingesteld de Pin and spey a step on the Step Pin /Step lengte in ms wordt bepaald door dly indien (richting == 1) { Serie.Afdrukken("links"); digitalisWriteName(jij,LOW); digitalisWriteName(stp,LOW); vertraging(dly); digitalisWriteName(stp,HOGE); vertraging(dly); } indien (richting == 2) { Serie.Afdrukken("rechts"); digitalisWriteName(jij,HOGE); digitalisWriteName(stp,LOW); vertraging(dly); digitalisWriteName(stp,HOGE); vertraging(dly); } }
8 Reacties
Heinz K.
Danke, hat soweit funktioniert. Falls jemand wissen möchte wozu ich das benutze kann das unter youtu.be/x0KHGZSZVEE eingesehen werden.
Andreas Wolter
@Heinz K.: Sie könnten einen Counter einsetzen. Dafür bräuchten Sie zwei globale Variablen. Am besten oberhalb direkt unter int spd = 1; //aktuelle Geschwindigkeit
int counter = 0;
int maxCounter = 20;
counter ist der Zähler und maxCounter Ihre Grenze. Welcher Wert den 4,5cm entspricht, müssten Sie testen.
in die if-Anweisung fügen Sie dann den Code ein, der dafür sorgt, dass nach den festgelegten Schritten der stop-Befehl aufgerufen wird:
if (richtung == 1) {
Serial.println(“links”);
digitalWrite(dir,LOW);
digitalWrite(stp,LOW);
delay(dly);
digitalWrite(stp,HIGH);
delay(dly);
counter++;
if (counter > maxCounter) {
counter = 0;
handleStop();
}
}
Das wäre eine Lösung. Wenn ich das richtig verstanden habe, brauchen Sie nur einen Start Button. Daher könnte man das gesamte Programm weiter verschlanken.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Heinz K.
Hallo,
ich bin mit der Programmierung leider nicht so bewandert. Gibt es eine Möglichkeit das man mit den Tasten links und rechts immer eine bestimmte Anzahl der Drehungen anstösst und dann automatisch wieder stehen bleibt? Hintergrund: beim Luftgewehrschiessen gibt es 10er Schiessscheiben als Streifen auf dem die 10 Spiegel nebeneinander liegen. Diese müssen manuell weiter gezogen werden – immer ca. 4,5 cm. Ich würde aber gerne die Scheibe einspannen und nach jedem Schuss ein Knöpfchen drücken damit automatisch der nächste Spiegel erscheint. Das mit der Mechanik bekomme ich hin, nur an der Programmierung hakt es.
Andreas Wolter
This Example shows the azimuth controll (left and right). For Elevation (up and down) any changes are needed. First you need a second stepper and second driver modul. Two more input fields in the HTML form. For example:
up
left stop right
down
Then you can duplicate the functions for direction handling and connect them to the left and right fields in this form.
The command
if (server.hasArg(“RECHTS”)) richtung = 2;
could expanded with 3 and 4 for up and down.
For the stepper controll you need one more variable: stp2
and you have to check if the variable dir is 3 or 4 then send the commands to the second stepper. Otherwise the first stepper will be moved.
Regards,
Andreas Wolter
AZ-Delivery Blog
Alberto
Cool; It’s what I’ve been looking for for a long time.
If I want to control two motors (Azimuth and Elevation), what should I add to the code?
Thanks a lot
ani
Und woher bekomme ich das Getriebe? Ohne Mechanik, sprich Getriebe, ist das alles Makulatur. Und wie ist es mit der Vertikalsteuerung Gibt es dafür auch Ideen? So werden z. Bsp. in anderen Bereichen der Funktechnik der Mond, Meteorschwärme, Flugzeuge oder Wolken angesteuert.
Jörg Mehring
Hallo,
die Stromversorgung könnte man vielleicht der Phantomspeisung des LNBs entnehmen, da die Polarisation über eine Schaltspannung von 14 bis 18 Volt eingestellt wird. Je nach Strombedarf der o.g. Schaltung sollte das gehen.
Frank Jetzschmann
Hallo,
bei Verwendung von (größeren) Schrittmotoren ist zwingend ein (mindestens) 100µF Elko direkt an der Schrittmotorsteuerplatine (+12V Anschluss) notwendig. Sonst wird die Schrittmotorsteuerplatine zerstört. Hinweise zu diesem Phänomen finden sich in diversen Applikationsschaltungen im Internet.
Sonst eine wirklich clevere Lösung mit Potential für eigene Verbesserungen :-)