Review: interfaceboard GreatFET One
op
Great Scott Gadgets biedt nu met de GreatFET One een ontwikkelboard dat de terugkeer naar die mythische ‘goede oude tijd’ mogelijk moet maken.
Ontdek de GreatFET One ook op Elektor TV.
Wat krijg ik?
De GreatFET One is in principe ontworpen als open-source hardware – een beschrijving van de software is te vinden in een wiki, terwijl de op Kicad gebaseerde hardware-designs van GitHub gedownload kunnen worden. Als u de GreatFET One koopt, krijgt u het pakket zoals getoond in figuur 1 – naast het (gebruiksklare en van alle headers voorziene) board krijgt u ook een USB-kabel en een tool dat ‘wiggler’ wordt genoemd op het board aangesloten extensies gemakkelijk te kunnen verwijderen.
Documentatie over de LibGreat geheten hoofd-interactie-API is hier te vinden.
Snelle installatie!
Als een ontwikkelaar een programma snel in elkaar wil zetten, gebruikt hij tegenwoordig de Python-programmeeromgeving. De auteur heeft de hieronder stapsgewijs beschreven snelle demonstratie gemaakt onder Ubuntu 18.04 LTS. Als u in plaats daarvan onder Windows wilt werken, kunt u de installatie-instructies op het net vinden.
In ieder geval begint de installatie van de bibliotheek met de pip3-pakketmanager:
Python brengt al geruime tijd zijn eigen pakketbeheer mee via welke we het GreatFET-pakket inclusief zijn deels zelfs native afhankelijkheden laden. Belangrijk is dat u in ieder geval pip3 moet gebruiken – de pip die bedoeld is voor Python 2.X werkt niet. In de volgende stap controleren we of ons gebruikersaccount al deel uitmaakt van de PlugDev-groep:
tamhan : tamhan adm dialout cdrom sudo dip plugdev lpadmin sambashare kvm pico
Voordat we de procescomputer op de computer aansluiten, voeren we de volgende commando’s in om de udev-regels bij te werken:
tamhan@TAMHAN18:~$ sudo udevadm control –reload-rules
De beloning voor alle inspanningen is dat u een aangesloten procescomputer – zoals weergegeven in figuur 2 - kunt herkennen door het commando greatfet info in te voeren.
De GreatFET One is zeker geen product dat ‘normale’ ontwikkelaars dagelijks zullen kopen. Alleen al om deze reden hebben de printen geruime tijd bij de distributeur gelegen, zodat een firmware-update met het volgende commando zeker aanbevelenswaard is:
De auteur heeft in de volgende stappen met firmware-versie v2020.1.2 gewerkt.
Combinatorische procescomputersystemen hebben over het algemeen te lijden onder het feit dat de bandbreedte tussen de afzonderlijke modules beperkt is. Om de mogelijkheden te testen, wil de auteur in de eerste stap een karakteristieke golfvorm uitvoeren. Hiervoor heeft u een .py-bestand nodig, dat u eenvoudig kunt bewerken in Visual Studio-code:
tamhan@TAMHAN18:~/greatfetspace$ python3 worker.py
Een mooie bijkomstigheid van de Microsoft IDE is dat de terminal direct na activering retourneert - zodat de Python-3 interpreter op dezelfde plaats aangeroepen kan worden.
In de volgende stap kunnen we een GreatFET-object en een pin-object maken volgens het volgende schema:
gf = GreatFET()
pin = gf.gpio.get_pin('J1_P4')
pin.set_direction(gf.gpio.DIRECTION_OUT)
Great Scott omzeilt de problemen van Raspberry Pi en Co. met betrekking tot de relatie tussen logische en fysieke pin doordat dat elke header een uniek label heeft. De hier gebruikte string staat bijvoorbeeld voor de fysieke vierde pin van header J1 (zie figuur 3).
Dit wordt gevolgd door een oneindige lus die de golfvorm uitvoert:
pin.write(True)
pin.write(False)
pin.write(True)
pin.write(False
De figuren 4 en 5 tonen dat de twee golfdalen ongeveer even lang zijn, en ook dat het geheel niet bijzonder snel en ook niet bijzonder frequentiestabiel is.
Houd er overigens bij het experimenteren rekening mee dat het board een puur 3,3V-apparaat is: als u 5 V aansluit, komt de controller te overlijden.
Experimenten
In de goede oude tijd was het inlezen en uitvoeren van analoge waarden best wel lastig. De GreatFET One wordt geleverd met een A/D-omzetter die het eenvoudigste kan worden geactiveerd door een van de vele commandoregel-hulpjes. Standaard wordt de spanning op pin J2_P5 gemeten:
3.18076171875V
Om de enorme mogelijkheden van de combinatie van Python en hardware te demonstreren, wil ik zowel de NumPy-library als MatPlotLib laden – als die twee ontbreken, zult u ze handmatig moeten installeren. In de volgende stap gebruik ik mijn vertrouwde spanningsreferentie, die ik een tijdje op temperatuur heb laten komen – die zit in een theeblikje en daar is het lekker warm. Ondertussen scvhrijf ik het volgende programma.
In de eerste stap laad ik zoals gewoonlijk een aantal libraries:
from matplotlib import pyplot as plt
from greatfet import GreatFET
De geïmplementeerde ADC-leesfunctie is een complexe aangelegenheid. Voor het gemak maak ik het NumPy-array op een tamelijk brute manier aan – merk op dat het gebruik van de API niet erg efficiënt is:
store = np.array(gf.adc.read_samples(1))
i = 0
while i < 1000:
store = np.append(store, gf.adc.read_samples(1))
i=i+1
Nu zijn er twee verschillende procedures beschikbaar. Methode één is het maken van een bin-range die ik vervolgens doorgeef aan de NumPy-functie histogram:
hist, bins = np.histogram(store, binrange)
De beloning voor onze inspanningen bij deze variant is het retourneren van het array waaruit de waardefrequenties in de betreffende bins kunnen worden opgehaald. De overdracht van bins is dan slechts een kopie van de parameter binrange.
Als u alleen de diagrammen direct wilt weergeven, kunt u de histopgram-weergave ook direct aan MatPlotLib uitbesteden, op deze manier:
plt.show()
Hoe dan ook, de beloning voor de inspanning is het histogram van figuur 6 – let alstublieft niet op de EMI-gerelateerde onvolkomenheden.
Tot slot moet worden opgemerkt dat de GreatFET ook een patroongenerator biedt en zelfs een functie om Sigrok-loginformatie te exporteren. Beide kunnen op de volgende manier via de commandoregel worden geactiveerd:
De exacte uitvoeringssnelheid is sterk afhankelijk van de gebruikte hardware – zie [5] voor een interessante discussie over dit onderwerp.
Conclusie
De GreatFET is een sympathiek stukje hardware, ondanks de wat ‘her en der verspreide’ documentatie en de nogal middelmatige real-time prestaties bij onze test. Als u altijd al heimwee had naar de ‘goede oude tijd’ van de COM-interface, dan is dit een vlotte en handige manier om uw PC of laptop klaar te stomen voor MSR-taken.
(200124-03)
----------------------------------------------------------------------------------------------------------------------------------------------------
Wilt u meer van die fantastische Elektor-artikelen?
--> Neem vandaag nog een abonnement op Elektorlabs - u mist nooit meer een artikel, project of handleiding!
----------------------------------------------------------------------------------------------------------------------------------------------------
Discussie (0 opmerking(en))