Category Archives: DIY

Raspbian Audioplayer

Comments Off on Raspbian Audioplayer
Filed under DIY, Raspberry Pi, Raspberry Pi OS

Um ein Audio-File mit einem simplen Tastendruck abspielen zu können, braucht man eine Mindest-Konfiguration aus RaspberryPi und einem Audio-Ausgabe-Gerät, in meinem Fall ein Raspberry Pi Zero WH und ein Speaker pHat. Dazu natürlich noch ein Taster und ein Gehäuse, beides sehr robust, beides von Conrad Electronics.

Zum Einrichten habe ich einen RPi 3+ und einen externen Speaker benutzt, danach sollte alles auch dem RPi Zero laufen. Zur Software: ich habe das Raspbian-Buster-Lite-Image benutzt, also ebenfalls die Minimal-Variante. Optional ist die SMB-Installation, ist nur einfach angenehmer um die Audio-Daten leicht hin- und herzuschieben. Das Script sieht folgendermassen aus:


from time import sleep

import RPi.GPIO as GPIO

import os

import sys

GPIO.setmode(GPIO.BCM)

button1=17

GPIO.setup(button1,GPIO.IN,pull_up_down=GPIO.PUD_UP)

while(1):

if GPIO.input(button1)==0:

print "Button 1 Was Pressed:"

os.system("amixer cset numid=1 85%")

os.system("aplay /home/pi/audiobutton/button/audio.wav -D sysdefault:CARD=0")

sleep(.1)

Wichtig die Kennung für den GPIO-Port, hier 17 (Pin: 11), und der Verweis auf die Audio-Datei plus optionaler Angabe des Audio-Devices (CARD=0). Bei integrierten, höherwertigen DACs ist diese Angabe empfehlenswert und notwendig, für den Standard-Klinken-Ausgang nicht. Auto-Starten des Scriptes: das passiert durch einen Eintrag in /etc/profile, meine Ergänzung lautet hier:


sudo python /home/pi/audiobutton/button/button.py &

Absolut wichtig hier: das System muss auf Auto-Login eingestellt sein, deswegen über sudo raspi-config > Boot Options > Desktop/CLI > Console AutoLogin dort die entsprechende Einstellung machen.

Hier noch ein hilfreicher Link zur allgemeinen Audio-Konfiguration unter Raspbian: https://dafrk-blog.com/de/audio-ueber-raspberry-pi-abspielen-mittel-und-wege/

Raspbian: Minimal Webcam

Comments Off on Raspbian: Minimal Webcam
Filed under DIY, Raspberry Pi, Raspberry Pi OS

Diese Variante einer mobilen Webcam enthält softwareseitig nur ein Skript für die Erstellung und FTP-Upload des “webcamimage.jpg” sowie einen Cron-Job der jede Minute ausgeführt wird.
An zusätzlicher Software wird sshpass benötigt, Datenübertragung erfolgt mit SFTP. Das normale FTP wird von kommerziellen Hosting-Firmen nicht mehr unterstützt.
Beispiel-Syntax für Download: user@host:directory/webcamimage.jpg
Beispiel-Syntax für Upload: user@host:directory/ <<< $'put webcamimage.jpg'
Hier das komplette Script (password muss in Quotationmarks):

#!/bin/bash
cd /home/pi/webcam/
sudo rm *.jpg
raspistill -rot 180 -w 1640 -h 1232 -o "webcamimage.jpg"
sleep 1
sshpass -p "password" sftp -oPort=22 user@host:directory/ <<< $'put webcamimage.jpg'
exit

Hardware ist hier ein Raspberry Pi Model B Plus Rev 1.2 plus Kamera Modul V2 plus TPLink TL-WN722n (Rev1, Atheros).

Twitter Photo Bot (Raspberry Pi/Camera Module V2) updated

Comments Off on Twitter Photo Bot (Raspberry Pi/Camera Module V2) updated
Filed under DIY, Raspberry Pi, Raspberry Pi OS

IMG_1993

Der neue Raspberry Pi V3 Model B kommt neuerdings mit integriertem WiFi und das neue Kameramodul V2 kommt jetzt neuerdings mit einer 8-MP-Kamera, diese beiden neuen Features unterstützen die Realisierung des “Twitter Photo Bot” ganz wesentlich.
Die Idee: ein System, was regelmässig und völlig autonom Bilder macht und tweetet. Bei minimalem Bedienungsaufwand, heißt: nur am Strom anschliessen, fertig.
Nötig an Hardware dafür ist (neben dem Raspberry Pi und dem Kameramodul) ein mobiler UMTS-WLAN-Router, der die Netzverbindung herstellt. Diese 3 Sachen müssen alle in ein Gehäuse. Der Router braucht natürlich eine SIM-Karte mit entsprechenden Datenkontingent, auf die Schnelle habe ich mit einem Datenverbrauch von 500 MB pro Monat kalkuliert. Das Ganze hat also den Charakter einer Webcam-to-Go, allerdings mit reiner Twitter-Anbindung, denn irgendwohin müssen ja auch die ganzen Daten, im Jahr wären das stolze 6 GB.
Benötigte Software: das Standard-Raspbian, einen Twitter-Account, die Twython-Bibliothek und ein Python-Script, was über Crontab ausgeführt wird. Das Betriebssystem verarbeite ich mit SDFormatter und ApplePi-Baker, siehe AudioCube, das geht definitiv am schnellsten.
Die App-Registration unter apps.twitter.com braucht etwas mehr Zeit, definiert werden muss ein Name, eine Beschreibung und hinterlegt werden muss eine Handynummer. Die kann man aber nach der Registrierung wieder rausnehmen.

Bildschirmfoto 2016-08-03 um 14.32.46

Die benötigten Token (bei “Manage Keys and Access Tokens”) sind: Consumer Key (API Key), Consumer Secret (API Secret), Access Token und Access Token Secret.
Weiterhin brauchen wir die Twython-Bibliothek, diese wird installiert über:

sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install twython

Hier das endgültige Skript (twitterphotobot.py):


import sys
import os
import random

from twython import Twython

consumer_key = 'lc7dhdghgdhgdfhgdfGPP3'
consumer_secret = 'Fy0S5NhdhgfhdgfhgfdhgfdhdgfhLuvdZpuwiiNgh6'
access_token = '760076306dhdhdfghgdfhdfhgfdhgdfhdgfQzqDhvlLS'
access_token_secret = 'HOidOZfcdhdghdfhgfdhgdfhgfdhdgfZfuXLEAgMMITGKw'

messages = [
"I ve got the Power.",
"Strawberry Fields forever.",
"Boom. Shake, shake, shake the room.",
"We dont need no education.",
]

takephoto = "raspistill -w 1280 -h 960 -q 100 -o /home/pi/Desktop/picture.jpg"
os.system(takephoto)
photo = open('/home/pi/Desktop/picture.jpg', 'rb')
twitter = Twython(consumer_key, consumer_secret, access_token, access_token_secret)
image = twitter.upload_media(media=photo)
twitter.update_status(status=random.choice(messages), media_ids=[image['media_id']])

Unter “messages” stehen die Texte des Tweets, die per Zufall eingebunden werden, letzte Zeile. Unter “takephoto” wird die Grösse des Bildes festgelegt; die Bildgrösse muss unbedingt begrenzt werden, weil die rohe Foto-Ausgabe des Camera-Moduls die maximale Twitter-Photo-Upload-Größe (<3MB) überschreitet.
Getestet wird das Skript mit python twitterphotobot.py, bei mir dauerte das ganze ca. 20 Sekunden zum Ausführen, danach sollte der Tweet auch schon veröffentlicht sein.
Troubleshooting: SyntaxError: Non-ASCII character '\xc2' ...
Der Fehler bzgl. der Sonderzeichen innerhalb der “messages”-Sektion passiert häufig, hier werden die Umlaute oder falsche Apostrophe (Akut,´) angemerkt. Stattdessen sollte man das Ersatz-Apostroph verwenden (‘). Eine Lösung für die Umlaute habe ich noch nicht.
Raspberry-Pi-Zeit setzen: sudo dpkg-reconfigure tzdata
Crontab: https://www.raspberrypi.org/documentation/linux/usage/cron.md, bei mir ist jede Viertelstunde eingestellt.
Der letzte Schritt ist die WiFi-Anbindung an den UMTS-Router, dafür gibt es eine kurze Anleitung hier: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md, die SSID und das Passwort stehen bei diesem Model von TP-Link auf der Innenseite des Deckels.
Mit der umfangreichste Teil der Übung ist ein effektives Gehäuse. Ich habe das Innenteil eines Festplattengehäuses in ein MDF-Gehäuse eingepasst, Schwierigkeit besteht darin, dass die Kamera irgendwie fest mit Gehäuse verankert sein muss, gleichzeitig man aber auch an das Innenleben kommen sollte. Und an den Ethernet-Port sollte man auch immer denken, um natürlich das System warten zu können.

Bauteile:

Raspberry Pi V3 Model B 40 EUR
Raspberry Pi Kameramodul V2 32 EUR
TP-Link UMTS Router 56 EUR
SD-Karte 16 GB 8 EUR

PS: das ganze funktioniert auch mit einem Raspberry Pi 1 Model B und Debian Jessie Lite.

IMG_2014

Update 23.9.: Das Sonderzeichen-Problem löst man durch die Definierung des Encodings in der ersten Zeile des Scripts:
# -*- encoding: utf-8 -*-

Re-Create the “No more secrets”-Effect from “Sneakers” (1992) in Mac OS X 10.11

Comments Off on Re-Create the “No more secrets”-Effect from “Sneakers” (1992) in Mac OS X 10.11
Filed under DIY, Retro

giphy

1. Install Homebrew http://brew.sh
2. Install ncurses https://github.com/sup-heliotrope/sup/wiki/Mac-OSX
3. Make your Standalone Executable “nms” https://github.com/bartobri/no-more-secrets
4. Read this! Sorry Unix Fans, El Capitan kills Root
5. Put your nms-File from Step 3 in this Folder: /usr/local/bin/
6. Execute with this command: ls -alst | /usr/local/bin/nms

Download Demo Movie, 0:22 min, 5,7 MB

via Medium

Digital Cinema Packages erstellen mit DCP-o-matic 2

Comments Off on Digital Cinema Packages erstellen mit DCP-o-matic 2
Filed under DIY

Mit DCP-o-Matic lassen sich aus Video-Files DPC-Container erstellen, die dann auf DCP-Server in digital ausgerüsteten Kinos abgespielt werden können. Diese DCPs bestehen hauptsächlich aus getrennt vorliegenden Ton-, Video- und evtl. Untertitel-Dateien in unkomprimierten Formaten, so wird Ton in ein 24-bit-PCM-File (pcm_xxxxx.mxf) und Video als eine JPEG2000-Sequenz konvertiert (j2c_xxxxx.mxf). Weiterhin ist die “Composition Playlist” wichtig (cpl_xxxxx.xml), ein Playlist-File, das alle Media-Elemente für das Package verwaltet.
Bildschirmfoto 2016-04-08 um 12.42.06
Aus der Konvertierung resultiert ein entsprechend grosser Ordner: in meinem Beispiel wurde aus einem 4:19-min-langen Clip eine 3,23 GB grosse Videodatei innerhalb des Containers. MXF-Files (Material eXchange Format) lassen sich normalerweise nur auf den DCP-Servern abspielen oder lokal auch über EasyDCP-Player vom Fraunhofer-Institut. Dieser liegt auch in einer Demo-Version vor, aber die Limitationen sind so extrem, dass eine visuelle Beurteilung nicht möglich ist, zur Kontrolle des DCP-Containers aber ausreicht.
Wichtig ist, im Vorfeld die Spezifikationen mit dem Kino-Betreiber zu besprechen, vor allem in Richtung Daten-Transport: welche Datenträger in welchen Formatierungen werden akzeptiert. MS-DOS-formatierte Datenträger lassen keine Dateien grösser als 2 GB zu und NTFS-Datenträger lassen sich auf dem Mac ohne weiteres nicht beschreiben. Eine Variante wären UDF-beschriebene DVDs (Universal Disk Format), darauf hätte ein Package von einer Filmdauer mit ca. 2:30 min Platz, diese liesse sich einfach auf dem Mac mit einem Super-Drive-DVD-Laufwerk schreiben.
Bildschirmfoto 2016-04-08 um 13.22.12
Um den Container mit DCP-o-matic zu erstellen, muss ein Ort für den Container bestimmt werden, deswegen “New …” im Vorfeld, um den Speicherort zu definieren.

Bildschirmfoto 2016-04-08 um 12.04.14

Das Filmmaterial (“Content”) wird automatisch in die Standard-DCP-Vorgabe (“Flat”) eingepasst, wichtig zu wissen, dass die DCP-Bildgrösse 1998×1080 beträgt, dh. 78 Pixel mehr in der Breite zu normalen 1080p. Dieser Bereich wird von der Software schwarz gefüllt, man muss also keine Anpassungen des eigenen Format machen. Vorrausgesetzt das Material entspricht den HD-Vorgaben mit einem Bildseitenverhältnis von 16:9.

Bildschirmfoto 2016-04-08 um 12.06.08

Die DCP-Details sind unter dem Reiter “DCP” einzusehen, dort unten sollte “Flat” ausgewählt sein. Framerate richtet sich auch nach dem Filmmaterial, allerdings hier nochmal Rücksprache mit dem Betreiber halten, ob 25 fps auf dem Server unterstützt werden. Die Standard-Auflösung liegt bei 2K.

Bildschirmfoto 2016-04-08 um 12.10.01

Das transkodieren (Menü: “Jobs > Make DCP”) benötigt entsprechend Zeit, ein 90-min-Film würde auf professioneller Hardware ca. 10 Stunden brauchen.

nützliche Links:

http://www.hbfilmworks.com/dcp-info.html

http://www.atms-film.de/dcp_umwandlung.html

http://mebucom.de/news-detail/event/dcp-pruefung-ist-sehr-zeitintensiv-.html