Retrocomputer in eigener Sache

Loading

Amiga500+ Mainboard

Hallo liebe Leser des Blogs,

ich bin in letzter Zeit eifrig am Restaurieren und wieder Instandsetzen alter 8-Bit Homecomputer von Commodore und Co. Leider habe immer öfter Probleme, Ersatzteile zu finden. Meist sind sie vereinzelt über ebay-Verkäufer zu beziehen, jedoch dann zu horrenden Preisen, und auch ohne Funktionsgarantien. Darum habe ich mir gedacht, einmal hier einen Aufruf zu starten. Vielleicht hat der eine oder andere Leser noch einen alten 8Bit’er oder Teile davon im Keller, den er nicht mehr benötigt und kann ihn spenden oder günstig abgeben… Falls mir hier jemand helfen kann – bitte in den Kommentaren benachrichtigen.

 

Zurzeit bin ich auf der Suche nach folgenden Teilen:

  • MOS CPU 7501R1 oder 8501R1 (CPU von C116, C16, Plus4 Commodore Rechnern)
  • Denise(Superdenise) Grafikchip 8372R3 (Commodore Amiga 500+)
  • Commodore VIC20
  • Sinclair ZX-Spektrum
  • Sinclair ZX81
8501 MOS CPU

USB Camera an Raspberry PI mit OSD

Loading

In diesem Projekt stelle ich eine Anwendung des Raspberry PI im Bereich Bilderfassung vor. Es gibt zu diesem Thema etliche Foren und Beiträge im Internet, doch eine direkt geeignete Lösung war nicht zu finden. Darum poste ich hier meine Lösung.

Als Aufgabenstellung  soll eine Platinen Bohrmaschine der Firma Lemmen von der optischen Version (Bohrlochzentrierung per Lupe) in eine opto-elektronische Version (Bohrlochzentrierung auf Bildschirm Monitor) kostengünstig umgebaut werden.

Lemmon „Variodrill“ Bild: Herstellerwebsite

Die Bohrmaschine soll dahingehend modifiziert werden, dass die zur Sichtkontrolle verwendete Lupe mit sechsfacher Vergrößerung durch eine Kamera ersetzt wird. Das Kamerabild soll auf einem LCD Computermonitor dargestellt werden. Eine geeignete Kamera war schnell gefunden. Hier gibt es günstige Mikroskop Kameras, die eine variable Vergrößerung bis 200fach erreichen. Eine solche Kamera ist beispielsweise die DigiMicro Scale von „dnt“. Allerdings ist das eine USB-Kamera, die einen PC und eine geeignete Software benötigt, um ein Bild anzuzeigen. Und ein PC ist wiederum nicht unbedingt eine kostengünstige Lösung. Weiters käme auch eine CVBS Kamera (also eine analoge Videokamera) in Frage, die einfach an einen geeigneten Bildschirm (oder PC-Monitor mit Upscaler/Converter) geschaltet werden müsste. Aber das ist nicht zeitgemäß …

Weiters soll das Bild ja nicht nur das Bohrloch vergrößern, sondern auch noch die Vorzüge eines Zielvisieres, also eines Fadenkreuzes oder Kreisabsehens implementieren. Dafür bräuchte man im analogen Bereich wieder einen OSD- (OnScreenDisplay) Generator oder zumindest einen Edding, der das Kreuz gemalt auf dem Bildschirm darstellt 🙂

USB Mikroskop Kamera

Also die Varianten PC oder analoges Kamerasystem fallen durch. Aber es gibt ja noch den Raspberry PI, den kleinen Einplatinencomputer mit einem integrierten USB-Host und wunderbaren Grafikfähigkeiten.  Das Projekt wird also mit einem Raspberry PI 3 realisiert.

Als Betriebssystem kommt das Raspbian-Jessi zur Anwendung. Das Image kann hier heruntergeladen werden. Nach dem Entpacken der ZIP Datei und dem Beschreiben der MicroSD Karte mit dem Win32DiskImager, kann der Raspberry gebootet werden. Jetzt gibt es zwei Möglichkeiten an den Raspberry eine Kamera anzuschließen:

-mittels Flachbandkabel an den Kamera Port (hier kann nur die PI-Kamera angeschlossen werden)

-oder über den USB-Port jede USB2.0 Kamera.  

Voraussetzung hierbei ist, dass die Cam auch erkannt wird. Hier kann mit >lsusb in der Linux Konsole nachgesehen werden, ob die angeschlossene Cam auch in der Devicelist erscheint. Als einfaches Tool, um am Desktop das Kamerabild zu sehen, kann guvcview verwendet werden. Das würde jetzt auch schon genügen, wenn man nur das Bild sehen will. Unser Ziel ist jedoch, in das Kamerabild ein Overlay mit Fadenkreuz einzublenden.

Das lässt sich in Python mit der PI-Kamera und der der picamera Library wunderbar lösen. Die Library besitzt eine integrierte Overlayfunktion. Es geht aber auch mit der USB-Kamera. Hierfür müssen ein paar Module installiert werden. In der Linux Konsole sind folgende Zeilen einzugeben:  

zuerst einmal die üblichen Aktualisierungen:  

sudo apt-get update >sudo apt-get upgrade

dann installieren wir numpy

sudo apt-get install python-numpy
und danach das Bildverarbeitungstool schlechthin: OpenCV

sudo apt-get install python-opencv

Die Python-Version die ich hier verwende ist 2.7.9

Jetzt kann ein Python Skript erstellt werden, das die USB-Kamera initialisiert, und in einer Endlosschleife die Bilder an ein Desktopfenster übergibt. Mit den Bildbearbeitungsfunktionen in opencv lässt sich auch das Erstellen eines Fadenkreuzes realisieren. Auch das Fixieren des Ausgabefensters am Desktopbildschirm ist möglich. Siehe folgendes Skript:  

#usb camera mit osd für platinenbohrsystem
#version 1.0 03/2017 by bihlo

import numpy as np
import cv2

cam = cv2.VideoCapture(0)
cam.open(0)

cam.set(3,800)
cam.set(4,600)

while(True):

# bei jedem schleifendurchlauf wird ein frame genereriert

# frame von der camera holen
ret, frame = cam.read()

# fadenkreuz mit der funktion line zeichnen mit 2 pixeln linienbreite
cv2.line(frame,(0,300),(800,300),(255,0,0),2)
cv2.line(frame,(400,0),(400,600),(255,0,0),2)

# zwei kreise zeichnen
cv2.circle(frame,(400,300), 50, (255,0,0), 2)
cv2.circle(frame,(400,300), 100, (255,0,0), 2)

#text ins bild einblenden
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame,'Platinenbohrsystem V1.0',(10,50), font, 1,(255,255,255),2)

# ausgabe des frames in fenster/ beenden mit taste "q"
cv2.nameWindow('Platinenbohranlage CAM')
cv2.moveWindow('Platinenbohranlage CAM',0,0)
cv2.imshow('Platinenbohranlage CAM',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# nach beendigung das device freigeben und das fenster schlissen
cap.release()
cv2.destroyAllWindows()

Nach Starten des Scripts sollte am Bildschirm das Kamerabild und das Fadenkreuz zu sehen sein:

Will man, dass das Python Skript (in meinem Fall habe ich es „camtest9.py“ genannt) nach dem Hochfahren und Laden des Desktops automatisch gestartet wird, so kann man am einfachsten im LXSession Konfigurationsfenster einen Eintrag hinzufügen. Dazu ist  im Desktopmenu unter >Einstellungen >Default applications for LXSession anzuklicken.

Im LXSession Menü ist dann unter „Autostart“ der folgende Eintrag hinzuzufügen:

@python /(Pfad zum Python Skript)/camtest9.py

Jetzt muss nur mehr neu gestartet werden und das Skript sollte nach dem Start direkt ausgeführt werden. Die folgenden Bilder zeigen den umgebauten Variodrill…

SDR – Software Defined Radio

Loading

Wer schon immer einmal auf kostengünstigste Weise eine Spektralanalyse im Frequenzband bis knapp 1GHz durchführen will, oder einfach sehen möchte, welche Trägersignale vorhanden sind, der kann sich des SDR (Software Defined Radio) bedienen. Die günstigste Variante einen entsprechenden Empfänger zu bekommen, ist es, einen DVB-T Stick auf Basis des Realtek Chip RTL2832 zu erstehen. Diese Sticks sind im Internet für wenige Euros zu erstehen.

Die technischen Facts des Sticks und die darin verwendeten IC´s:

Zum einen kommt hier der RTL2832U von Realtek zum Einsatz. Das ist ein quadratischer 6mm Chip (QFN-Package) mit zwölf Pins pro Seite. Er wird mit einer Spannung von 3.3V versorgt und mit einem Takt von 28.8 MHz betrieben. Der IC ist ein DVB-T COFDM Demodulator. (Coded Orthogonal Frequency-Division Multiplexing). Das „U“ in der Bezeichnung definiert das Interface des Chips, das ein USB 2.0 Interface ist. Hier wird im Datenblatt angegeben, den RTL2832U unbedingt über ein USB-Verlängerungskabel anzuschließen, um die Empfindlichkeit des Empfängers nicht durch die Störaussendungen des Computers zu beeinträchtigen. Weiters besitzt der RTL2832U auch acht GPIO Ports sowie ein Infrarot remote Control Port.

Der mit dem RTL2832U meist verwendete Tuner-Chip ist der R820T von Rafael Micro. Der Tuner hat einen Frequenzbereich von 42-1002MHz, die Noise figure liegt bei 3.5dB @ RFin. Die Stromaufnahme liegt bei kleiner 178mA bei 3.3V. Der Eingang darf mit einer Leistung von maximal +10dBm beaufschlagt werden. 

Ein anderer Tuner Chip, der auch oft in den DVB-T Sticks zum Einsatz kommt ist der E4000 von Elonics. Er hat im Vergleich zum R820T einen Frequenzbereich von 64MHz bis 1.7GHz.

Der RTL2832U besitzt einen 8Bit ADC und einen DSP. Er beherrscht Digitale Down Conversation (DDC) von IF zum Basisband via I/Q Mixern, digitales Low-Pass Filtering, I/Q resampling und sendet die 8Bit I/Q Daten über den USB Port. Ein weiteres Feature des RTL2832U ist  die FFT (Fast Fourier Transformation), sowie der COFDM Demodulator, der per Software gesteuert werden kann und in den SDR-Applikationen zu Einsatz kommt.

RTL2832U Blockschaltbild (Quelle: Herstellerdatenblatt)

 

Die Software um den DVB-T Sticks SDR-Radio zu entlocken:

Hier gibt es mittlerweile eine riesige Community und ebenso für fast alle Systeme Lösungen um SDR zu betreiben. Eine Ausnahme ist hier Apple mit seinen iPhones und iPads.

Für den Mac ist hier die Applikation GQRX die erste Wahl. Unter dem folgenden Link: http://gqrx.dk/download ist auch eine Version für den RaspberryPI2 und 3 und für Ubuntu Linux zu finden.

Screenshot von GQRX

Die Software ermöglicht die Darstellung des Frequenzbandes in einstellbarer Bandbreite. Es zeigt die Träger auf der y-Achse in dBuV an. Ebenso kann ein Averaging eingestellt werden. Per einstellbarem Wasserfalldiagramm können auch nur kurzzeitig auftretende Trägersignale sichtbar gemacht werden. Etliche Parameter, wie Samplerate, FFT-Size, Demodulation, etc. sind konfigurierbar.

Natürlich sind auch für Windows-Systeme geeignete Tools verfügbar: Hier beispielsweise die freie Software SDR# (SDR sharp) von Airspy. Sie bietet dieselben Features wie die GQRX Version für den MAC.

Screenshot von SDRsharp

Wem jetzt auch noch die portable Version fehlt, der kann sein Tablet oder Smartphone mit Android Betriebssystem als „mobiles Messsystem“ aufbauen. Hierzu wird lediglich eine Treibersoftware und das Analyzer Tool benötigt. Im APP-Store muss hierzu folgendes heruntergeladen werden:

RTL-sdr-driver von Martin Marinov (es ist kein root für das Android Betriebssystem notwendig)
RF-Analyzer oder SDR-TOUCH

Screenshot RF-Analyzer Android

Zusammenfassend noch einmal die Linksammlung:

MAC, Linux und Raspberry:  GQRX
Windows: SDRsharp
Android: RF-Analyzer, RTL-SDR-Driver