Оглавление:

Школьный звонок для студентов-заочников: 6 шагов
Школьный звонок для студентов-заочников: 6 шагов

Видео: Школьный звонок для студентов-заочников: 6 шагов

Видео: Школьный звонок для студентов-заочников: 6 шагов
Видео: Студент первый раз пришел на пару за весь год! (с субтитрами) 2024, Июль
Anonim
Школьный звонок для студентов-заочников
Школьный звонок для студентов-заочников

Из-за пандемии COVID-19 многие детские школы перешли на дистанционное обучение. Этот звонок для домашней школы - интересный способ придерживаться расписания, в котором используется Raspberry Pi и USB-динамик. Вы можете сделать это со своим ребенком, и он может узнать о программировании и может "позвонить в колокольчик". Я построил его для своей дочери, которая идет в 7-й класс (в настоящее время осуществляется дистанционная доставка), и он хорошо работает, чтобы успевать.

Запасы

Для этого проекта вам понадобятся:

  • Компьютер Raspberry Pi - лучше всего работает, если у вас есть Wi-Fi, я использовал RPi 3B из комплекта Kano.
  • Динамик - я использовал USB-динамик.

Код можно легко запустить на Linux-компьютере вашего ученика или даже на микроконтроллере, на котором запущен micropython, если у микроконтроллера есть какой-то механизм для получения текущей даты / времени. Также можно использовать любой усилитель или даже более холодный аналоговый звонок.

Шаг 1. Настройте Raspberry Pi

Настройте свой Raspberry Pi
Настройте свой Raspberry Pi

Существует большое количество ресурсов для настройки компьютера Raspberry Pi, поэтому я отсылаю вас к тому, который найдет Google. Важно, чтобы на вашем компьютере была возможность получать правильную дату и время. Большинство современных компьютеров Raspberry Pi с поддержкой Wi-Fi используют протокол NTP для установки времени из Интернета, так что я получил правильное время. Я настроил свой RPi как «безголовый», то есть у него нет клавиатуры или монитора, но он доступен через защищенную оболочку (SSH) через Интернет. Если вы хорошо разбираетесь в RPi, вы можете выполнить эту настройку без клавиатуры / видео / мыши, но проще просто настроить pi с этими аксессуарами.

Обратите внимание, что мне не нужно было использовать графический интерфейс, поэтому я просто загрузил «Raspberry Pi OS (32-bit) Lite», которая меньше по размеру, быстрее загружается и загружается быстрее.

Настройте параметры сети и интерфейса Raspberry Pi

$ sudo raspi-config

В конфигурации сделайте следующее:

  • Измените пароль - сделайте это сначала, надеюсь, прежде чем выходить в Интернет!
  • В "Параметры сети"

    • Измените имя хоста. Я использовал имя хоста: "школьный звонок".
    • Подключитесь к беспроводной локальной сети (если вы этого не сделали в настройке)
  • В разделе «Параметры взаимодействия» включите доступ по SSH.
  • Всегда полезно запустить опцию «Обновить»

После того, как вы это сделаете и перезагрузитесь, вы сможете подключиться к Raspberry Pi с другого компьютера в той же локальной сети с помощью клиента SSH. Подключитесь к нему, используя следующие учетные данные:

имя хоста: schoolbell.local

пользователь: pi пароль: whateveryousetitas

Из окна Linux это так же просто, как ввести эту командную строку в командной строке $:

$ ssh [email protected]

… Введите пароль при запросе

Вы войдете в систему и сможете проверить правильность времени на Raspberry Pi. В командной строке введите команду date и проверьте ответ:

пи @ школьный звонок: ~ $ дата

Чт 3 сен 20:44:34 AKDT 2020

Надеюсь, это настоящее время. Если это не так, погуглите о настройке NTP на Raspberry Pi.

Шаг 2. Заставьте свою звуковую систему работать

Заставьте свою звуковую систему работать
Заставьте свою звуковую систему работать

Мы собираемся проигрывать файлы MP3 для колокольчиков, поэтому нам нужно загрузить программное обеспечение для декодирования этих аудиофайлов. Я получил пакет mpg321, набрав эту команду:

пи @ школьный звонок: ~ $ sudo apt-get install mpg321

Следуйте инструкциям по установке этого программного обеспечения.

Я использовал старый USB-динамик, у которого был странный драйвер и который не был полностью автоматически настроен в качестве звуковой карты по умолчанию, поэтому я обнаружил, что могу «взломать» динамик для работы, используя его аппаратный адрес. После подключения динамика я использовал команду aplay -l для вывода списка аудиоустройств:

пи @ школьный звонок: ~ $ aplay -l

**** Список аппаратных устройств ВОСПРОИЗВЕДЕНИЯ **** карта 0: Наушники [bcm2835 Headphones], устройство 0: bcm2835 Headphones [bcm2835 Headphones] Субустройства: Субустройство # 0: субустройство # 0 Субустройство # 1: субустройство # 1 Субустройство # 2: подустройство # 2 Подустройство # 3: подустройство # 3 Подустройство # 4: подустройство # 4 Подустройство # 5: подустройство # 5 Подустройство # 6: подустройство # 6 Подустройство # 7: подустройство # 7 карта 1: КОДЕК [USB Audio CODEC], устройство 0: USB-аудио [USB-аудио] Подустройства: подустройство № 0: подустройство № 0

Я хочу устройство нижнее, карта 1, устройство 0.

Я протестировал динамик с помощью «тест-динамика», используя устройство «hw: 1, 0», то есть аппаратная карта 1, устройство 0

пи @ школьный звонок: ~ $ Speaker-test -D hw: 1, 0

Эта программа подавляет шум из динамиков. Наслаждайтесь шумом, а затем нажмите Control-C, когда вас это раздражает. Если вы не слышите шума, попробуйте Google.

Теперь у вас есть звук!

Шаг 3. Проверьте воспроизведение звуков колокольчика и / или создайте новые звуки

Тестовое воспроизведение звуков колокольчиков и / или создание новых звуков
Тестовое воспроизведение звуков колокольчиков и / или создание новых звуков

Для своего звонка я скачал звук "бинг-бонг" с "freesound.org". Спасибо Benboncan за доступность этого звука:

freesound.org/people/Benboncan/sounds/93646/

Вы можете воспроизводить звук напрямую. Я мог напрямую загрузить mp3-версию этого файла, набрав эту команду на компьютере Raspberry Pi (при условии, что он подключен к Wi-Fi):

пи @ школьный звонок: ~ $ wget

Затем я переименовал этот файл:

пи @ школьный звонок: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3

Затем я проверил, могу ли я позвонить в звонок с помощью этой команды (с выводом результатов):

пи @ школьный звонок: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3

Высокопроизводительный аудиоплеер MPEG 1.0 / 2.0 / 2.5 для уровней 1, 2 и 3. Версия 0.3.2-1 (25 марта 2012 г.). Авторские права и авторские права принадлежат Джо Дрю, в настоящее время поддерживаются Нанакосом Хризостомосом и другими. Использует код от разных людей. См. README для получения дополнительной информации! ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ АБСОЛЮТНО БЕЗ ГАРАНТИЙ! ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК! Воспроизведение потока MPEG из bing-bong-chime-hq.mp3… MPEG 1.0 Layer III, 128 кбит / с, 44100 Гц моно [0:02] Декодирование bing-bong-chime-hq.mp3 завершено.

Поздравляю! У вас есть звук.

Используя код редактирования звука «Audacity» на моем ноутбуке, я разделил файл на «bing» и «bong» для большего удовольствия. Вы можете использовать любой mp3 или, возможно, другой формат (я не тестировал другие) звуковые файлы.

Шаг 4: Установите код и настройте расписание

Установите код и настройте расписание
Установите код и настройте расписание

Код представляет собой скрипт Python, который получает текущую дату / время, и если дата является будним днем, а не праздником, он проверяет, совпадает ли время с временем звонка, и звонит, если должен.

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

Загрузите код с Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Я считаю, что это легко сделать, сохранив файл на локальном компьютере, а затем используя безопасную копию (scp), чтобы поместить его на Raspberry pi.

На локальном компьютере скопируйте код из браузера, затем вставьте его в текстовый файл и сохраните с именем «schoolbell.py». Затем скопируйте файл:

локальная машина: ~ $ scp schoolbell.py [email protected]: ~ /

Вам будет предложено ввести пароль для пользователя pi на schoolbell.local - введите пароль, и файл будет безопасно скопирован. Эту команду следует запустить в том же каталоге, где был сохранен скрипт python, и скопировать его в домашний каталог пользователя pi. Вы можете ssh перейти на schoolbell.local, и там должен быть код:

локальная машина: ~ $ ssh [email protected]

Затем на schoolbell.local перечислите файлы (вы можете увидеть больше файлов):

пи @ школьный звонок: ~ $ ls

bing-bong-chime-hq.mp3 schoolbell.py

Теперь отредактируйте код, чтобы он соответствовал расписанию звонков, используя такой редактор, как pico:

пи @ школьный звонок: ~ $ pico schoolbell.py

В коде есть три «словаря», которые определяют звуки колокольчиков, время их воспроизведения и праздники, которых следует избегать. Звонки по выходным автоматически пропускаются.

Например, словарь звонков:

belltones = {

'warn': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}

Это определяет три типа звонков: предупреждающий звонок, начало урока и конец. Поскольку у нас есть только один сигнал звонка, все они указывают на один и тот же файл, но если вы сделаете разные звуковые сигналы, вы можете их изменить. Вы даже можете добавить другие типы колокольчиков. Я также играл с использованием синтезатора речи, чтобы говорить в колокола, но это не понравилось другим в доме.

Словарь расписания звонков аналогичен, но теперь «ключ» - это время звонка. необходимо использовать формат ЧЧ: ММ с ведущими нулями и 24-часовым временем (военное время).

bellschedule = {

'09: 00 ':' start ', #' Автобусный звонок будет готов ''09: 28': 'warn',….. '13: 58 ':' warn ', # для периода 4 '14: 00 ':' начало ', '15: 00': 'конец'}

Значение в этой паре «ключ: значение» является типом используемого сигнала звонка и должно соответствовать одному из сигналов, определенных выше.

Наконец, в словаре праздников перечислены праздничные даты. Формат - ГГГГ-мм-дд с начальными нулями, как показано.

праздники = {

'2020-09-07', …. '2021-03-11', '2021-03-12' }

Когда вы закончите редактирование, сохраните файл, выйдя из редактора, набрав ctrl-X, если вы используете pico.

Сделайте код Python исполняемым:

пи @ школьный звонок: ~ $ chmod a + x schoolbell.py

Это позволяет всем пользователям выполнять код: «a» для всех, «+» для добавления разрешения и «x» для выполнения.

Теперь проверьте, запустите код и посмотрите на результат. Обратите внимание, что вы можете запустить файл, введя имя файла, но необходимо указать, что он находится в текущем каталоге, введя «./» перед именем файла:

пи @ школьный звонок: ~ $./schoolbell.py

Школьный день, контрольное время 21:35.

Код сообщит вам, школьный ли это день (например, не праздничный или выходной), и проверит, совпадает ли время с временем звонка. В данном случае это было не время звонка, поэтому он просто вышел чисто. Если бы это было время звонка, он бы прозвенел.

Чтобы проверить, может ли ваш код воспроизводить колокольчики, используйте параметр командной строки файла для воспроизведения. Мы будем использовать наш файл bing-bong:

пи @ школьный звонок: ~ / школьный звонок $./schoolbell.py bing-bong-chime-hq.mp3

Это школьный день, время проверки 21:38 Высокопроизводительный аудиоплеер MPEG 1.0 / 2.0 / 2.5 для уровней 1, 2 и 3. Версия 0.3.2-1 (25 марта 2012 г.). Авторские права и авторские права Джо Дрю, в настоящее время поддерживаются Нанакосом Хризостомосом и другими. …. больше вывода….

Вы должны были слышать звонок.

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

пи @ школьный звонок: ~ $./schoolbell.py 09:00

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

Шаг 5: автоматизируйте работу с Crond

Автоматизируйте бег с Crond
Автоматизируйте бег с Crond

Демон cron - это планировщик, который запускает повторяющиеся задачи в системе Linux. Он проверяет, соответствует ли дата / время шаблону в таблице cron (crontab), а затем запускает код, если это так. Вы можете отредактировать его с помощью команды "crontab -e":

пи @ школьный звонок: ~ $ crontab -e

Это откроет редактор файлов, и внизу этого файла вы добавите следующую строку:

* * * * * python3 /home/pi/schoolbell.py

Эта команда указывает cron запустить python3, выполнив ваш скрипт в обычном домашнем каталоге (/ home / pi). Пятерка * говорит, что это должно выполняться каждую минуту (первая *), каждый час (следующий *…), каждый день месяца, каждый месяц и каждый день недели.

Теперь каждую минуту будет запускаться скрипт schoolbell.py. В течение большей части минут код будет работать и обнаружит, что он должен просто выйти без звонка, но если окажется, что он ударил время звонка, он будет звонить.

Обратите внимание: поскольку cron запускается только каждую минуту, вы не можете сделать колокольчики более детализированными, чем поминутно. Я думаю, что теоретически возможно, что если ваша система зависнет, cron может не работать в течение нескольких секунд после начала минуты, что приведет к запаздыванию звонка. Если по какой-то причине cron не запускается в течение полной минуты, звонок будет пропущен.

Совет: для продленных праздников (например, лета) вы можете добавить хэштег (#) к первому символу этой строки, который превращает его в комментарий и игнорирует его запуск. Когда школа вернется к работе, просто удалите #, и она снова запустится.

Шаг 6. Настройте и наслаждайтесь

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

Вы можете настроить этот проект, изменив тоны звонка.

  • Вы могли бы заставить его звонить в Биг Бен, бить куранты раз в четверть часа и отбивать часы.
  • Вы можете попробовать фристайл вашего любимого рэпера.
  • Вы можете делать подсознательные сообщения, чтобы сосредоточиться на учебе.

Будьте в безопасности в это время COVID.

Изображение
Изображение
Изображение
Изображение

Финалист в семейном конкурсе "Can't Touch This"

Рекомендуемые: