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

      Quellcode

      1. {"hit": [1,5,9,7]}
      2. an Topic (MQTT)
      3. /rlg/evt/ag33/target
      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."
      Dateien
      • 4.jpg

        (96,09 kB, 0 mal heruntergeladen)
      • ag33.jpg

        (127,12 kB, 0 mal heruntergeladen)
      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
    • 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

      Matze

      Dieser 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