Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss15:datenuebertragung_mit_schall

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss15:datenuebertragung_mit_schall [2015/09/21 19:22]
m.schramm [3. Code-Bausteine]
ss15:datenuebertragung_mit_schall [2016/05/10 14:46] (aktuell)
Zeile 2: Zeile 2:
 ====== Datenübertragung mit Schall ====== ====== Datenübertragung mit Schall ======
  
-===== 1. Die Idee =====+===== 1. Entstehung des Projekts ===== 
 +==== 1.1 Die Idee =====
 Die Idee zu diesem Projekt entstand als ich einen [[http://​www.golem.de/​news/​google-tone-chrome-piept-urls-1505-114178.html|Artikel]] über die Chrome-Erweiterung [[http://​g.co/​tone|Google Tone]] gelesen habe. Diese Erweiterung ermöglicht es Links mit anderen Computern in Hörweite zu teilen. So weit so unspektakulär,​ allerdings nutzt Google Tone zur Übertragung akustische Signale und das ist in der Datenübertragung eher ungewöhnlich. Ich war allerdings fasziniert von dieser ungewöhnlichen Art der Kommunikation von Computern untereinander,​ die sonst eher der menschlichen Verständigung durch Sprache ähnelt. Mein Interesse war also geweckt und ich fand auch schnell ebenso begeisterte Mitstreiter für mein Projekt. Besonders interessant ist auch wo akustische Datenübertragung sonst noch angewendet wird, z.B. unter Wasser und angeblich auch in dem Supertrojaner [[https://​en.wikipedia.org/​wiki/​BadBIOS|BadBIOS]]. Die Idee zu diesem Projekt entstand als ich einen [[http://​www.golem.de/​news/​google-tone-chrome-piept-urls-1505-114178.html|Artikel]] über die Chrome-Erweiterung [[http://​g.co/​tone|Google Tone]] gelesen habe. Diese Erweiterung ermöglicht es Links mit anderen Computern in Hörweite zu teilen. So weit so unspektakulär,​ allerdings nutzt Google Tone zur Übertragung akustische Signale und das ist in der Datenübertragung eher ungewöhnlich. Ich war allerdings fasziniert von dieser ungewöhnlichen Art der Kommunikation von Computern untereinander,​ die sonst eher der menschlichen Verständigung durch Sprache ähnelt. Mein Interesse war also geweckt und ich fand auch schnell ebenso begeisterte Mitstreiter für mein Projekt. Besonders interessant ist auch wo akustische Datenübertragung sonst noch angewendet wird, z.B. unter Wasser und angeblich auch in dem Supertrojaner [[https://​en.wikipedia.org/​wiki/​BadBIOS|BadBIOS]].
-==== 1.Quellen, Literatur, Vorbilder ====+==== 1.Quellen, Literatur, Vorbilder ====
   * Google Tone - Google Chrome-Erweiterung zur Übertragung von URLs per Tonsignal an Computer in Hörweite   * Google Tone - Google Chrome-Erweiterung zur Übertragung von URLs per Tonsignal an Computer in Hörweite
     * http://​googleresearch.blogspot.de/​2015/​05/​tone-experimental-chrome-extension-for.html     * http://​googleresearch.blogspot.de/​2015/​05/​tone-experimental-chrome-extension-for.html
Zeile 16: Zeile 17:
   * Chirp - eine App zur Datenübertragung per Schall zwischen Smartphones   * Chirp - eine App zur Datenübertragung per Schall zwischen Smartphones
     * http://​chirp.io/​technology/​     * http://​chirp.io/​technology/​
-==== 1.Benötigte Soft- und Hardware ====+==== 1.Benötigte Soft- und Hardware ====
   * mind. 2 Computer mit Mikrofonen und Lautsprechern   * mind. 2 Computer mit Mikrofonen und Lautsprechern
   * Python Distribution   * Python Distribution
   * Pyaudio   * Pyaudio
-===== 2. Ziel des Projekts ====+  * es empfiehlt sich alle Audio-Effekte bei der Wiedergabe als auch bei der Aufnahme zu deaktivieren um eine Verfälschung des Signals zu vermeiden 
 +===== 2. Ziel des Projekts ​===== 
 +==== 2.1 Hauptziel ​====
 Entwicklung eines Programmes, dass es ermöglicht Daten (URLs etc.) per Schall von einem Computer zu einem anderen zu übertragen. Entwicklung eines Programmes, dass es ermöglicht Daten (URLs etc.) per Schall von einem Computer zu einem anderen zu übertragen.
-==== 2.Etappenziele ====+==== 2.Etappenziele ==== 
 +=== Erledigt ​===
   * Installation von Pyaudio und erstes Verständnis der Funktionen (insbesondere schallwerkzeuge.py)   * Installation von Pyaudio und erstes Verständnis der Funktionen (insbesondere schallwerkzeuge.py)
   * Testen der Machbarkeit anhand eines "​Prototyps":​ abschnittsweise Fourier-Transformation   * Testen der Machbarkeit anhand eines "​Prototyps":​ abschnittsweise Fourier-Transformation
   * Entwicklung einer Methode mit Taktrückgewinnung:​ Herausfiltern der Takt-Frequenz,​ Hüllkurve durch Hilbert-Transformation   * Entwicklung einer Methode mit Taktrückgewinnung:​ Herausfiltern der Takt-Frequenz,​ Hüllkurve durch Hilbert-Transformation
   * Fehlerkorrektur durch Hamming-Code   * Fehlerkorrektur durch Hamming-Code
 +=== Noch zu machen ===
   * Realisierung einer kontinuierlichen Aufnahme und Auswertung mithilfe einer queue-Klasse   * Realisierung einer kontinuierlichen Aufnahme und Auswertung mithilfe einer queue-Klasse
-  * Optimierung (bessere Reichweite, geringere Störanfälligkeit etc.), angenehmere Töne+  * Optimierung (bessere Reichweite, geringere Störanfälligkeit etc.), angenehmere Töne  
 +  * Übersetzung von Dateien (Text, Bilder, ...) in Bit-Listen und zurück
   * evtl. Übertragung auf Smartphone-App   * evtl. Übertragung auf Smartphone-App
  
-===== 3. Code-Bausteine ​=====+===== 3. Code ===== 
 +==== 3.1 Überblick ==== 
 +{{ :​ss15:​overview1.jpeg?​direct&​500 |Programm-Übersicht}} 
 +===3.2 Komponenten ​==== 
 +  * [[Schallwerkzeuge]]
   * [[Der Prototyp]]   * [[Der Prototyp]]
   * [[Tonerzeugung]]   * [[Tonerzeugung]]
   * [[Tonverarbeitung]]   * [[Tonverarbeitung]]
   * [[Hamming-Code]]   * [[Hamming-Code]]
 +
 +==== 3.3 Tips zum Testen des Codes ====
 +Wir fanden es sehr hilfreich für das eigene Verständnis und zum Debuggen unseren Code oft zu testen. Besonders anschaulich geht das grafisch mit [[http://​matplotlib.org/​api/​pyplot_api.html|matplotlib.pyplot]]. Damit wir ein Signal nicht immer wieder neu aufzunehmen brauchen hat uns Stefan das Modul ''​pickle''​ gezeigt. Damit lassen sich Daten abspeichern und wieder einlesen.
 +
 +Hier ist ein Grundgerüst zum aufnehmen und wieder einlesen von Ton. Über ''​AUFNEHMEN''​ lässt sich steuern ob neu aufgenommen werden soll oder eine alte Aufnahme verwendet wird.
 +<code python>
 +from pickle import Pickler, Unpickler
 +AUFNEHMEN=True
 +if AUFNEHMEN:
 + y = sw.recordsnd(None,​ 5)
 + with open("​beispielaufnahme.dump","​wb"​) as f:
 + p=Pickler(f)
 + p.dump(y)
 +else:
 + with open("​beispielaufnahme.dump","​rb"​) as f:
 + p=Unpickler(f)
 + y=p.load()
 +</​code>​
 ===== Sonstiges ===== ===== Sonstiges =====
 +=== Danksagung ===
 +Wir möchten uns herzlich bei Stefan für seine tolle Unterstützung bedanken! Wir hatten eine spannende und lehrreiche Zeit im MATHESIS-Labor.
 +
 === Teilnehmer === === Teilnehmer ===
   * Moritz Schramm   * Moritz Schramm
ss15/datenuebertragung_mit_schall.1442856130.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)