Wir bauen ein sprechendes Distanzmessgerät
In Bearbeitung
Stand: 18. November 2015

  Was wollen wir bauen?

   Muster einer Sprachausgabe

Moderne Bauelemente gestatten den einfachen Aufbau von Einheiten zur Messung von Distanzwerten und ihrer Ausgabe im Sprachformat. Hauptbestandteile sind ein Ultraschallsensor,  ein Mikrocontroller und ein Sprachausgabemodul ( Abb.1 ).


Abb.1  Gesamtansicht des sprechenden Distanzmessers


  Was kann man damit anfangen?

Möglich sind vielfältige Entfernungsmessungen im Nahbereich mit ständiger akustischer Messwertausgabe. Denkbar ist dabei z.B. ein Einsatz als Einparkhilfe. Eine besondere Betriebsart erlaubt auch die Auslösug beliebiger Tonsignalausgaben bei Unterschreitung wählbarer Mindestdistanzen. Vorstellbar wird damit z.B. der Start von Sprachausgaben oder auch passenden Musikdarbietungen bei Annäherung an beispielsweise ein Gemälde, einen Spiegel, einen Ausstellungsgegenstand oder auch nur ganz einfach bei Betreten eines Raumes. In einem bekannten Fall wurde die Anordnung auch zur Auslösung von Alarmtonfolgen benutzt, mit deren Hilfe sich in ein Gelände eindringende Tiere vertreiben liessen.        

  Wie funktioniert die Anordnung?

Hauptbestandteil der realisierten Einheit ( Abb.2 ) ist ein Ultraschall-Distanzsensor des weit verbreiteten Typs "HC-SR04". Grundsätzlich gestattet er Entfernungsmessungen bis zu Distanzen von etwa 3 Meter mit wenigen Zentimetern Genauigkeit. Zur Steuerung der Messvorgänge wurde ein Mikrocontroller ATMEL328P verwendet, so wie er z.B. auf Boards des Typs ARDUINO "ProMini" (  5V-Version ) verbaut ist. Das dabei zum Einsatz kommende Steuerprogramm wurde in der üblichen, an das ARDUINO-System angepassten Version von "C++" erstellt.  Eine weitere Aufgabe des verwendeten Programmes ( hier auch als SKETCH bezeichnet ) ist  die Steuerung der Sprachausgabeeinheit  "DFPlayer" von Fa. DFRobot über deren seriellen Dateneingang. In der jeweils benötigten Reihenfolge werden dabei einzelne, dazu vorher im MP3-Format auf der zugehörigen Micro-SD-Speicherkarte abgelegte Sprachsegmente aufgerufen.


Abb.2 Schaltbild

Das Schaltbild weist wenige Besonderheiten auf. Bei unbeschalteten Prozessoreingängen "#A0" und "#A1" werden Distanzwerte zwischen 10cm und 1m in Rasterabständen von 5cm gesprochen.
Bei Unter- und Überschreiten dieses Entfernungsbereiches werden entsprechende Sprachhinweise ausgegeben. Zur Unterdrückung der laufenden Sprachausgaben bei Maximaldistanzüberschreitung ist Eingang "#A0" mit Masse zu verbinden.  
Durch Masseverbindung von "A#1" rufen wir die Betriebsart auf, in der MP3-Sprachfileausgaben nach Erkennung einer Mindestdistanz erfolgen. Im derzeitigen Programmcode liegt die Auslösedistanz bei 50cm. Zur Verhinderung von Fehlauslösungen erfolgt eine Sprachausgabe allerdings erst, nachdem die genannte Mindestdistanz für mehr als 3 Sekunden gemessen wurde. Bevor im Anschluss daran eine erneute Sprachausgabe erfolgen kann, musste zwischendurch auch erst wieder einmal zumindest kurzzeitig ein Distanzwert von größer als 1m gemessen worden sein.  


Abb.2a  Schaltbild Version 2 mit abweichender Darstellungsweise

mögliche Betriebsarten 

Mode
Porteingang #A0 Porteingang #A1 
Funktionen
1
offen offen laufende Sprachausgabe von Distanzwerten zwischen 10cm und 100cm; zusätzliche Sprachhinweise bei Unter- und Überschreitung dieser Werte.
 2
Masse offen wie in Mode 1 aber ohne Sprachausgabe bei Überschreitung der 100cm-Maximaldistanz
3
offen Masse einmalige ( verzögerte ) Sprachausgabe bei Unterschreitung einer im
Programmcode abgelegten Mindestdistanz ( derzeit: 50cm ); erneute Aktivierung erst wieder nach anschliessender Erkennung von Distanzwert >100cm

  Welche Bauteile werden benötigt?

ANZAHL
BEZEICHNUNG
ZUSATZINFORMATION
1
Platine

1
Ultraschall-Distanzmessmodul  HC-SR04
KT-elektronic
1
Mikrocontrollerboard  ARDUINO "ProMini" 
5V-Version
1
Sprachausgabemodul MP3 DFplayer
Fa. DFRobot
1
uSD-Speicherkarte
z.B. 4GB
1
Lautsprecher   >0.5W
4-8 Ohm
1
Blockbatterie 9V

1
Einstellwiderstand 100 Ohm 15mm

2
Widerstand  1K-Ohm 1/4W

2
Kondensator  100nF  5mm

2
Elkos 100uF  16V stehend 2.54mm

1
Spannungsregler LM1117 5V o.ä.
alternativ: AMS1117 5V
1
Diode 1N4148  o.ä.
2
Buchsenleisten 12pol. 2,54mm *

2
Buchsenleisten 8pol.  2,54mm  *

1
Batterieclip

10cm
Schaltdraht







Tabelle 1  Bauteileliste

* zum Thema Buchsenleisten :  Nachdem 8 und 12polige Buchsenleisten nicht bei allen infrage kommenden Händlern verfügbar waren, hatte ich ursprünglich längere ( z.B. 14 oder 20 polige Leisten ) entsprechend gekürzt, was auch ohne größere Schwierigkeiten machbar war. Dann hatte ich die Idee, die benötigte Polzahl stattdessen aus jeweils mehreren ( leichter verfügbaren ) 4 poligen Leisten zusammenzusetzen. Dabei wurde allerdings übersehen, dass Buchsenleisten auf den Platinen im 2.54mm-Raster nicht direkt nebeneinander passen und dadurch eine Nachbearbeitung in Form von Abschleifen ( ca.1 -2mm ) an manchen Seiten erforderlich wurde. Das berücksichtigend halte ich die Lösung mit der Verwendung gekürzter längerer Leisten somit letztendlich doch für günstiger.  

  Platine mit Bauteileanordnung


Abb.4   Platinenlayout und Bauteileanordnung
Anm.: Einzig der Spannungsregler "LM1117" wird auf der Platinenunterseite angelötet

  Allgemeines zu den ARDUINO's und zur ARDUINO-IDE
Bei ARDUINO handelt es sich um eine aus Italien stammende, inzwischen sehr weit verbreitete Hard- und Softwareplattform für Mikrocontrolleranwendungen. Zum Einsatz kommen dabei Prozessoren der ATMEGA-AVR-Serie von Firma ATMEL. Die Programmerstellung erfolgt üblicherweise in einer an die Sprache "C++" angelehnten Variante. Die enorme Verbreitung von ARDUINO wurde dabei nicht zuletzt auch durch die kostenlos aus dem Internet herunterladbare und häufig aktualisierte Betriebsumgebung, die sog. ARDUINO-IDE gefördert. Ihre Hauptaufgaben bestehen in der Bearbeitung von Programmcodes, deren Kompilierung und Möglichkeit zum Hochladen in Richtung Mikrocontroller. Die jeweils aktuellen Versionen sind hier [10] zu finden.

  Programmierung von ARDUINO-Bausteinen "Pro-Mini"
Der von mir favorisierte Arduino-Baustein ist der kleine "Pro Mini", den es in einer 3,3V und einer 5V-Version gibt. Da hierbei der gleiche Prozessor  ( ATMEGA328P ) zum Einsatz kommt, so wie er auch auf größeren Boards wie "UNO" und "NANO" verwendet wird, gibt es hinsichtlich lauffähiger Software zwischen ihnen auch nur sehr geringe Unterschiede. Wissen sollte man aber noch, dass die 3.3V-Versionen der "Pro Min's" im Gegensatz zu der für das z.B. vorliegende Projekt und auch ansonsten für die meisten Boards einheitlich benutzten Taktfrequenz von 16 MHz mit nur einem 8-MHz-Takt arbeiten. Im Menü der ARDUINO-IDE hat somit zusätzlich auch eine Auswahl der entsprechenden Variante zu erfolgen. Das Hochladen von ARDUINO-Programmen ( hier auch "Sketches" genannt ) in Richtung des jeweiligen Boards erfolgt dann mithilfe des schon erwähnten Betriebsprogrammes. PC und Prozessorboard werden dazu über ein USB-Kabel miteinander verbunden. Nun besitzen die"Pro Mini's" aber keine eigene USB-Schnittstelle. Um Programme hochladen zu können, sind sie somit auf Fremdhilfe angewiesen. Was im ersten Moment als Nachteil erscheint, hat sich in der Praxis häufig aber auch als Vorteil erweisen. Der Grund dafür ist, dass wir auf den entsprechenden anderen ARDUINO Boards zunehmend auch "gefakte" USB-Chips aus fernöstlicher Produktion finden und diese dann ggf. nur nach erheblichen Klimmzügen oder überhaupt nicht zur Zusammenarbeit mit ihrer Gegenseite zu bewegen sind. Probleme mit Treiberprogrammen sind dabei an der Tagesordnung, so dass es bei Boards mit eigener  USB-Schnittstelle sogar dazu führen kann, dass diese völlig unbrauchbar werden. Nachdem wir zur Programmierung unserer "Pro Mini's" aber immer einen gleichen separaten USB-Adapter mit bekannter einwandfreier Funktion verwenden können,  gehen wir einer möglichen USB-Chip-Problematik damit weitgehend aus dem Wege. 


Abb.5   mögliche Anordnung zur Programmierung von ARDUINO "Pro Mini's"
durch Zusammenschaltung mit einem "UM2102" von fa. ELV

Obwohl an dieser Stelle natürlich auch andere Adaptertypen einsetzbar sind, bevorzuge ich als externen USB-Adapter den für wenige Euro erhältlichen "UM2102" von ELV [11]. Dabei sind von der Seite dieser Firma auch die benötigten Treiber ( incl. auch solcher für die aktuellen Windows-Versionen ) verfügbar. Abb.5 zeigt nun die Zusammenschaltung des USB-Adapters mit den "Pro Mini's", so wie sie zum  Hochladen von Programmen vorzunehmen ist. Dabei ist auch die Umschaltmöglichkeit für die beiden unterschiedlichen Betriebsspannungsversionen erkennbar, wobei für das vorliegende Projekt der Spannungswahlschalter in Stellung 5V zu bringen ist. Nachdem bei jedem Programmstart hierüber automatisch auch der notwendige Prozessor-Reset ausgelöst wird, sei besonders auch noch die Verbindung zwischen dem DTR-Ausgang des USB-Adapters und dem mit "GRN" bezeichneten Pin des Arduino-Boards erwähnt.

  Erzeugung eigener MP3-Sprachfiles
Ein Mustersatz der zur Ausführung des oben beschriebenen Projektes erforderlichen MP3-Sprachfiles wird hier in Kürze herunterladbar sein. Soll aber z.B. auch im Mindestdistanzmodus nicht nur ein bereits vorhandenes, sondern ein entsprechend der eigenen Vorstellungen ausgeführtes MP3-File gestartet werden, so wird man um dessen Selbsterzeugung nicht herumkommen. Um für dieses Projekt darüber hinaus auch andere, ggf. fremdsprachige ( Sprach-) Files benutzen zu können, soll hiermit eine kleine Anleitung zu eigenen Erzeugung gegeben werden. Ein dazu und auch zur weiteren Bearbeitung der Sprachfiles hervorragend geeignetes WINDOWS-Tool ist das kostenlos im Internet verfügbare Programm AUDACITY [8]. Um damit erzeugte oder bearbeitete Audiofiles allerdings auch im MP3-Format exportieren zu können, musste vorher einmalig auch noch das LAME-Tool [9] eingebunden worden sein. Seine separate Bereitstellung erfolgt m.W. aus lizenzrechtlichen Gründen.
Zur Spracheingabe lassen sich die bei allen gängigen PC's vorhandenen Audioanschlüsse nutzen. Hieran können externe Mikrofone oder Headsets angeschlossen werden. In der Praxis erwies sich diese Aufnahmemethode allerdings oft als nicht ganz unproblematisch. So wurde bei Verwendung von Laptops z.B. mehrfach festgestellt, dass eine parallel erfolgende Netzteilpufferung auch ein zusätzliches 50 Hz-Brummen bewirkte, so dass es in diesen Fällen ratsam ist, Tonaufnahmen nur im Akkubetrieb durchzuführen.
Eine interessante Alternative zur Erzeugung von Audiofiles ergibt sich auch durch Nutzung von TTS-Programmen ( Text to Speach ). Hierfür sind dann weder Mikrofon noch Headset erforderlich. Stattdessen erfolgt die Eingabe gewünschter Sprachinhalte als Text über die PC-Tastatur. Ich habe verschiedene derartige Programme getestet und bin letztendlich bei ODDCAST [7] gelandet. Auf einfache Weise ermöglicht es eine Sprachausgabe beliebiger, in vielen Sprachen wählbarer und von männlichen oder weiblichen Personen gesprochenen Texten. Nachdem die benutzte Testversion m.W. aber keine direkte Speicherung der gesprochenen Sprachfolgen zulässt, musste hierzu eine andere Lösung gefunden werden. Da erinnerte ich mich an einen unlängst in der Zeitschrift CT gelesenen Beitrag [5]. Dort ging es um ein kleines Tool mit dem Namen "SoundCatcher" [6], welches auf einfache Weise eine Speicherung aller über den Ausgang der PC-Soundkarte hörbaren Signale im WAV-Format erlaubt. Zur Aufzeichnung von ODDCAST-Sprachausgaben wurde nun jeweils vorher auch noch der "SoundCatcher" gestartet. Die daraufhin gespeicherten Ergebnisse liessen sich anschliessend mithilfe von AUDACITY weiter bearbeiten. Dazu gehört z.B. das Abschneiden nicht gewünschter Vor- und Nachläufe, sowie ggf. auch eine Anpassung der Tonpegel. Nach Fertigstellung der Endversion konnte dann der oben schon erwähnte Sprachfileexport im MP3-Format erfolgen. Die beschriebene Vorgehensweise hört sich im ersten Augenblick kompliziert an, ist aber nach einiger Übung schnell und zuverlässig durchführbar.


ARDUINO-Software und MP3-Sprachfiles

Der hier herunterladbare ZIP-Ordner enthält ein INO-File des benutzten ARDUINO-Programmes. Dazu kommen die zum Betrieb des Sprachausgabebausteins benötigten Libraries und ein Mustersatz MP3-Sprachfiles. 
Im Mode 3 wird ein im Unterverzeichnes "mp3" der Speicherkarte unter unter der Bezeichnung "0200.mp3" abgelegtes Audiofile aufgerufen. Das im Mustersatz mit gleichem Namen bereits vorhandene File lässt sich gegen eine entsprechend umbenannte beliebige MP3-Datei eigener Wahl ersetzen.

Nachbauhinweise

Mehrere Exemplare des "sprechenden Distanzmessgerätes" wurden am 7. November 2015 " im Rahmen des "Nierstein-Oppenheim Seminars" erfolgreich aufgebaut. Wer sich noch für einen der hierfür vorbereiteten Komplettbausätze oder auch nur für z.B. die zugehörige Platine interessiert, der sollte mir eine E-Mail senden. Gern leiste ich auch Hilfestellung, wenn es um das Programmieren des ARDUINO-Moduls oder der Micro-SD-Speicherkarte geht.

Linkliste

[1]  http://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf
[2]  http://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299
[3]  http://www.elv.de/mini-usb-modul-um2102-komplettbausatz.html
[4]  https://www.arduino.cc/en/Main/ArduinoBoardProMini
[5]  http://www.simsso.de/downloads/artikel/ct.1515-86435-.pdf
[6]  ftp://ftp.heise.de/pub/ct/listings/1515-182.zip
[7]  http://www.oddcast.com/home/demos/tts/tts_example.php
[8]  http://www.chip.de/downloads/Audacity_13010690.html
[9]  http://www.chip.de/downloads/LAME_13003295.html
[10] https://www.arduino.cc/en/Main/Software
[11] http://www.elv.de/mini-usb-modul-um2102-komplettbausatz.html

E-Mail contact via: