Fischertechnik. Intelligent interface 30402.

Intelligent Interface 30402


Naar de hoofdindex
 

 

 

 

Seriele kabel en converter
USB-to-serial converter en seriele kabel.

 

 

 

 

 

 

 

 
Gamecontroller
Een Fischertechnik gamecontroller.

 

 

 

 

 

 

 

 
webmaster info


 
Fischertechnik, het constructie-speelgoed. Als kind nog mee gespeeld, sindsdien uit het oog verloren. Onlangs zag ik op Marktplaats een 'Intelligent Interface', bedoeld om Fischertechnik modellen met behulp van een PC te besturen. Leuk! Niet alleen bestond Fischertechnik nog, de verbinding met een computer was er nu ook.

Ik was er alleen wat laat bij. Het interface werd geleverd met software bedoeld voor MS-DOS. Dat is 16-bits software, terwijl 64 bits nu de norm is. Niet dat het veel uit maakte, want die software stond op een 3,5 inch diskette die ik toch niet meer kan lezen... Besturing via een seriele poort is ook wat lastig, moderne computers hebben zo'n poort niet meer.
Het interface is vermoedelijk al in de jaren '90 op de markt gebracht. Dat is vrij oud, maar het idee erachter is nog bij de tijd. Acht digitale ingangen, twee analoge ingangen en vier bestuurbare uitgangen kunnen ook nu nog van pas komen. De 8 digitale inputs zijn bedoeld voor schakelaars of reed-contacten waarmee een status aan of uit wordt aangegeven. De analoge inputs EX en EY zijn bedoeld voor sensoren voor licht, vochtigheid of temperatuur. De vier outputs M1 t/m M4 kunnen worden verbonden met motoren of lampen.
Het leek me leuk om uit te zoeken of het interface met moderne middelen nog te gebruiken is. En dat is-ie. Met moderne programmeertalen als Perl en Python is dat goed te doen. Ik heb met beide talen een paar voorbeeldprogramma's gemaakt, zie verderop. Perl en Python kunnen draaien op Windows, Linux, Apple en BSD.

Wat is er nodig? Allereerst een computer met een seriele (RS232) poort. Laptops hebben die vrijwel nooit meer, desktops hebben hooguit nog een header op het moederbord. Gelukkig bestaan er USB-adapters die een RS232 poort ter beschikking stellen. Die adapters zijn goed verkrijgbaar en niet duur. De mijne, merk Logilink, kostte zo'n 10 euro. Verder is er een seriele kabel nodig. Dat moet een 'straight cable' zijn, zoals die vroeger met een modem werd gebruikt. Die kabels hebben aan het ene eind een male connector en aan het andere eind een female connector. Het mag geen zogenaamde null-modem of 'cross' kabel zijn. Zo'n kabel heeft female connectors aan beide einden.

Verder heeft u Perl en/of Python nodig. Er zijn wel programma's in andere talen te vinden, bijvoorbeeld in C en zelfs nog Turbo Pascal. Perl en Python zijn moderner. Zo is het werken met bits in die talen mogelijk zonder lastige bit-operaties. Dat maakt het programmeren een stuk simpeler. Ik heb gebruik gemaakt van Python versies 3.11 (FreeBSD/Linux) en 3.13 (Windows). Voor Perl is gebruik gemaakt van de versies 5.36.3 (FreeBSD) en 5.40 (Windows).

Voor wat betreft Perl is nog een waarschuwing op z'n plaats. Er zijn lange tijd problemen geweest met de module voor seriele communicatie, bestand CommPort.pm. Dat betrof de 64-bits versies van Perl, de 32-bits versies hadden dat niet. Inmiddels zijn die problemen verholpen, maar dat heeft misschien nog niet alle distributie-sites bereikt. De versie van Strawberry Perl die ik onlangs (oktober 2024) installeerde had het probleem nog wel. Als u foutmeldingen als Second Read/Write attempted before First is done at... krijgt, controleer dan of u de laatste versie van CommPort.pm heeft. Goede versies zijn verkrijgbaar bij uw Perl-leverancier en bij www.cpan.org. Eventueel kunt u ook deze versie van CommPort.pm proberen.

Ik heb een paar programma's geschreven die werken met het Intelligent interface, zowel in Perl als in Python. De eerste, test genaamd, is bedoeld als voorbeeld om het programmeren van input- en outputpoorten te laten zien. Het Perl programma vindt u hier (download). De versie geschreven in Python vindt u hier (download). Eerst een aantal opmerkingen die voor al deze programma's gelden:

Om het interface te testen moeten er schakelaars of reed-contacten aangesloten worden aan E1 t/m E8. Aan de uitgangen M1 t/m M4 kunnen het beste motoren of lampen aangesloten worden. Controleer of variabele Commport de juiste waarde bevat en start dan het test-script, met Python of met Perl. In acht stappen wordt de aansturing van M1 t/m M4 getoond. Daarna wordt in een tweede while-lus de status van poorten E1 t/m E8 getoond. Wijzigingen met de aangesloten schakelaars worden meteen op scherm getoond. Met de schakelaar aan E8 kan het programma beeindigd worden. Dat kan ook met Ctrl-c of Alt-F4.

Programma verkeerslicht.pl (en .py) stuurt een verkeerslicht aan. Het groene licht wordt aangesloten op output M1, het oranje licht aan output M2 en het rode licht aan M3. Daarmee stuurt het programma een verkeerslicht op de bekende wijze aan. Pas ook hier zo nodig de variabele Commport aan.
Het was mijn bedoeling om hier ook een lichtsensor te gebruiken, zodat tijdens de nacht alleen het oranje licht knippert. Maar omdat ik niet over een werkende lichtsensor beschik is dat nog niet ingebouwd. Als alternatief kan een schakelaar aan E1 gebruikt worden om dat te simuleren. Het Perl verkeerslicht vindt u hier (download). De Python-versie staat hier (download).

Voor het laatste programma is inderdaad een gamecontroller nodig, bijvoorbeeld zoals hier rechts afgebeeld. Daarmee kan een spelletje Pong! bestuurd worden. Dit is een grafische versie van het spel dankzij gebruik van een extra module pygame, die u waarschijnlijk eerst moet downloaden en installeren. De Pythonversie is bedoeld voor twee spelers: gamecontroller 1 wordt verbonden met poorten E1 en E2, gamecontroller 2 moet zijn aangesloten op poorten E3 en E4. Je kunt er een single-player versie van maken door poort E6 met een kabeltje op "AAN" te zetten. Programma beeindigen gaat met Alt-F4. De Python-versie van het programma staat hier (download).
De Perl versie is simpeler door het ontbreken van een module specifiek voor game-ontwikkeling. Dit is een single-player versie in een terminalvenster die met de gamecontoller aan poort E1 en E2 bediend kan worden. Deze versie werkt trouwens ook met de toetsen Z en / voor de peddle en q of Ctrl-c om het spel te beeindigen. De versie in Perl vindt u hier (download).

Tot slot nog een meer object-georienteerde aanpak. Hier is programmatuur m.b.t. de seriele poort ondergebracht in een Perl module (.pm bestand) genaamd ft30402.pm (download). Bijbehorend programma ft30402.pl (download) is een OO-versie van het verkeerslicht dat gebruik maakt van deze Perl module. Het programma bevat nu alleen nog de functionaliteit t.b.v het verkeerslicht en is daardoor aangenaam kort. U kunt e.e.a. proberen door beide bestanden naast elkaar in een directory te plaatsen en vanuit die directory ft30402.pl te starten.
Hetzelfde met Python: Routines m.b.t. de seriele poort zijn in een Python module genaamd ft30402.py (download) opgenomen. Programma pong.py (download) maakt gebruik van die module en is daardoor korter en eenvoudiger, ondanks dat nu ook met toetsen q, e en i, p gespeeld kan worden.

Zie hier voor een bespreking van het gebruik van de analoge inputs EX en EY. Tot zover. De 'Extension Module' die Fischertechnik heeft uitgebracht is nog niet meegenomen. Dat komt omdat ik die niet heb. Maar daar wordt aan gewerkt en t.z.t. zullen er hier wel een paar updates verschijnen. Het wegschrijven van programmatuur naar het interface vergt waarschijnlijk wat assembler code, wat dat betreft ontbreekt het me aan specifikaties. Mochten de programma's opmerkingen of vragen opleveren dan hoor ik dat graag. Bovenin vindt u een contactformulier en m'n mailadres staat hier ook wel ergens.




Laatst gewijzigd op 15 november 2024.