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. 

28 november 2021

Upgrade: ZCN: een CP/M hack voor de Amstrad NC100

In een eerdere blog werd een reparatie van de Amstrad NC100 beschreven. Deze notebook computer is voorgeprogrammeerd met een tekstverwerker, calculator en een dagboek.

Ook is een krachtige BBC Basic aanwezig. Deze programmeertaal is oorspronkelijk geschreven voor de Britse omroep BBC en is te starten door middel van de Function+B toetscombinatie.

Kijkend om meer te kunnen doen met de NC100 stuitte ik op de mogelijkheid om het CP/M operating system te installeren. Specifiek voor de Amstrad is ruim 20 jaar geleden een speciale versie geschreven genaamd ZCN. De laatste versie hiervan is 1.3 en is gebaseerd op CP/M 2.2

CP/M (Control Program/Monitor) is een operating system geschreven door Gary Kildall in 1973 en is de voorloper van het meer bekende DOS (Disk Operating System). Voor CP/M is veel public domain software geschreven die nog steeds van internet is te downloaden. Denk hierbij aan spellen, een C-compiler, allerlei hulpprogramma's, etc.

In de nu volgende stap voor stap handleiding wordt beschreven wat er voor nodig is om ZCN op een Amstrad NC100 te installeren en hoe dit te bereiken is.

Benodigde hardware

De 64kB geheugen in een NC100 is niet voldoende om CP/M te installeren en daarom is een geheugen uitbreiding nodig in de vorm van een "PCMCIA" of "PC Card" insteekkaart. Deze gestandaardiseerde geheugen uitbreiding was vooral begin jaren 90 in gebruik bij notebooks. De maximale hoeveelheid geheugen die de NC100 aan kan is (slechts) 1 Mb. Er bestaan verschillende type PCMCIA kaarten, zoals static RAM (SRAM) en Flash RAM kaarten. Alleen de SRAM kaarten werken in een NC100. Tegenwoordig zijn ze bijna niet meer te krijgen en als ze worden aangeboden (meestal via eBay) dan zijn de prijzen zeer hoog. Voor dit experiment heb ik een 1MB SRAM PCMCIA kaart kunnen bemachtigen op eBay. Deze is van het merk Sunmax. Om het geheugen actief te houden worden SRAM kaarten in tegenstelling tot Flash kaarten voorzien van een CR2025 lithium batterij. De + van de batterij moet gericht zijn naar de voorkant van de kaart, zoals op de foto. Deze zou ongeveer een jaar mee moeten gaan voordat deze weer aan vervanging toe is.

De NC100 wordt verbonden met een computer via de seriële poort om de nodige bestanden over te kunnen zenden. Dit is o.a. mogelijk door middel van een virtuele COM poort via USB. Je hebt hiervoor een USB A naar RS232 nullmodem kabel nodig. (Sub-D 9 pins female). Bij een nullmodem kabel zijn de transmit, receive en handshake signalen gekruist. Aangezien zo'n kabel moeilijk te verkrijgen en vrij duur is, kies ik voor een losse USB A naar RS232 kabel en een losse nullmodem kabel die gewoon aan elkaar zijn te koppelen.

Links de USB A naar RS232 kabel en rechts de nullmodem kabel

Het voordeel van de hier gekozen datakabel die is uitgerust met een Prolific chipset is dat deze direct wordt herkend door Windows 10, dus installatie van een aparte driver is niet nodig.
Na het aansluiten van de kabel hebben we de beschikking over (in mijn geval) een virtuele  COM3: poort. Het COM poort volgnummer kan variëren naar gelang er al andere (virtuele) COM poorten eerder zijn geïnstalleerd.

Benodige software

Download de ZCN versie 1.3 software: zcn13.zip Dit zip bestand bevat alle benodigde bestanden en pak deze vervolgens uit op de PC.
Daarnaast is een programma nodig die bestanden via de seriële poort kan versturen met het XModem protocol. Ik heb gekozen voor ExtraPuTTY, een afsplitsing van de bekende PuTTY terminal software die in bestandsoverdracht via diverse protocollen voorziet.

Software installatie

In de hieronder aangegeven stappen is COM3: als seriële poort gebruikt, dat kan natuurlijk worden vervangen door een andere poort. De gebruikte snelheid is 2400 baud. Dit is vrij langzaam maar wel het meest betrouwbaar op een NC100.

Start extraPuTTY en stel de seriële verbinding in op COM3 en 2400 baud.

Bij installatie van ZCN gaan alle aanwezige documenten en NC100 instellingen verloren. Als deze bewaard moeten blijven doorloop dan eerst de stappen tot aan het kopje "Vervolg".

Stappen op de PC.

In de PuTTY sessie selecteer Files Transfer > Xmodem > Send en selecteer het rrinit.bin bestand uit de map ''bin'' van de uitgepakte zcn13.zip op de PC.

Stappen op de NC100

Verwijder de geheugenkaart op de NC100.
Er moet tenminste 1 bestand opgeslagen zijn op de NC100 anders is er geen bestandsoverdracht mogelijk.

Ga naar het terminal programma: Function+S
Stel 2400 baud in: Menu, down*3, left*2, Stop
Stop het terminal programma: Stop
Laad een document: Function+L
Ontvang het rrinit bestand: Menu, T, M, rrinit, return
Wacht tot het bestand is ontvangen en druk op Stop
Plaats de geheugenkaart in de NC100.
Formatteer de geheugenkaart: 
Menu, F, Y, Stop
Zorg dat het rrinit bestand is geselecteerd.
Bewaar het rrinit bestand op de geheugenkaart: 
Menu, T, P, Stop
Stop de bestandsselectie: Stop
Run rrinit: Function+X
Het display geeft nu aan: "Snapshot written - press Stop".
Druk op
Stop om terug te keren naar het hoofdmenu van de NC100.

Vervolg

Stappen op de PC.

In de PuTTY sessie selecteer: Files Transfer > Xmodem > Send en selecteer het zcn.bin bestand uit de map ''bin'' van de uitgepakte zcn13.zip op de PC.

Stappen op de NC100

Laad een document: Function+L
Ontvang het bestand als tmp: Menu, T, M, tmp, return
Wacht tot het bestand is ontvangen en druk op Stop
Ga naar Basic: Function+B
Laad het tmp bestand: *LOAD TMP 6000
Start ZCN: CALL &6000

ZCN start nu op en onderstaande tekst verschijnt op het display:


Om meer tekst weer te kunnen geven wordt een kleiner lettertype gebruikt zodat in plaats van 8 regels van 80 tekens er nu ruimte is voor 10 regels van 120 tekens.

Er zijn 4 drives beschikbaar A: t/m D:. Formatteer drives B: C: en D: door:

format b:
format c:
format d:

Maak de A: drive "bootable": sys a:

Test het opstarten door middel van een koude herstart:
Zet de NC100 uit.
Houd te toetsen
Function, Stop en <-Del tegelijk ingedrukt en zet de NC100 aan.
De NC100 start nu normaal op, druk op
Function+X om ZCN te starten.

Met behulp van het interne ZCN commando rexec kan naar keuze de rest van de bestanden worden overgezet.

Als voorbeeld zetten we het programma qterm.com over, die ook te vinden is in de uitgepakte zcn.zip in een uuencoded formaat (qterm.uue) omdat de bestandoverdracht van rexec op ASCII formaat is gebaseerd. 

Op de NC100

Ontvang een bestand: rexec qterm.com

Stappen op de PC

Open een opdrachtprompt: Windows-toets+R, cmd, OK
Stel de baudrate in op 2400 baud:
mode com3:2400,N,8
Kopieer het qterm programma:
copy qterm.uue com3:

Nadat het kopiëren is afgerond staat het programma op de NC100 A: drive.
Vervolgens wordt qterm zelf gebruikt om de overige bestanden (in binair formaat) over te zetten. Via qterm kunnen bestanden ook naar de PC worden gestuurd om een backup te maken.

Vanaf dit punt valt er natuurlijk nog ontzettend veel te verkennen en te leren en ik wens iedereen die een NC100 / 150 of 200 heeft en dit ook wil uitproberen veel plezier.

17 november 2021

Toepassing: De eerste home computer Kenbak-1

John Blankenbaker met zijn Kenbak-1
De Kenbak-1 computer wordt beschouwd als de eerste commercieel verkrijgbare home computer. Deze computer is ontworpen door John Blankenbaker.
Nadat hij enkele jaren aan het ontwerp had gewerkt, begon hij in 1971 met de verkoop. De computers werden in zijn garage gebouwd en er zijn er ongeveer 50 van gemaakt, waarvan er wereldwijd naar schatting nog zo'n 14 van bestaan.

In die tijd bestonden er nog geen microprocessors dus de computer bestond uit een zware voeding en een grote print die onder andere maar liefst 132 IC's bevatte. Dit maakte de computer ook prijzig. In 1971 werd $750 gevraagd voor een volledig geassembleerd exemplaar. Omgerekend naar koopkracht van vandaag vergelijkbaar met een bedrag van $5000 (4500 Euro). Een fors bedrag voor een particulier om uit te geven.

De computer werd geklokt op een snelheid van 1MHz en bevatte 256 bytes aan geheugen. Er kon geen toetsenbord of scherm op aangesloten worden. De invoer bestond uit 8 knoppen waarmee in hexadecimaal of octaal instructies konden worden ingevoerd en de uitvoer was zichtbaar op 8 witte lampjes. Verder waren er nog extra 5 knoppen aanwezig voor diverse functies, zoals start, stop en 4 gele lampjes die de functies aanduiden.

De binnenkant van een originele Kenbak-1 met zware voeding en 132 IC's

Naar huidige maatstaven kon je er dus vrij weinig mee doen en het doel was dan ook voornamelijk om mensen kennis te laten maken met de computer en het programmeren. 

Hiernaast staat de advertentie voor de Kenbak-1 uit het tijdschrift Scientific American van september 1971.

Als ik mijn zwager dit soort elektronica laat zien dan vraagt hij altijd "Wat kun je er nou eigenlijk mee doen?" Dan zeg ik meestal: "Helemaal niets". Uit zijn ontgoochelde blik maak ik op dat hij daar ook niets aan heeft, maar de advertentie hiernaast geeft eigenlijk het antwoord: educatie en plezier! en daarnaast de bewondering voor de bedachte techniek en de uitdaging om dingen te bedenken op deze beperkte computer die niet voor mogelijk worden gehouden.

Een voorbeeld van een bekend spelletje uit die tijd was "Kill the bit", waarbij de lampjes om beurten oplichten en precies op het juiste moment de bijbehorende knop moest worden ingedrukt om deze te doven. Zat je er naast dan kreeg je er weer een lampje bij.

De nanoKenbak-1

Het bedrijf Adwater&Stir maakt tegenwoordig replica's van deze computer, althans de bediening, functies en uiterlijk zijn vergelijkbaar, echter de elektronica bestaat nog maar uit een paar moderne IC's.

Drie varianten: De full-size Kenbak-1, de microKenbak-1 op schaal
en de nanoKenbak-1 op een printplaatje.

Speciaal voor de het 50ste jubileum van de eerste home computer heeft Adwater&stir de nanoKenbak-1 versie gemaakt op een "liniaal". Deze past mooi in het rijtje "rekenlinialen", zie hiervoor mijn eerdere blog over een "computer op een liniaal". De nanoKenbak-1 is te bestellen op hun website voor $25. De verzendkosten vanuit de USA bedragen $16,25 en de inklaringskosten bedragen ruim 8 euro. Dus voor totaal zo'n 45 euro heb je de Kenbak-1 in ongeveer 10 dagen in huis. Een schijntje ten opzichte van die $750 (4500 Euro nu) in 1971.

De drukknopjes komen overeen met de drukknoppen op de grotere Kenbak-1 en de lampjes zijn vervangen door witte en gele leds. De onderdelen zijn in Surface-mounted device (SMD) uitgevoerd. Een oplaadbare 3V LIR2032 voorziet het geheel van spanning en een tweede backup batterij is aanwezig om de interne tijdklok onder spanning te houden. De batterij is via een micro-USB aansluiting in een uur opgeladen en de nanoKenbak-1 kan ongeveer 4 uur op een lading werken. De processor is een ATmega328 en daarnaast zijn nog aanwezig: twee 75HC165 schuifregisters, een 75HC595 schuifregister, een DS3231 Real-time Clock (RTC) en een 54bA Lithium battery charge management IC.

Naast de standaard functionaliteit zijn er ook een aantal toevoegingen bedacht. Zo kan de CPU snelheid worden ingesteld om een programma stap voor stap te kunnen volgen.
Het gebruikte ATmega328 IC heeft 8x zoveel geheugen als de Kenbak-1 en naast het kunnen opslaan van zelfgemaakte programma's, zijn ook een 8-tal voorbeeldprogramma's aanwezig, zoals diverse binaire klokjes (Altijd leuk voor op het bureau), een "Blinkenlight" feature (random knipperen van de leds), berekening van priem getallen waarbij de uitkomst d.m.v. de leds binair wordt weergegeven, en verder nog een led patroon en een teller.

Op de achterkant staan de belangrijkste functies weergegeven zoals het laden van de programma's en het instellen van de tijdklok.

Er is een enthousiaste gebruikersgroup actief op https://groups.google.com/g/ukenbak-1 die ervaringen en programma's met elkaar uitwisselen.

Al met al een heel leerzaam hebbedingetje die op een standaardje het ook heel leuk op het bureau zal doen.

30 oktober 2021

Bouw: Een LED Nixie klok

Deze keer een klein bouwproject die al enige tijd op het schap stond: De LED-Nixie-M klok van de website diamex.de, tegenwoordig te verkrijgen op ledgenial.de

Het is een 6 cijferige klok waarbij plexiglas plaatjes met behulp van leds aan de onderkant worden belicht zodat de juiste cijfers oplichten en daarmee de tijd of datum vormen. Het doel hierbij is om het op een Nixie klok te laten lijken.

De Nixie klok

Bij een Nixie klok worden Nixie buisjes gebruikt. Dit zijn glazen buisjes gevuld met een Neon gasmengsel. In deze buisjes zitten van metaal gevormde cijfers 0 t/m 9. Als er een hoge spanning van ongeveer 170 volt op zo'n metalen cijfer wordt gezet dan licht het neon rond het metaal op en worden de cijfers zichtbaar.

Dit is een display techniek uit de jaren '70 vooral gebruikt in calculators en meetapparatuur. led en LCD waren nog niet gangbaar en op grote schaal aanwezig. Ze waren in allerlei formaten en uitvoeringen verkrijgbaar. In de jaren '80 is de productie van Nixie buisjes gestopt, ze zijn dus alleen nog tweedehands verkrijgbaar.

Een in 2016 gebouwde Nixie klok met 4x Z566M (filter verwijderd) en 2x Z5730M buisjes.

De LED Nixie

Niets kan natuurlijk aan een echte Nixie klok tippen maar gezien de hoge prijzen van de Nixie buisjes tegenwoordig, is de led oplossing van dit bouwpakket een leuke alternatieve benadering.

De LED-Nixie-M klok van Diamex bestaat uit 6 modules (printplaatjes) die op een blok zijn geschroefd. In dit blok zitten rechthoekige uitsparingen waar de plexiglas plaatjes ingestoken kunnen worden en die vanuit het printplaatje eronder worden belicht.

Links het blok met de printplaatjes aan de onderkant en rechts
de led controller met een draaiwiel die ook kan worden ingedrukt.

De Plexiglas plaatjes voor de cijfers 0 en 1

Elk cijfer bestaat uit 10 Plexiglas plaatjes die per cijfer worden belicht met twee meerkleuren leds per plaatje. In totaal zijn er dus 120 leds aanwezig.


De Cronios-ESP controller is in staat om maximaal 256 leds aan te sturen.

Elke led module heeft drie in- en uitgangen die aan de onderkant met elkaar worden doorverbonden. Ik gebruik hiervoor bewaarde restanten draadjes die zijn afgeknipt van weerstanden.


De +5V, Data en Massa (GND) worden doorverbonden.

Nu kunnen de 60 Plexiglas plaatjes in de juiste volgorde worden geplaatst, maar eerst moet aan beide zijden het beschermende folie (in totaal 120 stuks!) worden verwijderd. Dit gaat vrij lastig. Waarschuwing: dit kost minimaal 1 nagel...

Om vinger afdrukken op de plaatjes te voorkomen
wordt met handschoenen gewerkt

De controller wordt op de led Nixie aangesloten en via een mini USB kabel van 5V voorzien. Via het controller wiel kan de datum en tijd worden ingesteld evenals de helderheid, kleur, alarm, speciale functies, etc.


Al met al wel veel werk maar zeker niet moeilijk, dus heel geschikt voor de beginnende elektronicus.

22 oktober 2021

Toepassing: Een computer op een liniaal

Wie kent ze niet, de goedkope printplaatjes (PCB rulers) in de vorm van een liniaal, met opdruk van componenten afmetingen, elektronica symbolen en informatie.


Waarom eigenlijk geen echte elektronica op dit soort liniaaltjes? Dat moet Bradley Slattery van Bradsprojects hebben gedacht voorafgaand aan de ontwikkeling van de Digirule.

De Digirule1 en 1A

De eerste Digirule was een interactieve "binaire" liniaal bedoeld om vertrouwd te raken met de werking van digitale elektronica, zoals logische poorten, flipflops, tellers, etc.
Met behulp van een op de liniaal aanwezige CR2032 batterij en een PIC18F45K20 microcontroller kunnen met behulp van 9 drukknoppen en 32 leds de werking van 7 logische poorten, 4 typen Flipflops en een 4 bit Teller worden gedemonstreerd.

Let op de juiste manier van het plaatsen van de batterij (zie beschrijving) anders kan de batterijhouder worden beschadigd.



Een grappig detail is dat de cm en inch waarden op de liniaal als binaire waarden zijn opgedrukt. Op de achterkant staat informatie over de logische poorten, Flipflops en andere zaken.

Via een ingebouwde "verborgen functie" zitten er ook nog eens 8 extra functies in, zoals een Gray teller, schuifregister, dobbelsteen, spelletje, etc.

De verborgen functies zijn als volgt op te roepen:
  • Zet de Digirule uit door middel van de schakelaar. 
  • Houd Knop A ingedrukt terwijl de DigiRule wordt aangezet totdat led B begint te knipperen. 
  • Selecteer met de "Up" en "Down" knoppen van de 4bit Counter de gewenste functie uit de tabel hieronder en druk op knop B.
Een tweede manier (zonder de liniaal uit en aan te hoeven zetten) is de volgende:
  • Houd de knoppen A en B tegelijk ingedrukt totdat alle leds gaan knipperen (Reset)
  • Druk meteen daarna knop A in.
Keuze Functie Opmerking
0001 Normale modus Standaard functionaliteit.
0010 Gray teller Zie Wikipedia voor uitleg.
0011 Flitsende LED' De snelheid kan worden ingesteld met de up/down knoppen.
0100 7 bit schuifregister Ingang te besturen met de knoppen A en B.
0101 Led test Alle leds lichten op.
0110 Persistence of Vision display Beweeg de liniaal snel in horizontale beweging heen en weer, je ziet dan tekst, smiley, etc.
0111 Dobbelsteen Het willekeurige getal 1 - 6 verschijnt als binaire waarde op de "Counter" leds.
1000 Spelletje "Catch the XOR" Druk op knop B zodra de XOR led oplicht. Als het raak is wordt de score verhoogd op de "Counter" leds en wordt de snelheid verhoogd. 1x mis en de teller gaat weer naar 0.
1001 4 bit logica unit Selecteer een functie met de "Logic Gates" knoppen, voer een combinatie van 4x 1 en 0 in via de up/down knoppen, druk op de A knop om de 1e 4 bits te bewaren, herhaal dit met de 2e combinatie en bewaar deze met knop B. Het resultaat verschijnt nu op de Flipflop selectie leds.

De 1A versie is een licht verbeterde versie met een betere kwaliteit drukknopjes en verbeterde firmware. Helaas zijn deze linialen niet meer leverbaar. Voor meer details en instructie video zie Tindie.

De Digirule2, 2A en 2U

Een 8 bits programmeerbare computer op een liniaal ! Hier zijn inmiddels 3 versies van uitgebracht. De eerste versie 2 uitgebracht in 2018 is evenals de Digirule 1 uitgevoerd met een PIC18F45K20 microcontroller. Deze bevat 33 instructies die met behulp van 8 invoer knoppen en 8 leds kunnen worden ingevoerd / weergegeven. Per programma is er ruimte voor 256 bytes geheugen en er kunnen 8 programma's worden opgeslagen (8 bit data en adres) Ook het adres wordt weergegeven met 8 leds.

De in 2019 vernieuwde Digirule2A is uitgebreid met 2 extra instructies en de Run / Stop leds zijn onder de knop geplaatst in plaats van er boven. Voor de rest is deze identiek aan de Digirule2.


De Digirule 2A

In 2020 verscheen de Digirule2U met maar liefst 54 instructies, een USB C aansluiting en een ingebouwde seriële debug monitor en assembler. Deze liniaal is uitgerust met een PIC18F46K20 microcontroller. Deze beschikt ten opzichte van de vorige controller over een dubbele hoeveelheid Flash en RAM geheugen (64kB / 3kB).
De mogelijkheden van deze 24 Euro kostende liniaal zijn vergelijkbaar met computers uit de jaren '70 zoals de Kenbak-1 ($750 bij de introductie in 1971), de 
Altair 8800 ($650 in 1975) of de Imsai 8080 ($440 als bouwpakket, eind 1975).


De Digirule 2U

De Digirule2U is prima te combineren met de Video Terminal emulator uit mijn vorige BLOG via de Rx en Tx op de Expansion Port, maar aansluiten op een PC met een USB C kabel en een terminal emulator kan natuurlijk ook.

Alle software en handleidingen zijn te downloaden op github.com 
Momenteel (oktober 2021) is alleen nog de Digirule2U leverbaar via Tindie

De linialen in actie

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.