
SONY, das sich entschieden hat, sich auf dem Markt für Action-Kameras zu präsentieren, bringt eine Reihe von HDR-Geräten heraus. Kunden mit einer attraktiven Füllung zuwinken - eine gute Matrix, ein schneller Prozessor, eine Zeiss-Optik und ein elektronischer Bildstabilisator mit geringem Gewicht -, zeigt das Unternehmen sein "wahres Gesicht des Kapitalismus".
Zur Steuerung der Kamera wird eine Fernbedienung mit Videoanzeige über WLAN freigegeben. Die Fernbedienung ist recht teuer und Mangelware - sie kann nur noch auf verschiedenen elektronischen Flohmärkten gekauft werden.

Aber es gibt WiFi, so dass Sie es von Ihrem Handy aus steuern können? Haben Sie schon einmal versucht, mit einem Smartphone in der Hand Ski zu fahren oder Wakeboarden? Diese Unannehmlichkeit reicht jedoch noch nicht aus:
SONY kümmert sich nicht um seine Kunden und entfernt die PlayMemories Mobile-Anwendung von Google Play, um seine Action-Kameras über WLAN von jedem Mobiltelefon aus zu steuern. Dadurch wird sie durch eine Smartwatch-Anwendung ersetzt. Stattdessen wird
Imaging Edge Mobile gestartet - furchtbar unangenehm und fällt ständig von der Kamera. Das gleiche Lied für iPhone Apps.
Als
betrügerischer Mitwirkender , der Benutzer der HDR AS100-Kamera, entschied ich mich für eine alternative Lösung und stieß auf ein ziemlich interessantes Archiv -
Sony Camera Remote API Beta SDKDas SDK wurde für die Entwicklung von SONY-Kamerasteuerungsanwendungen über WLAN von Android- und iOS-Geräten entwickelt.
Im Archiv befinden sich zwei Verzeichnisse mit Beispielen für die Entwicklung von Java-Anwendungen für Android und iOS. Am interessantesten sind die PDF-Dokument-
API-Referenzen für Camera Remote API beta . Es wird entschieden - ich werde die Fernbedienung mit meinen eigenen Händen machen
Was ist in Ihrer API?
Erstens gibt es eine Tabelle der unterstützten Geräte für Februar 2017.
Basierend auf der Tabelle ist die API mit unterschiedlichem Funktionsumfang mit fast allen HDR-Actionkameras von AS15 bis AS300, FDR-Kameras, DSC-, ILCE- und NEX-Kameras mit WiFi-Schnittstelle kompatibel.
Als Nächstes beschreibe ich, wie Sie mit der HDR AS100-Kamera mit der neuesten Firmware 2.0.0 arbeiten. Dies setzt voraus, dass sie mit anderen Geräten kompatibel ist.
Zweitens das Kamerasteuerungsprotokoll. Jedes SONY-Gerät aus dieser Liste ist ein HTTP-Server, der Anforderungen ausführt und außerdem separate Frames im JPEG-Format und Streaming-Video ausgibt.
Mein Ziel ist es, eine kompakte und kostengünstige Fernbedienung für SONY-Kameras zu entwickeln
Um zu beginnen, müssen Sie sicherstellen, dass WiFi im Kameramenü aktiviert ist:
[SETUP] -> [CONFG] -> [Wi-Fi] -> [ON]
Die Kennung und das Passwort müssen sich auf einem separaten Aufkleber in der Bedienungsanleitung der Kamera befinden. Wenn dieser Aufkleber verloren geht, können Sie die Kamera über MicoUSB an einen Computer mit Microsoft Windows anschließen und einschalten. [USB] wird auf dem Bildschirm angezeigt und zwei Netzwerklaufwerke auf dem Computer - mit einer in die Kamera eingesetzten Speicherkarte und dem internen Speicher der PMHOME-Kamera. Wir interessieren uns für die zweite Scheibe
Die Datei: \\ INFO \ WIFI_INF.TXT enthält die Kennung und das Kennwort für den Zugriff auf die Kamera über WLAN, und die Datei \\ INFO \ WPS_PIN.TXT enthält den Schlüsselstift für die Verbindung über WPS. Der Zugriff auf Informationen ist schreibgeschützt, sodass das Ändern der Kennung, des Passworts oder der PIN nicht möglich ist.
Jetzt können Sie mit diesen Daten eine Verbindung zur Kamera herstellen. Die IP-Adresse der Kamera lautet nach dem Anschließen 192.168.122.1. Um die Kamera zu steuern, müssen Sie HTTP-POST-Anforderungen an die Adresse
192.168.122.1 : 10000 / sony / camera senden.
Die folgenden Adressen können für verschiedene Kameramodelle verwendet werden:
10.0.0.1 : 10000 / Kamera
10.0.0.1 : 10000 / Sony / Kamera
192.168.122.1 : 8080 / sony / camera
192.168.122.1 : 10000 / Sony / Kamera
Drittens die Struktur der Anfrage und Antwort. Jede Anforderung enthält einen Befehl im JSON-Format und gibt eine Antwort auch im JSON-Format zurück. Eine vollständige Liste der Befehle sowie Anwendungsbeispiele sind in derselben PDF-Datei enthalten.
Über das HTTP-Protokoll werden auch fertige Dateien mit Bildern und einem Videostream zum Anzeigen von der Kamera zurückgegeben.
Das schwierigste Protokoll ist die Anforderung von Informationen. Abhängig von der Version der Anforderung (1.0 - 1.3) wird ein Array von 34 bis 62 Parametern im JSON-Format erstellt, das wiederum auch Arrays sein kann, und es gibt zwei Betriebsmodi - mit sofortiger Reaktion auf vollständige Informationen zum Status der Kamera und mit einer Reaktion auf ein Ereignis auf der Kamera (z. B. Umschalten eines Modus oder Starten der Aufnahme)
Der erste Pfannkuchen ... LUTOM
Das Herzstück des Geräts wird ein
feuriger Motor sein - der billigste MK mit WiFi - der chinesische ESP8266. Als ich mir die langweilige Neuzeichnung des Bildes auf einem 240 × 320-Grafikbildschirm mit SPI ansah, entschied ich mich, die Produktion einer Kopie meines Sony Kovsky-Fernbedienungspanels mit Echtzeit-Videovorschau zu verschieben und entschied mich für die Funktionalität eines gewöhnlichen Ein- / Ausschalters mit einer Auswahl des Modus. Das Display war eine 0,91 "einfarbige OLED mit einer Auflösung von 32 × 128, die üblicherweise in preiswerten Fitnessarmbändern verwendet wird.
Prototyp Schema:

Board Design:


Nun, das Opfer der LUT:


Firmware
Ich empfehle, diesen Teil an Arduino-Hasser zu überspringen, da ich die Firmware in Arduino IDE mit installiertem ESP8266 Core entwickelt habe. Der Einfachheit halber habe ich zusätzliche Bibliotheken verwendet:
Mit Grafikbibliotheken ist alles klar. Sie werden zum Arbeiten mit dem OLED-Display benötigt. WiFiManager ist eine sehr praktische Bibliothek zum Einrichten von WiFi-Verbindungen in ESP. Beim Aufrufen des Einstellungsmodus wird der Zugriffspunkt auf ESP und seinen minimalistischen WEB-Server erhöht, zu dem er bei Verbindung umgeleitet wird. Sie können im automatischen Modus starten, der Einstellungsmodus wird jedoch jedes Mal gestartet, wenn keine Kameraverbindung besteht. Ich habe mich entschieden, durch langes Drücken der Taste „BOOT / MODE“ in den Einstellungsmodus zu wechseln und das Menü nach Ablauf von 120 Sekunden zu verlassen.
Die WiFiManager-Bibliothek ist auch insofern praktisch, als Sie Ihre eigenen Felder für die Anpassung hinzufügen können (dies war für mich in diesem Projekt nicht hilfreich) sowie Ereignisse verarbeiten - in den Setup-Modus wechseln und Einstellungen speichern.
Nachdem die Einstellungen für die Verbindung zur Kamera konfiguriert wurden, stellt das Programm eine Verbindung her, die auf dem Bildschirm angezeigt wird. Wenn eine Verbindung hergestellt wird, sendet das Programm jede Sekunde eine Anforderung für den aktuellen Status an die Kamera und zeigt die Änderungen auf dem Bildschirm an. Dies geschieht, damit Sie Kamerasteuerungen direkt über die Schaltflächen verfolgen können.
Mit der Taste „BOOT / MODE“ schalten wir zyklisch die drei Hauptkameramodi „VIDEO“, „PHOTO“ und „LAPSE“ um. Verwenden Sie die PLAY / STOP-Taste, um die Aufnahme im VIDEO- oder LAPSE-Modus zu aktivieren / deaktivieren und ein einzelnes Foto im PHOTO-Modus aufzunehmen. Bei eingeschalteter Aufnahme leuchtet die rote LED. Während der Aufnahme blinkt das Foto einmal.
Es gibt auch einen zusätzlichen Eingang am GPIO14, der im Wesentlichen die „PLAY / STOP“ -Taste dupliziert. Dieser Eingang wird zum Anschließen eines externen Auslösers benötigt, der die Fotoaufnahme für Zeitraffer-Schnappschüsse mit einem externen Ereignis synchronisieren kann. Über diesen Eingang möchte ich eine Verbindung zu einem 3D-Drucker herstellen und Zeitraffervideodruckteile aufnehmen.
Von den zusätzlichen Funktionen misst das Programm regelmäßig die Werte des ADC-Eingangs, an den der Teiler direkt von der Batterie angeschlossen ist, und zeigt den Batteriestatus mit dem Symbol an. Das Programm wird auf Teilern R12 = 1.6K und R11 = 10K und einer Lithiumbatterie kalibriert.
Leider unterstützt die AS100 die Ausgabe der Aufnahmezeit in JSON und die Anzahl der Aufnahmen im Zeitraffermodus nicht. In Skizzen werden diese Parameter in Variablen geschrieben. Wenn sich jemand wiederholt, können sie auch auf anderen Kameras angezeigt werden.
"Industrielle" Probe
Vor kurzem war ich
faul , Boards auf
JLCPCB zu bestellen, und jetzt war in der letzten Bestellung 100x100 freier Speicherplatz.
Das Design wurde für die Zwei-Wege-Installation fertiggestellt und im Schaltkreis wurde beim TP4056 eine Lithium-Aufladung hinzugefügt:



Die Chinesen versuchten mir schüchtern mitzuteilen, dass ich mehrere Bretter in einer Bestellung bestelle. Aber wir sind es nicht gewohnt, uns zurückzuziehen - ich kombiniere alle Tafeln mit einem gemeinsamen Rahmen im Siebdruck, verbinde Zeil verschiedener Tafeln (schneide trotzdem) und schreibe sogar auf Russisch, dass dies eine Tafel ist)))

Man muss zwar die Bretter von Hand schneiden, dafür gibt es gute Metallscheren.
Als Ergebnis erhalten wir ein solches Produkt


Der einfachste Fall auf einem 3D-Drucker:



Wie es funktioniert:
Nun eine kleine Bewerbung
Warum wurde die Eingabe eines externen Triggers gestartet? Ich wollte versuchen, TimeLaps-Drucke mit meiner SONY HDR AS100-Kamera auf einem 3D-Drucker aufzunehmen. Dafür bin ich in der Steuerung und habe einen Eingang für einen externen Trigger gemacht. Es gibt verschiedene Möglichkeiten, ein Signal an diesen Eingang zu senden.
Verbinden Sie sich mit dem freien Pin des Controllers und nähen Sie die Steuerung dieses Eingangs mit einem zusätzlichen G-Code-Befehl in die Druckerfirmware ein.
Installieren Sie OctoPrint mit dem
OptoLapse- Plugin und verbinden Sie den Eingang der Fernbedienung mit dem freien Orange PI / Raspberry PI-Anschluss.
Installieren Sie einen zusätzlichen Endschalter, der an die Steuerung angeschlossen ist, und nehmen Sie den Kopf des Druckers, um Bilder von jedem Rahmen aufzunehmen, so dass er auf diesen Schalter drückt.
Ich habe die 3. Methode ausprobiert:


In PHP schrieb er schnell ein Skript auf sein Knie, das nach dem Drucken jeder Schicht den Code für das Zurückziehen des Kopfes in die Position des Endschalters einfügt.
<?php $file1 = $argv[1]; $file2 = $argv[2]; if (!file_exists($file1)) { printf("Can't open %s\n",$file1); exit(1); } $flag = 0; $f1 = fopen($file1,"r"); $f2 = fopen($file2,"w"); while( !feof($f1) ){ $s = fgets($f1, 1024); $n = strpos($s,";LAYER:"); if( $n !== false )$flag = 1; if( $flag == 1 ){ $n1 = strpos($s,"G0 "); if( $n1 !== false ){ fprintf($f2, ";TIMELAPSE BEGIN\n"); fprintf($f2,"G10\n"); fprintf($f2, "G91\n"); fprintf($f2, "G0 F1000 Z10\n"); fprintf($f2, "G90\n"); fprintf($f2, "G0 F5000 Y230\n"); fprintf($f2, "G0 F5000 X178 Y230\n"); fprintf($f2, "G4 P1000\n"); fprintf($f2,"%s",$s); fprintf($f2,"G11\n"); fprintf($f2, ";TIMELAPSE END\n"); $flag = 0; } else { fprintf($f2,"%s",$s); } } else { fprintf($f2,"%s",$s); } } fclose($f1); fclose($f2); ?>
Der G-Code nach jeder Ebene sieht folgendermaßen aus:
;TIMELAPSE BEGIN G91 G0 F1000 Z10 G90 G0 F5000 Y230 G0 F5000 X178 Y230 G4 P1000 G0 F6000 X93.168 Y92.836 Z0.3 ;TIMELAPSE END
Leider konnte ich mich nicht sofort mit der Rückverfolgung des Druckers befassen, sodass das erste Video mit dem Namen "Druck-Rotz" herauskam.)))
"Aber das ist eine ganz andere Geschichte" ©
Das ganze OpenSource-Projekt. Die Firmware-
Quelle , die Board-
Designdateien , die Schaltkreise und
das Gehäusemodell können auf GITHUB übernommen werden .
Originalartikel auf meinem Blog