Кремень FMZ Реклама
Kremen FMHM Реклама

Кухонный медиаплеер на основе raspberry

Kromeshnik
Идет загрузка
Загрузка
23.08.2020
8377
25
Творчество

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20

Кухонный медиаплеер на основе raspberry

    Спросите почему кухонный? Да тут все просто – таймер. Не так много мест, где иногда нужен таймер, если у вас не лаборатория, где вы варите мет, или туалет, чтоб гости не засиживались, то единственное место, где он нужен обычному человеку – на кухне (чтоб не сгорел пирог или курица в духовке, не переварить яйцо всмятку и т.д.). Есть же смартфон! Да есть, но я не хожу по квартире со смартфоном в руках. Дома он превращается в обычный телефон, тихонько лежит где-нибудь на зарядке и ждет звонка. Прожженный критик сразу закричит – о, опять малина, и для часов с таймером – это как микроскопом забивать гвозди. А я улыбнусь и ничего не скажу. Просто вспомню, какой путь я прошел, чтоб сделать каконец-то на кухне вещь, которая покрывала бы все мои и моей жены хотелки для этого аппарата. Да, сперва были часы, нет, даже не на ардуино, я про них тогда не знал, на PIC16F628, был там и таймер и радио и управление с пульта, но кроме функций часов, другие функции были невостребованы – неудобно, лишние телодвижения, неинформативно, ненаглядно. А с радио получился большой облом. Бывают такие места в городах, где есть настоящие «ямы», радио не ловит, мобильная связь никакая…у меня дома так. Забавно смотреть, как приходящие гости, чтоб поговорить со своего лайфа высовываются в окно, чтоб связь не отрубалась (киевстар и водафон чуть получше берут, но не сильно). Радио. Стабильно ловит 3 станции, которые можно слушать, для остальных нужна антенна на крышу – но увы, не вариант. И тогда я наткнулся на проект Ka-radio, о, это было чудо! Интернет-радио – слушай, что хочешь, сделал я этих радио много в разных вариациях с разными экранами, со своими хотелками, но, нужен был большой экран. Вы когда-нибудь пробовали на ардуинке работать с большим экраном? Ну да, наверняка, многие скажут – мега2560 и вперед. Да, все так. А пробовали нарисовать какой-то красивый сложный интерфейс и с обработкой тачем кучи кнопок? Тоже без проблем. А если таких интерфейсов-экранов с десяток? Что-что? На меге память закончилась? :) Да ладно, есть же SD – просто работаем с картой, отрисовываем весь экран с карты и просто обрабатываем, хватит памяти. Что? Медленно отрисовывается? Почухав репу…есть же STM в конце концов! Да и esp пошустрее будет! Все так, но я решил не извращаться, а встретил вдруг экраны Nextion (там кстати STM-ки и стоят). Да, это нечто. Свой GUI-редактор, и не только рисовать, но и обрабатывать можно. Радовался я недолго. Красиво (относительно), но убогий редактор, убогие углы обзора, «дубовый» тач и чтоб сделать что-то очень непростое надо сильно постараться. А шрифты…боже, на то время (года 3 тому назад) у них был только 1 русский шрифт, причем корявый, да, разные размеры, но 1. Но я сделал. Esp + nextion, там были почти все мои хотелки. Через полгода экран сдох. А к тому моменту у меня на руках уже была малина. Я не знал ни питона, ни qt, ни js, но разве может разогнанного дикого кабана, учуявшего добычу, остановить тонкая береза? Нет! Хотя за березой впритык стоят вековые дубы… Это я все о том, зачем малина. А почему бы и нет? Что делают сейчас на малине – NAS, торрентокачалки, медиаплеер (ну, на андроиде приставки получше будут, но пользоваться можно), volumio (для аудиофилов), эмуляторы старых приставок для игр и всякие извращения для опытов, ну так почему бы и не малина с ее полноценными возможностями компьютера? Проект этот я закончил больше 2 лет назад, делал около полугода (в основном в выходные, иногда вечерами после работы). Qt я, конечно, так до конца и не освоил (какие там можно красивые вещи делать….эх), но для обычных «окошек» и кнопок меня хватило. Аппарат вот уже более двух лет работает стабильно в режиме 24/7, я доволен, жена довольна – наконец-то на кухне та вещь, которая была нужна нам обоим. А гости приходят, смотрят, задают вопросы…что и сподвигло меня наконец-то пересилить свою лень и написать эту статью.Теперь о самом медиаплеере:

Состоит это дело из: 

- Raspberry 3b+ (можно было и попроще, но был на руках только такой)

- Официальный экран Raspberry 7`` - да, дорогой, но понравился экран сочностью красок, отзывчивостью тача, настраиваемой яркостью, углами обзора

- Датчик DS18b20 (внешний, с некоторых пор, я перестал их держать в корпусе, а выношу наружу)

- резистор 10к (можно и 4,7к) – паял его прямо навесом к проводам, потом замотал изолентой

- Модуль реле 5В

- 2 Динамика (у меня были такие: https://aliexpress.ru/item/32834511016.html?spm=a2g0s.9042311.0.0.274233ed7TdMuf, расстояние между диагональными отверстиями 63мм, корпус проектировал под них)

- Усилитель типа pam8403

- Внешняя юсб-звуковая плата (да, встроенный выход звука у raspberry никуда не годится – даже самая простая внешняя намного лучше), такой хватит «за глаза»:

Кухонный медиаплеер на основе raspberry

- Блок питания 5В 2A – для малины (нужен хороший БП, с запасом по мощности, выдающий 5,1-5,2В, не стоит экономить на БП – это залог здоровья и долголетия малины, а она дороже БП)

- Блок питания 5В 0.5А для усилителя (от 0,5 до 2 А – смотря какой усилитель)

Да, я добавил отдельный блок питания на усилок, т.к. не осилил сделать нормальный фильтр по питанию, и от 1 БП звук был ужасный. Потому у меня при включении радио – реле замыкает вход на блок питания к усилку и он включается. Можете закидывать помидорами, схемами и пр. Я уже писал – я сделал это еще 2 года назад, оно работает (1 у меня, 1 у родителей и 1 у друга) и переделывать я уже ничего не буду, увы, захотите – дерзайте, все исходники будут тут.

- ИК-приемник (можно купить пульт управления сразу с платой приемника, типа такого: 

https://aliexpress.ru/item/4001314231721.html?spm=a2g0o.productlist.0.0.1ba62fbcd1dNAZ&algo_pvid=c68ef584-4e38-4c9c-b3b4-282ff99eb99c&algo_expid=c68ef584-4e38-4c9c-b3b4-282ff99eb99c-9&btsid=0b0a0ae215981062421351972eadfd&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

- ИК-пульт (см. выше)

Соединяем вместе:a) датчик температуры (сигнальный на GPIO4, GND – GND, Vcc – 3.3V):

Кухонный медиаплеер на основе raspberryб) ИК-приемник (сигнальный на GPIO24, GND – GND, Vcc – 3.3V), реле (сигнальный на GPIO17, GND-GND, Vcc – 5V):

Кухонный медиаплеер на основе raspberry

Блок питания малины подключаем по microUSB, экран подключаем и прикручиваем к малине по официальной инструкции, например такой: 

https://hobbytech.com.ua/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D1%8F-7-%D0%BA-raspberry/

Основные функции:

- Часы

- Прослушивание интернет-радиостанций

- Прослушивание mp3 (тут поле непаханое, можно сделать как угодно и откуда угодно, я же сделал просто – прослушиваются mp3 из 1 папки на самой малине, закидываю по сети в эту расшаренную папку и слушаю, вы же можете добавить прослушивание с ЮСБ, по сети да как угодно – но это уже сами, хоть видео – мне это ненужно, я не делал)

- Текущая погода в моем городе на сейчас (картинкой и словами)

- Прогноз погоды на ближайшие 5 дней (картинки + описание)

- Температура в квартире (датчик ds18b20)

- Просмотр календаря

- Таймер с выводом звука после окончания

- Просмотр списка радиостанций/mp3

- Управление громкостью

- Отключение ИК-пульта (у некоторых пультов, типа мой для ТВ-приставки, коды кнопок одинаковы, потому перед включением ТВ-приставки я отключаю кнопкой работу пульта на малине)

- Смена фоновой картинки (да, их там много, если надоедает - меняю).

- Управление всем этим делом может осуществляться аж 3 способами: ИК-пульт, тачем на экране, через web-интерфейс, но добавить/удалить станцию можно только через web

«А теперь слайды…» (с)

Основной экран: 

Кухонный медиаплеер на основе raspberryПояснять тут особо нечего, вроде все интуитивно понятно, единственное, что добавлю, кроме кнопок внизу и вверху, часы – тоже кнопка, вызывает таймер, справа иконка погоды – тоже кнопка, вызывает прогноз погоды на 5 дней, строчка с датой – тоже кнопка, вызывает календарь. В обычном режиме под часами текстом показывает текущую погоду (обновляется раз в 10 минут). Температура слева от часов – температура дома, справа – температура на улице + иконка состояния погоды.

Нажимаем кнопку Play (снизу в центре) или через web или пультом центральной кнопкой или цифрой от 1 до 6, начинает играть радиостанция (последняя, которая играла, или, если только включили – то 1 в списке. Список редактируется через web, там же можно менять порядок следования станций – об этом позже). Под часами текстом пишет номер радиостанции, ее название и название композиции, которая сейчас играет (если эти данные есть от станции):

Кухонный медиаплеер на основе raspberryГромкость – кнопка справа внизу (или через web, или пультом стрелками вверх/вниз), регулируется, как аналоговая ручка-крутилка:

Кухонный медиаплеер на основе raspberryСписок радиостанций, вызывается пультом или кнопкой снизу слева:

Кухонный медиаплеер на основе raspberryТут можно выбрать (через экран или пультом) станцию и нажать проигрывать

Прогноз погоды:

Кухонный медиаплеер на основе raspberryЗакрывается окно по нажатию любой кнопки на пульте или в любом месте на экране

Календарь:

Кухонный медиаплеер на основе raspberryНастройки (кнопка слева вверху): 

Кухонный медиаплеер на основе raspberry

Настройка WiFi (2 кнопка слева вверху). Делается это 1 раз, далее настройки вайфая прописываются в настройки малины и больше этого делать не придется. А если сеть вы уже настроили, то этого и вовсе делать не нужно. Когда вайфай подключен, то иконка отображает уровень сигнала, если не подключен – нажимаем на нее:

Кухонный медиаплеер на основе raspberry

Выбираем SSID и вводим пароль (появляется экранная виртуальная клавиатура):

Кухонный медиаплеер на основе raspberry

Таймер. При нажатии на часы (или с пульта), появляется экран для ввода значения таймера в минутах:

Кухонный медиаплеер на основе raspberryВыставляем сколько надо и запускаем таймер:

  Кухонный медиаплеер на основе raspberry

Если таймер надолго, можно это окно скрыть, таймер будет продолжать идти и время будет показываться красным цветом над часами:

Кухонный медиаплеер на основе raspberryПо окончании времени таймера, отобразится окно таймера с мигающими нулями и заиграет мелодия окончания таймера (если в это время играла mp3 или радиостанция – они выключатся и будет играть только мелодия окончания таймера – она там специфическая и громкость недефолтная – пропустить ее никак не получится)

Захотели послушать mp3 – справа вверху кнопка radio/mp3 – жмем кнопку (или с пульта) и нажимаем проигрывать, также можно просмотреть список композиций – кнопкой «список».

Кухонный медиаплеер на основе raspberryНу и, если надо отключить пульт – вверху крайняя правая кнопка. Включается обратно той же кнопкой.

Управление через web. Когда заходим в настройки – то при подключенной сети будет отображаться IP-адрес малины, к примеру, у меня это 192.168.1.190:

Кухонный медиаплеер на основе raspberryДабы айпиадрес не менялся – лучше прописать статический адрес в роутере, или, если он все время меняется динамически – заходим в настройки и смотрим, а далее, в любом браузнике вбиваем этот адрес в адресную строку, должно загрузиться такое окно:

Кухонный медиаплеер на основе raspberryДа, кто знаком с Ka-radio, узнает этот интерфейс, не стал я ничего выдумывать, просто переделал, упростил, добавил своего. Тут 2 закладки – Проигрыватель и Станции, на 1 закладке можно выбирать станцию/песню из списка, менять громкость, переключаться на следующую/предыдущую, запускать/останавливать проигрыватель. На 2 закладке управляем списком радиостанций:

Кухонный медиаплеер на основе raspberry

Кнопка Добавить – добавляем новую радиостанцию, справа в самом конце каждой радиостанции есть «edit» - жмем и редактируем параметры – название, URL, порт.

Чтобы поменять порядок следования станций – левой кнопкой мышки зажимаем название станции, наводим на строчку куда хотим переместить и отпускаем левую кнопку мыши – станции поменяются местами. Кнопку «удалить» не ищите, ее я делать принципиально не стал.

Установка. Есть 2 пути:

1. Качаем образ системы отсюда:

https://drive.google.com/file/d/1jMRKlXGXwZzM-A3XEKLxvsynIZZdnL0S/view?usp=sharing

архив 2.6 Гектар, в разархивированном состоянии будет 16 гектар (разархивировать не обязательно). Берем microSD на 16 гигабайт (лучше Sandisk), качаем etcher https://etcher.download/ Запускаем etcher, выбираем файл образа (можно сразу и архив), выбираем карточку, прошиваем. Если выскочит ошибка, типа не хватает 50-100 мегабайт, значит вам не повезло, хоть на картах и пишут 16 гигабайт, реальный размер все равно отличается в ту или другую сторону, значит пробуйте другую карту или сразу можно взять на 32 гигабайта, чтоб наверняка влезло. Далее вставляем карту в малину, проверяем, что железо такое, как я написал, и подключения периферии правильное – включаем малину, должна запуститься система и затем и сама прога, если железо немного не такое (малина другая, экран не тот) – то, возможно не запустится, тогда надо мониторить, какие ошибки выдает или сразу переходить ко 2 варианту установки.

Да, на всякий случай, логин на малину: pi

пароль: pi

Если все прошло удачно – то после загрузки малины прога запустится, но не будет данных о погоде, о температуре дома и, хз, возможно не будет работать пульт, потому радуемся, что запустилось, но переходим к п.3-п.5. и да, не забываем сразу настроить вай-фай.

2 путь – путь самурая – все ставим ручками. Тут уже разжевывать не буду, увы, слишком дофига объяснять, да и есть свои форумы по этому делу, просто делайте как написано и внимательно. Качаем исходники:

https://drive.google.com/file/d/1R3NXZjv1XF4FFcVonJVzo0tlDdcolOVN/view?usp=sharing

Качаем с официального сайта raspberry образ raspbian с GUI, записываем на карточку.

Далее включаем малину, настраиваем сеть (про это писать не буду, куча спец. форумов по малине) и понеслась:

2.1) sudo nano /boot/config.txt

   добавляем/или раскомментируем строки (для офиц. 7 дюймового экрана):

   framebuffer_width=800

   framebuffer_height=480

   hdmi_force_hotplug=1

   hdmi_group=2

   hdmi_mode=87

   hdmi_cvt 800 480 60 6 0 0 0

2.2) sudo apt-get update

2.3) sudo reboot

2.4) Языки - ставим ВСЕ ru и кому надо – UA

  sudo dpkg-reconfigure locales и там указываем нужные локали:

   en_US.UTF-8 UTF-8

   ru_RU ISO

   ru_RU.CP1251

   ru_RU UTF-8

   ru_UA.UTF-8

   uk_UA.UTF-8

   и ОБЯЗАТЕЛЬНО указываем дефолтный: ru_RU UTF-8 или ru_UA.UTF-8 (!!!)

2.5) sudo raspi-config - настраиваем пароли, SSH и пр. локали, таймзоны

2.6) alsamixer – настраиваем громкость, источник звука

2.7) sudo apt-get install mplayer

2.8) sudo apt-get install mc (кому надо, мне с ним удобней)

2.9) sudo apt-get install python3 python3-pyqt5 qt5-default pyqt5-dev pyqt5-dev-tools

2.10) устанавливаем экранную виртуальную клавиатуру:

2.10.1) git clone https://github.com/xlab/matchbox-keyboard

2.10.2) sudo apt-get install libfakekey-dev libpng-dev libxft-dev autoconf libtool –y

2.10.3) sudo apt-get install libmatchbox1 –y

2.10.4) cd matchbox-keyboard

2.10.5) ./autogen.sh

2.10.6) ./configure

2.10.7) make

2.10.8) sudo make install

2.10.9) copy /usr/local/share/matchbox-keyboard /usr/share/ (sudo mc)

2.11) sudo apt-get install nginx

2.12) sudo mkdir /home/pi/www

2.13) sudo mkdir /home/pi/PiRadio

2.14) sudo nano /etc/nginx/sites-available/default

находим в нем строку root /usr/share/nginx/www и заменяем ее на root /home/pi/www

2.15) sudo reboot

2.16) Далее надо скопировать из архива с исходниками все файлы и папки из \SRC\Radio на малину в /home/pi/PiRadio

Если не знаете как, можно на компе расшарить папку, туда закинуть исходники, потом на малине подключить эту расшаренную папку:

sudo mount -t cifs //192.168.1.1/server /mnt/ -o iocharset=utf8,username=guest,password=guest

где 192.168.1.1 – IP-адрес вашего компа (это мой, для примера)

/server/ - имя расшаренной папки (это – моя, для примера)

и далее просто скопировать все из /mnt/ в /home/pi/PiRadio

2.17) Заходим в папку /home/pi/PiRadio/WebSocketServer ( можно качнуть свежий отсюда, можно не качать и этот, что есть подойдет https://github.com/dpallot/simple-websocket-server) и запускаем:

sudo python3 setup.py install

2.18) кидаем все файлы из /home/pi/PiRadio/www/ в /home/pi/www

sudo cp -f /home/pi/PiRadio/www/* /home/pi/www

2.19) sudo apt-get install sqlite3

2.20) sudo apt-get install lirc

2.21) sudo nano /etc/modules

    добавляем строки:

    lirc_dev

    lirc_rpi gpio_in_pin=24

2.22) sudo nano /etc/lirc/hardware.conf

добавляем/раскомментируем строки:

    DRIVER="default"

    DEVICE="/dev/lirc0"

    MODULES="lirc_rpi"

2.23) sudo reboot

2.24) sudo nano /boot/config.txt

    добавляем строку:

    dtoverlay=lirc-rpi,gpio_in_pin=24,gpio_in_pull=up

2.25) lircd

  2.25.1) проверка:

      sudo /etc/init.d/lirc stop

      mode2 -d /dev/lirc0

      и жмакаем кнопки на пульте - если коды показуются - все ок

  2.25.2) названия кнопок:

       irrecord --list-namespace

  2.25.3) irrecord -d /dev/lirc0 ~/lircd.conf

             sudo cp lircd.conf /etc/lirc/lircd.conf

  2.25.4) sudo /etc/init.d/lirc start

              irw

2.25.5) для питона нужен конфиг:

       sudo nano /etc/lirc/lircrc

2.26) sudo apt-get install python3-lirc

2.27) звук

    sudo nano /boot/config.txt

    комментируем строчку в самом конце:

    #dtparam=audio=on

    тест:

    speaker-test -Dhw:1,0 -c2 –twav

2.28) обновление времени

       sudo apt-get install ntpdate

       sudo apt-get install ntp

    sudo /etc/init.d/ntp stop

    sudo ntpd -q –g

    sudo /etc/init.d/ntp start

2.29) Отключаем скринсейвер:

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

Дописываем туда:

@xset s off

@xset –dpms

@xset s noblank

2.30) Делаем ярлык на рабочем столе:

В "проводнике" (который файловый менеджер PCManFM) в директории /home/pi/Рабочий стол/ (/home/pi/Desktop/) создать файл, например, shortcut.desktop со следующим содержанием:

[Desktop Entry]

Type=Application

Icon=/home/pi/PiRadio/ResIco/radio.png

Name=Radio

Name[ru]=Радио

Exec=sudo python3 main.py

StartupNotify=true

Terminal=true

Path=/home/pi/PiRadio

2.31) автозагрузка

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

в конце дописываем строчку:

@sudo python3 /home/pi/PiRadio/main.py

Ну все, справились, осталось 3 момента, они касаются обоих установок.

3. Пульт.

Возможно, вам повезет и вы найдете такой, как у меня:

Кухонный медиаплеер на основе raspberry

Возможно, вам повезет дважды, и коды будут совпадать с моим пультом – тогда, ура, вам ничего не надо по пульту менять. Проверить кнопки в программе: цифры от 1 до 6 – запуск радиостанции с номером от 1 до 6, 7 – настройки, 8 – календарь, 9 – прогноз погоды, 0 – таймер, * - переключение radio/mp3 (она же – кнопка отмена в таймере, она же – кнопка перегрузить в настройках), # - прогноз погоды (она же – запустить таймер, она же – кнопка выключить в настройках), ок – старт/стоп проигрывания, вверх – громкость+, вниз – громкость-, влево – предыдущая станция/песня, вправо – следующая станция/песня.

Если же кнопки не совпадают (может у вас пульт такой же, только стрелки вверху, цифры внизу), тогда достаточно просто поменять название кнопок в файле /home/pi/PiRadio/lircrc

Коды там такие:

BTN_GEAR_UP – стрелка вверх

BTN_GEAR_DOWN – стрелка вниз

BTN_LEFT - влево

BTN_RIGHT - вправо

BTN_0 - 0

KEY_OK - ок

BTN_1 - 1

BTN_2 - 2

BTN_3 - 3

BTN_4 - 4

BTN_5 - 5

BTN_6 - 6

BTN_7 - 7

BTN_8 - 8

BTN_9 - 9

BTN_B - #

BTN_A - *

Если же совсем все плохо, тогда придется гуглить raspberry+ИК пульт и внимательно проходить пункт 2.25), названия клавиш должны быть такими, как указаны выше

4. Второй момент, который надо сделать, независимо от типа установки – это вставить свои данные о погоде (иначе погоду показывать не будет)

4.1 Идем на openweathermap.org и регистрируемся на сайте

4.2 Заходим под зареганным аккаунтом и жмем на закладку API keys

4.3 Справа будет написано Create Key – пишем имя ключа и жмем кнопку Generate

4.4 Добавится ключ типа такого: «ee2f890a79c02188edbaa007c2f343e6», запоминаем свой ключ – копируем его куда-нибудь, он нам еще пригодится

4.5 Жмем кнопку maps, слева вверху есть лупа – в поле ввода вводим название своего города, например Dnipro, если город нашелся, будет инфа, типа такой:

Dnipro, UA overcast clouds

22°С temperature from 22 to 22 °С, wind 4 m/s. clouds 98 %, 1014 hpa

Geo coords [48.45, 34.9833]

Нам отсюда нужны координаты: Geo coords [48.45, 34.9833], запоминаем/записываем цифры

4.6 Открываем для редактирования файл /home/pi/PiRadio/main.py

и ищем там такие строки (строка 671):

class ThreadWeatherTimer(QtCore.QThread):

    myweather = QtCore.pyqtSignal(str, str, str)

    def __init__(self, parent=None):

        QtCore.QThread.__init__(self, parent)

    def run(self):

        global weather_title

        while True:

            weather_title = ""

            try:

                x = urllib.request.urlopen('https://api.openweathermap.org/data/2.5/weather?lat=xxxx&lon=yyyy&&units=metric&lang=ru&appid=zzzzzzzzzzzzzzzzzzzzzz')

меняем в этой строке xxxx на свою широту (в моем примере это 48.45), yyyy меняем на свою долготу – в моем примере это 34.9833, а zzzzzzzzzzzzzzzz меняем на свой ключ из п.4.4

должно получится так:

x = urllib.request.urlopen('https://api.openweathermap.org/data/2.5/weather?lat=48.45&lon=34.9833&&units=metric&lang=ru&appid=ee2f890a79c02188edbaa007c2f343e6')

Аналогично делаем такие же замены для такого куска (строка 2779):

def ShowForecast():

    global w3

    global ForecastWindow

    w3 = WidgetForecast()

    w3.showFullScreen()

    ForecastWindow = 1

    try:

        x = urllib.request.urlopen('https://api.openweathermap.org/data/2.5/forecast?lat=xxxx&lon=yyyy&&units=metric&lang=ru&appid=zzzzzzzzzzzzzzzzzzzzzzzzz')

должно получиться так:

x = urllib.request.urlopen('https://api.openweathermap.org/data/2.5/forecast?lat=48.45&lon=34.9833&&units=metric&lang=ru&appid= ee2f890a79c02188edbaa007c2f343e6')

Сохраняем файл с этими изменениями. Перегружаемся, теперь должна показываться погода, если нет – перепроверьте все внимательно, и, после создания ключа на сайте, он может действовать не сразу, а в течение 10 минут, чуток подождать и снова проверить.

5. Последнее, что нужно исправить – это прописать ID своего датчика DS18b20

5. 1. Находим свой датчик в системе, ищем папку (я пользуюсь mc) в этой папке:

/sys/bus/w1/devices/

у меня это 28-0516a647a1ff, у вас будет свой, заходим внутрь

/sys/bus/w1/devices/28-0516a647a1ff/ - внутри должно быть w1_slave, ага, значит он,

запоминаем его (у меня 28-0516a647a1ff, у вас - свой)

5.2. Открываем для редактирования файл /home/pi/PiRadio/main.py

и ищем там такие строки (строка 1338):

class ThreadTemperature(QtCore.QThread):

    def __init__(self, parent=None):

        QtCore.QThread.__init__(self, parent)

    def run(self):

        while True:

            try:

                tfile = open("/sys/bus/w1/devices/28-0516a647a1ff/w1_slave")

И меняем 28-0516a647a1ff на свой из п.5.1, Сохраняем файл с изменениями. Все, если после ребута не будет показывать температуру – перепроверьте еще раз п.5.1-5.2

6. MP3. Так как я сделал проигрывание файлов из 1 папки на малине, то я папку расшарил и просто закидываю туда файлы иногда по сети. Я просто установил samb`у и расшарил, как умею (на всякий случай расшарил и папку с html и папку с основной прогой):

настройка samba:

sudo apt-get install samba samba-common-bin

sudo nano /etc/samba/smb.conf

[radio]

Comment = PiRadio shared folder

Path = /home/pi/PiRadio

Browseable = yes

Writeable = yes

only guest = no

create mask = 0777

directory mask = 0777

Public = yes

Guest ok = yes

[music]

Comment = Pi Music shared folder

Path = /home/pi/Music

Browseable = yes

Writeable = yes

only guest = no

create mask = 0777

directory mask = 0777

Public = yes

Guest ok = yes

[www]

Comment = Pi www shared folder

Path = /home/pi/www

Browseable = yes

Writeable = yes

only guest = no

create mask = 0777

directory mask = 0777

Public = yes

Guest ok = yes

sudo chmod -R 777 /home/pi/PiRadio

sudo chmod -R 777 /home/pi/Music

sudo chmod -R 777 /home/pi/www

sudo /etc/init.d/samba restart

Потом просто с компа захожу на 192.168.1.190\Music и удаляю/добавляю mp3

192.168.1.190 – IP-адрес моей малины, у вас будет свой, смотрите в настройках

7. Еще 1 момент. Некоторые станции играют хорошо, некоторые не очень из-за сервера, на котором крутится станция, может помочь настройка mplayer, а именно кеш:

/root/.mplayer/config

тут прописываем:

 cache=512

или 256 или вообще лучше убрать этот параметр – сами посмотрите, как у вас лучше будет, если будет долго включаться станция – возможно стоит этот параметр убрать совсем.

8. STL. Тут даже описывать нечего, если вы освоили все вышесказанное и все получилось, то распечатать и собрать корпус будет проще, чем лего. Исходники в солидворксе и STL тут:

https://drive.google.com/file/d/1-MsI60T4jYXEZkiEIrdIYk_Joyijt8VG/view?usp=sharing

пару фоток еще вставлю, основной корпус:

Кухонный медиаплеер на основе raspberry2 перегородки, ставятся в корпус и закрепляются болтами:

Кухонный медиаплеер на основе raspberryНа этой сделал возле 4 отверстий выступы – чтоб закрутить и поставить сюда модуль реле

Кухонный медиаплеер на основе raspberryКорпус колонок левой и правой:

Кухонный медиаплеер на основе raspberryКухонный медиаплеер на основе raspberryВ правой, как видно на скриншоте, есть место под плату ИК-приемника, после установки можно капнуть чуть клея зафиксировать плату. Корпуса колонок крепятся к корпусу 4 болтами, по центру – отверстие для проводов. Динамики я крепил маленькими шурупами. Скриншоты задних крышек приводить не буду, крышки также крепятся шурупами. Но, исходники есть – вы можете сделать для себя под болты или еще как-то. Также корпуса колонок сделал отдельно – вдруг захотите что-то побольше поставить. Ножки – их можно не печатать, когда я распечатал корпус, засунул все внутрь, понял, что оно смотрит как-то вниз, решил направить экран немного выше – распечатал ножки и прикрепил к корпусу снизу на двухсторонний скотч.

9. Сборка. Вставляем динамики – прикручиваем, вставляем плату ИК-приемника, соединяем корпуса к центральному, левый и правые планки закручиваем к центральному корпусу, малину с прикрученным экраном вставляем в центральный корпус и прикручиваем к планкам (если не идет – экран перевернуть), соединяем все проводами, далее я выкинул корпус от блока питания для малины и вставил плату БП в свободное место – зафиксировал клеевым пистолетом, 2 блок питания вставил аналогично, зафиксировал клеем, усилитель поместил в 1 из корпусов для динамика – зафиксировал пистолетом. USB sound card подключил к малине, от усилка воткнул jack 3.5 в звуковуху, зафиксировал звуковуху, чтоб не болталась. Датчик температуры подключил и вывел через отверстие в крышке. Проверяем все соединения, если все ок – включаем и проверяем работоспособность малины, если все ок– прикручиваем крышки – к корпусам. Все.

Пару фото, как у меня наляпано внутри:

Кухонный медиаплеер на основе raspberryКухонный медиаплеер на основе raspberryКухонный медиаплеер на основе raspberryКухонный медиаплеер на основе raspberryКухонный медиаплеер на основе raspberry

10. Эксплуатация. Рекомендую проверенные microSD типа Sandisk 10class или типа того. Больше 2 лет аппарат у меня пропахал нормально, работает 24/7, за все время только трижды вручную перегружал, и то, только из-за затыков каких-то станций, не хотело переключаться на следующие станции. Далее – иногда станции в инете меняют свое положение (меняются имена или айпиадреса – тут ничего не поделать, ручками редактировать станции). 

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20
Комментарии к статье