Хабрахабр

Кровавая Лола на Omega 2 или душим питона на Хэллоуин

Никогда не понимал этот праздник. Но идея родилась. Сделать жуткую куклу, которая будет сверкать глазками и жуткие звуки издавать.

Раз так, то мозги девочке Лоле я сделал на Omega 2, использовав свои наработки из прошлой статьи. imageПод это все подвернулась классная детская голова (спасибо Антон) и конкурс от Onion с розыгрышем специальных китов, купить которые мне таки не позволяет совесть.

3 вольта, конвертер питания на 5 вольт, простой усилитель (класс D любой с питанием 3-12 вольт) и Omega 2. Всем кому интересно, как такое дело повторить, прошу под кат.
Нам потребуются: два светодиода, динамик, блок питания 12 вольт, датчик движения (только для него и нужно 12 вольт), конвертер питания на 3. Еще опционально понадобится либо флешка либо sd карта для расширения дискового пространства.

Выводим проводки в район мозгов Omega 2. Вскрываем куклу и термоклеем сажаем светодиоды в глаза и динамик в район рта. Динамик припаиваем к усилителю, светодиоды подключаем к полевым транзисторам… В общем собираем следующую схему.

image

Вместо конвертера на 5 вольт можно взять сдвоенный блок питания на 5 и 12 вольт, что ближе лежит под рукой.

Если хотите использовать i2s звук, ставим на омегу прошивку b193, потому что дальше i2s не работает. Дальше переходим к настройке софта. Если делаете как у меня, то про работу со i2s звуком я писал тут. Если нет, то можно вставить в USB звуковую карточку и тогда настраивать звук по этому гайду. Все подробно есть в руководстве тут.После этого выполняем Подключаемся к wifi и увеличиваем дисковое пространство omega 2.

opkg update
opkg install alsa-utils mpg123 python pyOnionGpio nano

Теперь наша омега уже, почти, умеет говорить и остается только написать питоновский скрипт для этого дела. Логика проста. Датчик движения размыкает цепь между двумя GPIO. На один мы подаем логическую единицу при включении (у меня это 15 вывод), значение второго читаем (я использую 17 вывод). Когда там 0 (потому что PIR датчик сработал и разомкнул линию) то начинаем воспроизводить жуткие звуки и мигать светодиодами. В остальное время молчим никого не трогаем. Реализация всего этого выглядит вот так.

import onionGpio
import subprocess
import random gpioOut = onionGpio.OnionGpio(15)
gpioOut.setOutputDirection(0)
gpioOut.setValue(1) gpioObj = onionGpio.OnionGpio(17)
status = gpioObj.setInputDirection() while True:
#проверяем значение порта value = gpioObj.getValue() #если недалеко человек if int(value)==0: cmd = "fast-gpio pwm 18 " + str(random.randint(5,15)) + " 50" subprocess.call(cmd, shell=True) cmd = "fast-gpio pwm 19 " + str(random.randint(2,10)) + " 50" subprocess.call(cmd, stdout=subprocess.PIPE, shell=True) cmd = "mpg123 -f 256 -C /mnt/sda1/" + str(random.randint(1,6)) + ".mp3" subprocess.call(cmd, shell=True) #если все спокойно else: subprocess.call("fast-gpio set 18 0", shell=True) subprocess.call("fast-gpio set 19 0", shell=True)

Файлы жутких звуков складываем в /mnt/sda1 под именами 1.mp3, 2.mp3… У меня их 6. и случайным образом включается один из них. Так же случайным образом включается частота ШИМ выходов Omega 2 отдельно под левый и правый глаз. Можно было бы использовать аппаратный ШИМ, но тут возможная нестабильность частоты является плюсом. Потом записываем две строчки в rc.local выполнив команду nano /etc/rc.local

omega2-ctrl gpiomux set i2s i2s
python /mnt/sda1/start.py

Как я думаю вы догадались скрипт, который я привел выше, надо сохранить в директории /mnt/sda1 под именем start.py.

Самый творческий. Далее последний шаг. Я просто попросил жену (читер) и она сделала классно. Макияж. Спасибо тебе большое!

image

В темноте Лола «Пожирательница мужских сердечек» выглядит довольно жутко, если честно. Посмотреть как это все работает со звуком можно в ролике, который ниже. Спасибо за внимание! Надеюсь вам понравилось.

А какие жуткие самоделки делали вы?

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть