Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Проекты
  3. Графика, звук, мультимедиа
  4. MP3 плеер за полчаса

MP3 плеер за полчаса

Запланировано Прикреплена Закрыта Перенесена Графика, звук, мультимедиа
13 Сообщения 1 Posters 334 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано pi
    #1

    Осталось 2 часа до долгой поездки. Собираешь вещи, готовишься. Проверяешь всё. А тут бац! и плеер не работает. Печалька( На телефоне нет памяти, так что не получится с него слушать. Что же делать? Конечно же собирать самому. Особенно если есть Raspberry Pi.

    Сначала думаем что он должен уметь:

    • кнопка следующая песня
    • кнопка пауза
    • воспроизводить музыку в случайном порядке
    • кнопка выключение
    • кнопки звук больше меньше
    • светодиод-индикатор

    В наличии была ардуинка, куча разных atmeg. Но мой выбор пал на Raspberry pi model B 512 Mb. Решил, что это будет самый простой вариант. У неё есть разъёмы gpio, которые можно использовать для кнопок и светодиода. На малинке стоит Raspbian. Писать решил на python'e через редактор nano, работа c gpio через библиотеку RPi.GPIO, а что бы не мучиться с python кодеками и несовместимостью с arm — буду взаимодействовать со сторонним проигрывателем mplayer через subprocess.Popen(...).

    Схема сверх простая

    6035072b-ea9e-4b9e-9af0-35e6b592938a-image.png

    Реализация примерно такая (извините за такой вид. Просто сделано за пол часа...) Фотки
    3c758417-f654-4f16-9410-974a33d5d584-image.png

    1301e19d-32a9-4d8a-a201-5201aa81a27c-image.png

    e5539cde-20e2-469d-a526-cdfb279af35b-image.png

    sudo apt-get install mplayer
    

    Эээээх… программа… только не орите! Я знаю что это самое ужасное, что я когда либо писал. Когда ехал сильно мучила совесть. Особенно за использование sleep()
    Фейспалмная программа на питоне:

    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 > 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(">")
    
    
        
        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") # когда выключаемся, то закрываем плеер
    

    Итак. Почти всё готово. Осталось сделать так, чтоб скрипт запускался при старте нашей малинки

    1. редактируем файл
    sudo nano /etc/init.d/StartPlayer
    
    1. пишем в редакторе нано это:
    #! /bin/sh
    # /etc/init.d/StartPlayer
    sudo python /путь_к_питнон_скрипту.py
    

    вместо /путь_к_питнон_скрипту.py напишите путь к вашему питон скриптунажимаем ctrl + xYEnter3)

    sudo chmod 755 /etc/init.d/StartPlayer
    sudo update-rc.d StartPlayer defaults
    

    Всё готово! Загружаем музыку в папку /home/pi/Music/Ставим на вашей SD карточки замок lock, чтобы при случайном выключении питания ничего не сломалось и всё. Плеер готов!!!

    P.S. может позже сделаю следующую версию плеера. С нормальным исполнением и программой(без sleep()) и без стороннего плеера

    OFFTOPА сейчас я делаю такую милашку ^^

    5a89b699-e89c-43e4-a8bb-7c990a0477a8-image.png

    4a765bba-8484-462e-b811-0383bdfeb984-image.png

    К нему скоро будет камера. Он будет автоматически ездить по квартире. Управление голосом, например «приезжай на кухню». И сам ездить на зарядную станцию.

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано
      #2

      Автор, мое Вам почтение! Я свои малинки как-то забросил, не до них мне сейчас. А столько планов было... Но читаю такие вот посты как Ваш - и хочецца творить! И я обязательно что-нибудь сотворю 🙂

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #3

        А про подтяжку почему забыли?
        Эти резисторы уже есть на самой плате .

        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #4

          Спасибо за инструкцию по созданию MP3 плеера))

          1 ответ Последний ответ
          0
          • piP Не в сети
            piP Не в сети
            pi
            написал в отредактировано
            #5

            Т. е. можно все резисторы по 10 кОм убрать и ничего с Малинкой не случится? А тот который на 200 Ом, я думаю можно заменить резистором номиналам до 1000 Ом. Верно?

            1 ответ Последний ответ
            0
            • piP Не в сети
              piP Не в сети
              pi
              написал в отредактировано
              #6

              Да.
              Но подтяжки никогда не помешают 😉

              1 ответ Последний ответ
              0
              • piP Не в сети
                piP Не в сети
                pi
                написал в отредактировано
                #7

                А 200 Ом нельзя максимум можно поставить 500, не больше, а то светодиод очень тускло гореть будет

                1 ответ Последний ответ
                0
                • piP Не в сети
                  piP Не в сети
                  pi
                  написал в отредактировано
                  #8

                  Спасибо за ответы!!! У меня еще несколько вопросов возникло...

                  1. Резистор (или просто проводник, если без подтяжки) при первой кнопке так же к общему проводу подключать?
                  2. Я так понимаю можно добавить еще кнопку по аналогичной схеме и подключить ее к GPIO 22. Ну и запрограммировать ее например так:
                    if GPIO.input(22): #предыдущая композиция
                    player.stdin.write("<")?
                  3. Есть ли еще такие пины к которым можно было бы подсоединить еще кнопки?

                  Думаю в будущем можно будет добавить режим интернет-радио и добавить дисплейчик с двумя строками по 16 символов на микроконтроллере HD44780 для того чтобы выводить информацию, например о проигрываемой песне или радиостанции 😃

                  1 ответ Последний ответ
                  0
                  • piP Не в сети
                    piP Не в сети
                    pi
                    написал в отредактировано
                    #9
                    1. Да. К земле. Ссори недописовал 😃
                    2. Да. Конечно можно
                    3. порты gpio 0, 1, 15, 18, 21, 22, 10, 9, 11, 8, 7 полностью свободны
                    1 ответ Последний ответ
                    0
                    • piP Не в сети
                      piP Не в сети
                      pi
                      написал в отредактировано
                      #10

                      Понял. Я просто думал можно подключать эти самые кнопки только к зеленым пинам (GPIO общего назначения). А оказывается можно использовать все GPIO порты. Кстати, без резисторов 10 кОм похоже никто не подключает кнопки. Видел много схем с кнопками, все все равно используют резисторы. В общем у меня ничего не получилось пока что. При нажатии кнопки на включение у меня Raspberry Pi просто перезагружается. Я запускал программу с правами суперпользователя, но у меня постоянно вылазила ошибка:"...что то там кажется с временем исполнения и ошибка доступа к /dev/mem. Try running as root!"... Потом сделал так чтобы скрипт запускался при старте. Больше ошибок не видел, но чувствую, что программа вообще не работет, поэтому ничего и не получается. Гуглил эту ошибку, но так и не разобрался что это может быть...

                      1 ответ Последний ответ
                      0
                      • piP Не в сети
                        piP Не в сети
                        pi
                        написал в отредактировано
                        #11

                        Запускай программу от root. это делается так:
                        sudo #твоя команда

                        1 ответ Последний ответ
                        0
                        • piP Не в сети
                          piP Не в сети
                          pi
                          написал в отредактировано
                          #12

                          Подскажите Чем можно слушать формат АСС.

                          1 ответ Последний ответ
                          0
                          • piP Не в сети
                            piP Не в сети
                            pi
                            написал в отредактировано
                            #13

                            Я и запускал с правами суперпользователя...

                            1 ответ Последний ответ
                            0
                            • piP pi переместил эту тему из Блоги сообщества Raspberry Pi в

                            • Войти

                            • Нет учётной записи? Зарегистрироваться

                            • Login or register to search.
                            • Первое сообщение
                              Последнее сообщение
                            0
                            • Категории
                            • Главная
                            • Документация
                            • Последние
                            • Пользователи