Осталось
2 часа до долгой поездки. Собираешь вещи, готовишься. Проверяешь всё. А
тут бац! и плеер не работает. Печалька( На телефоне нет памяти, так что
не получится с него слушать. Что же делать? Конечно же собирать самому.
Особенно если есть Raspberry Pi. Сначала думаем что он должен
уметь:-кнопка следующая песня-кнопка пауза-воспроизводить музыку в
случайном порядке-кнопка выключение-кнопки звук больше
меньше-светодиод-индикаторВ наличии была ардуинка, куча разных atmeg. Но
мой выбор пал на Raspberry pi model B 512 Mb. Решил, что это будет
самый простой вариант. У неё есть разъёмы gpio, которые можно
использовать для кнопок и светодиода. На малинке стоит Raspbian. Писать
решил на python'e через редактор nano, работа c gpio через библиотеку RPi.GPIO, а что бы не мучиться с python кодеками и несовместимостью с arm — буду взаимодействовать со сторонним проигрывателем mplayer через subprocess.Popen(...). Схема сверх простая
Реализация примерно такая (извините за такой вид. Просто сделано за пол часа...)Фотки
Устанавливаем mplayer: Эээээх… программа… только
не орите! Я знаю что это самое ужасное, что я когда либо писал. Когда
ехал сильно мучила совесть. Особенно за использование sleep()
- code
- source
- sudo apt-get install mplayer
Фейспалмная программа на питоне
- code
- source
- 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) редактируем файл2) пишем в редакторе нано это:вместо /путь_к_питнон_скрипту.py напишите путь к вашему питон скрипту
- code
- source
- sudo nano /etc/init.d/StartPlayer
- code
- source
- #! /bin/sh
- # /etc/init.d/StartPlayer
- sudo python /путь_к_питнон_скрипту.py
нажимаем ctrl + x
Y
Enter
3)
- code
- source
- sudo chmod 755 /etc/init.d/StartPlayer
- sudo update-rc.d StartPlayer defaults
Ставим на вашей SD карточки замок lock, чтобы при случайном выключении питания ничего не сломалось и всё. Плеер готов!!!
P.S. может позже сделаю следующую версию плеера. С нормальным исполнением и программой(без sleep()) и без стороннего плеера
OFFTOP
А сейчас я делаю такую милашку ^^
К
нему скоро будет камера. Он будет автоматически ездить по квартире.
Управление голосом, например «приезжай на кухню». И сам ездить на
зарядную станцию.
http://raspberrypi.ru/readblog/317/
http://raspberrypi.ru/readblog/317/