= Univac 9400 Show Project = == Fact Sheet == **Formulierung**: 09. Juni 2013 **Ziel**: Die Peripherie der [[http://www.technikum29.de/de/rechnertechnik/univac9400|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: * [[http://www.reichelt.de/Programmer-Entwicklungstools/RASPBERRY-PI-A/3/index.html?;ACTION=3;LA=446;ARTICLE=133473;GROUPID=2969;artnr=RASPBERRY+PI+A|RASPBERRY PI A]]: 256MB RAM, kein Ethernet für 27 Euro * [[http://www.reichelt.de/Programmer-Entwicklungstools/RASPBERRY-PI-B/3/index.html?;ACTION=3;LA=446;ARTICLE=133474;GROUPID=2969;artnr=RASPBERRY+PI+B|RASBPERRY PI B]]: 512MB RAM, hat Etnerhet, für 37 Euro Eine Gegenüberstellung von RPi a vs b gibts z.B. hier: [[http://downloads.element14.com/raspberryPi1.html|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: * [[http://www.reichelt.de/Programmer-Entwicklungstools/RPI-HUB-MODULE/3/index.html?;ACTION=3;LA=446;ARTICLE=133759;GROUPID=2969;artnr=RPI+HUB+MODULE|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: [[http://elinux.org/RPi_Low-level_peripherals|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: * http://elinux.org/RPi_Expansion_Boards 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. [[http://playground.arduino.cc/Main/InterfacingWithHardware#Audio|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 [[http://elinux.org/RPi_config.txt#Video_mode_options|RPi video config]] für Details. Pinbelegung für den GPIO Rev 2.0-Baustein: [[Image(http://www.tr-raspberrypi.org/image.axd?picture=%2f2013%2f05%2fgpio-sema.png, width=100%)]] * 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 ([[http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/|Quelle]]) * Pin `14 TxD` und `15 RxD` sind als Serial Terminal vorkonfiguriert * Pin `2 SDA0` und `3 SCL` sind als I2C-Bus vorkonfiguriert ([[http://elinux.org/RPi_Low-level_peripherals#General_Purpose_Input.2FOutput_.28GPIO.29|Quelle]]) Eine Alternative ist der I2C-Bus ([[http://www.mikrocontroller.net/articles/I2C|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 [[http://zuzebox.wordpress.com/2012/06/24/minipiio-rs232-v0-10/|minipiio]] und [[http://codeandlife.com/2012/07/01/raspberry-pi-serial-console-with-max3232cpe/|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 [[http://blog.synyx.de/2013/03/running-rxtx-on-your-raspberry-pi/|usbtty0-quelle]], allerdings braucht man dennoch ein Null-Modem-Kabel wenn man damit an den PC will)