<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MP3 плеер за полчаса]]></title><description><![CDATA[<p dir="auto">Осталось 2 часа до долгой поездки. Собираешь вещи, готовишься. Проверяешь всё. А тут бац! и плеер не работает. Печалька( На телефоне нет памяти, так что не получится с него слушать. Что же делать? Конечно же собирать самому. Особенно если есть Raspberry Pi.</p>
<p dir="auto">Сначала думаем что он должен уметь:</p>
<ul>
<li>кнопка следующая песня</li>
<li>кнопка пауза</li>
<li>воспроизводить музыку в случайном порядке</li>
<li>кнопка выключение</li>
<li>кнопки звук больше меньше</li>
<li>светодиод-индикатор</li>
</ul>
<p dir="auto">В наличии была ардуинка, куча разных atmeg. Но мой выбор пал на Raspberry pi model B 512 Mb. Решил, что это будет самый простой вариант. У неё есть разъёмы gpio, которые можно использовать для кнопок и светодиода. На малинке стоит Raspbian. Писать решил на python'e через редактор nano, работа c gpio через библиотеку RPi.GPIO, а что бы не мучиться с python кодеками и несовместимостью с arm — буду взаимодействовать со сторонним проигрывателем mplayer через subprocess.Popen(...).</p>
<p dir="auto">Схема сверх простая</p>
<p dir="auto"><img src="/forum/assets/uploads/files/1731911451655-6035072b-ea9e-4b9e-9af0-35e6b592938a-image.png" alt="6035072b-ea9e-4b9e-9af0-35e6b592938a-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Реализация примерно такая (извините за такой вид. Просто сделано за пол часа...) Фотки<br />
<img src="/forum/assets/uploads/files/1731911463645-3c758417-f654-4f16-9410-974a33d5d584-image.png" alt="3c758417-f654-4f16-9410-974a33d5d584-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/forum/assets/uploads/files/1731911472665-1301e19d-32a9-4d8a-a201-5201aa81a27c-image.png" alt="1301e19d-32a9-4d8a-a201-5201aa81a27c-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/forum/assets/uploads/files/1731911483209-e5539cde-20e2-469d-a526-cdfb279af35b-image.png" alt="e5539cde-20e2-469d-a526-cdfb279af35b-image.png" class=" img-fluid img-markdown" /></p>
<pre><code>sudo apt-get install mplayer
</code></pre>
<p dir="auto">Эээээх… программа… только не орите! Я знаю что это самое ужасное, что я когда либо писал. Когда ехал сильно мучила совесть. Особенно за использование sleep()<br />
Фейспалмная программа на питоне:</p>
<pre><code>import RPi.GPIO as GPIO
from time import sleep
import subprocess
import os
from random import randint

Mfiles = []

path = "/home/pi/Music/" #Папка, где находится музыка
files = os.listdir(path)
MPFiles = images = filter(lambda x: x.endswith('.mp3'), files); 
i=0
for mf in MPFiles:
    MPFiles[i] = path+mf
    i = i+1

Mfiles = list(MPFiles)

Mlen = len(Mfiles)

count = 1

CurrentSong = 0

i=0
        
while i= 10: #если кнопку держат долго,то выходим
            s = "q"
            LedState = 0
    else: #иначе пауза или воспроизведение
        if i &gt; 0:
            player.stdin.write("p")
            if LedState != 1:
                LedState = 1 #если воспроизведение, то зажигаем светодиод
            else:
                LedState = 2 #иначе моргаем

        i=0

    if GPIO.input(4):	#звук выше
        player.stdin.write("*")

    if GPIO.input(17): #звук ниже
        player.stdin.write("/")

    if GPIO.input(23): #следующая композиция
        player.stdin.write("&gt;")


    
    if LedState == 2: #тут режимы светодиода
        if lastLed == 1:
            GPIO.output(24, GPIO.LOW)
            lastLed = 0
        else:
            GPIO.output(24, GPIO.HIGH)
            lastLed = 1
    else:
        if LedState == 1:
            GPIO.output(24, GPIO.HIGH)
        else:
            GPIO.output(24, GPIO.LOW)

    sleep(0.2) #Фэйспалм 
    
    

player.stdin.write("q") # когда выключаемся, то закрываем плеер
</code></pre>
<p dir="auto">Итак. Почти всё готово. Осталось сделать так, чтоб скрипт запускался при старте нашей малинки</p>
<ol>
<li>редактируем файл</li>
</ol>
<pre><code>sudo nano /etc/init.d/StartPlayer
</code></pre>
<ol start="2">
<li>пишем в редакторе нано это:</li>
</ol>
<pre><code>#! /bin/sh
# /etc/init.d/StartPlayer
sudo python /путь_к_питнон_скрипту.py
</code></pre>
<p dir="auto">вместо /путь_к_питнон_скрипту.py напишите путь к вашему питон скриптунажимаем ctrl + xYEnter3)</p>
<pre><code>sudo chmod 755 /etc/init.d/StartPlayer
sudo update-rc.d StartPlayer defaults
</code></pre>
<p dir="auto">Всё готово! Загружаем музыку в папку /home/pi/Music/Ставим на вашей SD карточки замок lock, чтобы при случайном выключении питания ничего не сломалось и всё. Плеер готов!!!</p>
<p dir="auto">P.S. может позже сделаю следующую версию плеера. С нормальным исполнением и программой(без sleep()) и без стороннего плеера</p>
<p dir="auto">OFFTOPА сейчас я делаю такую милашку ^^</p>
<p dir="auto"><img src="/forum/assets/uploads/files/1731911569146-5a89b699-e89c-43e4-a8bb-7c990a0477a8-image.png" alt="5a89b699-e89c-43e4-a8bb-7c990a0477a8-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/forum/assets/uploads/files/1731911574137-4a765bba-8484-462e-b811-0383bdfeb984-image.png" alt="4a765bba-8484-462e-b811-0383bdfeb984-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">К нему скоро будет камера. Он будет автоматически ездить по квартире. Управление голосом, например «приезжай на кухню». И сам ездить на зарядную станцию.</p>
]]></description><link>https://raspberrypi.ru/forum/topic/63/mp3-плеер-за-полчаса</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 23:29:03 GMT</lastBuildDate><atom:link href="https://raspberrypi.ru/forum/topic/63.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Nov 2024 06:32:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:18 GMT]]></title><description><![CDATA[<p dir="auto">Я и запускал с правами суперпользователя...</p>
]]></description><link>https://raspberrypi.ru/forum/post/9075</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9075</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<p dir="auto">Подскажите Чем можно слушать формат АСС.</p>
]]></description><link>https://raspberrypi.ru/forum/post/9074</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9074</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<p dir="auto">Запускай программу от root. это делается так:<br />
sudo #твоя команда</p>
]]></description><link>https://raspberrypi.ru/forum/post/9073</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9073</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<p dir="auto">Понял. Я просто думал можно подключать эти самые кнопки только к зеленым пинам (GPIO общего назначения). А оказывается можно использовать все GPIO порты. Кстати, без резисторов 10 кОм похоже никто не подключает кнопки. Видел много схем с кнопками, все все равно используют резисторы. В общем у меня ничего не получилось пока что. При нажатии кнопки на включение у меня Raspberry Pi просто перезагружается. Я запускал программу с правами суперпользователя, но у меня постоянно вылазила ошибка:"...что то там кажется с временем исполнения и ошибка доступа к /dev/mem. Try running as root!"... Потом сделал так чтобы скрипт запускался при старте. Больше ошибок не видел, но чувствую, что программа вообще не работет, поэтому ничего и не получается. Гуглил эту ошибку, но так и не разобрался что это может быть...</p>
]]></description><link>https://raspberrypi.ru/forum/post/9072</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9072</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<ol>
<li>Да. К земле. Ссори недописовал <img src="https://raspberrypi.ru/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=l0bs4eq4n9s" class="not-responsive emoji emoji-android emoji--smiley" style="height:23px;width:auto;vertical-align:middle" title="=)" alt="😃" /></li>
<li>Да. Конечно можно</li>
<li>порты gpio 0, 1, 15, 18, 21, 22, 10, 9, 11, 8, 7  полностью свободны</li>
</ol>
]]></description><link>https://raspberrypi.ru/forum/post/9071</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9071</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<p dir="auto">Спасибо за ответы!!! У меня еще несколько вопросов возникло...</p>
<ol>
<li>Резистор (или просто проводник, если без подтяжки) при первой кнопке так же к общему проводу подключать?</li>
<li>Я так понимаю можно добавить еще кнопку по аналогичной схеме и подключить ее к GPIO 22. Ну и запрограммировать ее например так:<br />
if GPIO.input(22): #предыдущая композиция<br />
player.stdin.write("&lt;")?</li>
<li>Есть ли еще такие пины к которым можно было бы подсоединить еще кнопки?</li>
</ol>
<p dir="auto">Думаю в будущем можно будет добавить режим интернет-радио и добавить дисплейчик с двумя строками по 16 символов на микроконтроллере HD44780 для того чтобы выводить информацию, например о проигрываемой песне или радиостанции <img src="https://raspberrypi.ru/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f603.png?v=l0bs4eq4n9s" class="not-responsive emoji emoji-android emoji--smiley" style="height:23px;width:auto;vertical-align:middle" title="=)" alt="😃" /></p>
]]></description><link>https://raspberrypi.ru/forum/post/9070</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9070</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:17 GMT]]></title><description><![CDATA[<p dir="auto">А 200 Ом нельзя максимум можно поставить 500, не больше, а то светодиод очень тускло гореть будет</p>
]]></description><link>https://raspberrypi.ru/forum/post/9069</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9069</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:16 GMT]]></title><description><![CDATA[<p dir="auto">Да.<br />
Но подтяжки никогда не помешают <img src="https://raspberrypi.ru/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f609.png?v=l0bs4eq4n9s" class="not-responsive emoji emoji-android emoji--wink" style="height:23px;width:auto;vertical-align:middle" title=";-)" alt="😉" /></p>
]]></description><link>https://raspberrypi.ru/forum/post/9068</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9068</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:16 GMT]]></title><description><![CDATA[<p dir="auto">Т. е. можно все резисторы по 10 кОм убрать и ничего с Малинкой не случится? А тот который на 200 Ом, я думаю можно заменить резистором номиналам до 1000 Ом. Верно?</p>
]]></description><link>https://raspberrypi.ru/forum/post/9067</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9067</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:16 GMT]]></title><description><![CDATA[<p dir="auto">Спасибо за инструкцию по созданию MP3 плеера))</p>
]]></description><link>https://raspberrypi.ru/forum/post/9066</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9066</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:16 GMT]]></title><description><![CDATA[<p dir="auto">А про подтяжку почему забыли?<br />
Эти резисторы уже есть на самой плате .</p>
]]></description><link>https://raspberrypi.ru/forum/post/9065</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9065</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:16 GMT</pubDate></item><item><title><![CDATA[Reply to MP3 плеер за полчаса on Wed, 20 Nov 2024 23:04:16 GMT]]></title><description><![CDATA[<p dir="auto">Автор, мое Вам почтение! Я свои малинки как-то забросил, не до них мне сейчас. А столько планов было... Но читаю такие вот посты как Ваш - и хочецца творить! И я обязательно что-нибудь сотворю <img src="https://raspberrypi.ru/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=l0bs4eq4n9s" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":-)" alt="🙂" /></p>
]]></description><link>https://raspberrypi.ru/forum/post/9064</link><guid isPermaLink="true">https://raspberrypi.ru/forum/post/9064</guid><dc:creator><![CDATA[pi]]></dc:creator><pubDate>Wed, 20 Nov 2024 23:04:16 GMT</pubDate></item></channel></rss>