SimpleRFIDPlayer

Das folgende „Projekt“ ist ein simpler MP3 Player für meine Tochter.
Meine Tochter ist momentan 2 Jahre alt. Um ihr einen einfachen Zugang zu Musik und Hörspielen zu geben, habe ich mir Folgendes überlegt:
Eine Box mit MP3 Player und RFID-Lesegerät über die man ein RFID-Tag ziehen kann um ein Musikstück zu spielen. Die RFID Tags können dabei bedruckte Karten oder Tags (Anhänger) sein. Die Tags lassen sich recht gut an Kuscheltiere etc.pp. befestigen. Für meine Tochter ist es also ein drüberziehen eines Kuscheltieres um Musik abzuspielen.
Die Programmierung sollte ebenso simpel sein. Das Gerät spielt Songs ab, welche auf einer MicroSD Karte abgelegt sind und von 001 – xyz benannt sind. Der erste Tag der über das Gerät gezogen wird, wird mit Song Nummer 001 verknüpft. Der zweite mit 002 und so weiter.
weiterlesen →

PiCase

Diesmal geht es um das Thema Resteverwertung.

Aus verschiedenen Bastelprojekten hatte ich noch einen Raspberry Pi und einen Pi2, sowie ein 7″ Touchscreen. Das ganze wollte ich schon lange in einem Gehäuse unterbringen. Von Bjoern Giesler gibt es auf Thingiverse ein Gehäuse für das Display zum Ausdrucken (thingiverse), allerdings wollt sich eher alles in einem Gehäuse abspielen und keine Anschlüsse kappen (Außerdem hatte ich noch andere Reste zum Verwerten).

Meine Anforderungen waren also simpel:

Ein Gehäuse für

  • Display
  • Raspberry Pi 1/2
  • Öffnungen für USB (um Sticks o.ä. anzustecken
  • Öffnungen für die Videoausgänge um etwas von Außen anhängen zu können (okay https://phonelookupbase.ca , ich gebe es zu, eine alte Konsole), daher keine innenliegende Verkabelung
  • Evtl. ein Lautsprecher
  • Von außen bedienbare Monitortasten

weiterlesen →

C# String Performanz – Macht Optimierung Sinn?

Hi,

Worum geht es hier?

String sind Zeichenketten in Programmiersprachen. Ein wichtiger Aspekt bei C# (und einigen anderen Sprachen) ist, das Strings immutable (unveränderlich) sind.

Was kann man sich darunter vorstellen?

Ein String ist eine Zeichenkette, z.B. “Hallo”. Intern wird der String in einem zusammenhängendem Datenbereich, einem Array, als einzelne Zeichen gespeichert. Hallo ist also [‘H’,’a’,’l’,’l’,’o’]. Möchte man einen String mit einem anderen verknüpften, so kann dies nicht im gleichen Array passieren (es ist ja schon sozusagen “voll”). Je nach Technik wird im Normalfall das Array in ein neues Array umkopiert, welches genug Platz für den neuen String bietet.
weiterlesen →

0 Bytes?

Hallo,

es gibt immer mal Probleme mit 0-Byte Ergebnisdateien. Die entstehen normalerweise aus 2 Gründen:

  • die Software kann den Laser nicht erkennen
  • die Software findet keine Überschneidungspunkte

Zum ersten Bereich gab es bereits den Beitrag mit den Filtern. Der Beitrag ist leider nur die halbe Wahrheit. Wenn der Hintergrundbereich ungünstig ist (Folie/Farbe wurde verwendet, dazu kommen wir unten noch) dann sind die Reflexionen vom Laser eventuell nicht zu erfassen.
weiterlesen →

Dies&Das

Wie geht’s weiter?

Momentan bin ich gerade beruflich etwas stärker eingespannt.

Richtung Simple3DScan möchte ich als nächstes Folgendes tun (wenn nicht böse Fehlermeldungen kommen).

  • Mich stört momentan die Kamera. Ich bekomme keine scharfen Bilder.
    • Zum Testen habe ich noch ein Dell Venue 8 mit integrierter 5MP Kamera auf der Rückseite (heißt: Windows Tablet mit integrierter Kamera https://phonelookupbase.com , an das könnte man mit einer USB-Kupplung den Arduino direkt dranhängen) – dazu fehlt noch ein (provisorischer) Halter + Zeit zum Ausprobieren.
    • Alternativ fliegen noch ältere Windows oder Android Smartphones herum, die ebenfalls eine bessere Kamera haben. Mit ip Webcam kann ein solches Gerät als Kamera dienen – halt nicht besonders schnell. Das coole ist der ip camera adapter. Mit diesem kann eine ip-Cam einfach als Art lokale Kamera eingebunden werden – heißt: Auf dem Smartphoen wird eine Kamerasoftware aktiviert. Der Kamera Adapter bekommt ip, Benutzernamen + Passwort der Kamera udn tut so, als sei die Kamera lokal angeschlossen. Und das eigentlich noch ganz nette: Über eine URL bekommt man auch ein Bild in maximaler Auflösung der Handykamera. Bei normalen WebCams werden Bilder meist nur hochgerechnet. Damit sind hohe Auflösungsangaben ala 21 MP für 10€ purer Mist. Bei den Handies werden meist echte Auflösungen angegeben. Heißt: Selbst ein älteres Mittelklasse ist mit 4-8MP gesegnet und liefert schärfere Bilder. Dafür dauert das Abrufen eines Einzelbildes über WLAN einige Sekunden (und der Teil müsste noch ins Programm). Finde ich momentan am interessantesten.
  • Ein bisschen mehr Erklärten was was im Programm ist. Eigentlich wollte ich es selbsterklärend – ein Button -> Programm tut was. Mittlerweile sind einige Einstellungen dazugekommen.
  • Fixing von Minisachen, z.B. dass die Linien im Programm direkt mit der Konfiguration geändert wird, Sprachänderung direkt gemacht wird, …
  • Wenn ich viel Zeit habe der Versuch einer Autokalibrierung.
  • Punkte im Vorschaubild markierbar machen – z.B. Schwenkbereich des Lasers, Turntable um von dessen Breite die Bildbreite berechnen zu lassen (  Beispiel: 5 MP Kamera – ganz anderer Bereich den die sieht. Markiert man den Turntable rechts und links müsste die Breite des Bildausschnitts einfach rückrechenbar sein, ohne das jemand mit einem Lineal rumfummeln muss). Oder markieren eines Punktes an den der Laser fahren soll….
  • Anschluss von blau/weiß LEDs direkt an den Shield zur Verbesserung des Kamerabildes
  • Wenn ich sehr viel Zeit habe (dazu wird es dank Töchterlein wahrscheinlich nicht kommen):
    • powercrust auf .net zu portieren
    • Evtl. Glyphen auf Turntable “drucken” und mal etwas spielen wie die Erkennung ohne Kamera ist.
  • Sachen die ich vergessen habe
  • Irgendwann mit WordPress befassen – das letzte Fremd-Template lies sich nicht mehr übersetzen… deswegen jetzt ein etwas anderer Stil.

Achja – und GANZ WICHTIG: 8.5. AC/DC in Nürnberg – davor wird hier kaum was passieren… 🙂

Generische Singletons mit C#

In der objektorientierten Softwareentwicklung ist es meist verpönt, globale Variablen oder Objekte zu verwenden. Und doch gibt es viele Anwendungen, an denen es einfacher ist ein globales Objekt zu haben, statt Parameterurwälder zu bilden und alles in einzelne Methoden durchzureichen. Ein Anwendungsbeispiel könnte ein globaler Logmechanismus sein.

Eine Lösung bietet das Erzeugungsmuster “Singleton”. Ein Singleton ist ein Entwurfsmuster, welches im Buch Entwurfsmuster . Elemente wiederverwendbarer objektorientierter Software von Gamma, Helm, Johnson und Vlissides (der sogenannten Gang of Four) beschrieben wurde.
weiterlesen →