Community-Projekt: Elektronischer Zielscheiben-Empfänger
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Hallo Zusammen,
womit hast Du das Platinen Layout erstellt ? Also welche Software ? Gibts die Firmware auf GitHub ? Gibts eine "Gerber" Datei ?
Ich hatte mit dem Gedanken gespielt so ein Ziel nachzubauen und die Firmware dazu zu bekommen, dass sie die Treffer-Daten als MQTT event an meinen RLG-Commander weiterleitet.
Du hast den Mikrocontroller direkt auf die Platine aufgebracht, richtig ?
Gruss, Torsten...Real Life Gaming System flashheart.de -
Modding und Zweckentfremdung sind explizit erwünscht und werden meinerseits bestmöglich gefördert!
Der Verlauf von MQTT-Kommunikation ist mir nicht geläufig, die Software lässt sich aber zu jedem Zeitpunkt
neu aufspielen. Dazu musst du am Layout nichts ändern, der normale 6-Pin ISP-Header ist da schon drauf (siehe blau):
1.jpg
Der Mikrocontroller ist ein Atmel auf der Platine, ja. Falls du schon irgendwelchen Code für Arduino hast, müsstest du den
mit minimalen Änderungen da einspeisen können.
ABER AUFGEMERKT: Es ist bereits ein maximal einfacher Modding-Anschluss vorhanden, siehe Markierung in grün! Bei jedem
Treffer schaltet der einmal kurz ein. Zwei Strippen anlöten, an dein Ding anschließen, fertig.
Das Gleiche ist auch am Empfänger vorhanden, der kümmert sich dann um Datenempfang und -auswertung. Der Empfänger
hat zusätzlich nen digitalen Ausgang, über den man Daten auslesen könnte.
An der Zielscheibe sind Aussparungen, damit man auch im zusammengebauten Zustand noch rankommt. Irgendwelche
Kabel kann man durchs Batteriefach ausleiten:
2.jpg -
Das heisst, bei jedem Treffer (egal ob mitte oder seite) wird der Kontakt geschlossen. Gibts da ein festes Zeitfenster ? Ich kann aber sonst keine Daten da abfragen.
Sagen wir, ich möchte gerne eine Art "Schaden" errechnen. Dazu müsste ich zwingend über den Empfänger abfragen.
Ich könnte für meine Zwecke aber auch ganz auf den Empfänger verzichten ? Welches CAD Programm hast Du für die platine benutzt ?Real Life Gaming System flashheart.de -
Das Relais auf der Zielscheibe wird bei jedem Treffer für 30ms geschlossen. Man könnte natürlich
in begrenztem Maße auch Daten darüber schicken, indem man diese Zeit variiert. Also z.B. 30ms
für einen Randtreffer, 35ms für einen Treffer in der Mitte.
Auch sonst müsstest du nicht zwangsläufig über den Empfänger gehen; ich könnte eine Routine
in die Zielscheibe programmieren, die standardmäßig die digitalen Daten auch zusätzlich über den
ISP-Header ausgibt.
Über den Empfänger zu gehen wird immer dann die beste und einfachste Möglichkeit sein, wenn die Funk-
Verbindung genutzt werden soll.
CAD-Programm für das Gehäuse ist FreeCAD, für Platinen KiCAD. -
Nach einigen Überlegungen wäre es wohl besser, das Ziel so zu lassen wie es ist und einen eigenen 433 mhz empfänger an meinen Agenten anzuschließen.
Was schickt das Ziel denn an Daten, kann ich das irgendwo nachlesen ? Kannst Du ein bestimmtest Empfänger Modul empfehlen ?
Dann würde ich meinen pyAgent entsprechend erweitern. Der erhält die Telemtrie von Deinem Ziel und übersetzt es als MQTT für den Commander (zentrale Spielsteuerun).
4.jpg
Piezos (hab das Bild vom pbhub geklaut - sorry)
also irgendwas in der Art
wobei ag33 die ID eines meiner Agenten auf dem Feld sind
ag33.jpg
Um zu melden welche von den ausgelöst wurden. Daraus kann sich dann der Commander einen Reim machen.
Was passiert wenn mehr als eine Zielscheibe auf dem Feld stehen. Senden die eine Art ID, dass man die verschiedenen Signale auseinander halten kann ?
Mein Gedanke ist eine Art "League of Legends", wobei jeder Spawn eine Zielscheibe über sich hat und man mit einigen gezielten Treffern zum Schluss versuchen muss die Scheibe/Nexus "zu zerstören."Real Life Gaming System flashheart.de -
Hab die Doku für die 433 Übertragung gerade auf PBHUB gefunden.Real Life Gaming System flashheart.de
-
Achtung Achtung, alle aufgepasst; der folgende Post ist langweilig!
Ich wiederhole: Der nun folgende Post ist hart langweilig! Alle Anwesenden sind angehalten, zum Ausgleich sofort
in irrationale Panik zu verfallen, um einem Koma durch akute Unterlastung des zentralen Nervensystems vorzubeugen!
Ein wichtiger Schritt zum Aufbau einer stabilen Funkverbindung war es, das von flashheart gerade erwähnte
Funkprotokoll ein Stück weit zu verändern. Ich werde das jetzt einmal detailliert beschreiben, damit die
null bis zwei Leute, die später mal darin rumpfuschen wollen, die Funktionsweise hier nachlesen können.
Bei allen anderen bitte ich um Entschuldigung fürs Datengeballer.
Die Funkfrequenz ist 433.92 MHz, die Mikrocontroller laufen auf 8 Mhz (externe Clock über einen Oszillator, CKDIV8-Fuse darf
NICHT gesetzt sein) und die Bitrate der Funkübertragung ist 6900 Bit/s. Die verwendeten AM-Funkmodule laufen über OOK.
Es werden keine Transceiver verwendet; die Zielscheibe kann nur senden, der Empfänger nur empfangen.
Ein Bit dauert 145µs, ein Datenblock 3.48 ms und die gesamte Übertragung 30 ms.
Bei jeder Übertragung werden zunächst 8 Bits (1 Byte) einfach nur "1" gesendet. Das dient dazu, dass der Empfänger seine
Empfindlichkeit auf die Signalstärke des Senders runterregelt. Auf der Empfängerseite werden diese Bits manchmal
verschluckt oder sorgen für Artefakte, weil der Empfänger sich vorher auf irgendwelches Hintergrundrauschen
eingepegelt hatte.
Es wird daraufhin derselbe Datenblock 8 mal wiederholt. Sieht so aus:
1.jpg
Oder hier als vergrößerter Ausschnitt:
2.jpg
Durch die mehrfache Wiederholung kann der Empfänger auch bei sehr schlechtem Empfang und starken Störquellen im
Hintergrund korrekt arbeiten. Dazu sucht die Software vom Empfänger nach zwei identischen Datenblöcken innerhalb
derselben Übertragung und nimmt diese dann als korrekt an.
Jeder Datenblock besteht aus drei Bytes: Präambelbyte, Datenbyte und Counterbyte.
Die werden in dieser Reihenfolge und von hoher zu niedriger Priorität (Bit7 -> Bit0) übermitelt.
Die Präambel lautet immer "01011001". Dies identifiziert die Zielscheibe als Zielscheibe, damit der Empfänger sie nicht
mit Nachbars Garagentoröffner verwechselt.
Danach folgt ein Datenbyte, in diesem stehen Informationen der Zielscheibe. Es setzt sich folgendermaßen zusammen,
in chronologischer Reihenfolge: Bit7 = 0, Bit6 = Jumper2, Bit5 = Jumper1, Bit4 = Jumper0, Bit3-0 = Sensor
Also im ersten Bit steht immer 0.
In den nächsten drei Bits steht der Zustand der drei Jumper auf der Zielscheiben-Platine:
4.jpg
Wenn dort kein Jumper eingelötet ist, wie im Bild gezeigt, wird eine "0" übermittelt. Wenn dort ein Jumper eingelötet
ist, stattdessen eine "1". Auf die Art können Leute, ohne sich auch nur ansatzweise mit der Software auseinandersetzen
zu müssen, die Software durch das Einlöten eines Jumpers verändern. Geplant ist bisher, diese Jumper zur Differenzierung
verschiedener Zielscheiben einzusetzen. Mit 3 Jumpern könnte man dann gleichzeitig acht verschiedene Zielscheiben
einsetzen und empfängerseitig voneinander unterscheiden.
Die letzten vier Bits (Bit3-Bit0) enthalten die Trefferposition, also Sensor 1 bis Sensor 13 als Zahl (Beispiel: "1101" wäre Sensor 13).
Danach folgt das Counterbyte, das ist eine fortlaufende Zahl, die mit jedem Treffer um 1 erhöht wird. Nach 255 erfolgt ein
Überlauf und der Counter fängt bei 1 neu an. Falls das mal wichtig werden sollte, das Counterbyte ist niemals Null, da dies zu
fehleranfällig für falsche Übertagungen aus Hintergrundrauschen ist. Gleiches gilt auch fürs Datenbyte.
Das Counterbyte ist dafür nütze, dass der Empfänger eine Übertragung immer von der vorherigen unterscheiden kann,
außerdem kann so die Anzahl der Treffer auf der Zielscheibe selbst dann noch verlustfrei errechnet werden, wenn bis zu 126
Funkübertragungen vorher komplett fehlgeschlagen sind. Die drei Bytes zusammen sehen folgendermaßen aus:
3.jpg
In diesem Beispiel steht also "01011001 00001101 00111001", bedeutet:
Präambel (01011001): "Ich bin eine Zielscheibe"
Daten (00001101): "Anfang" (00001101), "keine Jumper sind eingelötet" (00001101), "Sensor 13 wurde getroffen" (00001101)
Counter (00111001): "Es handelt sich um den 57ten Treffer"
Und der Kram wird halt dann 8 mal direkt hintereinander gesendet.
Aus Rücksicht auf die fachlich vollständig Desinteressierten habe ich die Funktionsweise der Zielscheibe auch noch einmal
stark vereinfacht zusammengefasst:
Ich wünsche euch allen ein frohes Wochenende,
Jens -
Das sollte ich hinkriegen. Muss mir aber noch einen geeigneten 433 receiver besorgen, der sich auch in Python ansteuern lässt.Real Life Gaming System flashheart.de
-
Also statt nem CRC zur Erkennung verfälschter Pakete schickst du einfach die Nachricht 8 mal, soll wohl schon eine richtig ankommen?Fashionball! Style for Function
-
Richtig. CRC hilft uns hier nicht weiter, weil der Empfänger die Daten nicht aktiv neu anfordern kann.
Man wüsste zwar, dass die Daten falsch sind - hätte aber keine Ahnung, was denn die richtigen Daten sind.
Umgekehrt reicht allein eine Prüfsumme auf 434MHz meiner Erfahrung nach auch nicht zum Beweis korrekter Daten.
Der Sender muss in jedem Fall präventiv die Daten oft genug senden, damit der Empfänger sich einen
unbeschädigten Datensatz raussuchen kann. Und dann kann man die Wiederholungen auch gleich zum
Abgleich zweitverwerten.
8 Mal kommt einfach nur von der Zeit, die man hat. Selbst wenn jemand mit 20bps auf die Scheibe einschreddert,
hat man 50ms für jeden Sendevorgang. Wirklich nötig wären wahrscheinlich nur 3 Wiederholungen, aber
warum nicht die Funkreichweite nochmal um 20-100m erhöhen, wenns gratis ist? -
Und erneut können die Platinen erst ihren Dienst tun, wenn da auch Bauteile drauf sind. Die Bauteile sind
alle groß genug (und die Abstände zwischen ihnen weit genug), damit man das mit einem 15€-Lötkolben
schaffen kann. Qualitativ etwas hochwertigeres Gerät macht es natürlich einfacher.
Darf man halt nur nicht im Baumarkt kaufen, dort gibts in der Abteilung nur unbrauchbaren Schund.
Statt dem überall bekannten Lötkolben kann man an dieser Stelle auch sehr gut Heißluft einsetzen. Als
Einstieg eignen sich bereits 10€-Gaslötkolben, aber auch die billigsten Heißluftstationen fangen schon um 40€ an.
Man kann über die ganze Platine erst einmal großzügig Lötzinn rotzen; die verzinnten Oberflächen verhalten
sich deutlich kooperativer als Kupfer. Wichtig ist grundsätzlich Eines: Der Hobbyist verwendet bleihaltiges Lot!
In der Elektronik-Industrie wird nur noch bleifrei verwendet, weil wegen Umwelt. Ist ja auch gut so.
Dadurch wird aber auch an private Anwender, auf die Industriebeschränkungen überhaupt nicht zutreffen, fast
nur noch bleifreies Lot verkauft. Das Zeug wollt ihr nicht haben; wer irgendwas mit Elektronik machen will,
sollte sich unbedingt nach einer Rolle Sn60Pb40 oder Sn62Pb36Ag2 umsehen.
1.jpg
2.jpg
Beim Heißluftlöten kann man da jetzt, zusammen mit ordentlich Flussmittel, die Bauteile einfach drauflegen
und aufheizen. Meist saugen sich die Bauteile dann von sich aus an ihren angedachten Lötpads fest. Wo sie
das nicht tun, hilft man mit einer Pinzette nach.
3.jpg
4.jpg
Man sollte dabei mehrere Durchgänge machen, je nach Hitzebeständigkeit der Teile. Als erstes Widerstände,
die sind nicht kaputt zu kriegen. Dann Kondensatoren, Transistoren, Spannungsregler und Schalter, die halten
ebenfalls gut was aus. Dann die Mikrocontroller - hier habe ich möglichst robuste Teile ausgewählt, aber auch
die sollte man nicht komplett zur Hölle braten. Und zuletzt die LEDs und Siebensegmente, die können nur
relativ geringe Temperaturen ertragen, ohne frech den Aggregatzustand zu wechseln.
5.jpg
6.jpg
Und dann ham wir sie, die hoffentlich finale Version der Elektronik. Denn wenn ich das jetzt nochmal neu routen
oder die Pinbelegung umstellen muss, fange ich an mein Mobiliar zu zerhacken.
Getestet sind sie auch schon und funktionieren genau so wie sie sollen. Demnächst können wir dann damit einmal
die realen Funktionstests durchgehen - und wie diese sich auf den Aufbau der Zielscheibe auswirken.
7.jpg
Schönen Rest vom Wochenende euch allen. -
Arbeitet irgendjemand mit Kunststoffplatten und Lasercuttern? Weil so jemanden könnten wir jetzt gut gebrauchen.
Wir müssen nämlich die Metallplatte auf der Zielscheibenfront abschaffen. Nützt nichts, da kommt nicht genug
Signal durch. Auch wenn man per Antenne das Signal ausleitet, verzieht die massive Scheibe das Signal bis zur
Unbenutzbarkeit. Hab ich alles bis zum Erbrechen ausprobiert, zur Antenne schreibe ich nächstes Mal auch nen
eigenen Beitrag.
Stattdessen muss vorne eine Kunststoffscheibe hin, aber kein 3D-Druck (die haben sich alle als zerschießbar herausgestellt).
Ich habe das Design der Sensorscheibe jetzt so geändert, dass jeder da etwas Beliebiges vorklatschen kann (oben alt,
unten neu):
3.jpg
Also beispielsweise in der Bucht eine 200mm-Plastikscheibe kaufen und mit Teppichband davor kleben. Größer geht aber jetzt auch.
Das beste Material wäre wahrscheinlich Polycarbonat, zweite Wahl wäre PMMA. Letzteres bekommt man fertig
zugeschnitten in verschiedenen Dicken und Größen; ich bin mir aber nicht sicher, was die Mindestdicke für Beschuss
ist. Wäre cool, wenn etwaige Experten sich da mal zu Wort melden könnten. Oder sogar Tests für uns durchführen würden. -
Moin, hab nen 20w diodenlaser. Schwarzes Plexi kann damit bearbeitet / geschnitten werden. Auflösung 0,08mm. Durchsichtiges Material nur mit co2 Laser. Müssen die Vertiefungen sein oder nur die Löcher? Problem bei den Vertiefungen wird sein dort das Material auf Maß abzutragen
hab gerade mal geschaut schwarzes pmma 4mm dick bekommt man relativ günstig. Rund 29€ für 50x50cm
viele Grüße
MatzeDieser Beitrag wurde bereits 1 mal editiert, zuletzt von Smoudo ()
-
Hab ich wohl missverständlich ausgedrückt. Die benötigte 200mm-Scheibe kommt auf die im Bild dargestellte Sensorplatte, die 3D-gedruckt wird.
Das Lasern bräuchte überhaupt keine Details oder Löcher, nur ein 200mm Kreis. Und Schwarz dürfte ohnehin die bevorzugte Farbe sein.
Aus PMMA kann man die einfach in der Bucht kaufen.
Kannst du einschätzen oder hast möglicherweise sogar Erfahrung darin, welche Materialstärken paintballtauglich sind? -
Da habe ich keine Erfahrung. Bei 200mm Durchmesser könnte ich mir aber gut vorstellen das es hält. Allerdings gibts die Platten von 4mm aufwärts 6mm, 8mm usw. Aus Kostengründen würde ich eine 4mm testen. Wenn das die deckplatte ist, kann man natürlich auch Mittelpunkt und Bahnen mit dem Laser eingravieren. Alternativ könnte ich mir auch eine lackierte Holzplatte vorstellen. Das kann man auch sauber auslasern. Wieviel fps das ganze aushält, keine Ahnung.
-
Das Schöne daran, von Beruf nichts mit Elektronik oder Software zu tun zu haben, ist, dass ich mich nicht dafür schämen muss
offen zuzugeben, wenn ich keine Ahnung habe, was ich hier eigentlich mache.
Das Meiste kann ich mir selbst zusammenfrickeln, komplett raus bin ich aber bei Antennen. Ich kenne mehr Wörter als die
meisten Leute: Feedlines, Impedanzmatching und Tuning, Polarisation und Schumann-Resonanzen sind nur einige davon.
Ich weiss nur leider nicht, was sie bedeuten.
Ich stand nun also vor der Auswahl, mir entweder 1-2 Semester ernsthaftes Verständnis der Materie reinzuschrauben, oder
wie ein Affe einfach rumzuprobieren was geht.
Um letztere Herangehensweise effizienter zu gestalten, habe ich unseren ersten "Betriebsmodus" programmiert: Empfangsstärke.
In diesem Modus rechnet der Empfänger aus, wieviele Daten korrekt ankommen und zeigt das dann in Prozent an. Gleichzeitig
werden abwechselnd alle LEDs der Matrix gleichzeitig an-/ausgeschaltet, sodass man den Empfänger auch irgendwo abstellen und
auf Entfernung erkennen kann, dass ein Signal ausreichend gut ankommt.
0.jpg
Den Modus lasse ich da für euch drin, in erster Linie brauchte ich den halt zum Entwickeln der Antenne. Dazu baute ich mir eine
Reihe verschiedener Antennenformen, deren Richtwirkung ich grob zu kennen glaube, und hab unter gleichen Bedingungen
die Empfangsstärke dokumentiert. Die wichtigste Auswahl ist folgende:
1.jpg
Die besten Antennen sind also:
- ein einfaches langes Kabel, das aus dem Gehäuse raushängt
- ein einfaches langes Kabel, das einmal im Kreis läuft und mit dem anderen Ende an Masse hängt
Ersteres war ja schon in den früheren Versionen und daher ist mir eine eklatante Schwäche davon bekannt. Das Ausleiten
eines frei hängenden Kabels durch ein 3D-Druck-Gehäuse führt zwangsläufig zu sehr ungünstigen Geometrien beim Druck
oder einem Knick im Kabel, der sich schnell zu einem besonders schlecht reparierbaren Kabelbruch entwickelt. Deswegen blöd.
Deswegen ist die Antenne unserer Wahl jetzt eine Loop, die in das Gehäuse integriert ist. Also keine Kabelbrüche, Wartung
oder außen rumfliegende Strippen mehr. Die interne Fassung dafür ließ sich leicht in die CAD der Zwischenscheibe schneiden:
2.jpg
Und damit ist im Prinzip alles bereit für einen neuen Ausdruck aller Teile.
Beste Grüße
Jens
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0
-
Tags