Kategorie-Archiv: Allgemein

Eachine EV100 FPV Brille mit Fatshark-kompatiblem Empfängermodul nachrüsten & mit einem Pro58 + Pirx füllen

 

In den letzten Tagen habe ich endlich mal das Receiver Projekt für meine Eachine EV100 FPV Brille angegangen. Der eingebaute Receiver in der EV100 ist ja weder echt diversity noch besonders sensitiv. Ansonsten führt die Brille ja gerne zu Diskussionen. Sie ist natürlich keine Fatshark HDO, aber eine gute Brille mit guter Auflösung und Schärfe.

Mein Ziel:
Die EV100 bekommt einen Fatshark kompatiblen Receiver Slot. Es gibt einige Umbau Anleitungen im Netz. Daran habe ich mich orientiert. Mit einigen Adaptionen habe ich eine gute Lösung gefunden. Als Diverstiy Modul habe ich mich für das Eachine Pro58 Modul entschieden. Das gibt es für unter 25€ und kommt in den Vergleichstests durchaus an Module in der 50-70€ Region heran.

Die Basis-Idee:
Das Fatshark Interface ist eigentlich ziemlich trivial: Spannungsversorgung mit 5V & Masse, Video out, 2x Audio out, 3 Anschlüsse für Knöpfe. Fangen wir hinten an: Die Anschlüsse für die Knöpfe sind eigentlich egal, weil das Modul ein kleines Drehrad (oben/unten/drücken) mitbringt und das letztlich über die Anschlüsse nur auf externe Knöpfe gelegt werden kann. Das Video Out Signal wird in der Brille so anschlossen, dass es an den AV In Eingang geht. Dieser ist damit nicht mehr benutzbar – ich habe diesen Anschluss bisher nie benötigt. Wenn man die Brille startet, muss man den schwarzen Knopf auf der Brille so lange drücken, bis sie 3x gepiept hat. Dann hat man auf AV in umgeschaltet.

Die Schaltung:
Die Schaltung ist sehr simpel. Die Brille wird über eine 2S Lipo Batterie versorgt. Es können also je nach Ladezustand bis zu 8,4V anliegen. Bei ca. 6.8V schaltet der Originalakku ab und ca. bei dieser Spannung beginnt die Brille auch mit der akustischen Akkuwarnung. Das Pro58 Modul braucht wie alle Fatshark kompatiblen Module 5V. Die Spannungsdifferenz langt für einen normalen Step-Down Regler – oder in Modellbauer Sprache ein MiniBEC. Ich habe einen Matek MiniBEC genommen. Es geht aber letztlich jeder Step-Down Regler, der 5V 500mA bei der genannten Eingangsspannung erreichen kann.
Mit der Spannungversorgung fährt das Modul schon mal hoch. Um Streifen im Bild zu vermeiden, habe ich dem Step-Down Regler auf der 5V Seite noch einen 300 Microfarad / 6.3V Tantal Kontensator hinzugefügt. Tantal einfach wegen der kleinen Baugröße und weil sie lowESR sind und damit auch hochfrequente Störungen gut filtern können. Au der Eingangsseite habe ich noch einen 100 Microfarad / 16V eingebaut. Die EV100 ist etwas sensitiv auf Störungen in der Spannungsversorgung.
Für das Videosignal habe ich einen weiteren 330 Microfarad Tantal verbaut. Dieser entfernt den Gleichstrom-Anteil aus dem Video-Signal. Ich habe zwischen Video-Out des Moduls und dem gewählten Video-In Lötpunkt (siehe unten) ca. 1.3V DC Differenz gemessen. Diese Gleichstromkomponente kann zu Problemen führen, also nehme ich sie mit dem Kondensator heraus.
Eigentlich war das auch schon die ganze Schaltung. So habe ich sie aufgebaut und hatte heftige Streifen im Bild. Diese waren ziemlich konstant, aber über mehrere Flüge hinweg änderte sich die Orientierung und die Art des Musters. Vermutung: Da koppelt etwas ein und ich tippe stark auf den Step-Down Regler. Also habe ich mit von einem defekten Router ein Stück dünnes Koax-Kabel ausgebaut. Mit diesem habe ich das Video-Signal geschirmt vom Modul zu Brille geführt (Schirm auf beiden Seiten auf Masse) und siehe da: Das Bild ist ok.
Hier ist der Schaltplan als Zusammenfassung:

Adapterplatine:
Diese Schaltung habe ich auf einem Stück Lochplatine aufgebaut und ein Stück Buchsenleiste als Steck-Adapter für das Modul verbaut. EIn Stückchen Holz als Abstandshalter kam noch mit Heißkleber auf die Adapterplatine, damit das Pro58 Modul auch bei etwas Druck parallel zur Adapterplatine bleibt. Der Aufbau ist optisch sicher nicht ganz perfekt – die Platine ist durch einige Iterationen gegangen.

Anschluss in der Brille:
In der Brille erfolgt der Anschluss der Spannungsversorgung direkt an den Batteriestecker.

Das Videosignal kann man an einem freien Lötpunkt einspeisen, wie auch mehrfach auf rcrgoups und youtube gezeigt. Ganz in der Nähe findet man eine gute Stelle um den Schirm des Koaxkabels auf Masse zu legen.

Gehäuse:
Für den Receiver habe dann noch ein Gehäuse aus ABS gedruckt. ABS warpt zwar, was man auch im Druckbild in Unregelmäigkeiten sieht. Es ist aber sehr stabil und temperaturbeständig. PETG ist eine Alternative. PLA wird aufgrund der Sonneneinstrahlung und der Erhitzung des Pro58 Moduls garantiert nicht gut gehen. Die Rundung der Brille ist im Druck vorgesehen. Das Gehäuse kann damit einfach mit dickem, doppelseitigem Schaum-Klebeband an der Brille fixiert werden. Für die Kabelführung habe ich ein 4mm Loch in das EV100 Gehäuse gebohrt.
Die STL Dateien für den 3D Druck sind hier verfügbar: Ev100 Pro58 STL
Alternativ habe ich sie auch auf Thingiverse gestellt: Klick
Das Gehäuse besteht aus zwei Teilen. Diese habe ich dann mit weißen Klebeband zugeklebt. Wenn man die Teile richtig für den 3D Druck ausrichtet, kommt man nahezu ohne Suppports aus.

Das Gehäuseoberteil um 116,1 Grad drehen, Unterteil um 104,5 Grad. Dann liegen die Teile plan auf und sind gut druckbar.

Firmware für das Modul:
Die mit dem Modul mitgelieferte Firmware kann man eigentlich gleich löschen. Für einen Funktionstest und einen Testflug ist sie ok. Mit anderen Firmwares ist aber mehr möglich. Ich habe die Firmware von Pirx The Pilot geflasht. Wenn man die Spezialfeatures von Achilles nicht braucht, kann man die 11€ sparen und hat eine sehr gute Alternative.
Die kostenfreie Pirx Firmware gibt es hier: http://www.pirxthepilot.com/
Alternativ gibt es auf github noch OpenPro58 und WPro58 als kostenfreie Opensource Alternative.

Stromverbrauch:
Der Stromverbrauch der Brille ist mit dem Pro58 Modul erhöht. Die EV100 schaltet aber den internen Receiver ab, wenn man auf AV in geht. Damit erreicht man mit dem Original Akku immer noch über 1.5h Laufzeit. Den internen Receiver kann man natürlich auch nutzen. Allerdings läuft das Pro58 Modul dann mit, so dass dies als Dauerlösung eigentlich nicht zu empfehlen ist.

Ergebnis:
EV100 mit super Empfang und echter Diversity. Gegenüber dem Originalempfänger ist das ein massiver Upgrade, zu dem ich nur raten kann. Das AV In Signal scheint bei der EV100 über weniger Korrekturen zu laufen. So fallen gewisse automatische Helligkeitskorrekturen weg. Bisher finde ich das eher positiv – jeder EV100 Nutzer kennt das ab und zu plötzlich dunkle Bild. Der Effekt ist weg. Gibt es Nachteile? – Keine offensichtlichen außer dem etwas erhöhten Stromverbrauch. Falls ich noch etwas bemerke, stelle ich es hier ein.

Geeetech I3 X – Neue Marlin Firmware 1.1.5 mit Autobedleveling

Auf dem Geeetech I3 X ist ab Werk die Marlin Version 1.0.2 installiert. Es gab nun für eine lange Zeit eine Weiterentwicklung von Marlin und sehr viele RC (Release Candidates) aber keine stabile Version. Mit der Version 1.1.5 ist vor einigen Wochen eine neue, stabile Version erschienen. Zeit, dass diese Version auf meinen i3 X mit Autobedleveling kommt: klick

Im Paket ist eine Konfiguration (Configuration.h) für den I3 X dabei, diese ist aber sehr mäßig gepflegt. Also habe ich die Configuration.h, die Configuration_adv.h für das Autobed Leveling Setup optimiert und darüber hinaus folgendes konfiguriert:

  • Drehknopfrichtung wieder richtig konfiguriert
  • Motor Richtung so eingestellt, wie der i3 X geliefert wird
  • EEProm eingeschaltet. Damit kann man diverse Einstellungen am Drucker machen und speichern.
  • PID Regelung für den Extruder angepasst.
  • Serielle Schnittstelle auf 115200 Bit/s eingestellt.
  • Extruder Temperatur Fehlerüberwachung.

Der Vorteil der neuen Firmware für den I3 X sind nicht riesig, aber es lohnt sich die Pflege zu betreiben. Die Firmware ebnet auch den Weg zu den neuen TMC2100 Steppern mit 128iger Microstepping. Das wäre auch mal einen Versuch wert.
Weiterhin hat die alte 1.0.2 einige Probleme mit dem Compiler in den aktuellen Arduino Entwicklungsumgebungen. Man kann die alte Firmware nur mit Tricks oder den alten Arduinos IDEs übersetzen und das nervt doch gewaltig.

Ich habe zwei Pakete gepackt – beide sind für das Autobed-Leveling Setup; bitte nur mit Autoleveling verwenden!
Hier das Firmware Archiv, wenn man die normalen Gewindestangen für die z-Achse hat (M8x1.25): Marlin_1.1.5_i3-ProX-AutoBL-z-AxisM8x1.25

Hier das Firmware Archiv, wenn man wie ich Trapezgewindestangen TR8x1.5 eingebaut hat: Marlin_1.1.5_i3-ProX-AutoBL-z-AxisTR8x1.5

Installation der Firmware:
Die Installation ist einfach.

  • Aktuelle Arudino IDE installieren; ich habe die 1.8.1 genommen.
  • Drucker per USB an den Rechner anklemmen
  • Richtigen COM Port auswählen (Werkzeuge->Port)
  • Board auf Mega 2560 stellen (Werkzeuge->Prozessor)
  • Upload

Es dauert einige Minuten. Erst wird der Code übersetzt, dann hochgeladen. Dann kommt der Drucker mit einem neuen Splash-Screen hoch:

Nach der Installation:
Danach bitte erst mal per Drehknopf ins Menü des Druckers und den EEProm zurücksetzen und die Failsafe Einstellungen laden. Jetzt die Einstellgen speichern. Die Einstellungen sind unter Control im Menü:

Jetzt können wir uns das erste Mal über die EEProm Funktion freuen. Wir können nämlich jetzt den Abstand zwischen Autolevel Sensor und Düse im Menü einstellen. Die Einstellung ist unter Motion im Menü:

Nach die Einstellungen speichern.

Neues Starter Script:
Bisher hatte ich dazu geraten, den Abstand zwischen Düse und Sensor im Starter Script einzustellen. Das war sinnvoll, weil man den Abstand im alten Release nur durch das Einspielen einer neuen Firmware ändern konnte. Jetzt geht das im Menü und wir können das Starter Script vereinfachen:
G28 ; home all axes
G29 ; autobed leveling

Wenn sich in Zukunft der Wert änder (z.B. wegen neuer Düse), dann ändert man einfach den Wert im Menü, speichert die Settings und das war es auch schon. Die gCode Dateien müssen nicht mehr angepasst werden.

Unified Bed Leveling?
Ich habe mit dieser Firmware kurz die neue Unified Bed Leveling (UBL) Funktion ausprobiert. Das Ergebnis war nicht so gut, wie das bisherige 9-Punkte Verfahren. UBL ist auch noch in der Entwicklung. Daher habe ich wieder das bisherige Verfahren eingestellt.

Andere Sensor Position & Fehlermeldungen?
Vielleicht habt Ihr den Sensor an einer anderen Stelle als ich es vorgeschlagen habe. Dann müsst Ihr das in der Firmware anpassen und den Abstand zwischen Düse und Sensor anpassen:
#define X_PROBE_OFFSET_FROM_EXTRUDER 19 // ST
#define Y_PROBE_OFFSET_FROM_EXTRUDER -43 // ST
Eventuell bekommt Ihr dann beim Übersetzen Fehler. Die neue Firmware prüft beim Übersetzen, ob Düse und Sensor für das Autoleveling über dem Bett sind. Das ist ein konservativer Ansatz, um Crashes zu vermeiden. Wenn es schief geht, solltet Ihr das korrgieren und die anzufahrenden Postionen beim Bedleveling anpassen. Ihr könnt auch einfach die Checks ausknipsen. Die Ardino Entwicklungsumgebung setzt den Cursor nach der Fehlermeldung in die Zeile bei der der Fehler auftrat. Ihr solltet etwas mit static_assert da stehen haben. Kommentiert die Zeile aus:
//static_assert(…
Wenn es dann „knallt“ und der Drucker in die Begrenzung fährt, seid ihr das aber dann selbst Schuld.

Viel Erfolg!

Off-Topic Ecke

Da immer wieder Fragen in irgendwelchen Beiträgen gestellt werden, die mit dem Beitrag nichts zu tun haben, möchte ich hier eine Lösung anbieten.
Also mache ich hier eine Off-Topic Ecke auf. Mal sehen, ob das läuft 🙂

Lokale Uhrzeit mit dem ESP8266 und einem NTP Zeitserver (inklusive Sommer/Winterzeit)

Nachdem ich Code für den ESP8266 publiziert habe (klick), der einen NTP Zeitserver abfragt, sind immer wieder Anfragen gekommen. Die NTP Abfrage liefert UTC Zeit und die Fragesteller wollten eine Umrechnung auf lokale Zeit inklusive automatischer Sommer/Winterzeit Umstellung.
Ich es jetzt endlich mal geschafft aus einem noch nicht publizierten Projekt ein Demoprogramm für die Fragestellung zu bauen.

Der Demo-Code basiert auf dem Webserver Beispiel. Für die Uhrzeit Funktionalität werden drei Komponenten benutzt:
1. Der NTP Code aus dem o.g. Beispiel.
2. Die timelib Bibliothek von M. Margolis. Diese kann über die Arduino IDE installiert werden.
3. Die Timezone Bibliothek von J. Christensen. Diese muss manuell installiert werden; die Bibliothek gibt es hier: https://github.com/JChristensen/Timezone

Die Programmlogik:
In der timelib Bibliothek kann man einen sogenannten Sync-Provider definieren. Diese Funktion gibt die aktuelle Uhrzeit zurück. Weiterhin wird definiert, wie oft die Uhrzeit synchronisiert werden soll. Wir setzen das Intervall auf täglich (86400 Sekunden). In der Funktion wird die Zeit von einem NTP Server abgefragt. Die timelib Bibliothek ist damit auf UTC gesetzt.
Wenn die Webseite aufgerufen wird, wird die Zeit mit Hilfe der timezone Bibliothek umgerechnet. Die Funktionen der timelib können genutzt werden, um die umgerechnete Zeit in ein lesbares Format umzuwandeln.
Der ESP8266 Webserver ist per http://localtime/ erreichbar, wenn der Router lokale Netzwerknamen unterstützt (@Vodafone: Eure Easyboxen sollten das so langsam mal lernen – AVM kann’s doch auch). Ansonsten die IP aus dem seriellen Log nehmen.

Hier gibt es den Code: ESP_NTP_LocalTime_Demo

Viel Erfolg!

XciteRC Rocket 400 Quadrocopter (aka Cheerson CX20): 720p 5MP drehbare Kamera fernbedienbar machen und Foto Modus nachrüsten

Ich bin günstig an einen einen XciteRC Rocket 400 Quadrocopter (aka Cheerson CX20) gekommen. Mit im Paket war eine „720p 5MP tiltable Camera“. Diese Kamera nimmt während des Flugs Videos auf. Die Kamera kann während des Flugs mit der Fernbedienung über den Aux1 Drehknopf nach oben und unten geneigt werden.

Drei Punkte haben mich genervt:

  1. Vor dem Start muss man das Video durch einen 2-Sekunden Druck auf eine Taste auf der Kamera starten.
  2. Nach der Landnung muss man das Video wieder durch Tastendruck stoppen bevor man die Batterie abklemmt.
  3. Die Kamera macht bei einem kurzen Tastendruck ganz ansehnliche 5MP Bilder – aber was bringt mit das am Quadrokopter?

Die Fernbedienung hat noch einen unbenutzten Aux2 Drehknopf und der Quadrokopter auch einen unbenutzten Servo Ausgang.

Bastelziel:
– Video mittels Aux2 auch während des Fluges an (Aux2 rechts)
– Mit Aux2 Fotoserien während des Fluges machen (Aux2 links).
– Video/Fotomodus stoppen (Aux2 Mitte)

Analyse der verbauten Kamera & Elektronik:
Mit Googles Hilfe war die Kamera relativ schnell identifiziert. Es handelt sich um eine 5MP Foto / 1MP Video Kameraboard mit der Bezeichnung „2501“. Die Kamera ist bei den typischen China Stores unter 10€ gelistet. Die Kamera selbst ist eine OV5640 (das hat auch nochmal ein Potential – vielleicht für ein späteres Projekt). Das 2501 Board selbst ist nicht wirklich ideal. Die JPEG Kompression im Video Modus ist zu stark und funktioniert nicht ideal; insbesondere ist die Datenrate für die resultierende Bildqualität zu hoch. Das Board kann statt 720p@60Hz auch 1080p@30Hz aufnehmen. Leider scheint die entsprechende Umschaltung durch eine angepasste Firmware in der Fabrik zu erfolgen. Schade.
Offenbar hat sich XciteRC/Cheerson eine besondere Firmware für die Kamera machen lassen. Im China-Datenblatt des Kameramoduls ist von einem 4-Draht Interface die Rede (5V, GND, Video on low (3.3V!), Photo on low (3.3V!)). Diese Ansteuerung versteht unsere Version nicht. Statt dessen erzeugt ein kurzer Pulse (>100ms) auf Pin3 ein Foto. Ein längerer Druck (ca. 2 Sekunden) startet ein Video.
Wichtig ist noch, dass der/die Datenpins einen Schaltvorgang durch Ziehen auf Masse erzeugen und im High-Zustand auf 3.3V liegen. Das Datenblatt weist explizit darauf hin, dass die Moduspins nur 3.3V kompatibel sind.
Weiterhin sind im Datenblatt Blinkmuster für die LEDs auf der Platine definiert.

Diese LEDs sind bei der Quadrokopter Kamera auch nach außen gelegt. Die Anschlussbelegung sieht so aus:

Notwendiges Material
Arduino Mini Pro (ATmega 168 langt, 328 geht auch) – ca. 1.20€
1 Jumperkabel weiblich – 1 Cent (40 Stück gibt es für 50ct)
Widerstände (1/8 Watt) 2.2kOhm und 1kOhm – einige Cent (100 Stück gibt es für 60ct)
(Preise Stand 05/17 auf aliexpress/ebay)

Sonstiges:
Doppelseitiges Klebeband / Heisskleber
Elektroniklötkolben + Lötzinn
kleiner Kreuzschraubenzieher

Modifikation des Kamerakabels:
Die Kamera hat zwei Anschlusskabel. Eines für den Servo der die Neigung steuert. Das zweite Kabel versorgt die Kamera mit Strom. An dem entsprechenden Stecker fehlt das dritte Kabel für das Servo Signal. Der Stecker hat einen leeren Platz. Man kann ein weibliches Jumperkabel nehmen, die Plastikummantelung auf einer Seite ausklipsen und den Metallstecker in den leeren Platz einklipsen. Die andere Seite wird einfach abgekniffen und später am Arduino angelötet.

Umbau der Kamera:
Die Kamera baut man für die Aktion am besten vom Quadrokopter ab. Auf der Unterseite befinden sich vier kleine Kreuzschrauben. Diese lösen und die Gehäuseschale inklusive Rückseite & Vorderseite (Linse) herausheben. Das sieht dann so aus:

Die Platine kann man entnehmen. Die Unterseite hat die Anschlüsse, an die wir heran wollen.

Die Kontakte sind mit einer silikonartigen Masse verklebt. Diese Masse muss man vorsichtig entfernen.Die Kabel für den kleinen Schalter habe ich komplett entfernt. Die Kamera wird in Zukunft über die Fernbedienung bedient.
Das folgende Verkabelungsschema muss jetzt realisiert werden:

Der Arduino Mini Pro wird parallel zur Kamera an +5V und GND angelötet: +5V VCC & GND GND. Bei den LED Kabeln am LED Modul bitte beachten, dass das schwarze Kabel nicht GND/Masse ist. Das positive Potentiale für die externen LEDs sind am schwarzen & am roten Kabel. Das schwarze Kabel kommt an den Anschluss D2 (meistens steht 2 dran). Das rote Kabel mit D3 verbinden. Die LED Anschlüsse haben ein Potential von ca. 2.9V wenn sie leuchten. Das langt, um bei mit 5V betriebenen Arduino eine Eins (High) zu signalisieren.
Zwischen D4 und GND kommen die beiden Widerstände wie im folgenden Bild gezeigt. Dabei kommt der 2.2kOhm Widerstand an GND und der 1kOhm Widerstand an. Zwischen den Widerständen wird ein Kabel angelötet. Dieses wird mit dem Tasteranschluss auf dem Kameraboard verbunden. Durch den die Widerstände wird ein Spannungsteiler realisiert, der am Mittelangriff ca. 3.3V erzeugt. Dieses Potential ist für den Kameraeingang geeignet.
Schließlich wird noch das Servokabel an D12 angeschlossen.

Der Mini Pro wird dann mit dickem doppelseitigem Klebeband auf dem Kameramodul fixiert.

Der Spannungsteiler & die Anschlüsse werden dann noch mit etwas Heißkleber vergossen. In der unteren Gehäuseschale muss noch der mittlere Plastikpin vorsichtig gekürzt werden. Dieser Pin hält die Platine. Da wir den Aufbau erhöht haben, muss er Pin verkürzt werden. Der Pin soll am Ende aber die Platine noch fixieren, also nicht zuviel abknipsen.

Das Arduino Programm:
Der Code für den Arduino ist simpel aufgebaut – ganz ohne Interrupts, Timer etc. Für diese Problemstellung ist das ausreichend. Am Anfang wartet der Code erst mal 20 Sekunden, bevor irgendetwas passiert. In diesem Zeitraum startet der Quadrokopter und die Fernbedienung wird gepairt. Eventuell muss man die Aux Regler auch noch richtig einstellen.
Danach wird per pulseIn die Länge des Servopulses gemessen und der Ausschlag berechnet. Ausgewertet wird so:

  • Ausschlag kleiner als 25% (linker Anschlag): Foto Modus
  • Ausschlag zwischen 25 und 75%: Kamera schläft
  • Ausschlag größer als 75% (rechter Anschlag): Video Modus

Im Foto Modus wird ein ein Foto gemacht. Danach wartet der Arduino bis die FotoLED aus geht. Danach wird noch eine Sekunde gewartet und wieder ein Foto gemacht. Die Fotoserie wird fortgesetzt, solange der Fotomodus aktiv ist. Der Video Modus wird gestartet, in dem der Kamerapin auf Masse gezogen wird, bis die VideoLED das erste Mal aus geht (diese blinkt im Videomodus). Dadurch wird das Video robust gestartet. Das Video läuft, bis der Modus durch Aux2 beendet wird.

Es findet im Code keine Prüfung statt, ob eine SD Karte eingelegt ist. Es ist letztlich auch egal, da die Kamera dann schon mit beiden LEDs blinkt.
Hier gibt es den Code: XciteRC_HD_Cam_Remote_Control
Der Code wird über einen Programmieradapter eingespielt. Fertig. Wer genau hinschaut, kann erkennen, dass ich bei dem Programmierer-Anschluss die 5V Verbindung weggeknipst habe. Wenn man den Arduino am PC hat und parallel den Quadrokopter mit Batterie betreibt, sollte man die +5V Potentiale trennen. Wer einfach nur den Arduino programmieren will, braucht das nicht. Das Kamerakabel für den Servoanschuss sollte dann aber vom Quadrocopter abgezogen sein.

Wenn alles umgebaut und programmiert ist, sieht die Kamera so aus:

Der Anschluss am Quadrokopter erfolgt als Servo 2:

Hier sind noch zwei Bilder zum Vergleich. Die Bilder aus dem Videomodus habe ich mittels VLC (Frame speichern) erzeugt.
Klick auf die Bilder öffnet sie größer.

Foto:

Video:

Viel Erfolg beim Nachbau. Auf ähnliche Art und Weise sollten sich auch andere Kameras über die Fernsteuerung ansprechbar machen lassen.

P.S.: Falls jemand Aux1 & 2 tauschen möchte: Einfach die beiden Servoanschlüsse am Quadrocopter auch vertauschen (nicht die Polung! -> S1 <->S2).

Laptop WiFi Karte & Antenne auf 3×3 MIMO Streams aufüsten am Beispiel eines HP Pavilion 17-F

Ich habe einen HP Pavilion 17-F Laptop dessen technischen Daten sich ganz ordentlich lesen: Intel i7 5500 CPU, 8GB RAM, GeForce 840M GPU, 1GBit LAN, FullHD IPS Panel

ABER beim PCIe WiFi Adapter hat HP unnötig gespart:
Broadcom BCM43142 mit nur 1×1 Stream und nur 2.4GHz Band Unterstützung. Ergo ist die maximale Datenrate 72MBit/s.
Der WiFi Chip macht weiterhin unter Windows 10 (64Bit) noch viel Ärger: Treiber nach Erwachen aus dem Sleepmode öfters unter 10 MBit, Abstürze, WiFi Adapter weg bis Reboot, HD Streams vom Sat Receiver instabil. Irgendwann hatte ich die Nase voll und habe eine WiFi Aufrüstung beschlossen.

Ziel der Umrüstung neben der Problembeseitigung:
– 3×3 Mimo Streams
– 450MBit Datenrate meiner Fritzbox bei 2.4GHz nutzbar
– Support für 5GHz WiFi
Für ganze 7,86€ hat es geklappt.

Ich habe dann zunächst nach PCIe Karten mit halber Länge, 3×3 MIMO Streams und AC Unterstützung geschaut. Leider gibt es solche Karten fast nicht. Und die wenigen Angebote liegen bei 60-70€ für die Karte. Die Alternative ist eine 3×3 Karte mit WiFi N Standard. Im 2.4GHz Band besteht kein Unterschied. Im 5GHz Band kann man damit ebenso wie bei 2.4GHz „nur“ maximal 450MBit erreichen. Eine AC Karte könnte hier mehr. Für mich langt die N Karte: Es wurde eine Intel Centrino Ultimate-N 6300 PCIe Karte für 5,86€ inkl Versand über Aliexpress.

Laptop geöffnet, PCIe Karte getauscht und MIST: HP hat ein zweites Mal gespart. Es ist nur eine WiFi Antenne verbaut, obwohl es das Modell auch mit 2 MIMO Streams gab. Im Bild sieht man die eingebaute Karte und dahinter das einzige Antennenkabel.

Immerhin hat das HP UEFI BIOS keine Beschränkung der einsetzbaren WiFi Karten mehr. Eine Zeit lang hatten einige Hersteller darunter HP den Tausch des WiFi Kartenmodells unterbunden. Falls Ihr eine solche Umrüstung bei einem anderen Laptop durchführen wollt, könnte eine solche Sperre vorliegen. Die Karte lief bei mir nach dem Einbau direkt; Windows 10 hat die passenden Treiber an Bord.

Für zweimal 1€ habe ich dann zwei WiFi Antennen mit IPEX Anschluss nachbestellt. Eine Antenne ist ja schon drin.

Diese Antennen habe ich dann erst einmal in das Gehäuse das Laptops eingebaut – um es vorwegzunehmen: So klappt es nicht gut.

Die Tests mit diesem Aufbau waren sehr ernüchternd. Der Grund ist auch schnell auszumachen. Zur Funkentstörung ist das Gehäuse mit Metall bedampft. Von oben sind die Antennen von der Tastatur überdeckt, die auf der Unterseite mit einer Abschirmung versehen ist. Die Antennen sitzen so in einem Metallkäfig.

Die Lösung liegt darin, eine Position für die Antennen zu finden, die nicht abgeschirmt ist. Die Originalantenne ist wie bei den meisten Laptop als Drahtantenne im Displayrahmen verbaut. Eine entsprechende Aufrüstung wäre als Alternative auch denkbar. Bei dem vorliegenden HP Pavilion 17-F bietet sich eine Montage der Antennen im Bereich der Lautsprecher an:

Dieser Bereich ist nicht abgeschirmt und die Antennen können auf den Bassreflexkästen aufgeklebt werden.

Mit dieser Position ist der Empfang gut und hohe Datenraten werden auch über größere Distanzen erreicht.

Um die volle Datenrate im 2.4GHz Band zu erreichen, muss man noch im Router und im Windows Treiber der Karte die Unterstützung für 40MHz Kanäle aktivieren. Für den Router ist das eine routerspezifische Einstellung. In Windows 10 findet man die passende Einstellung hier; der Wert muss von 20MHz auf auto gestellt werden:

Mit diesen Einstellungen sieht der WiFi Status an meiner Fritzbox 7362 im 2.4GHz Band so aus:

Die 450MBit/s sind sicherlich der theoretische Maximalwert. Die Fritzbox bestätigt im WLAN Menü Connects zwischen 400-450Mbit auch im Nachbarraum des Routers. Ebenso sind 450MBit Connects im 5GHz Band möglich. Als praktisches Ergebnis sind alle oben beschriebenen Probleme verschwunden 🙂

ITEAD Sonoff Switch und S20 Steckdose programmieren (ESP8266)

Es wird mal wieder Zeit für einen Beitrag. Der noch nicht publizierte Projektstau ist groß, aber im Job ist gerade viel los 🙂
Ich habe vor einiger Zeit die ITEAD WiFi Homeautomation Produkte entdeckt, die auf dem ESP8266 beruhen. ITEAD stellt für die Produkte auch die volle Dokumentation inkl. Schaltpläne zur Verfügung. Genauer gesagt geht es hier um die WiFi Steckdose mit dem Namen Sonoff S20 und den Sonoff Switch, der ein WLAN Schalter in Form eines Schnurschalters ist.

Der Preispunkt der Produkte ist ziemlich gut. Ein Eigenbau für den Preis dürfte schwierig bis unmöglich sein. Die WiFi Steckdose bekommt man für 13€, den Schalter für unter 7€. Die Produkte haben kein CE Zeichen. Der innere Aufbau ist aber sehr gut und ein CE dürfte nach meine Meinung kein Problem sein, wenn es denn beantragt würde. Zur ITEAD Original Firmware kann ich nichts sagen. Ich habe bisher alles sofort auf meine Firmware umgeflasht. Es wird dazu auch noch ein Post folgen.
Netterweise hat ITEAD auf den Platinen schon vorgesehen, dass man eine Stiftleiste einlöten kann. Stiftleisten gibt es bei ebay für weniges als nen Appel und nen Ei. Das Öffnen der Gehäuse ist einfach. Der Schalter ist nur geklipst, die Steckdose ist geklipst und hat eine zusätzliche Schraube.

Auf der Platine der Steckdose ist die Pinbelegung angegeben. Beim Schalter habe ich sie auf dem Foto notiert. Beim Schalter ist zusätzlich noch GPIO14 herausgeführt.

Und jetzt kommt die obligatorische Warnung:
Die Geräte bieten einen sehr einfachen Zugang zur Heimautomatisierung. ABER die 230V Netzspannung sind kein Spass. Die nötige Sachkunde ist Voraussetzung. Auf keinen Fall dürfen die Geräte offen an 230V betrieben werden. Keines Falls darf man die Platinen mit dem Rechner programmieren, wenn sie an 230V angeschlossen sind.
Keine gute Idee: Pins aus dem Gehäuse herausführen.

Die Programmierung der Boards erfolgt analog zu einem normalen ESP8266 Board, siehe auch:
https://blog.thesen.eu/esp8266-wlan-microcontroller-mit-der-arduino-ide-programmieren/

Generell kann ich eine Programmierung ohne Programmierboard nicht empfehlen. Es gibt immer wieder Anleitungen, welche ESP8266 Boards direkt an FTDI oder CH340 Chips hängen, weil diese ja einen 3.3V Ausgang haben. Das ist nicht empfehlenswert, weil diese Pins bis maximal 50mA belastbar sind. Der ESP8266 zieht im Mittel 80mA (wenn WiFi an ist) und bis über 200mA als kurze Pulse. Ein Programmierboard sorgt für eine stabile Spannnung und eine Wandlung der Pegel zwischen 3.3V und 5V.
Wer ein ESP8266 Programmierboard hat, kann das einfach mit ein paar Jumperkabeln verwenden.

Hier sind einfach die Anschlüsse eines Programmierboards für einen ESP8266-01 genommen worden. GPIO14 hängt in diesem Beispiel auf der Seite des Programmierboards in der Luft. Der ESP8266-01 würde auf dem Foto mit der Antenne nach unten zeigen.

Um in den Programmmiermodus zu kommen, muss man aber ein wenig tricksen. GPIO0 und Reset des Programmierboards sind ja nicht verbunden. Es geht aber ganz einfach. GPIO0 ist über den Taster auf der Sonoff Platine erreichbar. Und statt Reset kann man einfach den USB Stecker neu anstecken. Konkret:

  • USB Stecker des Programmierboards abstecken.
  • Taster auf dem Sonoff Board drücken und gedrückt halten.
  • USB Stecker einstecken.
  • Taster auf Sonoff Board loslassen.

Danach kann man das Board ganz normal z.B. mit der Arduino IDE programmieren.

Die GPIO Belegung:

  • GPIO0 Taster
  • GPIO12 Relais (high = on) + LED (blau); LED nur bei S20
  • GPIO13 LED grün (low = on)
  • GPIO14 Pin 5 der Stiftleiste – nur Sonoff Switch

Hardware Ausstattung:

  • ESP8266
  • PN25F08 Flash (1MByte/8MBit)
  • 10A Relais
  • Taster
  • LED grün – grün/blau S20

Es ist also der selbe großer Flash Baustein verbaut wie im ESP8266-12. Es sollten als alle ESP Projekte laufen.

Viel Erfolg!

Amazon Echo mit nahezu jedem Wifi Gerät koppeln – Pi, HABridge & fhem

Mit einem Amazon Echo oder Echo Dot wird es eigentlich erst interessant, wenn man Lichter, Steckdosen & Rolladen steuern kann. Von Haus aus unterstützt der Echo einige WLAN-fähige Produkte direkt. So kann man Echo kompatible WiFi Steckdosen kaufen oder auch mit einer Hue Bridge das Philips Hue System einbinden. Die Komponenten sind allerdings meistens etwas teurer und teilweise man noch eine spezielle Bridge kaufen.
Mit einem Rasperry Pi kann man mit ein wenig Konfigurationsarbeit so ziemlich jedes WLAN-fähige Gerät mit dem Echo zusammenbringen. Alternativ kann man auch Alexa Skills programmieren. Das ist aber nicht ganz trivial und so habe ich mich entschieden erst einmal eine Basiskompatibilität mit Hilfe von HABridge herzustellen.

Im Folgenden gehe ich davon aus, dass ein Pi erfolgreich am Netz läuft. Auf dem Pi kann man einen Service namens HABridge installieren. HABridge ist ein Emulator für diverse Smarthome Protokolle, wie z.B. Philips Hue. Somit kann HABridge eine Philips Hue Brigde emulieren („nachmachen“). In HABridge eingetragene Geräte werden vom Echo erkannt („Alexa, erkenne Geräte“). So gut das klingt, muss ein Wort der Warnung hier hin: HABridge hat aktuell eine massive Sicherheitslücke und exponiert root Rechte auf dem Webinterface an jeden Nutzer im Netz.

Java prüfen & installieren:
HABridge erfodert java. Das ist auf den meisten Pi Installationen nicht drauf. Ein Test ist einfach:

pi@raspberrypi ~ $ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

Wenn statt dessen eine Fehlermeldung kommt, muss zunächst java installiert werden:

pi@raspberrypi ~ $ sudo apt-get update &amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp; sudo apt-get install oracle-java8-jdk

Das dauert eine Weile.

HABridge installieren:
Wenn java installiert ist, kann man die HABridge installieren. Es gibt mehrere Varianten auf github. Ich habe diese hier genommen: https://github.com/bwssytems/ha-bridge/

pi@raspberrypi:~ $ cd
pi@raspberrypi:~ $ mkdir habridge
pi@raspberrypi:~ $ cd habridge
pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v3.5.1/ha-bridge-3.5.1.jar

HABridge automatisch starten:
Wie auf der github Seite von HABridge beschrieben wird, geht ein automatischer Start per rc.local schief, weil zum Startzeitpunkt das Netzwerk des Pi noch nicht funktioniert. Dort ist auch beschrieben, wie man einen automatischen Start per systemctl einrichtet. Diese Methode klappt aber mit vielen Distributionen nicht. Die Alternative ist die Einrichtung als Daemon über init.d. Hier ist ein passendes Starterscript: habridge
Dazu die beiliegende Datei nach /etc/init.d kopieren, den Besitzer auf root ändern und die Nutzerrechte anpassen. Zu schnell? – Ok:
Die Date habridge auf Eurem Windows Rechner in einem Texteditor öffnen und alles kopieren. Dann per putty auf dem pi einloggen und:

pi@raspberrypi ~ $ sudo nano /etc/init.d/habridge

Es ist nun ein Editor aufgegangen. Dort kann man per rechter Maustaste die kopierten Inhalte einfügen. Danach mit Strg+X und bejahen der Frage (je nach Sprache Y und J) abspeichern. Nun noch die Rechte anpassen:

pi@raspberrypi ~ $ sudo chmod 755 /etc/init.d/habridge

HABridge wird jetzt bei einem Neustart automatisch hochgefahren. Es geht auch manuell:

pi@raspberrypi ~ $ /etc/init.d/habridge start

HAbridge ist jetzt auf Port 81 konfiguriert. Damit bleibt Port 80 für Webserver Anwendungen frei.

HABridge konfigurieren & Gerätenamen wählen:
Mit einem Browser auf dem PC sollte jetzt ein Zugriff auf habridge klappen. Falls Euer Pi den Netzwerknamen raspberrypi trägt, geht das so: http://raspberrypi:81

Es erscheint die HABridge Hauptseite; hier ein Screenshot. Bei der ersten Einrichtung sind natürlich noch keine Geräte eingetragen.

Nun muss ein Bridge Gerät hinzugefügt und eingerichtet werden. Folgende Einträge steuern eine Lampe an, die per fhem gesteuert wird. fhem ist dabei auf dem selben pi installiert.

Wenn das Gerät erfolgreich hinzugefügt wurde, erscheint es auf der HABridge Hauptseite und kann mit Test ON und Test OFF gesteuert werden.
Alles was sich mit eine URL steuern lässt, kann man so in HABridge eintragen. Die entsprechende URL im HABridge Konfigurationsdialog als On URL bzw Off URL eintragen. Bei FHEM kann man sich die Kommandos von der eigenen FHEM Webseite per „Link kopieren“ besorgen. Programme, die auf dem Pi selbst laufen, bekommen die IP 127.0.0.1 (=localhost) zugewiesen. Mit den weitern Feldern im Konfigurationsdialog kann man auch komplexere Paramterübergaben realisieren. Für die meisten WLAN Steckdosen kann entsprechende URLs im Netz finden. Damit man die Geräte zielsicher erreichen kann, muss man dafür sorgen, dass sie eine konstante IP Adresse vom Router zugewiesen bekommen. Wie das geht, hängt vom Routermodell ab; also bitte im Menü des Routers nachsehen.

HABridge und Scripte auf dem Pi:
Man kann mit HABridge alternativ auch ein Script auf dem Pi starten. Dazu stellt man den Device Type auf Execute Script/Program stellen. Das folgende Beispiel zeigt die Konfiguration, um das script tf.sh im home Verzeichnis des Nutzers pi auszuführen.

Warnung – HABridge hat ein massives Sicherheitsloch
An dieser Stelle muss ich eine deutliche Warnung anbringen. Die Scripte werden von HABridge mit root Rechten ausgeführt. Somit stellt HABridge ein frei zugängliches Webinterface zur Verfügung, welches Scripte auf dem Pi mit root Rechten ausführbar macht. Keinesfalls sollte ein Pi mit HABridge vom Internet her zugreifbar sein. Im Heimnetz ist HABridge nur akzeptabel, wenn alle Nutzer 100% vertrauenswürdig sind. Auf Dauer sollte hier unbedingt ein Passwortschutz her, allerdings reagieren die Macher von HABridge bisher nicht.

Alexa anlernen:
Einfach: „Alexa, Geräte erkennen“
Nach ein paar Sekunden meldet Alexa die erkannten Geräte. Erster Test: „Alexa, Licht anschalten“.
Alexa kommt nicht mit jedem Gerätenamen klar. Aktuell sind Umlaute problematisch. Ebenso mag Alexa keine Gerätenamen, die man nicht im Wörterbuch findet.
Ein paar Beispiel, die bei mir gut funktionieren: Licht, Stehlampe, Jalousie, Weihnachtsbaum. Nicht gut gehen: Rolladen, Deckenfluter, Schrank
Vermutlich wird sich die Amazon Spracherkennung noch verbessern. Aktuell muss man ein wenig probieren. Wenn man die Namen in HABridge per edit ändert, einfach danach Alexa nochmal nach den Geräten suchen lassen.
Tipp: Von HABridge aus „My Echo“ gehen. Dann auf Einstellungen –> Verlauf. Dort kann man sehen, was Alexa verstanden hat.

Amazon Echo Dot importieren und Sprache auf Deutsch ändern

Aktuell bekommt man in Deutschland die Echo Produkte nur auf Einladung und damit praktisch nicht zu kaufen. Dürfte wohl ein etwas merkwürdiges Markteinführungsvorgehen von Amazon sein, denn in den USA bieten sie die Echo Dots in 5er Packs an.
Ich habe einen Echo Dot als Black Friday Deal für $39,95 in den USA erstanden und mitgebracht. Vorher habe ich nirgendwo herausgefunden, ob man denn den US Echo Dot problemlos in Deutschland auf Deutsch ans Laufen bekommt.
Geht problemlos. Hier die Details:

1. Stromversorgung:
Anders als der Echo hat der Echo Dot einen MicroUSB Stromanschluss. Es ist also kein Problem, den Dot mit einem anderen Netzteil zu versorgen. Zu beachten ist allerdings, dass das Amazon Netzteil bis zu 1.8A liefert. Man sollte also zu einem, 2A Handynetzteil greifen. Alternativ kann man auch das US Netzteil verwenden. Dieses ist von 100-240V Wechselstrom geeignet. Man braucht dann natürlich einen Adapter für den Stecker. Was wirklich günstiger ist, dürfte vom Einzelfall abhängen.
echodot_netzteil echodot_netzteil2

2. Einrichtung:
Die Einrichtung geht problemlos über die Alexa App. amazon.com und amazon.de sind nicht die identischen Plattformen. Die Geräteliste scheint aber übergreifend realisiert. Kauft man auf .com einen Echo, so erscheint er nach dem Versand auch in der .de „Meine Apps und Geräte“ Liste.

3. Eindeutschen
Mein Echo Dot sprach denn zunächst Englisch mit mir. Die Umstellung auf Deutsch und deutsche Einheiten geht über die Alexa App:
Einstellungen –> Mein Echo Dot –> Sprache auf Deutsch, Einheiten auf metrisch.
Für diese Änderungen muss der Echo online sein.

Hier nochmal als Bildfolge:
alexaeinstellungen alexageraeteliste echodoteinstellungen

Fertig. Alexa spricht Deutsch.

Nikon Coolpix S2800 LCD Display reparieren

Letztes bin ich gefragt worden, ob ich eine Nikon Coolpix S2800 mit defekten LCD Display reparieren könnte.
s2800_lcd_defekt
Hier ist die Dokumentation der Reparatur. Ein passendes Ersatzdisplay konnte ich auf aliexpress für knapp 5€ inkl. Versand bekommen. Nach 4 Wochen war das Ersatzteil da.

Zur Reparatur:
Eine Warnung vorne weg. Die Kamera enthält einen fest verbauten Blitzkondensator (nicht der normale Akku). Dieser ist typischerweise auf ~300V aufgeladen. Wenn man die passenden Kontakte anfasst, bekommt man ordentlich einen „gewischt“. Wer diesbezüglich unsicher ist, lässt die Kamera mit ausgebautem Akku eine Woche liegen.
Am Anfang den Akku herausnehmen und die SD Karte entfernen. Nun werden 6 kleine, schwarze Kreuzschrauben am linken, rechten und unteren Gehäuserand entfernt.
s2800_gehaeuseschrauben
Danach kann man die Vorderseite der Kamera abnehmen. An der unteren Seite beginnen und die vordere Schale anheben. Oben ist die Schale eingeklipst. Sie muss mit etwas Gefühl ausgehakt werden.
Bei der Demontage fällt wahrscheinlich die kleine Streuscheibe der Fokus-LED heraus. Bitte aufpassen, dass die kleine Scheibe nicht verloren geht. Sie wird beim Zusammenbau an der passenden Stelle in den Kameracorpus eingesetzt. Von vorne lassen sich die zwei silbernen Schrauben oben im silbernen Rahmen entfernen.
s2800_schrauben_innenfront
Nun kann man die hintere Gehäuseschale abnehmen; auch hier wieder unten beginnen.
s2800_hintenoeffnen
Die zwei silbernen Halteschrauben des Tastenfeldes entfernen.
s2800_tastenschrauben
Das Tastenfeld wird seitlich heraus geschoben. Es ist mit zwei Rastlaschen neben dem Display fixiert und muss auf der Außenseite der Kamera etwas angehoben werden.
s2800_tastenentfernen
Das Tastenfeld lässt ich jetzt hochklappen. Ich habe die Blechwinkel am Tastenfeld leicht verbogen, um besser an die Platine unter dem Tastenfeld zu kommen. Die Blechwinkel lassen sich beim Rückbau leicht wieder zurückbiegen. Das Display lässt sich aus der Halterung heben; es ist nur geklemmt und wird vom Gehäuse gehalten.
s2800_displayentfernen
Man erkennt unter dem Tastenfeld den Anschlussstecker für das Display. Um das Kabel zu entfernen, muss der Stecker entriegelt werden. Dazu muss man VORSICHTIG die schwarze, längliche Abdeckung auf dem Stecker nach oben klappen. Dabei bitte drauf achten, diese Abdeckung nicht zu zerstören.
s2800_displaystecker
Wenn die Abdeckung 90 Grad nach oben gekappt wurde, kann man das Flachbandkabel des Displays herausziehen. Das Kabel des neuen Displays einschieben und die schwarze Klappe wieder nach unten klappen und einrasten. Nicht vergessen die Schutzfolie vom neuen Display abzuziehen. Die Kamera wird wieder in umgekehrter Reihenfolge zusammengebauen. Die Streuscheibe (s.o.) dabei nicht vergessen 🙂

Ergebnis:
s2800_repariert
Viel Erfolg