Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss15:datenuebertragung_mit_schall [2015/10/02 11:17] m.schramm [3. Code-Bausteine] |
ss15:datenuebertragung_mit_schall [2016/05/10 14:46] (aktuell) |
||
---|---|---|---|
Zeile 21: | Zeile 21: | ||
* Python Distribution | * Python Distribution | ||
* Pyaudio | * Pyaudio | ||
+ | * 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. Ziel des Projekts ===== | ||
==== 2.1 Hauptziel ==== | ==== 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.2 Etappenziele ==== | ==== 2.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 | ||
Zeile 34: | Zeile 37: | ||
* evtl. Übertragung auf Smartphone-App | * evtl. Übertragung auf Smartphone-App | ||
- | ===== 3. Code-Bausteine ===== | + | ===== 3. Code ===== |
- | * [[Schallwerkzeuge] | + | ==== 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 |