Оглавление:
- Шаг 1. Как сделать чехол для GrimmsBox
- Шаг 2: Как собрать кнопки для GrimmsBox
- Шаг 3: Установка программного обеспечения
- Шаг 4: Введение в YAML:
- Шаг 5: инструкция по применению
Видео: GrimmsBox: создайте свое собственное устройство для повествования: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Это руководство покажет вам, как создать свою собственную коробку для рассказов. Смело выбирайте собственное приключение.
Так называемый «GrimmsBox» был проектом студентов Высшей школы медицины Штутгарта, Германия. Мы используем обычный чековый принтер, чтобы распечатать первую часть истории. В конце части нужно принять решение. С помощью кнопок вы можете выбрать, как будет развиваться история. Мы используем Raspberry Pi для запуска программного обеспечения.
Два ящика будут использоваться очень скоро. Публичная библиотека в Мангейме организует мастер-классы с детьми. Дети могут создавать свои собственные истории, и они могут переживать свои истории с помощью GrimmsBox. Основная цель таких семинаров - развитие навыков чтения и письма. Ящики для рассказов также будут доставлены на мероприятия, чтобы дети с 3 по 6 классы познакомились с иммерсивным опытом чтения.
Шаг 1. Как сделать чехол для GrimmsBox
Необходимые материалы:
- 1x 6 мм фанерная плита (1200x600x6мм)
- 1x 4 мм фанерная плита (1200x600x4 мм)
- клей для дерева
- необходимые устройства: лазерный резак, компьютер
Файлы, используемые GrimmsBox, доступны для бесплатной загрузки. Это файлы svg и dxf отдельных компонентов GrimmsBox. С одной стороны, это подструктура, в которой Raspberry Pi находит свое место, затем книга с изгибающимся шарниром и подставка для книг собственной разработки.
Фанерная плита толщиной 6 мм используется для подконструкции и подставки для книг. Книга вырезана из фанеры толщиной 4 мм. Более толстая пластина была бы слишком толстой для книги. Гибкая петля работает только с фанерными панелями толщиной 3-4 мм. Иначе сломалось бы.
Файлы dxf - правильный выбор для тех, кто больше не хочет ничего менять. Они готовы к использованию на лазерном резаке.
Но для тех, кто все еще хочет придать коробке своеобразие, можно использовать файлы SVG в коробке. Их можно изменить по желанию. Для этого файл необходимо открыть в программе (например, Inkscape). С помощью этих программ вы можете редактировать отдельные компоненты. Если вы что-то изменили (например, размер отверстий для кнопок или перетяжки), вам необходимо сохранить файл SVG как файл dxf.
Файл dxf должен быть открыт на лазерном резаке. Как только файл отображается на ПК, необходимо выбрать, какие линии нужно вырезать, а какие выгравировать. Надпись на боковой стороне коробки была выгравирована на коробке Гримма, а надпись на книге была плохо вырезана. В зависимости от того, что вам больше нравится, вы можете использовать одно или другое. Разумеется, все внешние линии должны быть обрезаны. Однако использование лазерного резака может зависеть от модели лазерного резака и может отличаться.
Шаг 2: Как собрать кнопки для GrimmsBox
Необходимые материалы:
- 6 нормально открытых кнопок мгновенного действия, например кнопки для аркадных игр
- 8 перемычек с хотя бы одним женским концом, наши были длиной около 40 см.
- какая-то коса
- термоусадочная трубка коробка, используемая для вашего проекта, в нашем случае верхняя крышка с лазерной резкой и две боковые крышки с дополнительными кнопками
- припой и паяльник
- мультиметр
- кусачки
- инструмент для зачистки проводов
- зажигалка или термофен
- В нашем коде мы использовали внутренние резисторы, поэтому нам нужно сделать только две вещи: во-первых, подключить перемычку с гнездом к каждой кнопке, которая приведет к соответствующему выводу GPIO, и, во-вторых, соединить кнопки друг с другом, которые затем будут на землю через другую перемычку с внутренней резьбой. Мы соединили кнопку выключения и кнопку перезапуска программы вместе и использовали для них один контакт заземления. Четыре кнопки, которые будут использоваться движком «Выбери свое приключение», также были соединены друг с другом и имели общий контакт заземления.
- Если у ваших кнопок более двух контактов, используйте мультиметр, чтобы выяснить, какие из них подходят для подключения контакта GPIO и земли. С функцией звука вы должны услышать звук только в том случае, если вы коснетесь двух контактов, и кнопка в данный момент нажата. Вы можете провести тест на непрерывность, руководство, как это сделать, доступно на ifixit:
- Возьмите одну пуговицу и вставьте ее в коробку. Возьмите одну из перемычек и отрежьте один конец, чтобы у вас осталась перемычка с одним охватывающим концом. Используйте инструмент для зачистки проводов, чтобы отрезать около 5 миллиметров изоляции. Немного скрутите свободные провода, чтобы ни одна из них не торчала. Используйте немного жести, чтобы сделать красивое покрытие для проводов. Если вы новичок в пайке, есть отличный короткий комикс, который научит вас паять. Это называется «Пайка - это просто», а PDF-файл доступен на нескольких языках по адресу https://mightyohm.com/blog/2011/04/soldering-is-e… Измерьте и отрежьте термоусадочную трубку, которую вы будете использовать для изоляции часть, где кнопка и перемычка будут припаяны. Наденьте термоусадочную трубку на проволочную перемычку. Припаяйте перемычку к одному из контактов кнопки.
- Повторите последний шаг для всех кнопок. Обязательно натягивайте термоусадочную трубку на перемычку перед пайкой, так как она может не надевать на разъем.
- Теперь вы подключите кнопку выключения и кнопку перезапуска. Мы использовали эмалированный медный провод, но, поскольку это оказалось немного неудобно, я бы посоветовал использовать обычную оплетку. Отрежьте несколько сантиметров тесьмы. Как и прежде, демонтируйте его с помощью инструмента для зачистки проводов, но на этот раз с обоих концов. Затем припаяйте один конец к контакту кнопки выключения или перезапуска. Снова отрежьте кусок термоусадочной трубки и натяните ее на оплетку.
- Далее вы прикрепите косу к свободному штырю другой пуговицы. Но вы также подключите сюда еще одну перемычку, которая приведет к заземлению. Подготовьте перемычку, как и другие, включая термоусадочную трубку. Теперь согните оплетку, чтобы можно было припаять ее к свободному штырю, идущему от кнопки, обращенной к свободному концу. Затем припаяйте перемычку к контакту. Пайка оплетки, идущей с одной стороны, и перемычки с другой стороны, гарантирует, что вы можете натянуть термоусадочную трубку на припаянную часть.
- Соедините четыре кнопки, используемые для игрового движка, строя маленькие мосты. Обязательно натягивайте термоусадочную трубку на оплетку перед пайкой. (А также убедитесь, что ваши кнопки находятся в правильном положении, прежде чем соединять их друг с другом). При подключении последней кнопки следует снова, как и в случае с двумя другими кнопками, подключить тесьму снизу и также подключить перемычку.
-
Используя звуковую функцию мультиметра, вы можете проверить, все ли подключено правильно. Наконец, вы должны проверить, все ли термоусадочные трубки находятся в нужном месте. Затем вы можете использовать зажигалку или пистолет с горячим воздухом, чтобы уменьшить его. Теперь вы закончили собирать пуговицы!
Шаг 3: Установка программного обеспечения
Тебе понадобится:
- Raspberry Pi с установленным Raspbian (вы также можете использовать другие дистрибутивы, но вам нужно настроить некоторые команды) - мы использовали пакет, состоящий из Raspberry Pi 3 Model B + с предустановленной SD-картой, блоком питания и случай, другие модели также должны работать
- принтер чеков - имейте в виду, что вам нужно подключить принтер к Raspberry Pi, поэтому подключение через USB может быть самым простым
- твои кнопки
-
Подключите Raspberry Pi к экрану, мыши и клавиатуре. В конце концов, вам также потребуется подключить его к принтеру и кнопкам. Кнопки необходимо подключить к определенным контактам GPIO. Если вы хотите использовать другие пины, чем мы, вы можете изменить это в коде. На данный момент этот список сообщит вам, какая кнопка должна быть связана с каким контактом. Я буду использовать нумерацию BCM, которая также используется в коде. На https://www.raspberrypi.org/documentation/usage/g … есть диаграмма, показывающая, какой пин имеет какой номер.
• кнопка выключения - 17 • кнопка перезапуска - 27 • первая кнопка, используемая для опций в истории / приключении - 5 • вторая кнопка - 6 • третья кнопка - 13 • четвертая кнопка - 19 • две перемычки, подключенные к контактам, которые соединяют все кнопки должны быть на земле - на графике отмечены черными точками
Запустите Raspberry Pi, подключив блок питания. Подключите Raspberry Pi к Интернету с помощью кабеля LAN или беспроводной сети.
- Первое, что нужно сделать при установке необходимого программного обеспечения на raspberry pi, - это обновить уже установленное программное обеспечение. Сделаем это с помощью терминала. Если вы впервые используете терминал, документация Raspberry Pi (https://www.raspberrypi.org/documentation/usage/terminal/) поможет вам передвигаться и знакомиться с окружающей средой. Откройте терминал, введите sudo apt update и нажмите Enter. Это обновит список доступных пакетов и версий. После этого введите sudo apt upgrade. Это фактически установит более новые версии уже установленных пакетов.
- Следующим шагом будет установка драйвера принтера. Управление принтером в Linux можно выполнить с помощью CUPS. Возможно, вам сначала потребуется установить его на Raspberry Pi. В терминале введите sudo apt install cups. Следующим шагом будет получение драйверов принтера. Возможно, вам повезет и он включен в официальные репозитории. В терминале используйте apt search [название принтера или название производителя], чтобы найти его. Большинство принтеров, вероятно, не будут включены в репозитории, поэтому вам нужно получить их где-нибудь еще. Возможно, к принтеру прилагается компакт-диск. На веб-сайте производителя должны быть доступны для загрузки самые последние версии драйверов. У некоторых производителей есть разные веб-сайты для разных регионов мира, и, к сожалению, не все из них содержат одинаковую информацию. Если у вас есть принтер Star, кажется, starasia.com - это веб-сайт с новейшими загружаемыми драйверами. Убедитесь, что вы загружаете принтеры для Linux. Мы использовали драйверы CUPS, а не драйверы JavaPOS.
- Далее необходимо установить драйверы. Следуйте инструкциям производителя. Может быть доступно руководство по программному обеспечению для Linux, которое может пригодиться. Следуйте инструкциям для Debian или Ubuntu - существует много разных дистрибутивов Linux, и не все из них одинаковы, поэтому сначала проверьте, есть ли у вас под рукой нужные инструкции. В нашем руководстве инструкции начинались без указания, что они предназначены для систем на основе Red Hat, и только на следующей странице мы узнали, что инструкции для систем на основе Debian отличаются. В руководстве по программному обеспечению также должно быть указано, какие пакеты необходимо установить, например, нам нужно было установить «libcups2-dev». Возможно, вам потребуется выполнить sudo несколько команд. Чтобы уберечь вас от повторения нашей ошибки: если вам нужно скомпилировать драйверы из исходного кода с помощью make - make install необходимо выполнить sudoed. Просто по сообщению об ошибке мы не могли понять, что пошло не так.
- Если это не указано в руководстве по установке, вам необходимо настроить принтер в CUPS. Для этого перейдите по адресу localhost: 631 в браузере. Щелкните «Администрирование», а затем «Добавить принтер», чтобы настроить принтер. Также есть раздел помощи. Вам необходимо пройти аутентификацию как пользователь, подробности см. На https://help.ubuntu.com/lts/serverguide/cups.html… (раздел «Веб-интерфейс»). Выберите подходящий формат PPD и размер бумаги. Вы также должны сделать его принтером по умолчанию, поскольку программное обеспечение будет печатать на принтере по умолчанию. Для этого перейдите на страницу принтера и в меню «Администрирование» выберите «Установить как сервер по умолчанию». В меню «Обслуживание» вы можете выбрать «Распечатать пробную страницу» для первой проверки, все ли настроено правильно.
- Другой пакет, который вам понадобится, - это python3-yaml, поскольку истории сохраняются в файлах yaml, а пакет необходим, чтобы код Python мог их интерпретировать. Используйте sudo apt install python3-yaml для его установки.
- Теперь мы наконец начнем с установки программного обеспечения, которое фактически распечатывает истории и прослушивает ввод на выводах GPIO, подключенных к кнопкам. Откройте терминал и перейдите в домашний каталог, если вы еще не в нем (это можно сделать, набрав cd (для изменения каталога)). Поскольку наш код находится на GitHub, вы можете скопировать его на свой Raspberry Pi с помощью git clone https://github.com/fio-na/GrimmsKiste-1.git. Это создаст локальный репозиторий нашего кода на Raspberry Pi. Если вы получили сообщение об ошибке, потому что git не установлен, вы можете установить его, набрав sudo apt install git.
- Код содержит некоторые элементы, которые вам может потребоваться изменить. Прежде всего, истории сохраняются в файлах yaml, которые также находятся в репозитории git. Если путь к вашей папке не «/ home / pi / GrimmsKiste-1», вам нужно будет изменить эти пути, чтобы использовать истории. Во-вторых, мы печатаем с помощью подпроцесса и передаем команды терминала. Это включает в себя некоторые параметры, используемые нашим драйвером принтера, которые позволяют нам определять, следует ли обрезать бумагу после печати или нет. Они, вероятно, не сработают для вас (если вы также не используете принтер Star TSP). Вы также заметите, что будет напечатано несколько строк, включая только одну точку. Нам это было нужно, потому что в противном случае части истории нельзя было бы прочитать, потому что бумага все еще застревала в принтере. И, наконец, в функции format_text мы используем обтекание текстом, чтобы получить фрагменты текста длиной не более 28 символов, потому что именно столько умещается в одной строке на нашей 80-миллиметровой бумаге. Пожалуйста, отрегулируйте эти параметры в соответствии с вашими настройками.
- Некоторые файлы нужно сделать исполняемыми. Для этого перейдите в папку с кодом, который вы только что скачали. Если вы следовали, это должен быть cd ~ / GrimmsKiste-1. В Linux права доступа к файлам обрабатываются chmod. chmod a + x Engin.py и chmod a + x shutdown-pi-and-restart-program.py делают эти два файла исполняемыми для всех пользователей.
- Теперь мы можем проверить, может ли двигатель работать и функционирует должным образом, а также правильно ли настроены принтер и кнопки. Для этого введите./Engin.py.
- Если все работает нормально, следующим шагом будет настройка двух служб systemd. Для получения дополнительной информации может помочь вики-страница Archlinux (https://wiki.archlinux.org/index.php/Systemd) или справочная страница systemd.service (https://www.freedesktop.org/software/systemd/ man / systemd.service.html). Первая служба systemd будет каждые две секунды проверять, запущен ли Engin.py в данный момент, а если нет, то запустит его. Поэтому он также запускает программу при загрузке Raspberry Pi. Откройте файл в папке systemd: sudo nano /etc/systemd/system/grimmskiste-restart.service Введите следующее:
-
[Ед. изм]
Описание = перезапускает Grimms Kiste каждые две секунды в случае сбоя [Service] ExecStart = / home / pi / GrimmsKiste-1 / Engin.py Restart = always RestartSec = 2 [Install] WantedBy = multi-user.target
- Вам нужно отредактировать путь в ExecStart, если ваш Engin.py находится в другом месте, например если ваше имя пользователя другое. Чтобы сохранить файл в nano, вам нужно нажать ctrl + x, затем ввести y (если да) и нажать Enter.
- Другая служба запустит сценарий shutdown-pi-and-restart-program.py, который прослушивает кнопку выключения и перезапуска. Кнопка перезапуска считывает идентификатор процесса Engin.py из файла и уничтожает его, а из-за другой службы systemd Engin.py перезапускается через две секунды. Кнопка выключения просто отправляет команду Raspberry Pi, которая должна выключиться. Откройте другой файл с помощью sudo nano /etc/systemd/system/grimmskiste.service и введите следующее:
-
[Ед. изм]
Описание = Управляет двумя аппаратными кнопками, чтобы выключить Raspberry Pi или убить запущенную программу Grimms Kiste [Service] ExecStart = / home / pi / GrimmsKiste-1 / shutdown-pi-and-restart-program.py [Install] WantedBy = multi-user.target
- Опять же, вам нужно будет отредактировать путь в ExecStart, если он отличается на вашем Pi. И снова вы можете сохранить файл в nano, используя ctrl + x, затем набрав y и нажав Enter.
- Теперь у вас есть файлы модулей для служб systemd, но они еще не используются. Каждый раз, когда вы меняете файлы юнитов, набирайте sudo systemctl daemon-reload, так что сделайте это сейчас. Затем запустите обе службы с помощью sudo systemctl start grimmskiste.service и sudo systemctl start grimmskiste-restart.service На данный момент эти службы запустят. Используйте sudo systemctl status grimmskiste.service и sudo systemctl status grimmskiste-restart.service, чтобы проверить, запущены ли они. В выводе должна быть строка с надписью «active (running)», вероятно, в третьей строке - если нет, что-то пошло не так. Journalctl может помочь с дополнительной информацией для отладки.
- Использование systemctl start пока только запускает службы, но если вы хотите, чтобы они запускались каждый раз при загрузке Raspberry Pi, вам необходимо включить их. Это делается с помощью sudo systemctl enable grimmskiste.service и sudo systemctl enable grimmskiste-restart.service.
- Теперь вы должны проверить все кнопки, если все работает правильно. Также проверьте кнопку выключения и проверьте, все ли по-прежнему работает должным образом после перезагрузки. В таком случае вам не нужен экран, клавиатура и т. Д., И ваша программа должна запускаться каждый раз, когда вы подключаете Raspberry Pi к розетке.
Шаг 4: Введение в YAML:
Важно: поля, выделенные фиолетовым цветом, переименовывать нельзя. Имена отдельных списков являются исключением. Каждая история получает свой собственный файл YAML со всеми вариантами выбора. Структура такая же, как у файла start.yaml
Двоеточие: если вы хотите использовать двоеточия в тексте, вы должны сделать> после сообщения. Затем текст опускается на одну строку с отступом двумя пустыми строками.
Вкладки: не используйте вкладки и убедитесь, что в конце сообщения нет вкладок, это приведет к тому, что синтаксический анализатор не сможет прочитать файл.
_default_question: Введенный здесь вопрос будет принят, если в истории не было введено ни одно поле с «вопросом».
_prompt: это поле распечатывается, когда читатель должен сделать запись.
Оба поля могут существовать в файле start.yaml только один раз и не могут использоваться в других файлах.
start: start - это имя первого списка стартовой страницы. Имена не должны дублироваться во всех остальных списках. В шаблоне это поле называется «Название истории» и должно быть изменено для каждой истории.
Сообщение: Это поле содержит историю и должно стоять в одну строку. вопрос: используется, когда должен использоваться вопрос, отличный от _default_question. Если поле не используется, его необходимо удалить. (по желанию)
Действия: Список «действий» содержит варианты выбора. Здесь можно ввести максимум 4 варианта. Этикетка: этикетка печатается как вариант выбора.
Далее: это имя следующей вызываемой опции выбора.
конец: список только с сообщением отмечает конец истории. Поля действия, метка и далее должны быть удалены
Добавьте больше историй:
Как объяснялось выше, каждая новая история получает свой собственный файл.yaml. Для этого откройте папку «Grimms Box» и скопируйте файл template.yaml. Вы также можете найти его в нашем репозитории GitHub (https://github.com/fio-na/GrimmsKiste-1). Переименуйте файл в название истории и откройте ее. В новом файле вы добавляете производителя и дату и меняете поле «Название истории» в заголовке (см. рис. 4: здесь название истории - HP1). Затем заполните сообщение, вопрос, ярлык и далее. Как только вы это сделаете, скопируйте структуру данных (как показано на рис. 4) и вставьте ее под последним рядом. Заголовок теперь будет изменен на одну клавишу, используемую в «следующем» в первой части (как показано на рис. 4, тогда HP1 будет HP2 или gang2, в зависимости от того, какая опция редактируется первой). Затем снова заполняются сообщение, вопрос, метка и далее. Сделайте это для всех вариантов выбора / действий, пока вся история не будет в файле. На всех концах последний список должен содержать только сообщение. Все остальные поля в окончательном списке необходимо удалить. После этого файл необходимо сохранить.
Кратко о процедуре:
- Откройте папку Grimms Box
- Скопируйте Vorlage.yaml и переименуйте его в заголовок истории.
- Откройте этот новый файл.
- Скопируйте структуру данных (рис. 4)
- Измените имя с истории на имя выбора
- Введите текст истории в поле сообщения,
- Вставьте подходящую этикетку.
- Введите имя следующего варианта выбора в следующем.
- Повторяйте шаги с 4 по 9, пока рассказ не будет закончен.
- На всех концах: последний список содержит только сообщение.
- Сохраните файл.
Добавьте свою новую историю на стартовую страницу:
start.yaml - это стартовая страница ящика Гримма. Однако сначала у этого файла должен быть доступ к новым историям. Следовательно, сначала необходимо добавить новые истории в этот файл.
Для каждого действия вы можете создать только 4 метки, затем, потому что ящик Гримма имеет только 4 кнопки на выбор. Следовательно, если, как в примере файла start.yaml, 4 метки и следующие поля уже назначены, 4-я метка должна называться «Больше историй» или «Больше», а вторая структура данных (здесь: S2; с сообщением, вопросом, действия, метка, следующий) должны быть добавлены и переименованы. Затем вы добавляете новую историю с меткой, а затем даете ей соответствующее имя. Наконец, его нужно сохранить.
Кратко о процедуре:
В start.yaml:
- Откройте start.yaml
- Заполните поля соответствующим образом.
- Поля действия, метка и далее должны быть скопированы и вставлены.
- Сохранить.
Сохраните главный файл «Engin.py»:
Наконец, история должна быть добавлена в основной файл «Engin.py». Для этого в список файлов должен быть введен только путь к новому файлу YAML. Путь заключен в кавычки и отделен от других запятая.
Кратко о процедуре:
- Откройте Engine.py.
- Скопируйте путь к файлу YAML
- Копировать путь в список файлов
- Разделите пути запятыми.
Шаг 5: инструкция по применению
Чтобы запустить Grimm’s Box, подключите принтер к Raspberry Pi (есть небольшое отверстие для кабелей), подключите принтер и Raspberry Pi к розетке и включите принтер. Raspberry Pi запускается сам по себе при включении. Подождите, пока он загрузится. Программное обеспечение должно запускаться само по себе.
Есть кнопка для выключения Raspberry Pi и кнопка для перезапуска программного обеспечения для рассказа на случай, если кто-то просто уйдет, не закончив рассказ. Оба нужно нажимать не менее 3 секунд. Это сделано для того, чтобы они не были случайно нажаты, но вы можете изменить время в файле shutdown-pi-and-restart-program.py. Используйте кнопку выключения, просто отключение от сети не подходит для Raspberry Pi. При текущей настройке вы не можете видеть, включен или выключен Raspberry Pi, поэтому вам нужно проверить, реагирует ли он по-прежнему на другие кнопки, если вы хотите быть уверенным.
Перезапуск программы занимает некоторое время, так как вам нужно нажимать кнопку не менее 3 секунд, а процесс в фоновом режиме проверяет только каждые 2 секунды, запущена ли программа, поэтому весь процесс, пока он снова не будет распечатан, может занять 6 секунд. Просто дайте ему немного времени. Кнопка перезапуска также может быть использована в случае возникновения каких-либо проблем. Может быть, перезагрузка может это исправить. В противном случае подключение Raspberry Pi к экрану и т. Д. И запуск программы с терминала могут привести к появлению сообщений об ошибках, которые вы можете найти в Интернете. Кнопки, используемые для историй, нужно нажимать не менее 0,1 секунды, но очень редко кто-то нажимает их меньше этого времени.
Если рассказ закончен, бумага обрезается, и программа автоматически запускается снова. Но чтобы дать читателю время прочитать конец, он ждет 3,5 секунды плюс 2 секунды, необходимые для того, чтобы заметить, что программа не запущена и не перезапускается. 3,5 секунды можно отредактировать в файле Engin.py.
Кнопки, нажатые менее чем через 1,7 секунды после последнего нажатия, не принимаются. Мы реализовали это, потому что Raspberry Pi намного быстрее, чем принтер, и нажатие двух кнопок приведет к выбору действия до того, как читатель сможет увидеть варианты.
Рекомендуемые:
Создайте свое собственное грубое FM-радио: 4 шага
Создайте свое собственное грубое FM-радио: в этом проекте я продемонстрирую, как работает RF FM-передатчик и как этот принцип соотносится с более старым AM. Я также покажу вам, как собрать простой и примитивный FM-приемник, который иногда позволяет вам даже слушать вашу любимую радиостанцию
Создайте свое собственное FM-радио: 6 шагов (с изображениями)
Создайте свое собственное FM-радио: в этом проекте я покажу вам, как превратить TEA5767 и Arduino Pro Mini в функциональное и прилично выглядящее FM-радио с помощью пары дополнительных компонентов. Давайте начнем
Создайте свое собственное руководство: 7 шагов
Создайте свой собственный инструктируемый профиль: Привет, ребята! В этом руководстве я проведу вас через несколько простых шагов, чтобы создать управляемый профиль и поделиться своими творениями и идеями
Сделайте свое собственное умное зеркало менее чем за 80 долларов - Использование Raspberry Pi: 6 шагов (с изображениями)
Сделайте свое собственное умное зеркало менее чем за 80 долларов - Использование Raspberry Pi: в этом проекте мы создадим умное зеркало, которое будет показывать вам полезную информацию, пока вы будете готовиться к утру. Все это должно стоить менее 80 долларов, что делает его вполне доступным для большинства людей. Это руководство только научит вас
Как сделать свое собственное психоделическое USB-существо: 16 шагов (с изображениями)
Как сделать свое собственное психоделическое USB-существо: Итак, вы проснулись сегодня скучно. Действительно, очень скучно. Затем прошел день, и мало что изменилось. Не волнуйтесь, с нами такое происходит постоянно. На самом деле большинство дней. Потом вы увидели это странно выглядящее существо в Интернете, или, может быть, вы вспомнили