Univac 9400 Show Project
Fact Sheet
Formulierung: 09. Juni 2013
Ziel: Die Peripherie der Univac 9400 zeitgesteuert an- und ausschalten, im Rahmen einer audiounterstützten "Show", die einen aktiven Computer simulieren soll.
Umsetzung: Die Geräte werden mit etwa 12-15 Relais ein- und ausgeschaltet. Die Sound-Samples werden jeweils nur einige Sekunden lang. Eine Umsetzungsmöglichkeit ist ein "Drehbuch", wo drin steht, was wann passieren soll; der Ablauf ist dann vollständig vorbestimmt. So ein Drehbuch könnte computerlesbar so aussehen:
# Zeit in Minute:Sekunde -> Aktion 00:00 Output1 power on 00:02 Play Sound "sprechen1.mp3" 00:07 Output2 power on 00:10 Output1 power off 00:15 Play Sound "tacker.mp3" ... usw ...
Je nach Kreativität kann sowas auch zufallsgesteuerte Elemente beinhalten oder, worunter allerdings die Wartbarkeit leiden würde, vollständig ohne domänenspezifischer Sprache, also direkt, programmiert werden.
Hardwarekauf
Hardware: Dies ist der Scheideweg. Diskutiert werden zwei grundverschiedene Hardware-Setups:
- Entweder Microcontrollerbasiert, z.B. auf Arduino-Basis. Vorteil: Direkt viele TTL-Ausgänge. Nachteil: Soundausgabe ist sehr schwierig.
- Oder sehr bequem mit einem System-on-a-Chip-Platinenrechner, und zwar dem Raspberry PI. Vorteil: Multimediaausgaben und Programmierung sehr bequem, sehr Highlevel. Nachteil: Hardwareausgaben ggf. schwieriger, etwas teurer.
Raspberr PI bei Reichelt
Was es bei Reichelt als RPi an interessanten Sachen zu kaufen gibt:
- RASPBERRY PI A: 256MB RAM, kein Ethernet für 27 Euro
- RASBPERRY PI B: 512MB RAM, hat Etnerhet, für 37 Euro
Eine Gegenüberstellung von RPi a vs b gibts z.B. hier: A vs B, scheint echt nur das Ethernet zu sein. Für unser Projekt eigentlich uninteressant, allgemein aber hochinteressant, so ein Ethernet-Anschluss.
Als Riserboards (s.u.) gibts bei Reichelt derzeit nur:
- RPI HUB MODULE, liefert nur RS232-Anschlüsse, keine universellen I/Os.
Raspberry PI Digital I/O
Das Raspberry PI besitzt eine GPIO-Schnittstelle mit 25 Pins, die frei programmierbar sind, aber leider mit einem 3V-Pegel arbeiten und damit nicht TTL-Kompatibel sind. Details: RPi: Low level peripherals
Für das RPi gibts GPIO-Riserboards und Seiten, die solche fertigen Boards und Projekte listen. Wir brauchen kein OSS-Projekt mit Schematics, sondern ein fertiges Produkt. Übersichtsseiten:
Wir brauchen ca 16 5V-Ausgänge. Das liefern etwa:
- 32Channel Expander: http://www.abelectronics.co.uk/products/3/Raspberry-Pi/18/IO-Pi-32-Channel-Port-Expander-for-the-Raspberry-Pi-computer-boards
- 16Channel Expander, fuer 7€: https://www.modmypi.com/slice-of-pio-raspberry-pi-breakout-boad
Witzigerweise sind die Shops alle in UK, liefern aber recht günstig nach Europa.
Arduino Audio Output Extensions
Bei Microcontrollern sind TTL-Ausgänge in aller Regel kein Problem; wir haben auch ein paar Arduinos vorrätig, die hoffentlich 2x8bit Ausgänge haben, ansonsten könnte man zu den AVR ATMegas greifen, die mit 4x8 Digital I/O-TTL-Ausgängen bestens gerüstet sind.
Die AVR (und damit auch Arduino) uCs haben alle D/A-Wandler eingebaut (PWM), die sind für ernsthafte Audioausgabe aber kaum brauchbar (im Sinne von MP3-Wiedergabe). Es gibt allerdings auch hier diverse Bastlerprojekte die in die Richtung gehen.
Eine Übersicht über Projekte bietet z.B. Arduino InterfacingWithHardware Audio. Das sind aber, soweit ich geschaut habe, alles Bastlerprojekte und keine fertigen Platinen zum Andocken.
Raspberry PI
Wir haben uns fürs Raspberry PI als Lösung entschieden. Die 3,3V Spannung sollte zum Ansteuern der Relais reichen; diese Lösung ist sehr bequem. rPIs sind extrem leicht in der Erstbenutzung.
Der Aufbau soll Headless erfolgen, also benötigen wir Debugging-Drähte, hier würde sich eine serielle Verbindung sehr gut eignen. HDMI ist Mangelware, über Composite könnte man notfalls einen alten VGA-Monitor anschließen, siehe RPi video config für Details.
Pinbelegung für den GPIO Rev 2.0-Baustein:
- Die +5V eignen sich zur Spannungsversorgung des Boards
- 17 Pins übrig die als I/O konfiguriert werden können, per Default sind alle Pins Eingänge, außer 14 & 15 (Quelle)
- Pin 14 TxD und 15 RxD sind als Serial Terminal vorkonfiguriert
- Pin 2 SDA0 und 3 SCL sind als I2C-Bus vorkonfiguriert (Quelle)
Eine Alternative ist der I2C-Bus (uC: i2C), an den man einen Port-Expander anschließen könnte, was auch eine gescheite Lösung wäre bei vielen Anschlüssen.
Fürs RS232-Terminal benötigt man einen MAX232-Chip, der mit 3V-Eingangspegeln umgehen kann. Quellen etwa minipiio und max3232cpe. Normale RS232-ICs scheinen das nicht zu können. Ggf. kann man eine Softwarelösung per USB-RS232-Converter am RPi verwenden (Wird mit udev vmtl. gehen, vgl usbtty0-quelle, allerdings braucht man dennoch ein Null-Modem-Kabel wenn man damit an den PC will)