Inhoudsopgave:

Infraroodgestuurde MP3-speler - Ajarnpa
Infraroodgestuurde MP3-speler - Ajarnpa

Video: Infraroodgestuurde MP3-speler - Ajarnpa

Video: Infraroodgestuurde MP3-speler - Ajarnpa
Video: Qnect Home QN-WIR01 WiFi slimme infrarood aftandsbediening (NL) 2024, Juni-
Anonim
Image
Image
Infraroodgestuurde MP3-speler
Infraroodgestuurde MP3-speler

Bouw een mp3-speler met een infrarood afstandsbediening voor ongeveer $ 10 (usd). Het heeft de gebruikelijke functies: afspelen, pauzeren, volgende of vorige afspelen, een enkel nummer of alle nummers afspelen. Het heeft ook equalizervariaties en volumeregeling. Allemaal te bedienen via een afstandsbediening.

Geprogrammeerde functionaliteit:

Afstandsbedieningstoets: Functie

+ 01: Volume omlaag + 02: Zet in op map #2. + 03: Volume omhoog + 4…9: Selecteer de volgende equalizerinstellingen: ++ (4)DFPLAYER_EQ_POP (5)DFPLAYER_EQ_CLASSIC (6)DFPLAYER_EQ_NORMAL ++ (7)DFPLAYER_EQ_ROCK (8)DFPLAYER_EQ_JAZZ (9)DFPLAYER_EQ_BASS + OK: Pauze + OK: Afspelen + >>: Volgende afspelen + <<: Vorige afspelen + Omhoog: Volgende directory-nummers afspelen + Dn: Vorige directory-nummers afspelen + *|Return: Eén nummer herhalen: aan + #|Afsluiten: Eén nummer herhalen: uit

De eerste stap is het testen van de Arduino en het aansluiten op het breadboard. De volgende stappen zijn ontworpen om zelfstandig te werken. Elke stap heeft bedradingsinstructies en testinstructies. Wanneer ik projecten bouw, bedraad en test ik elk onderdeel om te bevestigen dat ze werken. Dit helpt bij het integreren van componenten, want weet dat elk werk en ik me kan concentreren op de integratievereisten.

Deze Instructable vereist dat je de Arduino IDE hebt geïnstalleerd. Je moet ook de basisvaardigheden hebben om een Arduino-schetsprogramma te downloaden via de links in dit project, een directory voor het programma te maken (directorynaam hetzelfde als de programmanaam). De volgende stappen zijn het laden, bekijken en bewerken van het programma in de IDE. Upload vervolgens het programma via een USB-kabel naar uw Arduino-bord.

Benodigdheden

  • Nano V3 ATmega328P CH340G Microcontrollerkaart voor Arduino. Als alternatief kunt u een Uno gebruiken.
  • Infrarood ontvanger en afstandsbediening. Ik gebruikte een IR draadloze afstandsbedieningsmodulekit die werd geleverd met een infraroodontvanger en een infraroodafstandsbediening.
  • Eén weerstand, 1K tot 5K. Ik gebruik een 5K-resister omdat ik er een aantal heb. De weerstand verwijdert ruis die bestaat wanneer de weerstand niet wordt gebruikt.
  • Breadboard Wire-kabels
  • 5 volt muuradapter

Ik kocht de onderdelen op eBay, meestal van distributeurs in Hong Kong of China. Amerikaanse distributeurs hebben soms dezelfde of vergelijkbare onderdelen voor redelijke prijzen en snellere levering. De Chinese onderdelen hebben een levertijd van 3 tot 6 weken. De distributeurs die ik heb gebruikt zijn allemaal betrouwbaar.

Geschatte kosten: Nano $ 3, Infraroodkit $ 1, breadboard $ 2, pakket van 40 draadkabels $ 1, $ 1 voor een 5 volt muuradapter. Totaal, ongeveer $ 8. Let op, ik heb de Nano gekocht met de breadboard-pinnen al op hun plaats gesoldeerd, omdat mijn soldeervaardigheden slecht zijn.

Stap 1: voeg de Arduino Nano toe aan het breadboard

Voeg de Arduino Nano toe aan het Breadboard
Voeg de Arduino Nano toe aan het Breadboard

Sluit de Arduino Nano aan op het breadboard. Of, als je wilt, kun je een Arduino Uno gebruiken voor dit project; ze gebruiken allebei dezelfde pinnen voor dit project. Sluit de Nano (of Uno) via een USB-kabel aan op je computer.

Sluit de stroom en aarde van de Arduino aan op de voedingsbalk van het breadboard. Sluit de Arduino 5+ pin aan op de positieve balk van het breadboard. Sluit de Arduino GRN (aarde) pin aan op de negatieve (aarde) balk van het breadboard. Dit wordt gebruikt door andere componenten.

Download en voer het basis Arduino-testprogramma uit: arduinoTest.ino. Wanneer het programma wordt uitgevoerd, gaat het LED-lampje aan boord gedurende 1 seconde aan en vervolgens gedurende 1 seconde uit. Er worden ook berichten geplaatst die kunnen worden bekeken in de Arduino IDE Tools/Serial Monitor.

+++ Opstelling.

+ Geïnitialiseerd de ingebouwde LED digitale pin voor output. LED is uit. ++ Ga naar lus. + Lusteller = 1 + Lusteller = 2 + Lusteller = 3 …

Wijzig als oefening de tijdvertraging op het knipperende lampje, upload het gewijzigde programma en bevestig de wijziging.

Op de bovenstaande foto is een 140-delige soldeerloze breadboard-jumperdraadkitdoos die je kunt krijgen voor 3 tot 5 dollar. Ze maken borden netter dan het gebruik van lange kabels voor korte verbindingen.

Stap 2: Voeg de infraroodontvanger toe en sluit deze aan op de Arduino

Voeg de infraroodontvanger toe en sluit deze aan op de Arduino
Voeg de infraroodontvanger toe en sluit deze aan op de Arduino

Steek de vrouwelijke naar mannelijke kabeldraden in de infraroodontvanger (vrouwelijke uiteinden). Sluit de aardingspin van de klokmodule aan op de grondbalkstrip van het breadboard. Sluit de voedingspin van de klokmodule aan op de positieve balkstrip van het breadboard. Sluit de uitgangspin van de infraroodontvanger aan op de Arduino A1-pin.

Infraroodontvanger aansluiten, pinnen van linksboven naar rechts:

Meest links (naast de X) - Nano pin A1 Midden - 5V Rechts - massa A1 + - - Nano pin aansluitingen | | | - Infrarood ontvanger pinnen --------- |S | | | | --- | | | | | | --- | | | ---------

Installeer in de Arduino IDE een infraroodbibliotheek. Selecteer Extra/Bibliotheken beheren. Filter uw zoekopdracht door 'IRremote' in te typen. Selecteer IRremote by Shirriff (ter referentie, de GitHub-link van de bibliotheek). Arduino bibliotheek informatie IRremote bibliotheek link.

Download en voer het basistestprogramma uit: infraroodReceiverTest.ino. Richt tijdens het uitvoeren van het programma uw afstandsbediening op de ontvanger en druk op verschillende knoppen, zoals het cijfer van 0 tot 9. Seriële berichten worden uitgevoerd (afgedrukt) die kunnen worden bekeken in de Arduino IDE Tools/Serial Monitor.

+++ Opstelling.

+ De infraroodontvanger geïnitialiseerd. ++ Ga naar lus. + Toets OK - Toggle + Toets > - volgende + Toets < - vorige + Toets omhoog + Toets omlaag + Toets 1: + Toets 2: + Toets 3: + Toets 4: + Toets 6: + Toets 7: + Toets 8: + Toets 9: + Toets 0: + Toets * (Return) + Toets # (Exit)

Gebruik als oefening een afstandsbediening van de tv om de afgedrukte waarden te zien. U kunt het programma vervolgens aanpassen om de waarden in de switch-instructie van de functie infraroodSwitch() te gebruiken. Druk bijvoorbeeld op de toets "0" en krijg de waarde voor uw afstandsbediening, bijvoorbeeld "0xE0E08877". Voeg vervolgens een case toe aan de switch-instructie zoals in het volgende codefragment.

geval 0xFF9867:

case 0xE0E08877: Serial.print ("+ Sleutel 0:"); Serieel.println(""); pauze;

Stap 3: Maak een Mico SD-kaart met MP3-bestanden

Omdat de DFPlayer een klein, goedkoop stukje hardware is, beheert het bestanden en mappen op een simplistische manier. Ik heb gemengde resultaten gehad bij het afspelen van MP3-bestanden die de volgende aanbevolen formaten niet volgen, en daarom raad ik het volgende aan. Ik heb ook geen andere opties getest, zoals 3-cijferige bestandsnamen (voorbeeld: 003.mp3), maar ik heb 3-cijferige bestandsnamen gebruikt in andere instructies en voorbeelden.

Hieronder volgen mijn aanbevolen bestandsnaam en mapnaamindelingen:

  • De standaardmapnaam is MP3, geplaatst onder de hoofdmap van de SD-kaart: SD:/MP3. Deze map is optioneel bij gebruik van meerdere mappen.
  • De speler speelt ook MP3-bestanden af in de hoofdmap.
  • Gebruik bij gebruik van meerdere mappen de mapnamen: 01, 02, 03, …, 99.
  • De naam van het mp3-bestand moet uit 4 cijfers bestaan met "0001.mp3" als extensie, bijvoorbeeld "0001.mp3".
  • Bestanden kunnen in de MP3-map of in een van de meerdere mappen worden geplaatst.
  • Bestandsnamen: 0001.mp3 tot 0255.mp3. Let op, de speler speelt ook MP3-bestanden met andere namen af.
  • U kunt tekens na de cijfers toevoegen, bijvoorbeeld "0001hello.mp3".

Het wordt aanbevolen de kaart te formatteren voordat u bestanden toevoegt. Dit zorgt ervoor dat de kaart vrij is van systeembestanden. Formatteren met FAT32 MS-DOS.

Gebruik op Mac het schijfhulpprogramma om de schijf te formatteren: Programma's > Hulpprogramma's > open Schijfhulpprogramma.

Klik op de SD-kaart, bijvoorbeeld: APPLE SD Card Reader Media/MUSICSD. Klik op menu-item, Erase. Set name, voorbeeld: MUSICSD. Selecteer: MS-DOS (Fat). Klik op Erase.

De schijf wordt schoongemaakt en geformatteerd.

Ik heb een Java-programma geschreven dat een map met mp3-bestanden naar een doelmap kopieert, met behulp van map- en bestandsnamen die werken met een DFPlayer-module. Om het programma uit te voeren, moet de Java JRE zijn geïnstalleerd. Hieronder volgt de help-output van het programma.

$ java -jar mp3player.jar

+++ Start, kopieerprogramma DFPlayer-module. Syntaxis: java -jar mp3player.jar copy [(IN: MP3-directory) (OUT: MP3-directory)] ---------------------- Dit programma kopieert een directory van MP3-bestanden om een andere map met MP3-bestanden te maken met behulp van map- en bestandsnamen die werken met een DFPlayer-module. Voordat u dit programma uitvoert, + Maak een map met uw MP3-bestanden. + Maak een bestemmingsmap. + De bestemmingsdirectory is waar de MP3-bestanden naartoe worden gekopieerd, ++ met gebruik van de directory met cijfernummers en bestandsnamen. + Uw doelmap moet leeg zijn. + Als er bestanden in staan, verwijder dan de bestanden en mappen. ---------------------- + Voer dit programma uit. + Syntaxis: java -jar mp3player.jar copy [(IN: MP3-directory) (OUT: MP3-directory)] + Syntaxis met standaardwaarden: java -jar mp3player.jar copy + Standaard directorynamen: mp3player1 en mp3player2. + Hetzelfde als: java -jar mp3player.jar kopieer mp3player1 mp3player2. ---------------------- + Plaats de SD-kaart in uw computer. + Verwijder de mappen en bestanden van de SD-kaart. + Leeg de prullenbak, want de bestanden staan nog op de SD-kaart en de DFPlayer-module kan ze afspelen. + Kopieer de nieuwe mappen en bestanden naar de SD-kaart. + Werp de kaart uit de computer. ---------------------- + Plaats de kaart in de DFPlayer-module. + De kaart is klaar om te spelen

Om de broncode te bekijken, klik hier. Klik hier om het JAR-programmabestand te downloaden dat u kunt uitvoeren.

Als referentie

Op de Mac kunt u vanaf de opdrachtregel het volgende uitvoeren.

Lijst om de kaart te vinden.

$ diskutil-lijst

… /dev/disk3 (intern, fysiek): #: TYPE NAAM SIZE IDENTIFIER 0: FDisk_partition_scheme *4.0 GB disk3 1: DOS_FAT_32 MUSICSD 4.0 GB disk3s1 $ ls /Volumes/MUSICSD

Kopieer bestanden in volgorde naar de SD-kaart. Aangezien de DFPlayer op de tijdstempel kan sorteren, kopieert u de bestanden in de volgorde van de bestandsnaam.

Reinig verborgen bestanden die problemen kunnen veroorzaken (referentie:

$ dot_clean /Volumes/MUSICSD

Uw SD-kaart is nu klaar voor gebruik. Plaats het in uw DFPlayer-module.

Stap 4: Sluit de DFPlayer-module aan die MP3-bestanden afspeelt

Sluit de DFPlayer-module aan die MP3-bestanden afspeelt
Sluit de DFPlayer-module aan die MP3-bestanden afspeelt
Sluit de DFPlayer-module aan die MP3-bestanden afspeelt
Sluit de DFPlayer-module aan die MP3-bestanden afspeelt
Sluit de DFPlayer-module aan die MP3-bestanden afspeelt
Sluit de DFPlayer-module aan die MP3-bestanden afspeelt

Ik heb de verbindingen in 3 delen verdeeld: seriële communicatie, voeding en luidspreker/geluid.

1. Sluit de Arduino RX/TX-pinnen aan op de DFPlayer-module. Sluit een draad aan tussen Arduino pin 10 en DFPlayer pin 3 (TX). Sluit een weerstand aan, ik gebruik een 5K-weerstand van DFPlayer pin 2 (RX), naar een lege rij tussen de Arduino en de DFPlayer. Sluit een draad van Nano pin 11 aan op de 5K-weerstand. De 5K-resister verwijdert ruis die bestaat wanneer de resister niet wordt gebruikt.

2. Sluit de aardingspin (GND) van de DFPlayer-module aan op de aardingsstrip van het breadboard. Sluit de voedingspin (VCC) van de DFPlayer-module aan op de positieve balkstrip van het breadboard.

3. Als je een enkele kleine luidspreker hebt, sluit deze dan aan op pinnen 6 (SPK-) en 8 (SPK+) zoals in de bovenstaande foto met Nano.

DFPlayer mini-pinnen

Installeer in de Arduino IDE de DFPlayer-bibliotheek. Selecteer Extra/Bibliotheken beheren. Filter uw zoekopdracht door 'DFRobotDFPlayerMini' in te typen. Selecteer DFRobotDFPlayerMini by DFRobot minispelerbibliotheek (ter referentie, de bibliotheeklink). Voor mijn implementatie heb ik versie 1.0.5 geladen.

Ter referentie, de bibliotheeklink. En de link naar de DFPlayer-wikipagina.

Laad MP3-bestanden op de micro SD-kaart. U kunt nummers in afzonderlijke mappen hebben. Plaats de SD-kaart in de DFPlayer.

Download en voer het MP3-spelerprogramma uit: mp3infrared.ino. Richt tijdens het uitvoeren van het programma uw afstandsbediening op de ontvanger en druk op de OK-knop om het eerste nummer af te spelen. Wanneer het begint te spelen, gaat het blauwe lampje van de DFPlayer aan en blijft het branden terwijl een bestand wordt afgespeeld.

Geavanceerde configuratie

Ik heb een Altair 8800-emulatorcomputer gebouwd die een Arduino Mega gebruikt. Toen ik de DFPlayer toevoegde, was er veel ruis. Om van de ruis af te komen, heb ik een aparte voeding voor de DFPlayer gebruikt. De Mega heeft één voeding en stuurt seriële stuursignalen naar de DFPlayer. De DFPlayer heeft een andere voeding en ontvangt en implementeert de seriële stuursignalen van de Mega.

Op de bovenstaande foto voedt de witte mini-USB-hub van de Altair-emulator de Mega en is verbonden met de zwarte mini-hub van de laptop. De DFPlayer heeft een USB-kabel die hem rechtstreeks verbindt met de zwarte mini-hub van de laptop. Deze configuratie verwijderde de ruis die bestond toen de DFPlayer werd gevoed via de emulator witte mini-hub.

Klik hier voor de code die is geconfigureerd voor de Mega. Die versie van de code die Mega RX/TX-pinnen gebruikt, terwijl een Nano of Uno seriële poortpinnen voor software gebruikt.

Het volgende is ter referentie

Verbindingen gebruikt met een Arduino, 1. UART-serieel, RX voor het ontvangen van besturingsinstructies van de DFPlayer. RX: ingang wordt aangesloten op TX op Mega/Nano/Uno. TX voor het verzenden van statusinformatie. TX: uitgang wordt aangesloten op RX op Mega/Nano/Uno. Aansluitingen voor Nano of Uno: RX(2) naar resister naar seriële software pin 11(TX). TX(3) naar seriële software pin 10(RX). Aansluitingen voor Mega: RX(2) naar resister naar Serial1 pin 18(TX). TX (3) naar Serial1 pin 19 (RX). 2. Stroomopties. Maak rechtstreeks vanaf de Arduino verbinding met de DFPlayer: VCC naar +5V. Let op, werkt ook met +3.3V in het geval van een NodeMCU. GND naar aarde(-). Gebruik een geheel andere stroombron: VCC tot +5V van de andere stroombron. GND naar aarde (-) van de andere stroombron. Ik heb een andere voedingsoptie gezien: gebruik vanaf de Arduino +5V een 7805 met condensatoren en diode naar de DFPlayer VCC-pin. GND naar aarde(-). 3. Luidsprekeruitgang. Voor een enkele luidspreker, minder dan 3W: SPK - naar de luidsprekerpin. SPK + naar de andere luidsprekerpin. Voor uitvoer naar een stearoversterker of oortelefoons: DAC_R naar uitvoer rechts (+) DAC_L naar uitvoer naar links (+) GND naar uitgangsaarde.

Na de belangrijkste bibliotheekfunctie-aanroepen. Link naar de DFPlayer-wikipagina.

DFRobotDFPlayerMini mijnDFPlayer;

mijnDFPlayer.play(1); // Speel de eerste mp3 myDFPlayer.pause(); // pauzeer de mp3 myDFPlayer.start(); // start de mp3 vanaf de pauze ------------------------------ myDFPlayer.next(); // Speel volgende mp3 myDFPlayer.previous(); // Vorige mp3 afspelen ------------------------------ myDFPlayer.playMp3Folder(4); // speel specifieke mp3 af in SD:/MP3/0004.mp3; Bestandsnaam (0~65535) myDFPlayer.playFolder (15, 4); // speel specifieke mp3 af in SD:/15/004.mp3; Mapnaam (1~99); Bestandsnaam (1~255) myDFPlayer.playLargeFolder(2, 999); // speel specifieke mp3 af in SD:/02/004.mp3; Mapnaam (1~10); Bestandsnaam (1~1000) ------------------------------ myDFPlayer.loop(1); // Loop de eerste mp3 myDFPlayer.enableLoop(); // lus inschakelen. mijnDFPlayer.disableLoop(); // schakel lus uit. mijnDFPlayer.loopFolder(5); // loop alle mp3-bestanden in de map SD:/05. mijnDFPlayer.enableLoopAll(); // lus alle mp3-bestanden. mijnDFPlayer.disableLoopAll(); // stop loop alle mp3-bestanden. ------------------------------ mijnDFPlayer.volume(10); // Volumewaarde instellen. Van 0 tot 30 myDFPlayer.volumeUp(); // Volume omhoog myDFPlayer.volumeDown(); // Volume omlaag ------------------------------ myDFPlayer.setTimeOut(500); //Stel de time-out voor seriële communicatie in op 500 ms myDFPlayer.reset(); // Reset de module ------------------------------ Serial.println(myDFPlayer.readState()); //lees mp3-status Serial.println (myDFPlayer.readVolume ()); //lees huidig volume Serial.println (myDFPlayer.readEQ()); //lees EQ-instelling Serial.println (myDFPlayer.readFileCounts()); // lees alle bestandstellingen in SD-kaart Serial.println (myDFPlayer.readCurrentFileNumber ()); //lees huidig afspeelbestandnummer Serial.println (myDFPlayer.readFileCountsInFolder (3)); //lees vullingen in map SD:/03 ------------------------------ myDFPlayer.available()

Stap 5: Externe voeding

Image
Image
Externe voeding
Externe voeding
Externe voeding
Externe voeding

Nu uw MP3-speler is getest en werkt, kunt u hem loskoppelen van uw computer en gebruiken met een onafhankelijke stroomvoorziening. Voor de eenvoud gebruik ik een 5 volt-muuradapter, die voor ongeveer een dollar kan worden gekocht, en een USB-kabel, nog een dollar. De kabel verbindt de Arduino met de +5V muuradapter. Omdat de Arduino-voedings- en aardingspinnen op het breadboard zijn aangesloten, worden de andere componenten van stroom voorzien. Vanwege de eenvoud en lage kosten gebruik ik dezelfde combinatie om andere projecten van stroom te voorzien.

De foto aan de rechterkant en de video laten de speler zien die is aangesloten op mijn versterker van $ 40 die op de rechter Bose-luidspreker op mijn bureau zit. Het is mijn desktopmuzieksysteem: Arduino MP3-speler, Douk Audio-versterker en 2 Bose-luidsprekers. Goede geluidskwaliteit.

Ik hoop dat je succes hebt en genoten hebt van het bouwen van je eigen MP3-muziekspeler.

Stap 6: Statische ruis elimineren

Op laag volume was er een irritant statisch achtergrondgeluid. Het geluid was oké als het DFPlayer-volume hoger was en er muziek werd afgespeeld. Maar als de muziek stil was, was de ruis er.

Ik vond een StackExchage-pagina met veel suggesties. Het volgende werkte voor mij:

  • Sluit een korte draad aan tussen de aardingspinnen van de DFPlayer: pin 7 tot 10.
  • Gebruik een aparte USB-stekker (5V) om de DFPlayer-module van stroom te voorzien.
  • Verbind de aarde van de muurstekker met de Arduino-aarde. Dit was nodig om de seriële besturing tussen de Arduino en de speler te laten werken.

Het bovenstaande is getest op mijn Altair 8800-emulator die ik heb verbeterd met een DFPlayer om muziek af te spelen. De speler wordt bestuurd door de schakelaars op het voorpaneel om te draaien.

Aanbevolen: