Google Analytics

Posts tonen met het label Arduino Uno. Alle posts tonen
Posts tonen met het label Arduino Uno. Alle posts tonen

11 december 2021

Bouw: Retroball, een vierpersoons led spel

In 2017 is een crowdfunding actie gestart op kickstarter voor de productie van het zelfbouw spel Retroball. Dit spel is gebaseerd op het spel pong (een van de eerste videospellen) maar dan voor maximaal 4 spelers. Elke speler beschikt over een draaiknop en kan daarmee het "batje" besturen om "de bal" terug te kaatsen. Dit kunnen ook meerdere ballen zijn, naar gelang de ingestelde moeilijkheidsgraad. Bij elke misser gaat er een punt af en de speler die als laatste overblijft wint.

Retroball © Bradley Slattery, Bradsprojects

Helaas is de kit inmiddels uitverkocht, maar ik heb er nog een kunnen bemachtigen op eBay van iemand die er niet aan toe was gekomen om deze te bouwen en hem kwijt wilde. Aangezien Retroball opensource hardware betreft is ook het mogelijk om de PCB te laten maken bij b.v. PCBWay en de onderdelen los te bestellen. Alle benodigde informatie hiervoor is onderaan op de Bradsprojects pagina te downloaden.

Het led display

Het display is een kant en klaar 32x32 RGB led matrix paneel. Op dit paneel zijn 1024 smd leds gemonteerd (type 3528) met een onderlinge afstand van 5mm. Ze zijn op o.a. Aliexpress te verkrijgen voor ruim 10 Euro. Het paneel wordt voor de afwerking in een gebogen donker gekleurde Plexiglas plaat geschoven.

Aan de onderkant van de RGB led matrix zijn drie connectoren aanwezig, een voor de aansturing via een HUB75B interface, een voor de 5V voeding en een derde is voor het doorlussen naar een volgend led paneel. Omdat we maar een paneel gebruiken, wordt de rechtse connector in deze toepassing niet gebruikt.

De HUB75 interface

De HUB75 interface bestaat uit een gestandaardiseerde IDC connector van 2x8 pinnen en een data protocol.

Pin layout van de connector


Het data protocol is als volgt:

1. Klok de data in voor de 16 kolommen (bij 1 paneel) in de volgorde R1,G1,B1,R2,G2,B2 m.b.v. CLK.
2. Maak OE hoog (1)
3. Selecteer het rij adres via A,B,C,D (0-15)
4. Maak LAT hoog (1)
5. Maak LAT laag (0)
6. Maak OE laag (0)
7. Herhaal dit totdat alle 16 rijen zijn ingesteld.





De kit en het ontwerp


De diverse onderdelen van de kit uitgestald op de werktafel.

De afmetingen van de zwarte printplaat zijn 24x24 cm. De aansturing is naar keuze door middel van een voorgeprogrammeerde PIC 18F46K22 microcontroller of een Arduino Uno.

Later is aan het ontwerp ook de mogelijkheid toegevoegd om een Teensy microcontroller te plaatsen omdat de Arduino Uno een beperking heeft dat er maar maximaal twee van de vier potentiometers kunnen worden gebruikt.

Bij gebruik van de Arduino of Teensy moet de PIC controller worden verwijderd en daarom word de PIC controller in een IC voet geplaatst. Er kan ook een batterijhouder worden toegevoegd voor de Teensy om de Real Time Clock (RTC) van een continue spanning te voorzien. Daarnaast is een selectie mogelijk om de 5V voor de potentiometers te verlagen naar 3.3V ter bescherming van de Teensy.

De bouw


De PIC microcontroller voet, potentiometers en connectoren zijn gesoldeerd.
De ruimte boven is voor een Arduino Uno of Teensy controller.

Een leuk detail is dat aan de onderkant van de potentiometers siliconen plakvoetjes worden bevestigd zodat het geheel krasvrij op tafel kan worden geplaatst.

Ik plaats ook vast male pin headers voor een Arduino Uno om later te kunnen experimenteren met zelfgemaakte spellen en andere display toepassingen. De Teensy female pin headers laat ik weg omdat ze de Arduino Uno in de weg zitten. Mocht ik later over willen stappen dan kan ik ze alsnog plaatsen, daarmee vervalt dan de Arduino Uno mogelijkheid.

Een Arduino Uno geplaatst i.p.v. de PIC microcontroller

Na het plaatsen van de PIC controller in de IC voet is het alleen nog een kwestie van het aansluiten van de voedingskabel en interface kabel aan de printplaat en het led paneel.


Daarna bevestig ik het led paneel met 4 bouten en afstandsbussen op het moederbord.
Aan de rechter zijkant is een USB-B connector aanwezig voor de 5V voedingsspanning. Het gemeten stroomverbruik is maximaal 0.25A.

Naast het Pong spel is er nog een "Secret menu" aanwezig met 7 andere mogelijkheden, zoals een race spel en een dobbelsteen. Deze is op te roepen door de potentiometer rechtsonder eerst volledig naar rechts te draaien en daarna volledig naar links.

Deze zelfbouw kit voor beginners is eenvoudig te maken waarbij met name de aansturing via een Arduino Uno of Teensy interessante mogelijkheden biedt om verder te experimenteren en de toepassingen uit te breiden.

14 oktober 2021

Bouw: ASCII video terminal

Een Arduino Uno is een kleine computer die heel geschikt is voor aansturing en uitlezing van allerlei elektronische componenten, bij voorbeeld LED's, schakelaars, sensoren, stappen motoren, etc. 

Wat er -in tegenstelling tot een Raspberry PI- niet standaard op zit, zijn aansluitingen voor een beeldscherm en een toetsenbord. In sommige projecten is daar wel eens behoefte aan en Geoff's Projects heeft daar een leuke oplossing voor bedacht in de vorm van een bouwpakketje. Dit pakket is o.a. te bestellen bij BudgeTronics.eu.

Het betreft een bouwpakket voor een ASCII video terminal. In de jaren 70 werden terminals gebruikt bestaande uit een toetsenbord en beeldscherm waarvan een aantal op een grote centrale computer (mainframe) werden aangesloten. Deze terminals beschikten over een seriële RS-232 poort voor de communicatie en bevatte de hardware en geheugen voor het weergeven van ASCII tekst (25 regels van 80 tekens) en het uitsturen van het toetsenbord. Zelf heb ik nog een tijd een ADM-3A terminal in bezit gehad.

 
ADM-3A terminal © Sudo Null

Al met al een hele grote bak met elektronica en zoals de foto hieronder laat zien kan dit tegenwoordig veel compacter. Het bouwpakket bevat een printplaat niet groter dan een credit card. 

Op bovenstaande foto zijn de vier connectoren inmiddels al gesoldeerd en volgt nu de rest van de onderdelen.

Alles is nu gesoldeerd en de flux is verwijderd met IPA.

Het hart wordt gevormd door de al voorgeprogrammeerde PIC32MX250F128B IC links in het midden. Dit IC doet eigenlijk alles, het genereren van het VGA signaal, inlezen van een PS/2 toetsenbord en de seriële communicatie (RS-232 op TTL niveau).

Van links naar rechts: de VGA connector, de video output connector en de PS/2 toetsenbord connector.

Aan de achterkant links de aansluitingen voor de 3.3V voeding (afkomstig van de Arduino) en  de seriële transmit (TX) en receive (RX) en rechts een USB B aansluiting voor een externe 5V voeding die eventueel gebruikt kan worden in plaats van de 3.3V.

We sluiten een scherm en toetsenbord aan op de ASCII video terminal en verbinden de 3.3V en GND met de corresponderende aansluitingen op de Arduino. De TX van de terminal wordt verbonden met de RX (Pin 0) op de Arduino en de RX van de terminal met de TX (Pin 1).

Voor de Arduino heb ik voor de gelegenheid een CLI (Command Line Interface) programma geschreven die fungeert als een computer met een heel beperkte set commando's.

Eenmaal aangesloten blijkt er geen beeld op de VGA monitor te zijn. Na bestudering van het schema blijkt dat ik op de bovenkant van de printplaat nog een keus had moet maken voor de tekst kleur door een soldeerbrug aan te brengen. Ik kies voor groen omdat dat op de terminals in de jaren 70 ook gebruikelijk was.


Het werkt: de tekst wordt weergegeven op het VGA scherm en de via het toetsenbord gegeven commando's worden door de Arduino verwerkt.
De ASCII video terminal ondersteund de VT52 en VT100 terminal "escape codes" waarmee speciale commando's kunnen worden gegeven.

Een leuk detail is dat er ook escape codes zijn ingebouwd voor het tekenen van rechthoeken, lijnen en cirkels, iets waar de VT52 en VT100 terminals uit de jaren 70 niet over beschikten.