Fernsteuerung per WLAN

Anfängerfragen zum Programmieren mit PureBasic.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Fernsteuerung per WLAN

Beitrag von derschutzhund »

Hallöchen,

ich habe ein Flugmodell welches über WLAN gesteuert wird.

Vom Ansatz erst mal einfach.
- Befehle vom PC an das Modell senden.
- Parameter vom Modell empfangen.
- Videostreaming vom Modell empfangen.

Wie geht man da ran um soetwas zu programmieren (also diese drei Teile)?
EDIT: Betriebssystem Windows XP oder Win 7

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Fernsteuerung per WLAN

Beitrag von NicTheQuick »

Du musst halt das Protokoll kennen, über das kommuniziert werden soll. Das ist vermutlich eine einfache TCP- oder UDP-Verbindung, also prinzipiell nichts schwieriges.

Wenn du das Protokoll nicht kennst, dann gibt es aber wahrscheinlich schon ein Programm, mit dem das eh schon geht, oder? Dann muss man eben die Netzwerkdaten mitschneiden.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Fernsteuerung per WLAN

Beitrag von derschutzhund »

Das Protokoll ist in dieser Doku beschrieben:
http://abstract.cs.washington.edu/~shwe ... _Guide.pdf
Auf Seite 17 geht es los.

Es gibt bereits verschiedene Steuersoftware für Windows, Linux, Ipad, Android
Bisher habe ich nur eines für Windows gefunden welches auf meinem Netbook läuft und da fehlen mir Funktionen die ich künftig gerne hätte.
Was es z.B. bisher noch nicht gibt, und zwar in keiner Software, die Steuerung der eingebauten Kamera.
Es geht dabei um eine Drone mit HD-Kamera.
Im Original ist die Kamera fest eingebaut. Ich möchte sie soweit modifizieren, dass sie über die Software geneigt werden kann.
Das geht nur, wenn man eine eigene Software hat in der man das eben einbauen kann wie man will.

Wo fängt man am besten an? Mit der Videoübertragung, weil das wohl das komplizierteste ist?
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Fernsteuerung per WLAN

Beitrag von derschutzhund »

Ja wie fange ich denn nun an?
- Habe auf dem PC eine WLan - Verbindung zur Drone eingerichtet
- Auf dieser Seite https://www.robotappstore.com/Knowledge ... FI/96.html
steht die Basisinfo.

Wie sieht denn nun eine einfaches Programm mit Editfeld für die Befehlszeile aus um einen Befehl an die Drone zu senden?
Wie kann ich das Livebild der Kamera empfangen und anzeigen?

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fernsteuerung per WLAN

Beitrag von Kiffi »

derschutzhund hat geschrieben:Wo fängt man am besten an? Mit der Videoübertragung, weil das wohl das komplizierteste ist?
ich persönlich fange immer mit dem einfachsten an. Wenn ich beispielsweise die Funktionen
einer mir unbekannten DLL aufrufen will, gebe ich mir zuerst die Versionsnummer aus (sofern
vorhanden). Wenn das geklappt hat, traue ich mich Schritt für Schritt an die nächstkomplizierteren
Funktionen heran.

Hast Du denn schon eine grundlegende Kommunikation mit Deiner Drohne hinbekommen?

Grüße ... Kiffi
a²+b²=mc²
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Fernsteuerung per WLAN

Beitrag von - chris - »

Probier doch das erstmal aus:

UDP Port 5556 und jeder Befehl wird mit CR abgeschlossen.

Code: Alles auswählen


;How to Horizontally Calibrate AR.Drone

If InitNetwork() = 0
  End
EndIf  

*buffer = AllocateMemory(1024)

con = OpenNetworkConnection("192.168.1.1", 5556, #PB_Network_UDP)

If con
  
  command$ = "AT*FTRIM=1" + Chr(13)
  
  PokeS(*buffer, command$, Len(command$), #PB_Ascii)
  
  SendNetworkData(con, *buffer, Len(command$))
  
  CloseNetworkConnection(con)
  
EndIf

End

Code: Alles auswählen


;How to Control AR.Drone LEDs

If InitNetwork() = 0
  End
EndIf  

*buffer = AllocateMemory(1024)

con = OpenNetworkConnection("192.168.1.1", 5556, #PB_Network_UDP)

If con
  
  command$ = "AT*LED=1,0,1056964608,4" + Chr(13)
  
  PokeS(*buffer, command$, Len(command$), #PB_Ascii)
  
  SendNetworkData(con, *buffer, Len(command$))
  
  CloseNetworkConnection(con)
  
EndIf

End

PB v5.72 x86/x64
Windows 10 Pro 64bit
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Fernsteuerung per WLAN

Beitrag von derschutzhund »

Hallo chris,

ist funktioniert!
Damit kann ich grundsätzlich Befehle an man Drönchen senden.
Wie kann ich Parameter abfragen?

LG

Wolfgang

EDIT: Kannst du damit was anfangen?
Controlling and configuring the drone is done by sending AT commands on UDP port 5556.
The transmission latency of the control commands is critical to the user experience. Those
commands are to be sent on a regular basis (usually 30 times per second). The list of available
commands and their syntax is discussed in chapter 6.
Information about the drone (like its status, its position, speed, engine rotation speed, etc.),
called navdata, are sent by the drone to its client on UDP port 5554. These navdata also include
tags detection information that can be used to create augmented reality games. They are sent
approximatively 15 times per second in demo mode, and 200 times per second in full (debug)
mode.
A video stream is sent by the AR.Drone to the client device on port 5555 (UDP for AR.Drone
1.0 , TCP for AR.Drone 2.0 ). Images from this video stream can be decoded using the codec
included in this SDK. Its encoding format is discussed in section 7.2.
A fourth communication channel, called control port, can be established on TCP port 5559 to
transfer critical data, by opposition to the other data that can be lost with no dangerous effect.
It is used to retrieve configuration data, and to acknowledge important information such as the
sending of configuration information.
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Fernsteuerung per WLAN

Beitrag von Derren »

Geht die Frage auch genauer?

Du musst 3 Server erstellen (CreateNetworkServer()) auch mit dem UDP flag und den angegebenen Ports.
Mit ReceiveNetWorkData() fängst du dann die Daten, die von der Drone gesendet werden ab.
In dem Dokument das du gerade zitiert hast steht dann drin, wie genau diese Daten aufgebaut sind, so dass du sie aufschlüsseln kannst.
Signatur und so
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Fernsteuerung per WLAN

Beitrag von derschutzhund »

Geht die Frage auch genauer?
Klar geht das!
Du musst 3 Server erstellen (CreateNetworkServer()) auch mit dem UDP flag und den angegebenen Ports.
Weshalb 3 Server? Sind die Server nur zum Empfangen (Informationen, Video)?
Senden kann ich mit dem Beispiel ja auch ohne einen Server.
Was sind UDP flags?
Mit ReceiveNetWorkData() fängst du dann die Daten, die von der Drone gesendet werden ab.
Hast du ein Beispielprogramm CreateNetworkServer + ReceiveNetWorkData ?
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fernsteuerung per WLAN

Beitrag von ts-soft »

Wie wäre es, wenn Du Dir erstmal die notwendigen Grundlagen für Netzwerkprogrammierung erarbeitest?
Also, PureBasic.chm, wikepedia, Beispiele hier im Forum usw.
Ohne die notwendigen Grundlagen (ist nicht so schwer :wink: ) wirste uns hier ein Loch in den Bauch
fragen.
Wenn Du die Grundlagen verstanden hast, solltest Du auch in der Lage sein, Dein Projekt alleine umzusetzen,
mal abgesehen von dem Videogedöns.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten