Forum: Mikrocontroller und Digitale Elektronik Projekt: Schachcomputer mit OLED-Display, Gehäuse aus Holz (open source)


von Sebastian L. (arakis)



Lesenswert?

Hallo,
zusammen mit meinem Bruder entwickeln wir derzeit einen Schachcomputer 
aus Holz. Ursprünglich als "kleines" Projekt ist daraus ein 
"Riesen"-Projekt geworden, denn es sah am Anfang alles recht einfach 
aus. Ich für meinen Teil bin für die Planung, Elektronik und 
Programmierung zuständig, mein Bruder für das Gehäuse in Sachen Holz. 
Die Entwicklung läuft seit ca. 6 Monaten.

Auch wenn das Projekt einen kommerziellen Gedanken verfolgt, stellen wir 
das ganze Projekt open source, sprich die Baupläne als auch der 
Quelltext der Software wird als open source zur Verfügung gestellt:
https://github.com/Arakis/TamaniChess
Jede Menge Fotos gibt es hier:
https://drive.google.com/folderview?id=0B_A2gK_LY7NyR0ttTGtDRTJfcDA&usp=sharing

Auch zu erwähen ist, dass ich in Sachen Elektronik praktisch bei Null 
angefangen bin, ebenso Ausrüstungsmäßig. Bei vielen Fragen hat mir 
dieses Forum sehr geholfen, das meiste konnte per Suchfunktion gelöst 
werden.

Das ganze befindet sich natürlich noch im Prototypen-Stadium. Dennoch, 
es scheint das Projekt könnte bald fertig sein.

Da ich die PCB-Platinen (unbestückt) anfertigen lassen werde, und ein 
"Fehler" ziemlich teuer werden kann, fänd ich es prima, wenn jemand mal 
"drüber schauen" könnte. Das ist natürlich leichter gesagt als getan, 
aber ich versuche das ganze so gut wie möglich zu erklären.

Die Figuren werden per Magnet und Reed-Schalter erkannt (natürlich nur, 
ob dort eine Figur steht oder nicht). Das "Sensorbrett" enthält 64 
Reed-Schalter und 81 LED's, wovon die 4 in den äußersten Ecken "blinken" 
während des "Boot-Vorgangs" von Linux. Der Blink-Mechanismus ist ein 
einfacher Blinkerschalter, welcher per NAND-IC deaktiviert wird, sobald 
die Schachsoftware gestartet ist.

Das Sensorbrett (welches im Prinzip an ICs nur Parallel-to-Serial und 
Serial-to-Parallel-Ic's enthält), ist an einem Raspberry-Pi 
angeschlossen, ein 700 Mhz schneller Mini-Computer mit 512 MB RAM. 
Dazwischen befindet sich die "Support"-Platine, an der auch das 
OLED-Display angeschlossen ist. Letzteres wird per Software-SPI 
angesteuert. Die Display-Platine ist so aufgebaut, sollte das 
OLED-Display nicht mehr lieferbar sein und ein anderes Display verwendet 
werden muss, so muss einfach nur diese "kleine" Platine angepasst 
werden. Aufgaben der Display-Platine: 3.3V zu 2.8V Level-Shifter, 12V 
Stromversorgung, Ein- und Ausschalten des Displays.

Die Support-Platine enthält "verschiedenen" Krams, wie 
Spannungsversorung, Kurzschluss- Überspannungs- und Verpolungsschutz, 
Blinker-Schaltung und Extra-IOs.

Dinge, die mir so aufgefallen sind und wo ich denke, dass man sie 
erwähnt / drüber diskutiert:
- Ich habs absolut nicht hinbekommen auf der Display-Platine 3.3V zu 
2.8V per Spannungsteiler zu reduzieren. Habe es stundenlang ausprobiert. 
Was aber auf Anieb funktionierte und sich als absolut funktionierend 
herausgestellt hat: Einfach einen 3.9 Ohm Wiederstand in Reihe schalten. 
Ich denke mal das klappt auch nur deshalb, weil die das Display ständig 
den gleichen Strom verbraucht. (2.8V --> IC-Logik-Pegel, die OLEDs 
werden per 12V angesteuert). Der IC ist sehr empfindlich: Es sind zwar 
3.3V max. erlaubt, doch dann wird er arg heiß. 2.8V sind empfolen. Bei 
2.6V und niedriger streikt er.
- Routen sind (derzeit) per Autorouting gemacht. Optik ist mir egal, 
aber ich denke mal die Masseführung dadurch recht "unschön".
- Die Platinen werden hinterher beidseitig mit Masseflächen überzogen. 
Oder sollte man sie nur einseitig machen?
- 3.3V, 5V und GND vom Mini-Computer sind mit dem 3.3V, 5V und GND-Netz 
der Support-Platine verbunden. Ich darf nicht alles vom Computer nehmen, 
da dieser max. 300 mA liefern kann/darf, die Sensorplatine aber mal 
locker 1A fressen (könnte, wenn "alles" leuchtet). Also habe ich mein 
eigenen 3.3V Linearspannungsregler.
- Müssen diese Netzte zusammen sein? Müssen sie getrennt sein oder 
sollten sie getrennt sein? Wie ist es, wenn ein 3.3V Output-Pin mit dem 
GND der Sensorplatine verbunden ist (wenn alles getrennt wäre), dann 
würden diese erst am "Stecker" der Stromverbindung "zusammenfinden". 
Reicht das oder führt dies zu Problemen? Vom IC-Design wäre es denke ich 
mal kaum möglich, die GND's komplett zu trennen.
- Ursprünglich war der Plan so: Hauptstromversorgung (5V) an die 
Support-Platine, und der Raspberry ist dann an der Support-Platine 
angeschlossen. Leider flimmert dabei der Bildschirm, wenn ich die 
Sensorplatine abfrage. (Es kommt aber interessanterweise zu keinen 
Übertragungsfelern beim Bildschirm, könnte aber daran liegen, dass ich 
sie Datenkanäle(Sensorplatine/Display) niemals gleichzeitig anspreche). 
Schließe ich jedoch die 5V-Versorgung an einem "Steckbrett" an und 
verbinde beides "separat" mit jeweils der Support-Platine und dem 
Mini-Computer, so gibt es keine Störungen. Das Display hat also ein 
Problem damit, wenn der Mini-Computer sein Saft von der support-Platine 
bezieht. Die Strom-Eingang und Ausgang liegen sich überigens fast 
gegenüber, ist das schon der Grund?
- Die Kondensatoren sind im Datenblatt denke ich mal korrekt angebracht, 
aber ich denke mal, man darf diese nicht "irgendwo" auf der Platine 
platzieren. Der Autorouter wird schätzungsweise die Leitungen 
"irgendwie" verlegen (auch wenn die Bauteile am optimalen Ort 
positioniert wurden), so dass die Kondensatoren kaum noch einen nutzten 
haben. Kurz gefragt: Sind die Kondensatoren, wie sie angebracht sind, 
eigentlich derzeit "nutzlos"?

- Die Leitung SCR-LIGHT-ON ist eine heikle Leitung, aktiviert die 12V 
Stromversorung. Das Display hat eine spezielle Power-Up und Power-Down 
Sequenz, ansonsten könnte es schnell kaputt gehen (laut Datenblatt). 
Startet meine Software, weiß sie jedoch nicht mit 100%er 
Wahrscheinlichkeit, ob beim 4021-IC SCR-LIGHT-ON nun aktiv ist oder 
nicht. Deshalb leite ich sicherhaltshalter immer erst die 
Power-Down-Sequence ein, um danach die Power-Up-Sequence einzuleiten. Um 
mir das (gerade beim vielen Debugging) zu sparen, würde ich gerne 
SCR-LIGHT-ON zusätzlich mit dem 595'er verbinden, um den Zustand 
einzulesen. Ist a) dann noch genug Saft für den Transistor auf der 
Display-Platne da (davon gehe ich aus), und b) ist garantiert, dass der 
595'er nicht versehentlich irgendwie einen Reverse-Strom an der Basis 
verursacht bzw. es zu einem komischen Verhalten kommt? Im Prinzip muss 
ich halt nur feststellen, ob SCR-LIGHT-ON auf "High" ist, ohne jedoch 
den eigentlich Client (Der Q2-Transistor auf der Display-Platine) 
"komische Sachen" macht.

Im angehangen PCB-Design des Sensorbretts verwende ich ausschließlich 
TPIC6C596 (anstatt der 595'er), doch in der Praxis nutze ich gerade ein 
Sensorbrett mit 595'ern, weil ich die Platine noch nicht neu anfertigen 
lassen habe. (Leider nicht PIN-Kompatibel) Deshalb kommt auf die 
Support-Platine hinterher noch ein 3.3V zu 5V Level-Shifter drauf. (Der 
Mini-Computer liefern seine IO's in 3.3V, der TPIC6C596 möchte aber 5V). 
Den TPIC6C596 muss ich nutzen, weil der 595 zu wenig Strom liefert, um 
mind. 4 LEDS stark genug zum leuchten zu bringen (20 mA je LED).

PS: Ich weiß, das Schematic ist "gewöhnungsbedürftig" gezeichnet :)

Lieben Gruß,
Sebastian

von Daniel C. (dan1el)


Lesenswert?

Hallo,

super Projekt!!! Man sieht förmlich die Arbeit, die darin steckt!

Kannst Du noch etwas zum verwendeten Schachprogramm/-engine schreiben?

von Sebastian L. (arakis)


Lesenswert?

Daniel C. schrieb:
> Kannst Du noch etwas zum verwendeten Schachprogramm/-engine schreiben?

Ich nutze die Engine "Stockfish", das ist die stärkste open soruce 
engine der Welt. Zwar kann man den Schwierigkeitsgrad stark reduzieren, 
sie ist dann aber immer noch recht gut. Ich muss mal ausklügeln, wie man 
die noch schwächer bekommt. Ggf. muss ich noch eine andere (schwächere) 
Engine "initial" ausliefern. Weitere Engine sind nämlich geplant, aber 
werden per Software update nachgereicht. Die Steuersoftware selbst ist 
in C# geschrieben:
https://github.com/Arakis/TamaniChess/tree/master/src/chess.application

Man muss auch gewinnen können, sonst macht es keinen Spaß.

Daniel C. schrieb:
> super Projekt!!! Man sieht förmlich die Arbeit, die darin steckt!

Danke!

Lieben Gruß,
Sebastian

von ... (Gast)


Lesenswert?

Schönes Projekt. Wollt ihr das wirklich irgendwann mal in Stückzahlen 
verkaufen? Das wird schwierig, weil es von der Fertigung her ziemlich 
aufwendig aussieht und ich kann mir nicht vorstellen, das es so viele 
Leute gibt, die entsprechend viel Geld dafür bezahlen würden.

Aber als Hobbyprojekt ist das wirklich sehr schön.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.