Beim Booten meiner Ubuntu 16.04.3 Version ploppte die Meldung auf, dass appstreamcli einen Fehler verursacht hat und beendet wurde.
Ein paar kurze Zeilen, gefunden auf askubuntu, haben mir direkt geholfen:

cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i *.deb

Eigentlich ziemlich selbsterklärend. Wir erstellen ein temporäres Verzeichnis, laden eine ältere Version vom appstream runter und installieren diese.
Anschließend hab ich den Rechner neugestartet und er ist ohne Fehlermeldung hochgefahren.

Eine Datei kann über das Kontextmenü “Öffnen mit” durch verschiedene Programme geöffnet werden.

Unter “Öffnen mit” werden Standardprogramme angezeigt.

Um eigene Einträge als Standardprogramm zu definieren, nutzen wir die Registry.

regeditunter Windows bringt uns zum Registrierungs-Editor.

Dort gehen wir zuerst in die HKEY_CLASSES_ROOT und gehen zu Applications.

Nach einem Rechtsklick auf Applications wählen wir Neu und dann Schlüssel. Der Schlüssel, wird wie die auszuführende .exe benannt. In meinem Beispiel “notepad++.exe“.

Als Beispiel notepad++.exe

Verzeichnisstruktur der Schlüssel

Auf den gerade erstellen Schlüssel, wird mit Rechtsklick erneut Neu und Schlüssel ausgewählt. Diesen nennen wir “shell”.

Das wiederholen wir auf shell. Erzeugen “open”. Und darin den letzten Schlüssel “command”.

Wir wählen den (Standard) Eintrag unter dem Schlüssel command. Dort wird der Systempfad zur Anwendung (.exe) definiert, Plus einer Systemvariable (“%1”).

In meinem Beispiel:
(Achtung: Die Anführungszeichen sind in diesem Fall anzugeben)

“D:\tools\notepad++\notepad++.exe” “%1”

Unter “Öffnen mit” und “Standardprogramme auswählen…” sollte jetzt der neue Eintrag unter “Andere Programme” zu finden sein.

Systemübersicht:

In meinem Aufbau kommt ein Windows Server 2012 R2 zusammen mit WireShark 2.4.2 zum Einsatz. Nach einer Neuinstallation von beiden Komponenten, kam es im Anschluss beim Start von WireShark zu zwei unerwarteten Fehlern.

Fehlermeldungen api-ms:

Die erste Fehlermeldung beim Start von WireShark gibt aus, dass “api-ms-win-crt-locale-l1-1-0.dll” auf dem Computer fehlt.

Lösung:

Es wird empfohlen das universelle C RunTime Update zu installieren, falls dies noch nicht geschehen ist (Link zum Microsoft-Update). Ansonsten kann es nicht schaden, selbst einen kurzen Blick auf ausstehende Updates zu werfen. Auf der Maschine zu finden unter: “Systemsteuerung\System und Sicherheit\Windows Update”.
Zusätzlich hat es einigen Nutzern geholfen “Visual C++ Redistributable for Visual Studio 2015” zu installieren.

Link für Windows 64-bit:
http://download.microsoft.com/download/0/4/1/041224F6-A7DC-486B-BD66->BCAAF74B6919/vc_redist.x64.exe

Link für Windows 32-bit:
http://download.microsoft.com/download/0/4/1/041224F6-A7DC-486B-BD66-BCAAF74B6919/vc_redist.x86.exe

Wie gesagt, es soll User geben die damit ihre Probleme gelöst haben, meine Fehlermeldung bestand weiterhin. Ich habe den Fehler anders gelöst.

Fehlermeldungen MSVCP120:

Um den zuvor beschriebenen Fehler zu beseitigen, habe ich die ältere WireShark Version 2.2.10 verwendet. Damit wurde zwar der “api-ms-win-crt-locale-l1-1-0.dll”-Fehler umgangen, nach dem installieren und starten von WireShark 2.2.10 kam jedoch zu einem erneuten Fehler.

 

 

 

 

Lösung:

Die Lösung, die in meinem Fall funktioniert hat, ist das Nachinstallieren von fehlenden Bibliotheken (“Microsoft Visual Studio 2013 Runtime Libraries”).

Dafür wird netterweise von Microsoft ein Patch angeboten. Im folgenden Link müsst ihr dann nur noch zwischen der 64-bit & 32-bit Version und Sprache wählen:
Visual C++ Redistributable Packages for Visual Studio 2013

Anschließend konnte ich problemlos WireShark 2.2.10 starten.

Aus dem Land der aufgehenden Sonne bekommt man mit etwas Wartezeit relativ günstig Elektronikkomponenten, wie den Temperatur- und Luftfeuchtesensor DHT22.
Zum Auslesen des DHT22 benötigen wird den Arduino (In unserem Beispiel der Arduino UNO), ein paar Jumper Kabel und ein Vorwiderstand mit ca. 10kΩ. Der Aufbau kann auf einem Steckboard schnell umgesetzt werden.

Die Pinbelegung des DHT22 sieht wie folgt aus.
Pin1 ist der Pluspol (VCC), ausgelegt für 3V bis 5.5V. Pin2 ist der Data-Out. Pin3 ist nicht belegt. Pin4 ist der Minuspol (GND bzw. Ground).

dht22Der Vorwiderstand von ~10kΩ wird mit dem 5V-Pin des Arduino und dem Pin2 des DHT22 verbunden, anschließend führen wir vom selbem Pin ein Kabel ab, welches auf den Pin8 des Arduino gesteckt wird. Über diesen Pin lesen wir nachher die Daten aus.
Wer Verständnisprobleme hat: Am Ende des Beitrags habe ich ein Bild über die Verkabelung angefügt.
Wenn alles fertig verkabelt ist, kommt der Code-Teil.

Wir benötigen die Arduino library “Arduino-DHT” von GitHub. Dieser Ordner wird in euren Arduino Unterordner /libraries/ verschoben. Unter examples findet sich eine DHL_Test Datei die bereits den kurzen Code von Mark Ruys enthält.
Es muss im Code nur noch der Datapin von 2 auf 8 geändert werden. Die Werte müssen nun auf dem Seriellen Monitor angezeigt werden (Tools -> Serial Monitor).

#include "DHT.h" //Einbindung der Bibliothek

DHT dht; //Variable wird benannt

void setup()
{
  Serial.begin(9600);

  dht.setup(8); // data pin 8 festlegen
}

void loop()
{
  delay(dht.getMinimumSamplingPeriod()); //kuerzester Abfragerhytmus

  Serial.print(dht.getHumidity()); //Luftfeuchte auslesen und ausgeben
  Serial.print("\t");
  Serial.print(dht.getTemperature()); //Temperatur auslesen und ausgeben
}

Die doppelten Querstriche // sind Kommentare um euch die Befehle kurz zu verdeutlichen, sie können auch entfernt werden.

Der Steckboard Aufbau:

DHT22-Aufbau2

Wer über das Internet mit seinen Freunden Minecraft spielen möchte, steht vor der Frage ob man auf einem öffentlichen oder einem eigenen Server spielt. Da öffentliche Server für gewöhnlich einige Einschränkungen besitzen und gelegentlich von nicht-freundlich gesinnten Spielern heimgesucht werden (Stichwort Griefing), bietet der eigene Server eine interesante Alternative für eine gemütliche private Runde. Im folgenden gibt es eine grobe Übersicht zum Thema-Hosten, die Anforderungen und die nötigen Schritte zur Einrichtung von einem Minecraft-Server unter Linux sowie das betreiben von Hamachi unter Linux. Eine Linux Distribution (Sprich; ein Linux Betriebssystem) sollte allerdings schon auf dem Rechner vorhanden sein, darauf gehe ich in diesem Artikel nicht weiter ein.

Der Minecraft Server kann über den eigenen PC betrieben werden, auf dem auch der eigene Client läuft. Mitunter treten hier allerdings oft Performanceeinbußen auf, die eher das eigene Spielerlebnis trüben (Minecraft-Client) als auf Lasten des Servers gehen. Außerdem sollte bei einem simultanen Betrieb von Client/Server auf einem Rechner, die Spielerzahl gering gehalten werden. Schließlich muss der Server die Vorgänge der Spieler, Berechnungen von bewegenden Objekte und die Darstellung der Welt bearbeiten und anschließend an alle Spieler per Upload verteilen. Die eigene Internetleitung sollte also ausreichend Uploadleistung bieten, um einen Minecraft-Server zu betreiben. Bei mir reicht der Upload von 1,1 MBit/s für 2-3 Personen vollkommen aus, allerdings haben wir auch noch nicht mit viel mehr gleichzeitig gespielt. Ein weiterer und wichtiger Punkt ist ausreichend Arbeitsspeicher.

Da mir die Performance für ein gleichzeitiges hosten und spielen von Minecraft auf dem Rechner zu schlecht war, habe ich einen zweiten PC für diese Aufgabe fit gemacht. Nicht jeder wird einen zweiten PC besitzen, es muss allerdings nicht gleich die neuste Technik sein. Wie auch in meinem Fall kann ein ausrangierter PC ebenfalls gute Dienste leisten. Ausreichend Arbeitsspeicher (~3GB) sollte allerdings vorhanden sein.

Zur groben Übersicht, besteht der Minecraft-Linux Server aus folgenden Komponenten:

  • Prozessor: AMD Phenom II X4 955
  • Grafikkarte: Radeon Geforce 9800GTX+
  • Arbeitsspeicher: 8 GB DDR2
  • Distribution: Kali Linux
  • Verbindung per Ethernetkabel
    (WLAN ist nicht empfehlenswert – Stichwort Package Lost)

Der Upload beträgt, wie oben erwähnt, 1,1 MBit/s.

Auf dem Screenshot ist die Auslastung der Internetleitung während des spielens zu sehen (2-Spieler online).

MC-Server-Auslastung

Einrichtung des Minecraft Servers

Meine Einrichtung des MC-Server, habe ich auf einem Kali Linux System vorgenommen. Die im folgenden vorgestellen Befehle, sollten jedoch auch auf alle anderen gängigen Distributionen anwendbar sein. Im Zweifelsfall sind die Unterschiede auf entsprechenden Linux-Wikis beschrieben, welche schnell per Google aufgezeigt werden.

Zuerst prüfen wir die Java Version unseres Systems, über folgende Eingabe ins Terminal:
java -version

Falls ihr die Nachricht “java: command not found” erhaltet oder eine Java Version (niederiger als) 1.6 besitzt, müsst ihr euch die aktuelle Java Version besorgen. Die folgenden Links führen euch direkt zur offizielen Java Download-Website.
Java für 64-Bit Linux Systeme
Java für 32-Bit Linux Systeme

Anschließend besorgen wir uns aus dem Downloadbereich der minecraft.net Seite die aktuelle Minecraft Server Datei. Für die Linux Systeme ist es die Datei mit der .jar Endung. Wir erstellen für den Server in unserem Homeverzeichnis einen eigenen Ordner und kopieren die Datei dort hinein.

Für die User die gerne per Terminal arbeiten, gehen wir folgendermaßen vor:
Zuerst wechseln wir mit cd ins Home-Verzeichnis und erstellen mit mkdir minecraft_server einen neuen Ordner. Jetzt wechseln wir mit cd Downloads in den Download-Ordner, wo die runtergeladene Server-Datei liegen sollte. In meinem Fall heißt die Datei “minecraft_server.1.8.3.jar“. Per mv minecraft_server.1.8.3.jar ~/minecraft_server kopieren und schneiden wir die Datei aus dem Downloadordner aus und kopieren sie in unseren gerade erstellen Ordner “minecraft_server”. Mit cd wechseln wir ins Home-Verzeichnis und anschließend in den Minecraft Ordner cd minecraft_server.

Nun starten wir den Server per java -jar minecraft_server.1.8.3.jar. Nicht wundern, kurz darauf schließt sich das Serverfenster wieder. In dem Ordner wurden einige Daten erstellt, unter anderem eine Datei Namens “eula.txt“, die Lizenzvereinbarungen von Minecraft, die wir zuerst akzeptieren müssen. Über sudo nano eula.txt öffnen wir nun die Datei und ändern den Eintrag “eula=false” auf “eula=true” um. Gespeichert wird per Strg+X, anschließend das überspeichern mit y bestätigen und per Enter den Namen eula.txt bestätigen.
Bevor wir den Server nun starten, richten wir noch Hamachi ein.

Hamachi installieren und einrichten unter Kali Linux

Die Installation von Hamachi unter anderen Distributionen unterscheidet sich nicht groß von Kali Linux, allerdings gibt es einen Befehl der extra für Kali Linux ausgeführt werden muss.
Die Linux Version von Hamachi besitzt keine grafische Oberfläche, sowohl die Installation als auch die Einrichtung erfolgt über das Terminal. Wer eine grafische Oberfläche benötigt, sollte sich zusätzlich nach der GUI “Haguichi” umsehen.

1. Im Vorfeld installieren wir die Linux Standard Base per Command:
sudo apt-get install lsb

2. Wir laden (hier) die aktuelle Hamachi Version für Linux herunter und installieren diese.
Übers Terminal geht das wie folgt (beachtet das es evt. neuere Versionen gibt):
32bit: wget https://secure.logmein.com/labs/logmein-hamachi_2.1.0.139-1_i386.deb
64bit: wget https://secure.logmein.com/labs/logmein-hamachi_2.1.0.139-1_amd64.deb
Zur Installation wird nun folgendes ins Terminal getippt:
32bit: sudo dpkg -i logmein-hamachi_2.1.0.139-1_i386.deb
64bit: sudo dpkg -i logmein-hamachi_2.1.0.139-1_amd64.deb

Unter Kali Linux wird die Installation von Hamachi fehlschlagen. Die Kali Linux Benutzer geben nun bitte folgende Befehle ein:
sudo apt-get update
sudo apt-get -f install
Anschließend wiederholen wir den Befehl zur Installation. Jetzt installiert Hamachi ohne Probleme.

3. Um Hamachi später ohne Root-Rechte starten zu können, müssen wir nun eine Datei unter var/lib/logmein-hamachi erstellen. Wir wechseln per cd ins Home-Verzeichnis. Per cd .. wechseln wir nun ein Verzeichnis hoch, raus aus dem Home-Verzeichnis. Nun erstellen wir die Datei:
sudo nano /var/lib/logmein-hamachi/h2-engine-override.cfg
Folgendes geben wir ein: Ipc.User BENUTZERNAME
Der BENUTZERNAME wird durch euren Benutzernamen ersetzt, den ihr in eurer Linux Distribution verwendet. Nach dem Abspeichern müssen wir noch den Dienst neustarten:
sudo service logmein-hamachi restart
Wenn das erledigt ist, könnt ihr per cd wieder ins Home-Verzeichnis wechseln.

4. Wir loggen uns jetzt in Hamachi ein und legen einen Nickname fest:
hamachi login
hamachi set-nick NICKNAME

5. Nun erstellen wir eine Netzwerk, in das später unsere Freunde beitreten können. Die Netzwerk-ID könnt ihr frei wählen und muss im folgenden Code von euch ersetzt werden, z.B. My-Minecraft-Server. Das PASSWORT ist optional, es kann auch weggelassen werden, ich würde es jedoch empfehlen.
hamachi create NETZWERK-ID PASSWORT
Die Netzwerk-ID (und das Passwort) benötigen eure Freunde um in euer Hamachi-Netzwerk beitreten zu können.
Um die Befehlsliste von Hamachi angezeigt zu bekommen müsst ihr hamachi ? eingeben.

6. Wir müssen nun noch die IP unseres Hamachi-Clienten in die Server-Config schreiben und sind fertig.
Um die IP Adresse zu bekommen, geben wir hamachi in das Terminal ein. Unter “address” finden wir die IP des Clienten. Nun wechseln wir ins Verzeichnis unseres MC-Server und suchen nach der Datei “server.properties“. Diese wird geöffnet und der Eintrag “server-ip” gesucht. Dort die IP eintragen und abspeichern.
sudo nano server.properties

Minecraft Server Start

Aus dem Server Verzeichnis starten wir nun den Server. Vorher solltet ihr euch noch überlegen, wieviel Arbeitsspeicher ihr eurem Minecraft-Server zur Verfügung stellen möchtet. Ein gewisser Puffer für das System sollte ebenfalls reserviert bleiben. Für meinen Server, mit wenigen Spielern (2-4) reichen bisher 1-2 GB ohne Probleme. Setzt ihr andere Größen ein, solltet ihr den Befehl unten entsprechend ändern (z.B. 512M). Xms steht für den Minimalwert und Xmx steht für den Maximalwert.
java -Xms1024M -Xmx2048M -jar minecraft_server.1.8.3.jar

Ein paar weitere Tipps:

  • Es reicht aus, wenn die Zahlen in Gigabyte angegeben werden z.B. -Xms1G -Xmx2G. Das ist Geschmackssache.
  • Auch könnt ihr die “minecraft_server.1.8.3.jar” Datei umbenennen, z.B. in mc_server183.jar oder mc_server.jar, was etwas Schreibarbeit spart.
  • Macht regelmäßige Backups eurer Welt. Dazu einfach den “world” Ordner im Minecraft Server Verzeichnis kopieren (Wenn der Server offline ist) und in einen eigenen Ordner kopieren.
  • Der Server wird per /stop heruntergefahren und angehalten. Eure Welt wird in diesem Moment gespeichert.
  • Weitere Server Befehle finden sich hier im MC-Wiki

Vor einiger Zeit bin ich auf das Buch “Roboter bauen mit Arduino” von Markus Knapp aufmerksam geworden. Dadurch habe ich mein erstes Roboter-Projekt realisiert, über welches ihr im folgenden mehr lesen werdet. Relativ einfach erklärt er im Buch, neben der Programmierung, den Bau eines autonomen Roboters. Im Vorfeld wird auf die Syntax so wie Funktionen von C eingegangen und anschließend, im Bezug auf den Roboter, alles praktisch angewendet.

Markus erklärt im Buch die nötigen Bauteile und verweist auf einen Fertig-Bausatz. Wer es günstig und einfach haben möchte, sollte diesem Weg wählen. Da ich gerne bastel und nicht zwei linke Hände besitze, habe ich für mich die Variante des “selber-bauens” gewählt. Die im Buch erwähnten Bauteile, habe ich mir über Shops, den Baumarkt so wie in Eigenregie selber zusammengesucht und gebaut. Außerdem lernt man durch solche Prozesse am meisten. Selbstständiges Suchen nach passenden Bauteilen, vergleichen, in Erfahrung bringen von fehlenden Informationen und Angaben, Überprüfungen zur Machbarkeit seiner Konstruktion, und natürlich-> neue Inspirationen.
Viele Fragen tauchen auf: Wie hält das Rad auf der Motorwelle? Welche Motoren eignen sich für den Roboter und welche Spannung kann verwendet werden? Wie soll der Roboter aussehen und wie hält alles zusammen? Reicht der Strom? – Man wächst mit seinen Aufgaben – Also auf geht’s!

Meine Teileliste sieht folgendermaßen aus:

Chassi aus Rest-Plastik, Arduino, Motor-Shield, 2x RC-Reifen, Stützrad/Möbelrolle, 2x Getriebemotoren 6V, Servo, Infrarot-Sensor + Kabel, Gewindestange, Schrauben und Muttern in M4+M5 so wie ein Alu-Rohr passend für den M4-Stangen Durchmesser. Und eine Plastikleiste im L-Profil (Nicht auf dem Bild).

phobos teileliste

Eine Info zum Motor-Shield: Wer später einmal vier Motoren ansteuern möchte, sollte gleich zum sog. L293D Motor/Stepper/Servo Shield greifen, anstatt das Arduino Motor-Shield zu kaufen. Über das Arduino Motor-Shield können nur insg. zwei DC-Motoren betrieben werden, das L293D wiederum vier.

Das Chassi besteht aus einem zurecht gesägten Deckel eines alten Druckers vom Sperrmüll. Die plane Oberfläche bietet eine gute Voraussetzung und hat nichts gekostet. Bei den Motoren handelt es sich um 6V Getriebemotoren der Marke Micro Motors vom Typ HL149. Der Motor bietet 110 bis 160 UpM, was flott genug für unseren Roboter ist.
Beim Servo habe ich zu einem Thunder Tiger Microservo gegriffen und mich gewundert, wie “Micro” er in Wirklichkeit ist (Er kam im Maxi-Brief an). Die Bezeichnung ist C0915. Es ist ein analoger Servo. Im Buch wurde ein digitaler verwendet. Durch einen kleinen Workaround (Nur die Belegung ändern – Dazu später mehr) stellt das jedoch kein Problem dar. Der Sensor ist ein Sharp GP2Y0A21YK. Es wird zum Anschluss ein spezielles Kabel von Sharp benötigt. Das war bei Reichelt nicht lieferbar und zudem für ein einfaches Kabel m.M. nach zu teuer. Ich habe ein Molex 3-Pin Verlängerungskabel genommen und es angelötet. Litze und/oder jedes andere Kabel funktionieren natürlich auch.

Die Gewindestäbe sind praktisch, da sie sich mit einer Metallsäge in die benötigten Längen kürzen lassen. So müssen nicht unzählige Schrauben in verschiedenen Längen gekauft werden. Für Teile auf dem Chassi, das Stützrad und das L-Profils habe ich die M5 Gewinde genutzt. Für die Räder M4 + zwei Stücke Aluminiumrohr, um sie mit der Motorwelle zu verbinden.

In Teil 2 gehe ich etwas mehr auf das Zusammenbauen von “Phobos” ein.

*Update* Zum Einstimmen ein kleines Video (in dem der Roboter allerdings von mir per Keyboard gesteuert wird).