Schachbrett-Schaltplan/PCB-Layout

Hey Leute, wie hier beschrieben , möchte ich auch ein Schachbrett mit etwas Arduino-Unterstützung machen. Hier möchte ich einige Fragen zu dem Schaltplan und dem PCB-Layout stellen, das ich plane. @Dmitry Grigoryev beschreibt eine Möglichkeit, die Sensoren mit einem 1-8-Demux anzusprechen. Aufgrund der Tatsache, dass meine schematischen Fähigkeiten immer noch nicht die besten sind, haben Sie bitte etwas Nachsicht. Trotzdem möchte ich meine Idee kurz beschreiben.

  1. Schema für Feld

    Für Version 1 unseres Boards planen wir, einen Fotowiderstand zu integrieren, um festzustellen, ob sich eine Figur auf einem Feld befindet oder nicht. Dazu möchte ich ein einfaches Schema teilen:Geben Sie hier die Bildbeschreibung ein

Das sieht vielleicht für einige von euch blöd aus, aber das sind meine ersten Versuche. Meine Idee dahinter ist, den Fotowiderstand und den anderen Widerstand (wobei der Widerstand von Feld zu Feld variiert) als Spannungsteiler zu verwenden, um zu bestimmen, welches genaue Feld durch eine Figur ausgelöst wird.

Frage 1: Ist das machbar oder hat jemand eine bessere Idee, dann bitte mit mir teilen?

  1. Kommunikation mit Controller

    Wir zielen darauf ab, einen Arduino Micro/Nano oder Mega zu verwenden, wenn mehr Speicher benötigt wird. Für die Kommunikation haben wir uns für den MCP23017 - I/O-Expander entschieden . Jedes Feld ist also mit einem von 4 Controllern verbunden (64 Felder = 4 * 16-Bit-E / A-Expander). Ich weiß, dass es ein analoges Signal ist, aber alles, was ich brauche, ist nur ein „Hey, ich wurde ausgelöst“-Signal.

Frage 2: Ist das auch machbar oder hat jemand von euch eine bessere und sauberere Lösung. Wartbarer und erweiterbarer für zukünftige Versionen.

  1. Leiterplatte

    Ich plane, eine Leiterplatte aus allen Ideen zu erstellen, die für andere Anwendungsfälle erweiterbar sind (z. B. Hinzufügen von ADC usw. oder so ähnlich).

Dieselbe Frage wie früher auch.

Puhh, ich hoffe, ich habe alles hinzugefügt und die Frage erfüllt alle Stackexchange-Standards. Wenn nicht, geben Sie bitte Feedback, um meine Frage zu verbessern.

Möchten Sie nicht lieber wissen, um welchen Typ und welche Farbe es sich bei der Figur handelt?
@ott-- Völlig richtig, das ist der Schritt für weitere Versionen. Für Version 1 konzentrieren wir uns auf die allerwichtigsten Fakten.
Um den Kommentar von @ott-- zu erweitern, da diese Implementierung Typ/Farbe nicht erkennt, wäre es nicht am besten, direkt zu einem Schema zu springen, das dies kann ? Mein Punkt ist, dass es Ihnen beim "eigentlichen" Projekt, das eine Typ- / Farbunterscheidung erfordern würde, nicht viel helfen wird, wenn Sie dies zum Laufen bringen. Was wäre, wenn Sie zwei konzentrische Kontakte an der Unterseite jedes Teils anbringen und ein 1-Draht-Datenschema (parasitäre Leistung) verwenden?
@uint128_t. Thx für deinen Kommentar. Ok, nehmen wir an, wir würden die Idee auf einen Typ-/Farbschritt erweitern. Könnten Sie in Ihrem parasitären Machtteil Ihres Kommentars bitte genauer sein? Auch wenn ich Ihren Kommentar bestätige, mein Kollege ist derjenige, der die Befehle erteilt und ich bin derjenige, der versucht, Sachen für seine Anforderungen zu entwickeln. Ich bin jedenfalls offen für neue Ideen
" ... bitte bloß mit meiner". Lädst du uns alle ein, uns auszuziehen, oder meinst du „ertrag es mit mir“?
Da es EINE Startposition gibt und sich mit Ausnahme von Burgen immer nur ein Stück bewegt, sollte es möglich sein, zu wissen, welches Stück wo ist, ohne einzelne Stücke zu identifizieren. Beförderte Bauern könnten ein Problem werden.
@transistor: Mist, thx, mein Englisch trifft mich manchmal hart :D
Wenn Sie eine LED hinzufügen (oder zu einem Optokoppler wechseln, dh QR1113) und die Lichtreflexionskammer zu einem geschlossenen System machen und die Basen in verschiedenen Graustufentönen malen, können Sie möglicherweise Teile daran erkennen, wie viel Licht sie zurückreflektieren
Es wäre nicht allzu schwierig, zwei Koaxialkontakte auf der Unterseite jedes Stücks anzubringen, die mit Kontakten auf der Platine zusammenpassen würden. Zwei Drähte reichen aus, um Strom zu liefern und Daten zu übertragen, siehe 1-Wire-Protokoll von Maxim.
@ uint128_t oder einfach ihren Widerstand in einem rudimentäreren Modus messen
@WesleyLee. Dies ist eine sehr interessante Lösung. Vielleicht können Sie und uint128_t eine Antwort geben, damit ich einige Antworten positiv bewerten kann?

Antworten (1)

Gemäß den Kommentaren poste ich eine alternative Lösung, die Ihren Anforderungen möglicherweise besser entspricht.

Wenn Sie die Basis der Figur und das Feld auf dem Schachbrett zu einem geschlossenen System machen, können Sie Teile ~vielleicht~ daran erkennen, wie viel Licht sie zurückreflektieren.

Dafür braucht man meiner Meinung nach 4 Dinge:

1 Schachbrett und Figur als geschlossenes System (Außenlicht kann die Messwerte stören, je nachdem, welchen Sensor Sie verwenden)

2 Basen der Teile in verschiedenen Graustufen bemalen.

3 Fügen Sie ein festes/bekanntes Licht hinzu (z. B. IR-LED, QRE1113 , wodurch der LDR eliminiert wird)

4 Verwenden Sie einen Port-Expander mit analogen Eingängen (Schnellsuche gibt einige Alternativen: ADS1015 , MCP3424

Ich habe den QRE1113 unter vielen Bedingungen verwendet und es gelingt ihm, Umgebungslicht sehr gut abzulehnen. Nur bei direkter Sonneneinstrahlung hatte ich Probleme.

Ich glaube, Sie brauchen 6 * 2 verschiedene "Grautöne" (König, Dame, Turm, Läufer, Springer, Bauer, Schwarz und Weiß). Ich habe keine Ahnung, wie schwer oder einfach es ist, diese Präzision bei der Druck-/Lichtabtastung zu erreichen. Es ist jedoch sehr einfach zu prototypisieren. Sie brauchen nicht einmal den i2c-Port-Expander.

Mir ist gerade eingefallen, wenn ein Grau dem nächsten Schritt zu ähnlich wird, sollten Sie vielleicht grüne / rote Basen (für schwarze und weiße Teile) und farbige Gele auf Ihren Sensoren ausprobieren. Durch eine intelligente Kombination erhalten Sie möglicherweise alle Daten, die Sie für das Teil benötigen.
Nicht sicher, warum Sie die Stücke unterscheiden müssen. Mein Schachcomputer aus den 80er Jahren hatte einen "Knopf" für alle Felder unter dem Brett, und Sie drückten eine Figur, die Sie bewegen wollten, nach unten und schoben sie auf das Feld, auf das Sie sie bewegten. Hat gut funktioniert und kann heutzutage durch viele verschiedene Methoden ersetzt werden
Thx für deine Antwort. Diese Lösung klingt für mich vielversprechend