HandMade32.ru - сделай своими руками

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

Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояЭту интересную игрушку мастер сделал своей маленькой дочери на Рождество. Предыстория ее изготовления следующая.
Увидев рекламу замка-игрушки, в котором воспроизводится песня того героя (из мультфильмов Диснея), который помещён в данное время на площадку перед замком, родители решили купить такой замок своей дочери. Но оказалось, что в продаже таких игрушек уже нет, а если ее заказывать, то цена возрастает со 100 до 160 долларов. Тогда мастер решил попытаться сделать подобную игрушку самостоятельно. Учитывая, что он новичок в работе с такими проектами, это было смелое решение.

Давайте посмотрим, что у него получилось.

Инструменты и материалы:
-Raspberry Pi 3;
-Карта Micro-SD;
-RFID-модуль RC522;
-Кнопка включения;
-RFID-метки;
-USB-динамик;
-Соединительные провода;
-Паяльные принадлежности;
-Статуэтки мультгероев;
-Коробка;
-Планки из бальзы;
-Бархатная ткань;
-Красная нить;
-Ламинат;
-Дрель;
-Клеевой пистолет;
-Швейная машинка;
-Белая краска;
-Нож;
-Компьютер с ПО;
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояШаг первый: проектирование
Итак, идея была понятна, но вот как ее реализовать не совсем.

Сначала мастер определил задачи.
1. Найти способ отличить одного персонажа от другого.
2. Реализовать пункт 1 физически.
3. Сделайте проект полностью самодостаточным.

Сначала мастер хотел сделать проект по принципу “распознавания лица”. К сожалению, то что работает на человеке, не работало на куклах.
Второй идеей было использовать искусственный интеллект и научить программу отличать фигуры. Был найден подобный проект другого мастера. В проекте программа отличала игральные карты по мастям и даже по названиям. Оказалось, не все так просто, у мастера был старенький ноутбук и некоторые функции просто не работали.

В дальнейших поисках решения мастер наткнулся на RFID – технологию, и понял, что это то, что нужно для проекта.

Шаг второй: настройка Raspberry
Это было первое знакомство мастера с Raspberry.
Сначала мастер загрузил на компьютер ПО необходимое для работы с Raspberry. Затем подключает устройство к компьютеру и прописывает в командной строке
sudo apt-get update
sudo apt-get upgrade

Шаг второй: подготовка комплектующих
К RFID- модулю припаивает соединительные колодки.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояК контактам кнопки включения припаивает провода. Кнопка имеет светодиодную подсветку.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояШаг третий: монтаж
Дальше мастер монтирует комплектующие. На схеме кнопка и диод разделены, у мастера объединены в одно устройство. Подключение аналогично схемы.

Для монтажа кнопки мастер использовал пайку, остальные контакты монтируются с помощью соединительных проводов.
RC522 Raspberry
SDA – контакт 24
SCK – контакт 23
MOSI – контакт 19
MISO – контакт 21
GND – контакт 30
RST – контакт 22
3.3 В – контакт 1
– – –
Кнопка Raspberry
Анод (+) – к контакту 8
Катод (-) – к GND
Контакты кнопки к контактам 5 и 6 Raspberry
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояШаг четвертый: настройка RC522
Теперь вернемся к компьютеру.
В терминале Raspberry Pi настраивает RPi, чтобы иметь возможность использовать последовательный периферийный интерфейс (SPI), выполнив эту команду:
sudo raspi-config
Затем выбирает “5 Interfacing Options” и нажимает Enter.
Затем стрелкой вниз до «P4 SPI» и нажимает Enter. Когда появится вопрос «Вы хотите включить интерфейс SPI?», выбирает «Да» и нажимает «Ввод». Перезагружает Pi.
sudo reboot
Устанавливает пакеты, которые понадобятся для взаимодействия с RFID-ридером
sudo apt-get install python3-dev python3-pip
Для обработки сигналов от RC522 нужно будет использовать библиотеку spidev python
sudo pip3 install spidev
Загружает библиотеку MFRC522
sudo pip3 install mfrc522
Создает папку в каталоге Pi, где будут храниться все сценарии и музыкальные файлы для этого проекта. Мастер назвал её “pi-rfid”.
mkdir ~ / pi-rfid
Теперь нужно создать скрипт, который использует библиотеку MFRC522 для записи данных в метки RFID 13,56 МГц. Чтобы попасть в новую папку, нужно изменить каталог, а затем создать скрипт Python с именем «Write.py».
cd ~ / pi-rfid
sudo nano Write.py
Внутри редактора прописывает код
#!/usr/bin/env python

import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522

reader = SimpleMFRC522()

try:
text = input('New dаta:')
print("Now place your tag to write")
reader.write(text)
print("Written")
finally:
GPIO.cleanup()
Чтобы сохранить код в редакторе, нажимает CTRL + X, затем Y и Enter .
Внутри папки pi-rfid запускает скрипт Write.py
sudo python3 Write.py
Дальше нужно ввести текст, который нужно сохранить в метке RFID, нажать Enter и поместить метку поверх считывателя RC522.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояШаг пятый: USB-динамик
Для работы динамика нужно подключить его к USB-разъему Raspberry. В Raspberry изменить аудиовыход с HDMI на USB следующим образом:
запускает
sudo nano /usr/share/alsa/alsa.conf
прокручивает вниз и заменяет
defaults.ctl.card 0
defaults.pcm.card 0
на
defaults.ctl.card 1
defaults.pcm.card 1
Нажимает CTRL + X, затем Y и Enter.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояТреки песен мастер обрезал до нужного размера, экспортировал их в wav и поместил в папку pi-rfid. Например, трек песни Jasmine имеет следующий путь /home/pi/pi-rfid/Jasmine.wav.

Шаг шестой: редактирование скрипта Read.py
Теперь нужно отредактировать Read.py. Этот скрипт отвечает за считывания метки и выполнение дальнейших команд. Для редактирования мастер использует SFTP в Sublime Text.
Открывает Raspberry Pi и вводит
cd ~ /
pirfid sudo nano Read.py
затем
#! / usr / bin / env python
Импортирует пакеты
import time
from time import sleep
import pygame
import sys
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import re
from subprocess import Popen
Вводит
reader = SimpleMFRC522()
print("Looking for cards")
print("Press Ctrl-C to stop.")
textloop = "Start"
Затем
try:

while True:
print("Hold a tag near the reader")
id, text = reader.read()
print("ID: %snText: %s" % (id, text))
if text == textloop and pygame.mixer.music.get_busy() == True:
pass
else:
character = " ".join(re.findall("[a-zA-Z]+", text))
filepath = ("/home/pi/pi-rfid/%s.wav"%character)
# Just added the following three lines to prevent errors.
# Code should skip the bad reading and continue to look
# for tags
if filepath == "/home/pi/pi-rfid/.wav":
continue
else:
print("filepath is: %s"%filepath)
pygame.mixer.init()
pygame.mixer.music.load(filepath)
# pygame.mixer.music.load("%s.wav"%(character))
pygame.mixer.music.set_volume(1.0)
pygame.mixer.music.play()
textloop = text
sleep(2)
except Exception:
GPIO.cleanup()
pass
except KeyboardInterrupt:
GPIO.cleanup()
raise

Шаг седьмой: настройка кнопки
В Raspberry Pi вводит
sudo raspi-config
Выделяет строку ” 5 Interfacing Options ” и нажимает Enter. Затем «P6 Serial ” и снова Enter. Стрелка ” Yes” и снова Enter. Теперь нужно перегрузить устройство
sudo reboot
После перегрузки светодиод должен светится.
Дальше вводит
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install gcc
sudo apt-get install python-pip
Устанавливает пакет GPIO, который понадобится для правильной работы кнопки
wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
Затем
sudo tar -zxvf RPi.GPIO-0.5.11.tar.gz
Входит в папку
cd RPi.GPIO-0.5.11
Устанавливает скрипты
sudo python setup.py install
sudo python3 setup.py install
Дальше создает каталог
mkdir / home / pi / scripts
Затем
sudo nano /home/pi/scripts/shutdown.py
Прописывает
#!/usr/bin/python

import RPi.GPIO as GPIO
import time
import subprocess

# we will use the pin numbering to match the pins on the Pi, instead of the
# GPIO pin outs (makes it easier to keep track of things)

GPIO.setmode(GPIO.BOARD)

# use the same pin that is used for the reset button (one button to rule them all!)
GPIO.setup(5, GPIO.IN, pull_up_down = GPIO.PUD_UP)

oldButtonState1 = True

while True:
#grab the current button state
buttonState1 = GPIO.input(5)

# check to see if button has been pushed
if buttonState1 != oldButtonState1 and buttonState1 == False:
subprocess.call("shutdown -h now", shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
oldButtonState1 = buttonState1

time.sleep(.1)

Нажимает CTRL + X, а затем Y и перезагружает устройство.
Затем прописывает команду
sudo nano /etc/rc.local
Клавишами со стрелками переходить до ” Exit 0″. Перед этой записью пишет
sudo python /home/pi/scripts/shutdown.py &
Затем CTRL + X, а затем Y.
Выключает устройство
sudo shutdown -h now
Теперь с помощью кнопки можно безопасно включать и выключать устройство.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояШаг седьмой: включение RC522 при запуске
Самый последний шаг, который нужно сделать (из программной части), – запустить скрипт «Read.py» RC522 при запуске.
Мастер пишет команду
id Pi
Pi – это имя пользователя.
Далее пишет
sudo crontab -e
Внизу файла crontab пишет
XDG_RUNTIME_DIR=/run/user/user_id
и наконец
@reboot sudo python3 /home/pi/pi-rfid/Read.py> /home/pi/pi-rfid/log.txt
Теперь все нужно сохранить CTRL + X, а затем Y.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояС ПО закончено.

Шаг восьмой: изготовление сцены
Дальше мастер делает сцену. Настил делает из ламината.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояУстанавливает занавес.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояВ коробке размещает электронику. Считыватель RFID-меток закрепляет под крышкой коробки.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояПоследним действием мастер закрепляет запрограммированные RFID-метки снизу фигурок мультгероев. Естественно, что каждая метка должна соответствовать своей фигурке.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояВсе готово. По словам мастера, его дочь в восторге от игрушки.
Музыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгерояМузыкальная игрушка-театр с автоматическим воспроизведением трека выступающего мультгероя

administrator

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.