Änderungen
Aus Hackerspace Ffm
/* Serielle Kommandos */
[[Datei:SpaceNlasers header.jpg]]
== Laser Shooting Gallery ==
* Von einer festen Position müssen Ziele mit dem Laser getroffen werden
** Startet Schußsequenz
*** Broadcast: "Bereit machen für Schuß". Die Nodes bringen Zeitintensive Aufgaben noch zu Ende, pausieren. Ggf. werden DMX-Lichter und andere langsame Störer abgeschaltet.
*** Broadcast: "Schuß " - State machine beginnt:**** State 0: Licht-Aus-Phase". Alle schnellen Lichter werden dunkel geschaltet.*** Broadcast* State 0.5: "Schuß - Einmeßphase". Der Dunkelwert der Sensoren wird nun gemessen.*** Broadcast* State 1..8: "Schuß - Bit0 - Bit7". Die Pistolen aktivieren den Laser mit bestimmten Code für jedes Bit. Pro Bit fragen die Zielcontroller mit etwas Verzögerung analog alle Kanäle ab und entscheiden ob das Bit 0 oder 1 ist.*** Broadcast* State 9: "Schuß beendet". Lichter wieder an, Zeitintensive Aufgaben werden weitergeführt.
*** Unicast: Die Zielcontroller werden reihum abgefragt.
*** Unicast: Ggf. werden Aktionen in den Zielcontrollern und den Pistolen getriggert, die einen Treffer anzeigen.
*** Unklar ist noch, ob ggf. der gesammte Broadcast-Teil einfach Zeitgesteuert ablaufen wird.
== Architektur (reverse engeneered...) ==
* Lokales Netzwerk (LAN)
** Master: Raspberry Pi mit Python - Gamemaster, RS485-Bussystem:
*** 2 Laserpistolen
*** Mehrere Targetcontroller
**** 4 Buchsen für jeweils 2 Targets mit jeweils 1 Lichtsensor und 1 Neopixelsteuerleitung
**** 3 3er Pinne mit D3, D9 und D10 für Extras wie Nebelmaschinen-Trigger etc.
*** Targetcontroller NRF24L01 (Master) - funkt zu
**** 2 Virobi-Ufos: Darin Targetcontroller auch mit NRF24L01 (Slave)
***** Emfängt asyncron 3-4 Lichtsensoren
***** Sendet per freiem Tx Kommandos zu
****** Sekundär-Arduino: Steuert Lichtanimationen fürs UFO (Ufo-Steuerpult, 3 Tischtennisbälle, Plexistablicht), steuert Virobi-Motor
*** Targetcontroller für Haupt-Ufo. Steuert Neopixel im Ufo und fragt Lichtsensoren ab, ausserdem UART-Tx zu
**** Bewegungscontroller fürs Haupt-UFO
** Slave: PC mit Processing: Per TCP-Empfang: Zeigt Punktestand auf Beamer an
** Slave: PC mit Licht-Software: Aktiviert Lichtszenen, Ansteuerung der Lampen per DMX-Bux
*** 2x RGB Wascher
*** Pinspot für Mondbeleuchtung
*** Punkt-LED Effektlampe an Decke
*** Farb-LED-Effekt am Spielfeldrand
== Hardware ==
* Empfänger: SFH 300-3/4 (Langer Pin: Emitter, kurzer Pin: Collektor, geht direkt mit dem internen Pull-Up am Analog-Eingang)
=== Empfang des Schusses ohne Startreferenz ===
* Empfänger liefern analoges Signal, das wird auch analog eingelesen. Je mehr Licht empfangen wird, desto geringer wird der gelesene Analog-Wert
* Bei Umgebungslicht den Wert für Sensor-Dunkel langsam nachführen
** Problem ggf mit dauer leuchtenden Strahlern
* Ab unterschreiten eines Thresholds kann vom ersten Bit ausgegangen werden (das ist immer 1 = Licht an)
* Irgendwie (TM) die Länge dieses Bits bestimmen - wenn lang genug, bei Flankenwechsel auf Bit-Empfangsmodus gehen
== Serielle Kommandos ==
Unicast Kommandos ist ein ASCII-Zeichen für die ID, diese ist 0-9 für die Targets und A-C für die Waffen-Controller. Alles andere sind Broadcast-Kommandos. Kommandos nur ASCII, terminiert Retrurn).
Broadcast Kommandos:
* sABC scduv Bereit machen für Schuß, Licht-Aus + Schusswaffenselektion, Parameter wählt Waffen aus die schießen werden. Bei Empfang dieses Befehls werden Zeitintensive Tasks angehalten und ggf. Lichter aus gemacht. a,b = Boden Luft Abwehrtürme, u,b = UFO Schüsse.
* S Schuss abfeuern. Die Waffen senden den Schuss, die Empfänger empfangen den Schuss. Nach 9 Bitzeiten ist alles vorbei, Zeitintensive Tasks dürfen weiterlaufen und Lichter wieder aktiviert werden.
* I fragt ID des Arduinos ab, an dem Pin 12 auf GND gezogen ist13 mit A0 gebrückt war nach Reset* I? fragt ID des Arduinos ab, kann bei mehreren zur Bus-Kollision führen* Ixx schreibt ID des Arduinos, an dem Pin 12 auf GND gezogen ist13 mit A0 gebrückt war nach Reset. x steht für das ASCII-Zeichen der ID und muss zweimal hintereinander stehen.* fAAAABBBB setzt bitTime = AAAA, bitDelay = BBBB* Tddddd setzt Threshold auf ddddd, ddddd ausnahmsweise in dezimal hier
== Spielprinzip ==
== Optionitis ==
* Video aus Gangansicht
*galvoscanner [https://youtu.be/mtmszeuKH9A] == Space'n'Lasers 2.0 Make Rhein Main 2016 == http://spaceinlasers.guenter-helbig.de <gallery caption="Space'n'Lasers - Make Rhein Main 2016">Datei:DSC 9042.jpegDatei:DSC 9052.jpegDatei:DSC 9047.jpegDatei:DSC 9066.jpegDatei:DSC 9126.jpegDatei:DSC 9294.jpegDatei:DSC 9125.jpegDatei:DSC 9172.jpegDatei:DSC 9159.jpegDatei:DSC 9290.jpegDatei:DSC 9300.jpegDatei:DSC 9302.jpegDatei:DSC 9309.jpegDatei:DSC 9306.jpeg</gallery> == Make Rhein Main 2016 - Location Bilder == <gallery caption="Space n' Lasers - Make Rhein Main 2016">Datei:Euro christal palast.jpg|Make Rhein Main direkt im Fallradius des neuen EZBDatei:Mrm2016 spacenlasers halle A.jpg|HaupthalleDatei:Mrm2016 spacenlasers halle B.jpg|NebenhalleDatei:Mrm2016 spacenlasers a.jpg|Space n Lasers RaumDatei:Mrm2016 spacenlasers b.jpg|Space n Lasers Raum</gallery> == Ultimedia ==<gallery caption="Space'n'Lasers 2.0 - making of">Datei:SpaceInLasersTargetPlatine.jpg|Controler PCB for 8 targets, connected via ethernet cable</gallery> <embedvideo service="youtube">https://youtu.be/wvXL9bo-NEc</embedvideo> <gallery caption="Space n' Lasers - making of">Datei:Space_n_Lasers_-_02.jpg|Serial over Las0r weapon prototypeDatei:Space_n_Lasers_-_01.jpg|Serial over Las0r receiver prototypeDatei:Space_n_Lasers_-_04.jpg|RGB LED WS2812 aka NeoPixelDatei:Space_n_Lasers_-_05.jpgDatei:SNL_Gun_Internals.JPGDatei:SNL_Gun_Early.JPGDatei:SNL_Gun_Full.JPGDatei:Snl_phototransistore.JPG|test light sensor for receiving serial via laserDatei:Snl_neopixel_sensor.JPG|sensor and RGB LED moduleDatei:Snl_target.JPG|One target screen with sensor RGB Led moduleDatei:Snl_rs485_addon.JPG|Arduino clone with RS-485 add-onDatei:Snl_rs485_pcb.JPG|RS-485 PCBDatei:Snl_raspi.JPG|one raspi running the main game control python script </gallery> after countless fails ... [[Datei:Fail.gif]] ... we installed all the cool stuff in the "tunnel" <gallery caption="Space n Lasers - the tunnel"> Datei:Space_n_Lasers_-_16.jpg|entry to the "tunnel"Datei:Space_n_Lasers_-_19.jpg|it's a long tunnelDatei:Space_n_Lasers_-_18.jpg|78 meterDatei:DSC 1345.JPGDatei:DSC 1340.JPG|adding bug's in python codeDatei:SNL_Tunnel_Target_Prep.JPGDatei:SpaceInLasers Gasrohr.jpgDatei:SpaceInLasers Entry.jpgDatei:SpaceInLasers UFOSchatten.jpgDatei:SpaceInLasers Viehdick.jpg Datei:Space_n_Lasers_-_20.jpgDatei:Space_n_Lasers_-_15.jpgDatei:Space_n_Lasers_-_14.jpgDatei:Space_n_Lasers_-_13.jpgDatei:Space_n_Lasers_-_12.jpgDatei:Space_n_Lasers_-_11.jpgDatei:Space_n_Lasers_-_10.jpgDatei:Space_n_Lasers_-_09.jpgDatei:Space_n_Lasers_-_08.jpgDatei:Space_n_Lasers_-_07.jpg</gallery> == Files ==Most can be found in our Github: https://github.com/hackffm/SpaceNLasers PCB for Target Controller: [[Datei:SpaceInLasers Target Controller V1.0.zip]]