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
E-Mail
contact via: