У цій сесії ми будемо використовувати Raspberry Pi та функції PYGAME для створення звукової дошки. Простіше кажучи, ми збираємось підключити кілька кнопок до шпильок Raspberry Pi GPIO, і при натисканні цих кнопок Raspberry Pi відтворює аудіофайли, що зберігаються в пам'яті. Ці аудіофайли можна відтворювати по одному або всі разом. Іншими словами, ви можете натиснути одну або кілька кнопок одночасно, Raspberry Pi буде одночасно відтворювати один або кілька аудіофайлів. Перегляньте демонстраційне відео в кінці цієї статті. Також перегляньте наші навчальні серії Raspberry Pi разом із декількома хорошими проектами IoT.
У нас є 26 шпильок GPIO в Raspberry Pi, які можна запрограмувати, з яких деякі використовуються для виконання деяких спеціальних функцій, а потім у нас залишається 17 GPIO. Кожен штифт GPIO може подавати або отримувати максимум 15 мА. А сума струмів від усіх GPIO не може перевищувати 50 мА. Таким чином, ми можемо отримати в середньому максимум 3 мА з кожного з цих штифтів GPIO. Ми будемо використовувати резистори для обмеження потоку струму. Дізнайтеся більше про шпильки GPIO та кнопку взаємодії з Raspberry Pi тут.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi та Світлодіодний індикатор Raspberry PI для початку, крім того, що нам потрібно:
- Raspberry Pi з попередньо встановленою ОС
- Блок живлення
- Доповідач
- Резистор 1 кОм (6 штук)
- Кнопки (6 штук)
- Конденсатор 1000 мкФ
Робоче пояснення:
Тут ми відтворюємо звук за допомогою кнопок з Raspberry Pi. Ми використали 6 кнопок для відтворення 6 аудіофайлів. Ми можемо додати більше кнопок та аудіофайлів, щоб розширити цю дошку, щоб створити більш красивий візерунок, натискаючи ці кнопки. Перш ніж пояснювати далі, виконайте наведені нижче дії.
1. Перш за все завантажте 6 аудіофайлів за посиланням, наведеним нижче, або ви можете використовувати свої аудіофайли, але потім вам потрібно змінити імена файлів у Коді.
Завантажте аудіофайли звідси
2. Створіть нову папку на екрані робочого столу Raspberry Pi і назвіть її як “PI SOUND BOARD”.
3. Розпакуйте завантажені аудіофайли в папку, яку ми створили на DESKTOP на попередньому кроці.
4. Відкрийте вікно терміналу в Raspberry Pi і введіть команду нижче:
sudo amixer cset numid = 3 1
Ця команда повідомляє PI забезпечити вихід звуку через 3,5-мм аудіороз'єм на борту.
Якщо ви хочете вивести аудіо з порту HDMI, ви можете скористатися наведеною нижче командою:
$ sudo amixer cset numid = 3 2
5. Підключіть динаміки до 3,5-мм аудіороз'єму на платі Raspberry Pi.
6. Створіть файл PYTHON (розширення *.py) і збережіть його в тій же папці. Перегляньте цей посібник для створення та запуску програми Python у Raspberry Pi.
7. Змішувач Pygame буде встановлений за замовчуванням в ОС. Якщо після виконання програма не викликає PYMIXER, оновіть ОС Raspberry Pi, ввівши команду нижче у вікні терміналу. Переконайтеся, що Pi підключений до Інтернету.
sudo apt-get update
Зачекайте кілька хвилин, поки ОС оновиться.
Тепер підключіть кожен компонент відповідно до схеми, наведеної нижче, скопіюйте програму PYHTON у файл PYHTON, створений на робочому столі, і, нарешті, натисніть кнопку запуску, щоб відтворити аудіофайли за допомогою кнопок. Програма Python подана наприкінці з демонстраційним відео.
Кругова діаграма:
Пояснення програмування:
Тут ми створили програму Python для відтворення аудіофайлів відповідно до натискання кнопки. Тут нам потрібно зрозуміти кілька команд, які ми використовували в програмі.
імпортувати RPi.GPIO як IO
Ми збираємося імпортувати файл GPIO з бібліотеки, вищезазначена команда дозволяє програмувати GPIO-шпильки PI. Ми також перейменовуємо “GPIO” на “IO”, тому в програмі, коли ми хочемо посилатися на шпильки GPIO, ми будемо використовувати слово “IO”.
IO.setwarnings (False)
Іноді, коли шпильки GPIO, які ми намагаємось використовувати, можуть виконувати деякі інші функції. Тоді ви будете отримувати попередження кожного разу, коли ви виконуєте програму. Ця команда говорить Raspberry Pi ігнорувати попередження та продовжувати роботу з програмою.
IO.setmode (IO.BCM)
Тут ми будемо посилатися на виводи вводу-виводу PI за назвою їх функції. Отже, ми програмуємо GPIO на пін-номери BCM, що дозволяє нам телефонувати PIN-кодами з їхніми PIN-кодами GPIO. Як ми можемо називати PIN39 як GPIO19 у програмі.
імпортувати pygame.mixer
Ми закликаємо pygame mixer для відтворення аудіофайлів.
audio1 = pygame.mixer.Sound ("buzzer.wav")
Ми закликаємо створити аудіофайл "buzzer.wav", який зберігається у папці робочого столу. Якщо ви хочете відтворити будь-який інший файл, просто змініть ім'я звукового файлу у функції, наведеній вище. Ви можете назвати будь-які файли, присутні в папці робочого столу.
channel1 = pygame.mixer.Channel (1)
Тут ми встановлюємо канал для кожної кнопки, щоб ми могли відтворювати всі аудіофайли одночасно.
if (IO.input (21) == 0): channel1.play (audio1)
У випадку, якщо умова у твердженні if відповідає дійсності, твердження під ним буде виконано один раз. Отже, якщо штифт 21 GPIO низький або заземлений, він буде відтворювати аудіофайл, призначений змінній audio1 . Відповідно до принципової схеми, ми можемо бачити, що контакт GPIO 21 опускається низько, коли ми натискаємо першу кнопку. Тож ми можемо відтворити будь-який аудіофайл, натиснувши відповідну кнопку.
в той час як 1: використовується як назавжди цикл, за допомогою цієї команди оператори всередині цього циклу будуть виконуватися безперервно.
Ви можете внести зміни до програми python, щоб зробити максимально задовольняючу звукову плату за допомогою Raspberry Pi. Ви навіть можете додати більше кнопок, щоб зробити речі цікавішими та відтворити більше аудіофайлів.