
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36




Здравейте момчета, Това е първата ми инструкция, надявам се да ви хареса !!
По принцип в този проект използвах серийната комуникация между моя Arduino и моя лаптоп, за да предам музикални данни от моя лаптоп към Arduino. И използвайки таймерите Arduino за възпроизвеждане на данните като PWM сигнал.
Исках да отбележа, че този проект не е за начинаещи !!!.
Всъщност този проект беше един от най -дългите проекти, защото трябва да направим много неща, за да работи.
ВНИМАНИЕ
Направих втората част от тази инструкция, която е много по -лесна и се нуждае от минимални проблеми, за да работи
Връзка към втора част (най -лесната).
Стъпка 1: Нещата, от които се нуждаем за този проект (изисквания)
1. Arduino Board (можем да използваме всяка дъска (328, 2560), т.е. Mega, Uno, Mini и т.н., но със специфични различни щифтове)
2. PC или лаптоп с Linux (използвал съм Fedora 29) или Live USB с Linux
3. Breadboard или Perfboard
4. Свързване на проводници
5. TC4420 (драйвер на Mosfet или нещо такова)
6. Захранване на Mosfet (N или P канал, моля свържете след това съответно) (използвал съм N-канал)
7. Високоговорител или Flyback трансформатор (Да, прочетохте го правилно !!)
8. Подходящо захранване (0-12V) (използвал съм собствено ATX захранване)
9. Радиатор (спасих от стария си компютър)
10. Компютър с Windows и писалка.
За да знаете подробната работа на всеки компонент и този проект, моля, прочетете следващата стъпка.
Направих втората част от тази инструкция, която е много по -лесна и се нуждае от минимални проблеми, за да работи. Връзка към втора част (най -лесната).
Стъпка 2: Разбиране на принципа на работа
Аааа !! най -дългата част от инструктаж, четенето и писането на този раздел е скучно.
На първо място, трябва да получим Общ преглед, как всъщност работи това нещо.
това, което правим тук е, че първо, ние преобразуваме нашата MP3 песен във WAV файл и този файл в C заглавен файл, като използваме софтуера, който е в линка. Този C код всъщност съдържа 8-битови (защо 8-битови? Прочетете по-нататък) извадки от данни, които трябва да играем с помощта на нашия Arduino с фиксирана скорост или скорост, която е посочена според нашата честота на дискретизация.
Теория на аудио сигнала.
За тези, които не знаят каква е честотата на извадката или битрейта:-
Честотата на дискретизация се определя като броя на пробите, които играем за секунда (обикновено се измерва в Hz или KHz).
За да научите повече в Детайли: -Кликнете тук
Стандартните честоти на извадката са 44100 Hz (най -добро качество), 32000 Hz, 22050 Hz и т.н.
което означава, че 44100 проби се използват за секунда, за да се генерира съответно вълна.
Всяка проба трябва да се играе на фиксиран интервал от 1/44100 = 22,67 uS.
След това идва битовата дълбочина на аудио сигнала, която обикновено е мярка за това колко точно звукът е представен в цифрово аудио. Колкото по -голяма е битовата дълбочина, толкова по -точен е цифровият звук.
Но с Arduino или друг микроконтролер с 16Mhz часовник ни позволява да ни използваме само до 8-битови. Ще обясня защо.
Има формула на страница № 102 в листа с данни на 328p:- Лист с данни
Няма да навлизам в подробности, защо използвам тази формула.
честота на сигнала = Часовник сигнал / N x (1+ТОП)
Сигнал на часовника = 16Mhz (платка Arduino)
N = предварително делител (1 е стойност за нашия проект)
TOP = стойност от 0 до 2^16 (За 16-битов таймер) (255 = 2^8 (8-битов) за нашия проект)
получаваме стойността на честотата на Сигнал = 62,5 kHz
Това означава, че честотата на носещата вълна зависи от дълбочината на бита.
Да предположим, че ако използваме TOP стойност = 2^16 = 65536 (т.е. битова дълбочина от 16 бита)
тогава получаваме стойността на честотата на сигнала = 244 Hz (която не можем да използваме)
OKK … Значи тази теория за това как работят аудиосигналите е достатъчна, така че обратно към проекта.
C кодът, генериран за песен, може да бъде копиран в Arduino и може да се възпроизвежда, но ние сме ограничени до 3-сек аудио възпроизвеждане с честота на дискретизация 8000 Hz. Тъй като този C код е текстов файл и следователно не е компресиран, а по -скоро декомпресиран. И заема твърде много място. (напр. C код файл с 43-сек аудио с 44, 1 KHz семпли заема място до 23 MB). И нашата Arduino Mega ни дава пространство от около 256 Kb.
И така, как ще свирим песни, използвайки Arduino. Не е възможно. Тази инструкция е фалшива. Не се притеснявайте читатели, Ето защо трябва да използваме някакъв вид комуникация между Arduino при изключително високи скорости (до 1 Mb/s), за да изпращаме аудио данни към Arduino.
Но от колко точно скорост имаме нужда, за да направим това ??
Отговорът е 44000 байта в секунда, което означава, че скоростта е повече от 44000*8 = 325 000 бита/сек.
Нуждаем се от друго периферно устройство с голямо хранилище, за да изпратим тези данни към нашия Arduino. И това ще бъде нашият компютър с Linux (защо компютър с Linux ??? моля, прочетете по -нататък, за да научите повече за него.)
Ахаа … Това означава, че можем да използваме серийна комуникация … Но изчакайте … серийният е възможен само със скорост до 115200 бита/сек, което означава (325000/115200 = 3), че е три пъти по -бавен от необходимото.
Не, приятели, не е така. Ще използваме скорост или скорост на предаване от 500 000 бита/сек с кабел до 20-30 см макс., Което е 1,5 пъти по-бързо от необходимото.
Защо Linux, а не Windows ???
Така че, ние трябва да изпращаме проби на интервал (също посочен по -горе) от 1/44100 = 22,67 uS с нашия компютър.
И така, как можем да го програмираме така?
Можем да използваме C ++, за да изпращаме байт с данни през Serial на интервал, използвайки някаква функция за заспиване
като nanosleep, Chrono и т.н. и т.н. …
за (int x = 0; x
sendData (x);
nanosleep (22000); // 22uS
}
НО НЕ РАБОТИ НА WINDOWS също не работи по този начин в Linux (но намерих друг начин, който можете да видите в моя приложен код.)
Тъй като не можем да постигнем такава детайлност с помощта на windows. Имате нужда от Linux, за да постигнете такава детайлност.
Проблеми, които открих дори с Linux …
можем да постигнем такава детайлност, използвайки Linux, но не намерих такава функция, която да спи програмата ми за 22uS.
Функции като nanosleep, Chrono nanosleep и т.н. и т.н. също не работят, тъй като осигуряват сън само над 100 uS. Но имах нужда точно, точно 22 uS. Проучих всяка страница в google и експериментирах с всички възможни функции, които са налични в C/C ++, но нищо не работи за мен. Тогава измислих собствена функция, която ми действаше като истински чар.
И моят код сега осигурява точен, прецизен сън от 1uS или повече !!!
Така че покрихме трудната част, а останалото е лесно …
И ние искаме да генерираме ШИМ сигнал, използвайки Arduino със специфична честота, също и честота на носещата вълна. (62.5KHz (както е изчислено по -горе) за добър имунитет на сигнала).
Така че, ние трябва да използваме така наречените ТАЙМЕРИ на Arduino, за да създадем ШИМ. Между другото, няма да навлизам в много подробности по това, защото ще намерите много уроци по темата ТАЙМЕРИ, но ако не намерите такива, коментирайте по -долу, ще направя такъв.
Използвал съм TC4420 драйвер за Mosfet, за да запазя нашите Arduino Pins, защото те не могат да доставят толкова много ток, за да управляват понякога MOSFET.
Така че, това беше почти теорията на този проект, сега можем да видим електрическата схема.
ВНИМАНИЕ ВНИМАНИЕ ВНИМАНИЕ
Всъщност този проект беше направен много трудно умишлено (ще кажа защо), има друг метод, който изисква noPC само Arduino и говорител в следващата ми инструкция. Връзката е тук.
*Основната цел на този проект е да използваме серийна комуникация и да знаем нейната сила и да научим как можем да програмираме нашия компютър да изпълнява задачи точно на такива малки интервали.*
Стъпка 3: Схематично

Свържете всички компоненти, както е показано на схемата. Тук имате две възможности:-
1. Свържете високоговорител (свързан с 5V)
2. Свържете Flyback трансформатор (свързан с 12V)
Опитах и двете. И двете работят доста добре.
Опровержение:-
*Препоръчвам да използвате предпазен трансформатор с предпазни мерки, тъй като той може да бъде опасен, защото произвежда високи напрежения. И няма да нося отговорност за никакви щети.*
Стъпка 4: Конвертирайте MP3 във WAV файл с помощта на Audacity



Така че, първо, изтеглете софтуера
1. Audacity, търсене и изтегляне от Google
2. За да конвертирате WAV файл в C-код, изтеглете прозоречно приложение, наречено WAVToCode
Можете да научите как да използвате софтуера WAVToCode от тази връзка и да я изтеглите от тази връзка.
Ще дам и подробни стъпки как да използвате и двата софтуера.
Моля, вижте снимките, свързани с тази инструкция.
В тази стъпка ще преобразуваме MP3 във Wav. (Следвайте снимките, скоростта на проекта трябва да бъде 44100Hz)
В следващата стъпка ще преобразуваме wav файл в C Code.
Стъпка 5: WAV към C-код



Следвайте снимките.
Вижте последните две снимки, промените трябва да са абсолютно еднакви, главни букви трябва да са главни и малки букви трябва да са по -малки, или ще получите синтаксична грешка по време на компилирането.
(Можете да видите, че песента за 1 минута 41 секунди заема 23 MB място.)
Променете името и дължината на песента съответно с името и продължителността на песента.
И запишете файла C Code.
Направете това с всички песни, които искате да свирите с Arduino
Стъпка 6: Направете окончателен файл и стартирайте вашия Linux



Добавете всичките си конвертирани песни във Файл, предоставен в тази връзка.
И следвайте снимките.
Качете кода в Arduino, който съм прикачил.
Запомнете имената на файловете на C Code (напр. Начин на живот, долар, дрехи), защото трябва да споменем абсолютно същите имена в нашия код с чувствителност към регистъра.
В края стартирайте вашия Fedora Live USB или друг и инсталирайте gcc компилатор и след това, използвайки инструкциите за компилиране от папката, компилирайте програмата и я стартирайте.
В крайна сметка ще можете да слушате песни от Speaker или Flyback.
Благодарим ви, че прочетохте тази инструкция и моля, коментирайте, ако ви харесва.
ATTENTIONI направихме втората част от тази инструкция, която е много по -лесна и се нуждае от минимални проблеми, за да работи. Връзка към втора част (най -лесната)
Препоръчано:
Използване на автомобилен стерео за възпроизвеждане на Mp3 на по -старо домашно стерео: 7 стъпки

Използване на автомобилен стерео за възпроизвеждане на Mp3 на по -старо домашно стерео: Възпроизвеждане на mp3 файлове на домашно стерео За последните две десетилетия съм изтеглил или разкъсал приблизително 5000 класически рок мелодии и имах нужда от прост начин за възпроизвеждане на цифрови музикални файлове на по -старо домашно стерео. Имам свързан компютър за домашно кино (HTC)
Говорещ Arduino - Възпроизвеждане на MP3 с Arduino без никакъв модул - Възпроизвеждане на Mp3 файл от Arduino с помощта на PCM: 6 стъпки

Говорещ Arduino | Възпроизвеждане на MP3 с Arduino без никакъв модул | Възпроизвеждане на Mp3 файл от Arduino с помощта на PCM: В тази инструкция ще се научим как да възпроизвеждаме mp3 файл с arduino, без да използваме аудио модул, тук ще използваме PCM библиотека за Arduino, която възпроизвежда 16 битов PCM с честота 8 kHZ, така че нека направим това
Пускайте песни с Arduino, използвайки ADC към PWM на Flyback трансформатор или високоговорител: 4 стъпки

Пускайте песни с Arduino, използвайки ADC към PWM на Flyback Transformer или високоговорител: Здравейте момчета, Това е втората част от другата ми инструкция (това беше много трудно). По принцип в този проект използвах ADC и ТАЙМЕРИ на моя Arduino, за да преобразуване на аудио сигнал в PWM сигнал. Това е много по -лесно от предишния ми Instructa
Възпроизвеждане на компактдискове без CD плейър, използване на AI и YouTube: 10 стъпки (със снимки)

Възпроизвеждане на компактдискове без CD плейър, използване на AI и YouTube: Искате ли да пуснете CD, но нямате повече CD плейър? Не сте имали време да копирате компактдисковете си? Изтрихте ги, но файловете не са налични, когато е необходимо? Няма проблем. Нека AI (изкуствен интелект) идентифицира вашия компактдиск и YouTube да го пусне! Написах приложение за Android, което прави
Как да изтеглите песни или други неща от DVD като MP3: 4 стъпки

Как да изтеглите песни или други неща от DVD като MP3: Ако имате DualDisc с песни, които искате да слушате на Ipod, или нормален DVD с може би коментар, който искате да слушате Ipod, прочетете останалото, за да направите това. Необходими елементи-компютър, ръце, мозък, DVD, Ipod