Forum: Mikrocontroller und Digitale Elektronik Sounds mit ATTiny2313


von Sascha L. (santus)


Lesenswert?

Hallo,

ich brainstorme gerade über ein Projekt mit dem ich das Tretauto meines 
Patenkindes ein wenig "pimpen" kann. Es handelt sich um eine kleine 
Elektronik (4,5V) mit einem Lautprecher und zwei Birnchen, die das Teil 
zum Einsatzwagen mutieren lassen soll.

Momentaner Stand:
- Blinken der Glühbirnchen (!)
- Tuten
- Beides auf Tastendruck

Da möchte ich hin:

- Vier verschiedene Leuchtchtmodi (An-Aus (weiche Übergänge), 
Wechselblinken, Daueran, Daueraus), weiterschalten über Tastendruck 
(Ext.Int0)

- Vier verschiedene Soundmodi (Sirene, Ice-Hockey-Sound, Motorensound, 
Aus), weiterschalten über Tastendruck (Ext.Int1). Der Sound soll in 
Dauerschleife laufen.

- Mikrofoneingang (3,5mm Klinke) über den die Stimme verstärkt auf den 
Lautsprecher ausgegeben werden soll. Während der Sprechzeit soll der 
Sound stumm geschalten werden.

Als Mikrofonverstärker wollte ich den MAX4468 nehmen und die Verstärkung 
über ein Poti am Spannungsteiler des positiven Eingangs einstellen. Der 
ATTiny soll den Shutdown steuern.

Die zwei Punkte, die mir Kopfzerbrechen bereiten:
- Wie erkenne ich, dass gesprochen wird um die Sounds stumm zu schalten?
- Wo und wie lege ich die Sounds ab (ext. Flash <-> int. Flash, Wie 
sieht so ein Sound aus?)

Vielleicht hat jemand einen Denkanstoß für mich.

Viele Grüße
Sascha

von spess53 (Gast)


Lesenswert?

Hi

Zum Sound:

AVR335: Digital Sound Recorder with tinyAVR or megaAVR and DataFlash
AVR336: ADPCM Decoder on tinyAVR and megaAVR devices

MfG Spess

von Sascha L. (santus)


Lesenswert?

Hi Spess,

Also Beispiel 335 ist sicherlich zuviel für meine Anwendung. Habe mich 
aber auch nicht klar ausgedrückt. Ich will keine Sounds auf nehmen, 
sonder fertige Sounds quasi in das System "programmieren". Ich brauche 
ja für das Mikro nur die Ein- bzw. Ausgabe. Dafür werde ich den MAX4468 
nehmen.

Mit Beispiel 336 kann ich auch wenig anfangen. Ich habe doch kein 
ADPCM-Signal.

Korrigier mich, wenn ich die Bedeutung nicht erkenne.

Viele Grüße

von spess53 (Gast)


Lesenswert?

Hi

>Ich will keine Sounds auf nehmen, sonder fertige Sounds quasi in das System
> "programmieren".

Wo sollen die Sounds den herkommen?

>Mit Beispiel 336 kann ich auch wenig anfangen. Ich habe doch kein
>ADPCM-Signal.

Da wären wir wieder bei der vorherigen Frage.

Ehrlich gesagt würde ich mir einen AVR mit mehr Flash aussuchen. So in 
Richtung ATMega48/88/168/328. Der ATTiny ist meiner Meinung nach für 
Soundanwendungen etwas schwach auf der Brust (falls du keinen externen 
Speicher verwenden willst).

MfG Spess

von Sascha L. (santus)


Lesenswert?

Mir wäre auch ein AVR lieber bei dem ich keinen ext. Speicher benötige. 
Ich habe halt nur sehr, sehr wenig Platz (42x23x5mm). Deswegen kam mir 
spontan der ATTiny in den Sinn.

Zum Thema Sounds. Die habe ich auf meinem Rechner als .wav bzw. .mp3 
liegen. Nur wie man sowas auf den AVR bringt ist eine Sache, wo ich mal 
überhaupt keine Ahnung von habe; deswegen der Thread.

von Karl H. (kbuchegg)


Lesenswert?

Sascha L. schrieb:

> Zum Thema Sounds. Die habe ich auf meinem Rechner als .wav bzw. .mp3
> liegen. Nur wie man sowas auf den AVR bringt ist eine Sache, wo ich mal
> überhaupt keine Ahnung von habe; deswegen der Thread.

Dann fang mal damit an, die Größer deiner MP3 Dateien mit der Größe 
deines SRAMS zu vergleichen. Und MP3 kannst du dir gleich abschminken. 
Das schafft der Tiny nicht mehr zu dekodieren. WAV ginge noch, aber auch 
da hast du natürlich das Platzproblem.

Entweder du beschränkst dich bei deinen Sounds auf Tatü-Tata bzw. alles 
was man billig mit Rechteckschwingungen in verschiedenen Frequenzen 
erschlagen kann, oder aber du machst dich mit dem Gdanken vertraut, 
einen halben MP3-Player aufzubauen. Dafür gibt es fertige IC. Andere 
Möglichkeit: Über WAV gehen, die von einer SD Karte oder sonstigem 
externen Speicher eingelesen werden.

Womit du eventuell Glück haben könntest: Mit einem Soundeditor ein 
winzig kleines Soundstück aus einer WAV auszuschneiden (am besten nur 1 
Schwingung) und die dann zu wiederholen.
Andere Möglichkeit: du recherchierst, ob es fertige Soundmodule gibt, 
die die von dir gewünschten Sounds beinhalten. Eisenbahnmodellbauer, 
Schiffsmodellbauer haben solche Soundmodule, die einen Schiffsdiesel bzw 
Dampfmaschine oder auch andere Motoren imitieren.

von Karl H. (kbuchegg)


Lesenswert?

>  Vier verschiedene Leuchtchtmodi (An-Aus (weiche Übergänge),
> Wechselblinken, Daueran, Daueraus), weiterschalten über Tastendruck
> (Ext.Int0)

Externer Interrupt ist schon falsch.

von spess53 (Gast)


Lesenswert?

Hi

> Nur wie man sowas auf den AVR bringt ist eine Sache, wo ich mal
>überhaupt keine Ahnung von habe; deswegen der Thread.

Um welche Programmiersprache geht es denn hier.

>Zum Thema Sounds. Die habe ich auf meinem Rechner als .wav bzw. ...

Bei den Softwarefiles zur AVR336 ist ein Konvertierungsprogramm von .wav 
nach ADPCM C-Array dabei.

MfG Spess

von Floh (Gast)


Lesenswert?

Mit m Waveplayer von Win lassen sich Musikdateien runterrechnen. Für ne 
billige Soundausgabe reichen 8bit mono 8kHz Samplerate.
Meist sind so Sirenensounds auch periodisch und dann braucht man nur 
eine "Periodendauer" speicchern.
Brauchst dann bloß einen passenden Flash/AVR entsprechender Größe für 
die Sounds.

von Sascha L. (santus)


Lesenswert?

@Spess:

Dass ich keine mp3-Dateien nehme war mir klar. Du fragtest ja auch nur, 
als was ich die Sounds vorliegen habe. Ich fragte, als was ich die 
Sounds auf den µC bringen kann.
Eine Dauerschleife von sehr kurze Sound-Sequenzen ist auch logisch. Ich 
werde einen AVR mit größerem Speicher nehmen. Hast Du da ne konkretete 
Empfehlung?
Programmieren wollte ich das Ganze in C.
Die Sache mit der Konvertierung von .wav zu ADPCM scheint das zu sein 
wohin es gehen sollte. Sorry, dass ich aufgrund meiner Unwissenheit da 
skeptisch war. Muss mich aber erst mal schlau lesen. Danke erstmal für 
den Input.


@Karl heinz Buchegger:

Was dann?! Pollen?

von Ingo W. (Gast)


Lesenswert?

Hallo Sascha!
Das mit der Wiedergabe von WAV-Dateien ist eigentlich nicht schwierig. 
Du lässt einen 8-Bit-Timer im PWM-Modus laufen, (das sind je nach 
Einstellung bis zu knapp 80k Durchläufe je Sekunde. Gleichzeitig kann er 
jedesmal einen Interrupt auslösen, in dem Du das OCR-Register mit dem 
nächsten PWM-Wert belädst. Als sonnvoller Wert wurden hier schon 8 k 
Samples/Sekunde genannt, und hier liegt das Problem: die müssen irgendwo 
herkommen. Es gibt von Atmel dafür eine ApplicationNote mit dem Titel 
"Soundrecorder", wo das mit einem DataFlash (SPI-EEPROM) gemacht würde. 
Die solltest Du dir mal raussuchen. Was auch gut und preisgünstig ist, 
ist eine SD-Karte, die genauso angeschlossen wird. Nur leider wirst Du 
in den 4k Programmspeicher des Tiny nicht die Verwaltung für ein 
FAT-dateisystem unterbringen können, wäre vielleicht auch zu 
zeitkritisch. Bliebe dann noch die Möglichkeit die Daten "roh", ohne 
Dateisystem auf die Karte zu schreiben, was dann aber unter Windows 
etwas schwieriger ist. Die Klänge im Tiny zu synthetisieren, halte ich 
dann doch für zu schwierig. Ich sitze hier gerade an einer Ansteuerung 
für einen Sinuswechselrichter, mit 4 um 90° verdrehten Ausgängen, wo ich 
es gemacht habe, wie oben beschrieben, mit 4 PWM's aber die Sinuswerte 
aus einer Tabelle mit 120 Werten geholt. Das klappt gut und läuft alles 
in einer Interruptroutine, die den Proc zu 1/6 auslastet (mit 4 
Kanälen).
mfG ingo

von tasg (Gast)


Lesenswert?

Wie wäre es mit eine microSD(11,0 × 15,0 × 0,7 mm)?
Hier sogar mit einem kleinen ATTiny85:
http://elm-chan.org/works/sd8p/report.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.