Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Projektarbeit: U-Boot
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

Projektarbeit: U-Boot

beantworten | zitieren | melden

So Hallo erst mal.

Da ich im laufe der nächsten 11 Monate von der Schule ausgehend eine Projektarbeit abliefern muss und einige Fragen offen stehen wollt ich mal bei euch nach fragen was ihr von der nachfolgenden Idee haltet.

Der Titel dieses Themas trift auch genau das Thame der PA. Die Idee kam von einem Lehrer der ein "mini" U-Boot bauen will/wollte das man per IR in einem Aquarium steuern kann. ICh hab gedacht ja hört sich gut an, des mach ich dann als PA.
Nach einem kurzen Gespräch, haben wir beschlossen das ich im Laufe der Sommerferien ein Program oder irgendetwas schreiben soll, welches Daten von einem Joystick auffängt und diese über den Serialport verpackt in einem Protokoll an den IR - Sender weitergibt, welcher dann das Signal per IR zum Empfänger am U-Boot sendet.

Das Problm, bei welchem ihr mir helfen sollt ist, die Wahl der Programmiersprache. Da ich C# für eine sehr angenehme Sprache halte und es mir recht leicht fällt damit ein Programm zu schrieben hab ich von beginn an mit der Idee gespielt dies in C# zu machen. Nachteil daran ist nur, ich habe keine Person im näheren Bekanntenkreis die mir bezüglich C# weiterhelfen könnte.

Daher meine Frage: Würde sich diese Projekt in C# realisieren lassen? Und, Wo finde ich Literatur bezüglich des Auslessen von Joystick infos und Ausgeben von Daten mithilfe der Serielen Schnittstell.

Ich bin vorneherein schon mal über alle antworten Dankebar und werde auch versuchen Fragen die ihr zudem Projekt habt bestmöglichst zu beantworten. Also wenn Verständnisprobleme entstanden sein sollte, ruhig nachfragen.

mfg Michael
private Nachricht | Beiträge des Benutzers
JakeBlues
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Projektarbeit: U-Boot

beantworten | zitieren | melden

Hallo Pistenbully,

dein Projekt hört sich für mich interessant an. Du kannst C# für dein Projekt benutzen. Ich würde vieleicht DirectX benutzen um die Informationen vom Joystick zu bekommen, und über eine virtuelle serielle Schnittstelle (http://www.ircomm2k.de/) die Daten an den IR Port senden. Zugriff auf die Serielle Schnittstelle bekomst du über die .NET 2.0 Klasse System.IO.Ports.SerialPort.
private Nachricht | Beiträge des Benutzers
toni
myCSharp.de - Member



Dabei seit:
Beiträge: 14

beantworten | zitieren | melden

Hallo,
gibt es das uboot schon oder musst du dir da auch etwas einfallen lassen (ir, motoren usw), ich stelle es mir schwierig vor wenn sich das uboot mal "weg dreht" dann bekommst du ja keine daten übertragen.

toni
private Nachricht | Beiträge des Benutzers
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Also ich bedank mich schon mal für eure antworten.

Das U-Boot wird nu so sein, das ich über den seriellen port einen selbst gebauten sender ansteuere. dieser sender wird dann in der form wie ich sie als PA abgebe sationär an einem Aquarium befestigt. Der Sender besteht isgesamt aus bisher 4 IR Dioden die das gesamten Aquarium abdecken sollen. Das U-Boot wir aus Pleksiglas gebaut, und enthält 2 Empfäanger Dioden. dadruch bestht oder sollte zumindest immer sichtkontakt bestehen.
private Nachricht | Beiträge des Benutzers
toni
myCSharp.de - Member



Dabei seit:
Beiträge: 14

beantworten | zitieren | melden

Hallo,
da ich bisher noch keine guten erfahrungen mit Infrarot gemacht habe hier ein Vorschlag:

PC->rs232->Pegelwandler->ATTiny1->Funksender->Funkempfänger->ATTiny2->rest der elektronik(Motoren usw.)

eine kurze Beschreibung:

Ich denke bis zum Pegelwandler ist es klar, der pegelwandler wandelt rs232 Signale (die von -3V bis -12V eine logische eins darstellen und 3V bis 12V die eine logische null darstellen) in 0 bzw 5V um mit der der attiny1 arbeiten kann. der attiny1 de-/kodiert und sendet über funk die daten zum attiny2 dieser wertet die daten aus und steuert deine restliche elektronik.

(ich weis das das nicht unbedingt hier rein passt aber wenns hilft )

nun zu den preisen X(

SENDE-/EMPFÄNGERMODULSET 433MHZ 14,95 EUR
2X ATTINY2313-20PU 3,45 EUR (Mikrocontroller kann auch ein anderer sein ist geschmackssache)
2X Quarz 20 Mhz 0,59 EUR
MAX232N 1,43 EUR (rs232 Pegelwandler)
noch ein paar Kondenstoren,platine ...

z.B. Conrad

wenn dir infrarot immernoch lieber ist bekommt man das auch hin
bei infrarot wird lediglich Funksender->Funkempfänger durch ir leds/empfänger getauscht beim attiny1 bin ich mir nicht so sicher ob der notwendig ist, man ist aber dadurch flexibler was die übertragung der signale angeht, da man nur die software des tiny ändern muss nicht aber das windowsprogramm


toni
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1205

beantworten | zitieren | melden

Funken unter Wasser?

Das geht aber nur im Extra-Low-Frequency-Bereich, wodurch das U-Boot eine sehr lange Antenne benötigen würde. Echte U-Boote empfangen Funk durch die extreme Langwelligkeit über mehrere hundert Meter lange Drähte.


Grüsse
private Nachricht | Beiträge des Benutzers
toni
myCSharp.de - Member



Dabei seit:
Beiträge: 14

beantworten | zitieren | melden

Ich denke das es trotzdem funktioniert, da ich ein mini uboot habe bei dem das geht, nicht weit, aber 50 cm sind locker drinn (was für ein aquarium reichen sollte)

toni
private Nachricht | Beiträge des Benutzers
JakeBlues
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Hallo Pistenbully,

wie gehts mit deiner U-Boot Steuerung vorann? Hast du dich schon für eine Vorgehensweise entschieden? Welches Protokoll möchtest du den für die Datenübertragung verwenden?
private Nachricht | Beiträge des Benutzers
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Sp hat bissel gedauert aber nu hab ich mir dann die Vroschläg doch mal durch gelesen.

Für die Übertragung werde ich Infrarot verwenden. Da es beim ersten Versuchsaufbau sehr gut funktioniert hat.


Dann das nächste, das Protokol.
Ja das ist eine gute Frage, kenn mich da ehrlich gesagt auf keinem Auge aus.

Meine Lehrer meinte da immer 8 Bits por Sendung rausgehen würden. Dhaer hab ich mir mal ne kleine Tabelle gemacht:

0-1 = Bootsnummer: später sollen mehrere Botte gesteuert werden können also max 4stk
2-3 = Motornummer: das Boot hat je 2 Motoren für Vorwerts/Rückwerts und Hoch/Runter, diese sollen alle einzel angesteuert werden daher 2Bits
4 = Richtung des Motors
5-7 = Geschwindigkeit der Motorumdrehung

Nun stellt sich mir nur die Frage wie ich das mache.
private Nachricht | Beiträge des Benutzers
ikaros
myCSharp.de - Member



Dabei seit:
Beiträge: 1787

beantworten | zitieren | melden

Zitat
0-1 = Bootsnummer: später sollen mehrere Botte gesteuert werden können also max 4stk
2-3 = Motornummer: das Boot hat je 2 Motoren für Vorwerts/Rückwerts und Hoch/Runter, diese sollen alle einzel angesteuert werden daher 2Bits
4 = Richtung des Motors
5-7 = Geschwindigkeit der Motorumdrehung

Nun stellt sich mir nur die Frage wie ich das mache.

Flags könnten sich anbieten.
oder hier:
http://www.dotnet-magazin.de/itr/online_artikel/psecom,id,594,nodeid,31.html
als Anregung.
private Nachricht | Beiträge des Benutzers
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Vielen Dank für den Link ich werds mir mal durchlesen.
private Nachricht | Beiträge des Benutzers
JakeBlues
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

Hallo Pistenbully,

das mit den 8Bit hast du ein bisschen falsch verstanden, denke ich. Bei einer seriellen Datenübertragung versendest du immer Bytes. Diese Bytes bestehen natürlich aus 8Bit. Aber du kannst auch ganze Zeichenfolgen senden, also mehrere Bytes hintereinander. Darauf baut man ein Protokoll auf, welches sicherstellt das die übertragenenen DATEN (also mehrere Bytes) auch richtig angekommen sind. Dies stellt man mit eine Prüfsumme sicher. Eine Prüfsumme ist eine Mathematische funktion, die alles Bytes irgendwie zusammen rechnet und das ergebnis wieder an due Daten angehängt wird. Die gegenstelle rechnet ebenfalls die Prüfsumme aus und vergleicht ihr Ergebnis mit dem übertragenen Ergebnis. Ist das Ergebnis ungleich, so wird das Datenpacket nochmal angefordert.

Beispiel:
<STX> = Start of Text = 0x02
<ETX> = End of Text = 0x03
<NAK> = Not Acknowledge = 0x15
<ACK> = Acknowledge = 0x6
<BCC> = Der errechnete BlockCheck (Prüfsumme)

In diesem Beispiel muss der Sender die Daten nochmal übertragen da sie nicht richtig angekommen sind. Er sendet dan ein <NAK> anstelle eines <ACK>. Was zwischen <STX> und <ETX> steht ist ein ausgedachtes Protokoll:

Sender: <STX>'N''R''0''1''M''1''R''1''S''0''5'<ETX><BCC>
Empfänger: <NAK>
Sender: <STX>'N''R''0''1''M''1''R''1''S''0''5'<ETX><BCC>
Empfänger:<ACK>
private Nachricht | Beiträge des Benutzers
JakeBlues
myCSharp.de - Member



Dabei seit:
Beiträge: 8

beantworten | zitieren | melden

mal ne andere frage:
Wie werden die Daten die du sendest, auf der U-Boot seite den wieder in Steuerbefehle (z.B Motor an/aus) umgesezt? Da müsste ja ein Microcontroller sein der die Daten entschlüsselt? Wer Programmiert den eigentlich?
private Nachricht | Beiträge des Benutzers
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Richtig erkannt.
den wird höchstwarhscheinlich mein Lehrer programmieren, wobei es sicherlich beser wäre wenn ich auch dies machen würde. Leider kommt Assembler programmierung erst nächstes Schuljahr dran. Daher hab ich mir das Ziel gesetzt über die Sommerferien das Programm schreibe welches mir die Joystickbewegungen über die Seriele Schnitstelleausgibt.

Auch hier würd ich mich über Tips freuen wenn ihr mir da weiterhelfen könntet.
private Nachricht | Beiträge des Benutzers
toni
myCSharp.de - Member



Dabei seit:
Beiträge: 14

beantworten | zitieren | melden

Hallo,
es muss nicht unbedingt asm sein es gibt freie Entwicklungsumgebungen z.B. WinAVR (Programmiersprache wäre C) für Atmel uC's.

Existiert die Motorsteuerungen schon?

toni
private Nachricht | Beiträge des Benutzers
Pistenbully
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Ne die besteht noch nicht. Wie gesagt im Moment beschäftige ich mich größtenteils mit der Übertragung zwischen Joystick und IR.

Da die Ressonaz jetzt doch relativ hoch ist, werd ich im laufe der nächsten woche eine HP + Forum hochladne, wobei es sich dann ausschließlich um die Projektarbeit dreht und wo auch der aktuelle Stand + Pläne und bilder drauf sein werden. Ich hoffe ihr werdet dort dann auch vorbei schauen.

Ich werde aber auch weiterhn versuchen die Fragen hier zu beantworten und werde den Tips nachgehen.

Zur Motorsteuerung:
Es wird vorerst 6 Bewegungen geben
1+2: Hoch runter: die beiden motoren die senkrecht an der bootshülle befestigt sind
3+4: Vorwerts rückwerts: die beiden waagerechten motoren
5: rechts Kurve: rechte rückwerts + linker vorwerts
6: Links Kurve: links Rückwerts + rechts vorwerts

eine drehung könnte man auch noch mit eine bauen sprich:
7: rechte Drehung(um eigene Achse) linker senkrechter Motor vorwerts + rechte rückwerts
8: die ganze Aktion nochmal aber nur eben richtungsverkehrt.

Gut ich muss zugeben das dies alles noch recht unübersichtlich wirkt aber auf der hp wird dann eine Tabelle mit mehr Übersicht + Skizzen
private Nachricht | Beiträge des Benutzers
Nekromanter
myCSharp.de - Member

Avatar #avatar-1722.png


Dabei seit:
Beiträge: 64
Herkunft: Braunschweig

beantworten | zitieren | melden

Vielleicht ist das hier ganz interessant für dich:

http://www.t-bot.de/index2.html
::So long, Nekromanter
private Nachricht | Beiträge des Benutzers