Inhoudsopgave:
- Stap 1: Gebruikte materialen
- Stap 2: Een basisoverzicht van het project
- Stap 3: Bereid de SD-kaart voor en sluit de SD-kaartmodule aan
- Stap 4: Sluit de audio-uitgang en microfoon aan
- Stap 5: Sluit de knoppen aan
- Stap 6: Upload de code
Video: Arduino wordt Talking Tom - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Een van mijn oudste herinneringen aan het gebruik van een smartphone was het spelen van het 'Talking Tom'-spel. Het spel was vrij eenvoudig. Er is een kat, Tom genaamd, die een beetje kan praten. In het spel luisterde Tom naar input via de microfoon van de telefoon en herhaalde hij wat hij hoorde. Dus wat hij ook tegen Tom zei, hij zou hetzelfde herhalen met zijn eigen schrille stem.
Hoewel het eenvoudig klinkt, vereist deze hele procedure veel complexe stappen, zoals het samplen van de analoge ingang van de microfoon in digitale vorm, het manipuleren van de audio om Tom zijn unieke stem te geven en vervolgens het signaal van al die digitale waarden te reconstrueren om het via de luidspreker af te spelen. Al deze complexe stappen, maar de smartphone deed het zelfs 9 tot 10 jaar geleden als een charme!
Het interessante zou zijn om te zien of hetzelfde kan worden gedaan met een goedkoop op microcontroller gebaseerd Arduino-bord. Dus in deze instructable zal ik laten zien hoe je een eenvoudig Talking Tom-achtig project kunt maken van een Arduino en wat andere goedkope elektronica.
Deze instructable is geschreven in samenwerking met Hatchnhack Makerspace in Delhi
OPMERKING: Deze instructable is de eerste versie van het project die de 'Talking'-functie van Talking Tom voltooit, waar de arduino alles kan herhalen wat je erop zegt. Het stemveranderende gedeelte zal in de toekomstige versie worden behandeld, hoewel, door de lagere resolutie van Arduino's ingebouwde ADC, de opgenomen audio al een beetje anders klinkt:P (Dit is duidelijk te zien in de projectvideo).
Dus laten we beginnen!
Stap 1: Gebruikte materialen
Hardware:
- Een Arduino UNO
- MAX4466 microfoonmodule met instelbare versterking
- SPI-gebaseerde SD-kaartlezermodule
- SD-kaart
- Audioversterker zoals pc-luidspreker, PAM8403-versterkermodule, enz.
- Luidsprekers voor aansluiting op de versterker
- Vrouwelijke audio-aansluiting
- 1 x 1k ohm weerstand
- 2 x 10k ohm weerstand
- 1 x 10uF condensator
- 2 x drukknop
- Doorverbindingsdraden
Software:
- Arduino IDE
- Audacity (optioneel)
- TMRpcm en SD-bibliotheek voor Arduino
Stap 2: Een basisoverzicht van het project
Het project heeft hoofdzakelijk 2 kenmerken:
- Het kan willekeurig gekozen audio afspelen van een set vooraf geïnstalleerde audiobestanden op de SD-kaart voor geluidseffecten enz.
- Het kan geluidsinvoer van de microfoon opnemen en deze vervolgens afspelen zodra de opname stopt. Hierdoor kan de Arduino alles herhalen wat hij door de microfoon heeft gehoord.
De gebruikersinterface van het project bestaat voornamelijk uit 2 drukknoppen die elk overeenkomen met een van de bovenstaande functies.
Het belangrijkste harde werk van het opnemen en afspelen van de audiobestanden van de SD-kaart wordt afgehandeld door de TMRpcm-bibliotheek
De audio-opname maakt gebruik van de MAX4466-microfoonmodule, de interne ADC van Arduino en de TMRpcm-bibliotheek om de audio te samplen en deze vervolgens tijdelijk op de SD-kaart op te slaan als '.wav'-bestand om af te spelen. '.wav'-audiobestanden gebruiken PCM (Pulse Code Modulation) om de audiogegevens in het digitale formaat op te slaan, zodat ze gemakkelijk opnieuw kunnen worden afgespeeld. Over het algemeen is het beter om een externe ADC te gebruiken voor op audio gebaseerde projecten, aangezien de resolutie van Arduino's ADC niet zo hoog is, maar het werkt voor dit project.
Het afspelen van de audiobestanden (vooraf geïnstalleerd en opgenomen) wordt ook gedaan met behulp van de TMRpcm-bibliotheek die de audio uitvoert als een PWM-signaal van een PWM-compatibele pin van de Arduino. Dit signaal wordt vervolgens naar een RC-filter gevoerd om een analoog signaal te krijgen dat vervolgens naar een versterker wordt gevoerd om de audio via een luidspreker af te spelen. Voor dit onderdeel zou je ook een externe DAC kunnen gebruiken, aangezien arduino er geen intern heeft. Het gebruik van een DAC is misschien een betere optie, omdat dit de geluidskwaliteit aanzienlijk zou verbeteren.
De communicatie tussen de SD-kaartmodule en arduino gebeurt via SPI (Serial Perifere Interface). De code maakt gebruik van de SD & SPI-bibliotheek om eenvoudig toegang te krijgen tot de inhoud van de SD-kaart.
Stap 3: Bereid de SD-kaart voor en sluit de SD-kaartmodule aan
- Eerst moet u de SD-kaart formatteren met een FAT16- of FAT32-bestandssysteem (u kunt uw smartphone gebruiken om de SD-kaart te formatteren).
- Installeer nu enkele.wav-audiobestanden vooraf op de SD-kaart. U kunt.wav-bestanden genereren met Audacity (zie onderstaande instructies). Denk eraan om de bestanden een naam te geven als audio_1.wav, audio_2.wav, audio_3.wav enzovoort.
De SD-kaartmodule gebruikt SPI om de gegevens met de Arduino te communiceren. Daarom maakt het alleen verbinding met die pinnen waarop SPI is ingeschakeld. Deze aansluitingen zijn als volgt:
- Vcc - 5v
- GND - GND
- MOSI (Master Out Slave In) - pin 11
- MISO (Master In Slave Out) - pin 12
- CLK (klok) - pin 13
- SS/CS (Slave Select/Chip Select) - pin 10
'.wav'-bestand genereren met Audacity Software:
- Open het audiobestand dat u naar.wav wilt converteren in Audacity.
- Klik op de bestandsnaam en selecteer vervolgens 'Split Stereo to Mono'. Deze optie splitst het stereogeluid in twee monokanalen. U kunt nu een van de kanalen sluiten.
- Wijzig de waarde 'Project Rate' onderaan in 16000 Hz. Deze waarde komt overeen met de maximale bemonsteringsfrequentie van de interne ADC van Arduino.
- Ga nu naar Bestand->Exporteren/Exporteren als WAV.
- Kies de juiste locatie en naam van het bestand. Selecteer in het coderingsmenu 'Unsigned 8-bit PCM' omdat we het PCM-formaat gebruiken om de audio in digitaal formaat op te slaan.
Stap 4: Sluit de audio-uitgang en microfoon aan
De microfoon aansluiten:
- Vcc - 3.3v
- GND - GND
- UIT - A0-pin
OPMERKING:
- Probeer de microfoon rechtstreeks op de arduino aan te sluiten in plaats van een breadboard te gebruiken, omdat dit onnodige ruis in het ingangssignaal kan veroorzaken.
- Zorg ervoor dat u de headers op de microfoonmodule netjes soldeert, omdat slechte soldeerverbindingen ook ruis veroorzaken.
- Deze microfoonmodule heeft een instelbare versterking die kan worden geregeld met behulp van een pot aan de achterkant van het bord. Ik zou je aanraden om de versterking enigszins laag te houden, omdat het het geluid dan niet veel zal versterken terwijl je zou kunnen spreken door het dicht bij je mond te houden, wat resulteert in een schonere uitvoer.
De audio-uitgang aansluiten:
- Plaats de 10 uF-condensator en de 1k ohm-weerstand in serie op het breadboard met de positieve van de condensator aangesloten op de weerstand. Deze vormen samen een RC-filter die de PWM-uitgang omzet naar een analoog signaal dat in de versterker kan worden ingevoerd.
- Sluit de pin 9 van Arduino aan op het andere uiteinde van de weerstand.
- De negatieve pool van de condensator wordt verbonden met het linker- en rechterkanaal van de vrouwelijke audio-aansluiting.
- GND van de audio-aansluiting wordt verbonden met de GND.
- De audio-aansluiting is met een Aux-kabel op de versterker aangesloten. In mijn geval gebruikte ik het luidsprekersysteem van mijn pc.
OPMERKING:
Het gebruik van PWM als audio-uitgang is misschien niet de beste optie, omdat een externe DAC een veel betere resolutie en kwaliteit zou bieden. Bovendien kunnen de condensator en weerstand in het RC-filter ongewenste ruis veroorzaken. Maar toch was de output behoorlijk behoorlijk voor dit project
Stap 5: Sluit de knoppen aan
Het project maakt gebruik van drukknoppen als gebruikersinterface. Beide hebben verschillende functies en worden verschillend gebruikt, maar hebben dezelfde bedrading. Hun verbinding is als volgt:
- Plaats de knoppen op het breadboard.
- Bevestig een terminal van een van de knoppen aan pin 2 van de Arduino met een 10k ohm pull-down weerstand. De andere aansluiting van de knop wordt aangesloten op 5v. Dus als de knop wordt ingedrukt, wordt pin 2 HOOG en dat kunnen we in de code detecteren.
- De andere knop wordt op dezelfde manier verbonden met arduino's pin 3 in plaats van 2.
De knop die is aangesloten op pin 2 speelt een willekeurig audiobestand af uit de set vooraf geïnstalleerde audiobestanden op de SD-kaart wanneer deze eenmaal wordt ingedrukt.
De knop die op pin 3 is aangesloten, is voor de opname. U moet deze knop ingedrukt houden voor de opname. De arduino begint met opnemen zodra deze knop wordt ingedrukt en stopt met opnemen wanneer deze knop wordt losgelaten. Nadat de opname is gestopt, wordt die opname onmiddellijk opnieuw afgespeeld.
Stap 6: Upload de code
Voordat u de code uploadt, moet u ervoor zorgen dat u alle vereiste bibliotheken zoals TMRpcm, SD enz.
Je kunt de seriële monitor ook openen nadat je de code hebt geüpload om feedback te krijgen over wat de arduino aan het doen is.
Momenteel manipuleert de code de opgenomen audio niet om het anders te laten klinken, maar ik ben van plan deze functie op te nemen in de volgende versie, waar je misschien de uitgangsfrequentie van het audiosignaal kunt instellen met behulp van pot en verschillende soorten geluiden kunt krijgen.
En je bent klaar!!
Aanbevolen:
Sms verzenden als er rook wordt gedetecteerd (Arduino+GSM SIM900A: 5 stappen)
Sms verzenden als rook wordt gedetecteerd (Arduino+GSM SIM900A: Hallo allemaal! In mijn eerste instructable zal ik een gasalarm maken dat een bericht naar de gebruiker stuurt als er vervuiling wordt gedetecteerd. Dit zal een eenvoudig prototype zijn met behulp van Arduino, GSM-module en elektrochemische rooksensor.In de toekomst kan dit worden uitgebreid tot
Batterij-aangedreven lamp die wordt ingeschakeld door het gebruik van magneten! 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Lamp op batterijen die aangaat door het gebruik van magneten!: We weten dat de meeste lampen aan/uit gaan via een fysieke schakelaar. Mijn doel met dit project was om een unieke manier te creëren om de lamp gemakkelijk aan/uit te zetten zonder die klassieke schakelaar. Ik was geïntrigeerd door het idee van een lamp die tijdens dit proces van vorm veranderde
Hoe een SMT-stencil wordt gemaakt: 3 stappen
Hoe een SMT-stencil wordt gemaakt: Terwijl componenten met doorlopende gaten als de norm in de elektronica-industrie begonnen, leidde de uitvinding van SMT-onderdelen tot hun uiteindelijke vervanging. SMT's maakten een veel snellere PCB-productie mogelijk dan ooit tevoren door een laag soldeerpasta te pla
TV-afstandsbediening wordt een RF-afstandsbediening -- NRF24L01+ zelfstudie: 5 stappen (met afbeeldingen)
TV-afstandsbediening wordt een RF-afstandsbediening || NRF24L01+ Tutorial: In dit project laat ik je zien hoe ik de populaire nRF24L01+ RF IC heb gebruikt om de helderheid van een ledstrip draadloos aan te passen via drie nutteloze knoppen van een tv-afstandsbediening. Laten we beginnen
Standalone Arduino 3.3V W / externe 8 MHz klok wordt geprogrammeerd vanaf Arduino Uno via ICSP / ISP (met seriële bewaking!): 4 stappen
Standalone Arduino 3,3 V met externe 8 MHz-klok die wordt geprogrammeerd vanaf Arduino Uno via ICSP / ISP (met seriële bewaking!): Doelstellingen: een stand-alone Arduino bouwen die op 3,3 V van een externe klok van 8 MHz draait. Om het te programmeren via ISP (ook bekend als ICSP, in-circuit serieel programmeren) vanaf een Arduino Uno (draaiend op 5V) Om het bootloader-bestand te bewerken en de