Google Analytics

27 december 2021

Toepassing: TTGO VGA32 microcontroller

Tijdens het zoeken naar een geschikte terminal emulator stuitte ik op een ESP32 controller met PS/2 aansluitingen voor keyboard en muis en een VGA scherm. Aangezien de prijs laag was (ongeveer 13 euro op AliExpress) heb ik er een besteld om de mogelijkheden ervan te onderzoeken.

De TTGO VGA32 v1.2 van LilyGo

Hardware

De afmetingen van deze microcontroller zijn slechts 67 bij 32mm en 17mm hoog (afgerond en exclusief het uitstekende deel van de VGA connector).
De kern wordt gevormd door een ESP32 dual core processor op 240MHz met een voedingsspanning van 3.3 V. Deze controller bevat onder andere 4MB flash geheugen en maar liefst 520KB SRAM.

Op de printplaat is ook Bluetooth en Wi-Fi aanwezig en een TP4054 IC voor het laden van een oplaadbare Li-ion/Li-Po batterij. Links op de foto zien we de VGA connector en rechts de PS/2 aansluitingen voor de keyboard en muis. Aan de bovenkant zien we net boven de processor een aansluiting voor een Wi-Fi antenne en een tweepolige Molex Picoblade connector voor de batterij. Aan de voorkant links zit een 3.5mm jackplug voor de audio, een aansluiting voor een speaker en een micro usb aansluiting voor de 5V voedingspanning en het uploaden van software.

Inmiddels (december 2021) zijn er 3 versie's uitgebracht: 1.1, 1.2 en 1.4. De plaatsing van de connectoren verschilt onderling.

vlnr: versie 1.1, 1.2 en 1.4

Ten opzichte van de eerste versie (1.1 april 2019), beschikt versie 1.2 (juni 2019) over een een 3.5 mm audio jackplug en connector voor de speaker uitgang. De micro USB aansluiting is iets lager geplaatst en de Reset en "IO36" drukknopjes zijn allebei aan de rechterkant gezet. In versie 1.4 (april 2020) is een Micro SD kaartlezer toegevoegd en zijn de drukknopjes weer aan weerszijden van de print geplaatst, alhoewel lager dan bij versie 1.1

Er zijn diverse ontwerpen voor een bijbehorend 3D geprint kastje beschikbaar, let dus goed op dat het 3D ontwerp past bij de juiste versie van de module.

Bijbehorende 3D geprinte kastjes (v1.2) met dank aan collega PJ.
Het laatste ontwerp (1.4) is nu ook beschikbaar op Thingiverse.

Software

De TTGO VGA32 controller is net zo te programmeren als andere microcontrollers door bijvoorbeeld gebruik te maken van de Arduino IDE of PlatformIO software.
Voor de TTGO VGA32 kan de zogenaamde FabGL library worden gebruikt, ontwikkeld door Fabrizio Di Vittorio. Deze bibliotheek kan via "Reference > Libraries" worden toegevoegd aan de Arduino IDE en bevat ondersteuning voor ontwikkeling van een Grafische User Interface en een "Sound en Game Engine". Volg de volledige installatie instructie hiervoor op Youtube.

Toepassingen

Na installatie van de software bibliotheek zijn er een groot aantal kant en klare voorbeelden beschikbaar, zoals:

  • Een ANSI/VT terminal emulator (waar ik naar op zoek was).
  • Emulatie van computers zoals de Altair 8800 en de VIC-20.
  • Emulatie van de spelklassieker Space invaders
Ook heeft Fabrizio het voor elkaar gekregen om CP/M 2.2, DOS 3.31 en Windows 3.0 te draaien op deze microcontroller.
Al met al blijkt de LilyGo TTGO VGA32 een zeer krachtige microcontroller te zijn voor weinig geld, waarvoor al veel software is ontwikkeld.

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.

03 december 2021

Bouw: Maak en speel je eigen retro games met de uSVC

uSVC staat voor uChip Simple VGA Console. Met deze zelfbouw hardware ter grootte van een creditcard kun je zelf retro games maken en spelen. De kern wordt gevormd door de uChip microcontroller.

De uChip

De uChip is in 2019 ontwikkeld door het Italiaanse bedrijf ITACA Innovation. Het is een van de kleinste controllers die ik tot nu toe heb gezien. Het printje meet 10.2 mm x 28.5 mm en weegt 2.5 gram. 

De kleine uChip (rechts) in verhouding tot een Arduino Uno (links).

Op de uChip is een Atmel Cortex M0+ ATSAMD21 microcontroller aanwezig die compatibel is met de Arduino Zero. Deze 32-bits controller wordt geklokt op 48MHz en beschikt over maar liefst 256 kB Flash geheugen en 32 kB RAM geheugen. Verder bevat het printje een reset knop, een led en een Micro USB connector. Er is er ook nog een geïntegreerde stroomvoorziening aanwezig van 3.3V en 5V, 0.5A. De uChip kost nog geen 16 Euro.

Microscoop opname van de controller, links de resetknop rechts de USB aansluiting

Ook aan de onderkant zijn componenten aanwezig


De uSVC

Het bouwen van de uSVC is redelijk simpel, de micro SD kaartlezer is al voor gesoldeerd en de Engelstalige handleiding laat zien waar en in welke volgorde de 34 componenten geplaatst worden met aandacht voor de juiste polariteit en IC richting.

Boven v.l.n.r. USB-B connector voor de 5V voeding, een audio plug en de VGA connector.
Aan de onderkant de micro SD kaartlezer.

Op de print zit links een 16 MHz kristal en een voetje voor de uChip gemaakt van 2 female pinheaders i.v.m. de hoogte. Rechts onder een 74AHC245 IC. Dit is een achtvoudige tri-state bus-transceiver t.b.v. buffering van het VGA signaal. Daaronder een gele power led en een rode led geeft activiteit op de SD kaart weer.

De uChip in de voet van de uSVC geplaatst.

Het geheel kan in een 3D geprint kastje worden geplaatst. Deze is apart bij het bouwpakket te bestellen.



De uChip resetknop kan aan de bovenkant van het kastje worden bediend.

Op de uSVC kan een VGA monitor worden aangesloten en via een USB-A (female) naar micro USB verloopkabel is een een USB keyboard aan te sluiten. De USB connector kan ook met de PC worden verbonden om de software te updaten. De spellen worden via de PC op de Micro SD kaart gezet. De aanbevolen grootte van de micro SD kaart is 1Gb.

De uSVC is te koop via crowdsupply en kost ruim 28 Euro exclusief verzendkosten.