Регулировка громкости на Raspberry Pi через Bash

Разберёмся, как объяснить малинке через коммандную строку, с какой громкостью должен воспроизводиться звук. Самый простой способ — через псевдографическую программу alsamixer (вроде из пакета alsa-utils) — запускаем и двигаем ползунок вверх-вниз, соответственно регулируется громкость. Выход кнопкой Esc.

┌───────────────────────────── AlsaMixer v1.0.28 ──────────────────────────────┐
│ Card: bcm2835 ALSA                                   F1:  Help               │
│ Chip: Broadcom Mixer                                 F2:  System information │
│ View: F3:[Playback] F4: Capture  F5: All             F6:  Select sound card  │
│ Item: PCM [dB gain: -10.00]                          Esc: Exit               │
│                                                                              │
│                                                                              │
│                                     ┌──┐                                     │
│                                     │  │                                     │
│                                     │  │                                     │
│                                     │  │                                     │
│                                     │  │                                     │
│                                     │  │                                     │
│                                     │  │                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     │▒▒│                                     │
│                                     ├──┤                                     │
│                                     │OO│                                     │
│                                     └──┘                                     │
│                                      58                                      │
│                                  <  PCM   >                                  │
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

Для интерактивного режима alsamixer пойдёт, но для скрипта нет. Для скрипта нам подойдёт программа amixer. Используется так:

pi@kmsvsr-raspberrypi ~/usr/bin $ amixer cset numid=1 -- 400
numid=1,iface=MIXER,name='PCM Playback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0
  : values=400
  | dBscale-min=-102.39dB,step=0.01dB,mute=1

Здесь громкость регулируется последним числом, оно должно быть в интервале от -10239 (тишина) до 400 (на полную), при этом половина громкости соответствует примерно -1000.

Интернет-радио на Raspberry Pi

Если малинка подключена к интернету и колонкам, то будем слушать на ней радио из интернета. Нам понадобится консольный проигрыватель mplayer:

sudo apt-get install mplayer

Радио будем включать и выключать с android-смартфона через программу, удалённо выполняющую команды в терминале малинки. Таких видимо много, мне подвернулась Raspi SSH. Нам понадобятся две кнопки — одна для включения радио, а вторая для выключения.

Включать радио будем командой:

mplayer -playlist http://goo.gl/qNtxFE

Адрес можно заменить на любой другой канал, который больше нравится. Адресов трансляций в интернете много. Можно создать несколько кнопок на несколько каналов.

А для выключения радио команда будет такая:

killall mplayer

О регулировке громкости напишу в другой раз.

Кухонный таймер на Bash для Raspberry Pi

Добавил своей малинке функцию кухонного таймера. Написал короткий скрипт для воспроизведения звукового файла через назначенный пользователем интервал времени. Скрипт получился такой:

#!/bin/bash
# kmstimer
echo "Таймер сработает через $1 минут"
for ((i=0; i<$1; i++))
  do
    echo "Прошло $i минут"
    sleep 60
  done
echo "Время вышло!"
echo "Время вышло" | festival --tts --language russian
mpg123 /home/pi/usr/share/sounds/default.mp3

Если на системе установлен синтезатор речи festival, то система получеловеческим голосом объявит, что время вышло, после чего воспроизведёт указанный в скрипте музыкальный файл.

Пример использования скрипта следующий:

/bin/kmstimer 15

где 15 — время в минутах.

Получившимся скриптом удобно пользоваться с android-смартфона, например через программу Raspi SSH. Добавляем новые кнопки с названием вроде «Таймер 15 минут (гречка)» и соответственно кодом «kmstimer 15» — таймер будет включаться нажатием одной кнопки на смартфоне.

Учим компьютер говорить — установка Festival на ubuntu-подобный Linux

После этих команд компьютер начал разговаривать на русском языке:

sudo apt-get install festival
sudo apt-get install speech-tools
sudo apt-get install festvox-kallpc16k 
sudo apt-get install festvox-ru

Теперь можно заставить его говорить например следующей командой:

echo "сейчас 20 40" | festival --tts --language russian

Подготовка SD-карты для Raspberry Pi в Linux

Шпаргалка как сделать SD-карту для Raspberry Pi:

  1. Раздобыть SD-карту по хорошему не меньше 8 Гб
  2. Скачать архив образа отсюда
  3. Распаковать образ
  4. Распакованный файл разлить на флэшку из консоли примерно следующей командой (имя файла образа и диска исправить под себя)
    sudo dd bs=4M if=2015-09-24-raspbian-jessie.img of=/dev/sdd

Результат должен быть примерн такой:

[sudo] password for user: 
1031+1 записей получено
1031+1 записей отправлено
скопировано 4325376000 байт (4,3 GB), 366,021 c, 11,8 MB/c

Теперь флэшка готова, чтоб с неё загрузили малинку