Borg16: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Zeile 247: Zeile 247:


====Langtons Ameise====
====Langtons Ameise====
Eine Simulation von [[http://de.wikipedia.org/wiki/Ameise_(Turingmaschine) Langtons Ameise]], einer Turingmaschiene die komplexe Muster erzeugt.
Eine Simulation von [[http://de.wikipedia.org/wiki/Ameise_(Turingmaschine) Langtons Ameise]], einer Turingmaschine die komplexe Muster erzeugt.


====Laborlogo====
====Laborlogo====

Version vom 22. April 2010, 23:17 Uhr

         
Borg16

Release status: Stable [box doku]

Borg16Screen.jpg
Description Ein 256-LED Displaycontroller
Author(s)  Various (Suschman)
Last Version  1.x ()
Platform  AVR (ATmega32)
Download  Software: SVN browse
Hardware: SVN browse

„Stable“ befindet sich nicht in der Liste (experimental, beta, stable, obsolete, unknown) zulässiger Werte für das Attribut „Pr status“.




About

Der Borg16 ist eine auf Andres originalem 16x16 Borg basierende, professionell hergestellte Platine zur Ansteuerung von 256 Leds. Üblicherweise sind diese als eine Matrix von 16x16 Leds angeordnet, aber auch andere Formate sind möglich. Sie bietet eine serielle Schnitstelle und einen Anschluss für bis zu zwei Joysticks im 9-Pin Atari-Standard. Zusätzlich kann ein Canbus-Controller zur Vernetzung bestückt werden.

Die LEDs werden durch die Borgware mit vier Helligkeitsstufen angesteuert. An Software existiert bereits eine breite Palette an Spielen, Demos und Testprogrammen. Zur Entwicklung neuer Software kann auch ohne Hardware der Simulator verwendet werden.

Aufbau

Hardware

V1

Borg16Render.jpg Borg16Schematic.png
Borg16Bestueckung.png Borg16Board.jpg

V2

Borg16V2Schematic.png

Bauteile

Bestückungsliste:

Position     Bauteil/Wert

C1           330µF                
C2           100nF                
C3           100nF                
C4           100nF                (Wird nicht bestückt)
C5           100nF                
C6           18pF                 
C7           18pF                 
D1           1N4148               
D2           1N4004               
IC1          UDN2981AN            
IC2          UDN2981AN            
IC3          74HCT164N            
IC4          74HCT164N            
IC5          ATMEGA32             
LED1         LED 5mm Grün         
LED2         LED 5mm Rot          
R01-R16      *Siehe Text*         
R17          10K                  
R18          10k                  
R19          10k                  
R20          1k                   
R21          1k                   
R22          1k                   
R23          1k                   
R24          33k                  
T01-T16      IRLD024              
T17          BC547B               
T18          BC547B               
X1           16Mhz Quarz (HC49/U) 
RESET        Kurzhubtaster        
PWR          Hohlsteckerbuchse    
ISP          Stiftleiste. 2x5     
COL          Wannenbuchse 16Pol   
ROW          Wannenbuchse 16Pol   
JOY          Sub-D9 Male           
RS232        Sub-D9 Female         

IC6          MCP2510P             (Optional)
IC7          MCP2551P             (Optional)
CAN                               (Optional)
Borg16V2 Bestückungsliste:

Position    	Bauteil / Wert                
C1       	470µF          
C2       	100nF          
C3       	100nF          
C4              100nF                (Wird nicht bestückt)
C5       	100nF         
C6       	18pF         
C7       	18pF                     
D1       	1N4148        
D2       	1N4004           
IC1      	UDN2981AN       
IC2      	UDN2981AN         
IC3      	74ACT164N         
IC4      	74ACT164N       
IC5      	ATMEGA32                               
LED3     	LED 3mm Gelb         
R01-16	 	Passend für LEDs, siehe Text               
R18      	10k             
R19      	10k            
R20      	1k             
R21      	1k                                             
R26      	1k           
T17      	BC547B               
T18      	BC547B               
X1       	16Mhz Quarz (HC49/U) 
RESET    	Kurzhubtaster        
PWR      	Hohlsteckerbuchse    
ISP      	Stiftleiste. 2x5     
COL      	Wannenbuchse und Pfostenstecker 16Pol
ROW      	Wannenbuchse und Pfostenstecker 16Pol
16 adriges Flachbandkabel
JOY      	Sub-D9 Male           
RS232    	Sub-D9 Female               
T01-T16  	IRLD024

Can Option:
R17      	10K            
IC6      	MCP2510SO    
IC7      	MCP2551SN     
R24      	33k	    
LED1     	LED 5mm Grün    
LED2     	LED 5mm Rot   
R22      	1k           
R23      	1k	     
CAN                         

RFM12 Option:
IC8      	RFM12         
R25      	10k	     
ANT	 	ca 17,5cm Kabel

Die RFM12 und CAN Optionen schliessen sich leider gegenseitig aus,
es geht immer nur eines von beidem!

Diesen Bausatz kannst du im Labor kaufen.

Reicheltliste

Bauteile für den Borg16 gibt es zusammen mit den Platinen auf dem Congress 2007 in Berlin als fertige Tüte, ansonsten kann mit den unteren Links jeweils ein Satz Bauteile direkt bei Reichelt bestellt werden. Dabei beinhaltet Borg16-Core alle Bauteile für die Controllerplatine außer dem Can-Controller. Borg16-Can umfasst dieselben Bauteile inklusive den Can-Bauteilen.

Bestückung

Kleine Ungereimtheiten noch korrigieren, die Bestückungsliste ist korrekt

Die Bestückung der Platine läuft, wenn du schonmal einen Bausatz zusammengelötet hast, nach dem bekannten Schema ab. Sollte dies dein erstes Bauprojekt sein, empfiehlt es sich das Tutorial von Microcontroller.net zu lesen.

Zunächst werden die Widerstände ab R17 der Reihe nach bestückt. R1 bis R16 sind die LED-Vorwiderstände. Diese sind von den von dir verwendeten LEDs abhängig und im Bausatz nicht enthalten. Danach kommen alle ICs an ihre Plätze, für den Microcontroller ist ein Sockel empfehlenswert. Nun folgen die Zeilentreiber in Form der MOSFETs T1 bis T16. Deren großer Doppelpin zeigt dabei in Richtung der Wannenstecker. Jetzt kommen der Reset-Taster, die Verpolschutzdiode 1N4001 (D2) und der Quarz an ihren Platz. Weiter geht es mit den Kondensatoren 18pF (C6, C7) und 100nF (C2, C3, C5). C4 wird nicht bestückt. Die Diode 1N4148 (D1) wird stehend festgelötet, dabei zeigt der schwarze Ring auf dem Bauteil in Richtung des Strichs auf dem Bestückungsdruck. Dann werden die Transistoren T17 und T18, die LEDs, die Wannenstecker, die ISP-Steckerleiste, die Hohlsteckerbuchse (PWR) und die Sub-D Buchsen verlötet. Die weibliche Buchse kommt dabei auf den RS232-Port.

LED Matrix

Für den Bau des eigentlichen Displays können LEDs in beliebigen größen (zb. 3mm, 5mm, 10mm Durchmesser) und beliebiger Farbe verwendet werden. Nur blaue und weisse LED´s haben eine zu hohe Dropoutspannung, wer sie unbedingt verwenden will muss die Steuerung mit 6V betreiben. Wichtig ist es nicht zu sparsam zu sein und LEDs mit 400mcd Helligkeit oder mehr zu verwenden, keine low-cost oder preiswerte Standardware. Diese verkraften die Pulsströme nicht und leuchten sehr Dunkel.

(Hier Beispielliste möglicher Led-Widerstand Kombinationen eintragen - WIP)

  • Osram 3mm Kingbright Amberfarben - 22 Ohm ??
  • Osram 5mm Kingbright Rot (Reichelt Bestellnummer "LED 5-4500 RT") - 12 Ohm
  • Osram 10mm Kingbright Rot (Reichelt Bestellnummer "LED 10-4500 RT") - 12 Ohm

LED Vorwiderstand berechnen

Über die Treibertransistoren gehen ca. U_treiber = 1.5-2V verloren. Die Spannung über den Vorwiderstand kann also mit
U_r = U_betrieb - U_treiber - U_led berechnet werden.
Beispiel: rote LED hat 2V abfall, Treiber Abfall mit 2V angenommen, 5V Betriebsspannung:
U_r = 5V-2V-2V = 1V
Der Vorwiderstand wir nun nach R=U/I berechnet. Für einen LED-pulsstrom von 100mA:
R = 1V/0.1A = 10 Ohm
Da die LEDs mit 1/16 Einschaltdauer bei ca. 100Hz angesteuert werden, kann man ihnen ruhig Überstrom geben. Das Datenblatt sagt dazu genaueres, wieviel erlaubt ist. Alle LEDs sollten mindestens 50mA vertragen können. Die Schaltung kann Pulse bis zu 200mA erzeugen mit passendem Vorwiderstand. Dann muss das Netzteil aber auch 16*200mA = 3.2A liefern können.
Für blaue oder weisse LEDs kann die Schaltung mit 6V Betreibsspannung versorgt werden, damit die LEDs strotz der Spannungsabfälle über die Treiber noch ihre 3.5V bekommen. Noch höher sollte man die Versorgungsspannung aber nicht machen, weil sonst der Mikrokontrolller oder andere Teile leiden könnten.

Aufbau

  • In Ikea Bilderrahmen RIBBA in der Größe 50x50x4.5 cm (Bauvorschlag)
  • Auf Lochraster mit Milchtransparentem Plexiglas (Bauvorschlag)

Plexiglas gibt es beim stegplattenshop.com (kostenloser Zuschnitt!) in Castrop-Rauxel oder bei Ebay, Handelsbezeichnung "PLexiglas XT Opal Weis" in unterschiedlichen graden an Lichtdurchlässigkeit.

Programmieren

Auf dem Controller im Bausatz ist neben diversen Modulen auch der "Foodloader" für die serielle Schnitstelle installiert. Mit einem normalen Verlängerungskabel (1 zu 1) oder USB-RS232-Wandler kann das Board neu programmiert werden. Bei leerem Controller kann über die ISP-Steckerleiste ein Programmer angeschlossen werden.

Joysticks

Verwendung finden Joysticks nach dem 9-Pin Atari Standard der 80er, z.b vom C64,Amiga,Atari ST,Atari VCS 2600. Gut und extrem robust sind die "Competition Pro" Joysticks. Gibt es noch recht häufig auf dem Flohmarkt.

Wurden aber auch noch mal neu Produziert von Speedlink als [Competition Pro Retro] , zu bekommen unter anderem bei [Vesalia]

Software

Software gibt es im SVN.

Die neuere Software Borgware-2D unterstütz auch den Borg16. Hier gibt es die Möglichkeit, das ganze per make menuconfig¹ zu konfigurieren, und per make simulator² auf einem PC zu simulieren. Für alle, die keinen CAN-support brauchen (den gibt es noch nicht in der Borgware-2D) ist diese neuere Software die bessere Wahl.

  • ¹ (benötigt ncurses, bei Ubuntu in libncurses5-dev enthalten)
  • ² (benötigt glut, bei Ubuntu in freeglut3-dev enthalten)

Compilieren

AVR-Toolchain + Uisp installieren, Software entpacken oder auschecken, mit make bauen, make sflash zum hochladen per Bootloader.


Ubuntu 7.10:

sudo apt-get install gcc-avr
sudo apt-get install avr-libc
sudo apt-get install binutils-avr
sudo apt-get install avrdude
in foodloader-0.21/launcher/ aus svn make und die entstandene ausführbare launch-bootloader /usr/bin kopieren, 
dann in borg-16 make && make sflash

Module

Spiele

Tetris

Das altbekannte Tetris, mit Highscoreliste.

Bastet Tetris

Diese Version von Tetris, angelehnt an Bastet, gibt dir immer den gerade am schlechtesten passenden Stein. Eine Herrausforderung :).

First Person Tetris

Hier dreht sich nicht der Stein, sondern das Spielfeld. Also lass dich nicht verwirren...

Snake

Du spielst das bekannte Spiel "Snake" auf dem Borg.

LaborInvaders

Spaceinvaders Clone

Breakout

Ein Breakout Clone, ähnlich Arkanoid.

Animationen

AutoSnake

Hier spielt die Snake mit sich selber :).

AutoBreakout

Breakout als Animation.

GameOfLife

Das Spielfeld wird per Zufall befüllt, danach beginnt es sich nach den Regeln von Conways Spiel des Lebens zu verändern. Wenn eine Stagnation eintritt, wird ein "Glider" eingeworfen, die Simulation endet bei vollständiger Auflösung aller Zellen.

Langtons Ameise

Eine Simulation von [Langtons Ameise], einer Turingmaschine die komplexe Muster erzeugt.

Ein scrollendes Laborlogo :)

"Matrix Effekt"

Genieße die Matrix...

"Lagerfeuer"

Es wärmt in kalten Nächten :).

Zufallsgenerator

Nach etwas Getüftel tut es der Zufallsgenerator recht gut, dies kann man hier betrachten.

Laufschrift

Ein frei programmierbarer Scrolltext, nutzt BorgTextAnim.

Counter

Der Counter zählt die Neustarts der Platine hoch, ein zurücksetzen erfolgt beim überschreiben des eeprom, aber nicht bei einem normalen Upload der Firmware.

Testprogramme

  • Wechselndes Schachbrettmuster
  • Wandernde Linien mit Helligkeitswechsel
  • Spirale

MCUF-Schnittstelle

Peter hat ein MCUF-Modul geschrieben (zu finden im svn). Damit steht die Fülle der Blinkenlight-Apps für den Borg offen. Mit Hilfe von BlinkenOutput kann man über das serielle Interface MCUF-Pakete an den Borg schicken.

ich hab das ganze mit meinem 2m-Aufblas-Borg unter Mac OS X zum Laufen gebracht.

meine Kommandos dafür:

./BlinkenOutput  -d /dev/tty.usbserial -s 115200,N,8,1
./BlinkenSend  -i ../examples/static.bml -l 0 

wichtig: die MCUF-Pakete müssen als Graustufenwerte 8bit (0-255) festgelegt werden (header im .bml-file: <blm width="16" height="16" bits="8" channels="1"> )

Downloads

Bestellen

Es sind noch einige Borg16V2 Platinen vorhanden. Stückpreis liegt bei 14 Euro.
Bei interesse melde dich einfach auf der Mailingliste, oder komm vorbei :-).

Mailingliste

Links im Netz

Hier sind ein paar Links zu Webseiten die sich mit dem Borg16 beschäftigen, hier und da gibt es spannende Software für das Display zu entdecken...

Artikel Todo

* V2 Bilder hochladen!
* Aufbauanleitung überprüfen
* Aufbau der Matrix beschreiben/schaltplan!!
* Reicheltlisten fixen/anlegen/einstellen
* Led-widerstandsvorschläge einfügen/bearbeiten
* Für Software Zipfiles erstellen??
* Farbcodes der Widerstände hinzufügen
* Neue V2 Hardware einpflegen!
* Allgemeine Verbesserungen
* Aufbau in RIBBA bilder von Smartin und Hansi einarbeiten
* Aufbau Lochraster nach AndreBorg einarbeiten??
* ...
* Way more Nakka!

New Stuff

* Portierung von Spielen des [Mignon Game Kits] ??
* Portierung von Spielen des ["LED Game for AVR"] ??