ftRoboExt: Software

Nach einiger Pause gibt es mal wieder etwas neues zu meinem selbstgebauten Erweiterungsmodul „ftRoboExt“. Hardware und Gehäuse waren ja schon fertig, nun fehlte eine finale Version der Software. Inzwischen ist das ganze Projekt übrigens auf GitHub zu finden.

Das Protokoll für die Kommunikation zwischen Interface und Extension ist recht einfach, es ist im Prinzip ein SPI-Bus mit einem zusätzlichen Bestätigungssignal und einer Adresse. Über drei Adressleitungen wählt das Interface aus, mit welcher Extension es sprechen möchte. Die originalen Extensions lassen sich verketten, dabei wird das Signal aber nicht ganz unverändert durchgeschleift, sondern die Adresse wird von jedem Modul um ein verringert. Auf diese Weise ist jedes Modul adressiert, wenn es Adresse 0 sieht (das erste direkt, das zweite weil es 1-1=0 sieht). Eine sehr intelligente Lösung, denn dadurch wird die Adresse des Moduls einfach durch die Verkabelung bestimmt.

Wenn das Modul die Adresse 0 sieht, zieht es EM-ACK (die Bestätigungsleitung) auf Low. Nun beginnt das Interface 6 Bytes zu senden, die Extension gibt nach jedem Byte einen kurzen High-Puls auf der EM-ACK Leitung aus. Die originale Extension scheint recht langsam zu sein, so braucht sie etwa 700µs um die Adressierung zu bestätigen. Das Interface hat aber scheinbar auch kein Problem damit, wenn man schneller ist. Die 6 Bytes übertragenen Bytes enthalten die Nutzdaten, genaueres bei thkais.

Weiterlesen

Cubemaps aus Portal-Leveln erstellen (und anderen Source-Spielen)

Ein ganz kurzes Intro: Für das Rendering von reflektierenden Oberflächen braucht man eine Cubemap, was im Wesentlichen 6 Bilder in alle sechs Richtungen sind. Davon gibt es haufenweise welche im Netz, aber man kann auch selber welche aus seinem Lieblingsspiel extrahieren, wenn man unbedingt will. In unserem Fall für ein Uni-Projekt, da schreibe ich hoffentlich auch noch mal was zu.

Ich habe das in Portal getestet, grundsätzlich sollte das aber in allen Source-Spielen funktionieren. Ich gehe mal davon aus, das man grundsätzlich mit der Konsole umgehen kann. Die Grundidee ist, sich per Konsole in alle sechs Richtungen zu drehen, und dann immer einen Screenshot zu machen. Zunächst muss das Spiel in der passenden Auflösung gestartet werden, dazu in Steam unter Eigenschaften diese Startoptionen angeben:


-windowed -width 1024 -height 1024

Weiterlesen

ftRoboExt: Gehäuse

Nachdem Hardware und Software mehr oder weniger fertig sind, kam jetzt das Gehäuse an die Reihe. Der Plan stand ja schon seit der anfänglichen Planung: Das Modul sollte in eine 60er Kassette. Die Kassette stand auch schon seit dem Baubeginn hier bereit, jetzt mussten noch die Löcher in den Deckel 🙂

Dabei gab es zwei Probleme: Zum einen ist der Deckel aus Acrylglas, bei dem ich mir nicht ganz sicher war, wie gut man das bohren kann, zum anderen sind die Bundhülsen nicht ganz gerade eingelötet, so dass sich nicht wirklich ein Raster ergibt, sondern alle Löscher ein bisschen versetzt sind. Um das Problem zu lösen habe ich einfach den Deckel auf die Hülsen gelegt und dann angezeichnet, aber es war doch recht schwierig, die Markierungen auf dem Glas zu sehen, zum die Bohrmaschine leider nicht gerade an der bestbeleuchteten Ecke unserer Werkstatt steht…

Das Bohren selber war viel einfacher als gedacht. Wichtig ist nur, sehr langsam vorzugehen, und nicht zu stark zu drücken, ansonsten reißt das Glas, was mir auch ein paar Mal passiert ist. Zum Glück sind es aber nur kleine Stellen. Ich hatte befürchtet, dass die Löcher nach unten ausfransen würden, und daher das Glas von oben gebohrt. Das war insofern unpraktisch, als ich das Glas so nicht komplett auf die Unterlage auflegen konnte, weil der Deckel ja noch kleine Ecken zum festklemmen hat. Dadurch, dass der Deckel ein bisschen in der Luft hin, wurde das Problem mit dem Reißen vermutlich noch deutlich verstärkt. Ausgefranst sind die Löcher überhaupt nicht, ich hätte also auch von unten bohren können. Wieder was gelernt 😉

Weiterlesen

ftRoboExt: Fortschritt

Ja, die kleinen Fehler sind immer die gemeinsten. Das war ungefähr das Motto der letzten Runde Entwicklung an meinem ftRoboExt.

Wie üblich bei solchen gemeinen Problemen war der Fehler schwer einzugrenzen, ab und zu funktionierte die SPI-Verbindung zum Robo Interface ohne Probleme, in den meisten Fällen tat mein Controller aber gar nichts. Es lag natürlich an eigener Blödheit, ich hatte das Datenblatt nicht richtig gelesen, dort steht es im Abschnitt 19.3.1

When the SPI is configured as a Slave, the Slave Select (SS) pin is always input. When SS is held low, the SPI is activated, and MISO becomes an output if configured so by the user. All other pins are inputs. When SS is driven high, all pins are inputs, and the SPI is passive, which means that it will not receive incoming data. Note that the SPI logic will be reset once the SS pin is driven high.

Weiterlesen

Ubuntu 16.04: MySQL startet nicht mehr – Die Lösung

MySQL scheint irgendwie gerne nach einem Update des Systems Probleme zu machen, wie schon damals bei Debian Squeeze. Ich habe das Update heute installiert, und dabei schon ein paar Fehler in Richtung MySQL bekommen, mir dabei aber erst mal nichts gedacht.

Nach dem Upgrade lief dann aber der MySQL-Server nicht mehr, und lies sich auch nicht mehr starten. Ein aptide uprade meinte auch, MySQL wäre nicht richtig konfiguriert, aber lösen konnte es das Problem auch nicht.



Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                   Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Weiterlesen

Kein Aprilscherz: Windows bekommt eine Linux-Subsystem

Tux schaut aus dem Fenster. (Quelle: heise)

Ich muss zugeben, als ich diese Meldung heute bei heise gesehen habe, habe ich wirklich eine Weile gedacht, sie hätten ihren diesjährigen Aprilscherz einen Tag zu früh veröffentlicht: Windows 10 bekommt ein Linux-Subsystem, und wird Linux-Binaries nativ ausführen können! Es ist keine VM im Hintergrund aktiv, es ist „einfach nur“ ein Wrapper, der die Linux Systemaufrufe auf die äquivalenten Windows-Versionen umbiegt. Also quasi ein inverses Wine.

Ich denke, das Zitat von Mark Shuttleworth fasst es ganz gut zusammen: Weiterlesen

ftRoboExt: SMD-Löten

Nachdem meine Platine entworfen und gefertigt war, musste sie nun gelötet werden. Wie im letzten Beitrag beschrieben, ist es ja eine SMD-Platine geworden, etwas das ich noch nie gelötet hatte. Ich habe mir dann vorher ein paar Hinweise dazu in der Make: und auf mikrocontroller.net angesehen, und war gespannt, wie es laufen würde.

IMG_0750
ATmega mit einem Pin verlötet

Weiterlesen

ftRoboExt: Entwurf

…und am Anfang war der Entwurf. Ein eigenes Erweiterungsmodul für das Robo Interface soll es also werden. (Siehe hier für mehr Infos)

Grundlage sollte natürlich ein AVR sein, weil ich die am Besten kenne, und man dann auch immer gleich die Arduino Bibliotheken mitbenutzen kann 😉 Das Protokoll ist im Wesentlichen ein SPI Bus mit einer speziellen Bestätigungsleitung, das sollte sich also auch problemlos umsetzen lassen. Da die Schnittstelle mit 3,3V betrieben wird sollte auch das gesamte Modul mit dieser Spannung laufen. Die Motoren müssen aber natürlich mit 9V betrieben werden, so dass ein Spannungsregler nötig ist. Für die Motoren sind auch Treiber nötig, da habe ich den TLE4207 eingesetzt, mit dem anderen schon gute Erfahrungen gemacht haben.

2016-03-13 21_10_03-1 Board - C__Users_Niklas_Documents_eagle_ftRoboExt_ftRoboExt.brd - EAGLE 7.5.0Die nächste spannende Frage: In was für ein Gehäuse soll das Modul eingebaut werden? Ein Gehäuse wollte ich auf jeden Fall haben, einfach damit sich das ganze gut im Modell unterbringen lässt. Nach ein wenig Suche bin ich auf die Kassetten gestoßen, die gerade dazu einladen, Dinge dort hineinzubauen. Mit 60x60mm Grundfläche ist dort aber natürlich nicht viel Platz drin, die originalen Module haben etwa die doppelte Fläche. Nach ein wenig Überlegung kam ich dann zu dem Schluss, das gesamte Modul in SMD-Technik zu bauen, auf diese Weise kann ich die Platine zweiseitig bestücken; anders ist es kaum möglich, alles in der kleinen Box unter zu bringen.

Weiterlesen

fischertechnik Hochregallager und eine Robo Extension im Eigenbau

Vor inzwischen doch schon einiger Zeit hatte ich bei einem Besuch der Hannover ein Modell aus fischertechnik gesehen, was dort mit einer SPS gesteuert wurde. Irgendwie hat das mein Interesse an fischertechnik wieder geweckt (nachdem ich sie ja vor einiger Zeit schon mal wieder rausgekramt hatte). Geplant war ein Hochregallager, ein scheinbar ziemlich beliebtes Modell.

Nach ein wenig Gebastel war dann auch eine erste Version fertig (mit tatkräftiger Unterstützung ;)), die im Grunde auch funktionierte. Aber ich wollte mehr 👿 Äh naja, ich wollte jedenfalls gerne noch eine Version bauen, bei der sich der Hauptarm drehen konnte, und ich wollte auch gerne einen Greifer der sich öffnen und schließen konnte, statt nur von unten unter die Objekte zu fahren und sie anzuheben (ich habe leider keine Fotos von der alten Version gemacht). Da zu der Zeit Knobloch, der Einzelteilhändler gerade einen Abverkauf hatte, habe ich mich dort noch mal mit Teilen eingedeckt, speziell den Teilen für einen Greifer.

Weiterlesen

Kurztipp: In Pidgin eigenen Namen ändern

Eine Sache hat mich beim chatten mit Pidgin über XMPP schon immer gestört: Für meine eigenen Nachrichten wurde ein furchtbar langer Name angezeigt. Die anderen Chat-Partner kann man ja relativ einfach in der Buddy-Liste umbenennen, aber für mich selbst habe ich keine Option gefunden.

2016-01-25 15_05_50-TimHeute hat es mich dann noch mal genervt, und ich habe die Einstellung gefunden: Sie ist unter Konten/…/Konto bearbeiten/Lokaler Alias:

2016-01-31 11_11_15-Konto bearbeitenDamit sieht es dann so schön aus, wie in der unteren Hälfte des ersten Bildes. Muss man auch erst mal finden 😉 Ich frage mich noch, was „Benachrichtigung über neue Mails“ sein soll, das klingt bei einem Chat-Programm komisch…

Weiterlesen