Оглавление:
- Шаг 1: Дизайн
- Шаг 2: как это работает
- Шаг 3: Создание демонстрационного прототипа
- Шаг 4: Программирование ATTiny85
Видео: Создайте лучшую кнопку питания Raspberry Pi: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Сделать кнопку выключения или выключения Raspberry очень просто. В сети много таких проектов, а несколько здесь, на Instructables, но ни один из них (что я вижу) не сообщает вам, когда ваш Pi действительно завершил отключение, и, следовательно, можно безопасно отключить питание. Фактически они даже не признают, что нажатие кнопки было замечено.
Существуют также проекты по перезапуску выключенного Pi, но они не дают вам никакой визуальной обратной связи.
Но кому нужна такая кнопка? Если вы немного ботаник, как я, или просто начинающий ботаник, вы всегда можете войти в свой Pi локально или по сети и набрать sudo shutdown -h now. Но если вы создаете проект для нетехнических пользователей, этого просто не пойдет. Правда, вы почти всегда можете уйти, просто вытащив шнур питания, но обратите внимание, я сказал, что почти всегда! Рано или поздно удача заканчивается. Только на прошлой неделе у меня была SD-карта, хотя я никогда не узнаю, действительно ли это было из-за резкого отключения питания.
В моем случае мне нужно было добавить кнопку питания к Pi, который мы используем в качестве MIDI-секвенсора для записи и воспроизведения гимнов и песен в церкви, когда у нас нет живого пианиста. Я всегда могу набрать команду выключения, но мне нужно отменить ее, когда меня нет рядом.
Я не собираюсь давать вам готовый продукт с красиво напечатанным на 3D-принтере корпусом, как многие другие Instructables. Каждый будет использовать его по-разному или захотеть включить его в свой собственный проект. Скорее, я настрою вас на технологию, которую вы можете добавить в свой проект, будь то медиацентр, устройство IoT или что-нибудь еще.
(В видео я демонстрирую это с Pi Zero v1.2 и монитором, который я сделал из переделанного экрана ноутбука и контроллера с Дальнего Востока.)
Шаг 1: Дизайн
Вот что сделает за вас моя кнопка питания:
- Когда Pi работает, светодиод горит постоянно. Если он выключен вручную, светодиод гаснет только тогда, когда можно безопасно отключить питание.
- Во время работы, если вы нажмете кнопку хотя бы на секунду, произойдет отключение, и светодиод будет мигать на четверть секунды каждую секунду, пока не станет безопасным отключение питания.
- Из состояния выключения (если питание не отключено) нажатие кнопки запускает загрузку и мигает светодиод на четверть секунды каждую секунду, пока он не загрузится. (Для запуска всех служб, таких как ssh и vnc, может потребоваться немного больше времени.)
Компоненты очень дешевые. Все что тебе нужно это:
- ATTiny85 (чип, совместимый с Arduino)
- 3 резистора: 2 x 330 Ом и 1 x 10 кОм
- 1 светодиод - я предлагаю зеленый или синий, но это ваш выбор
- макетная плата и перемычки, или картон, или как вы хотите его построить.
Шаг 2: как это работает
Как и все кнопки питания Pi, эта переводит вывод GPIO в низкое состояние, чтобы сигнализировать о запросе выключения вспомогательной программе, запущенной на Pi. Я использовал GPIO4 (контакт 7), но вы можете использовать любой другой контакт.
Единственный способ узнать, что Pi завершил отключение, - это наблюдать за контактом 8 TxD, который затем становится низким. Это зависит от того, включена ли последовательная консоль, которая включена по умолчанию. Фактически, TxD будет регулярно повышаться и понижаться, пока он используется в качестве последовательной консоли, но он никогда не будет понижаться более чем на 30 мс за раз, даже при самой низкой общей скорости передачи данных. Его все еще можно использовать для последовательной консоли, поскольку мы просто пассивно смотрим на него.
Чтобы перезагрузиться, нам нужно ненадолго подтянуть SCL1 (вывод 5) к низкому уровню. Этот вывод используется любыми устройствами I2C (включая мой midi-интерфейс), но после запуска загрузки мы оставляем его в покое.
Большая часть сложности заключается в скетче Arduino, который мы загружаем в ATTiny85. Это реализует «конечный автомат» - очень полезный и мощный способ кодирования любой проблемы, которая может быть представлена рядом «состояний». Точно так же работает стиральная машина. Состояния представляют собой этапы цикла стирки, и каждый из них определяет, что машина должна делать в этот момент (запускать двигатели или насосы, открывать или закрывать клапаны) и какие входы датчиков (температура, уровень воды, таймеры). определить, когда перейти к следующему состоянию и какое следующее состояние выбрать.
Набросок руки - это мой первый набросок диаграммы состояний, показывающий все переходы между состояниями. Это просто, чтобы показать вам, как вы можете изначально планировать свои состояния и переходы между состояниями - это может быть не совсем точно, как это было до того, как я начал отладку.
В нашем случае у нас есть 6 состояний, которые я назвал ВЫКЛ, ЗАПРОС ЗАГРУЗКИ, ЗАГРУЗКА, ЗАПУСК, ЗАПРОС ВЫКЛЮЧЕНИЯ и ВЫКЛЮЧЕНИЕ. (После ВЫКЛЮЧЕНИЯ он возвращается в положение ВЫКЛЮЧЕНО.) Они обозначаются комментариями в скетче, и для каждого из них в дальнейших комментариях говорится, что он должен делать и какие события переместят его в другое состояние.
Вспомогательная программа, работающая на Pi, немного сложнее, чем для большинства кнопок выключения. Он реагирует на длинный низкий импульс на выводе GPIO, инициируя выключение, но он также реагирует на короткий импульс сам по себе, ненадолго подтягивая вывод GPIO к низкому уровню. Таким образом ATTiny85 может определить, что он работает, и поэтому может перейти из состояния ЗАГРУЗКА в состояние РАБОТА.
Шаг 3: Создание демонстрационного прототипа
В демонстрационных целях вы можете прототипировать его на макетной плате без пайки, как показано, но я также дал вам схему, чтобы вы могли разработать свой собственный макет с использованием полосовой платы или специальной печатной платы, возможно, как часть более широкого проекта.
Шаг 4: Программирование ATTiny85
Эскиз Arduino и вспомогательная программа прилагаются к этому шагу. В папке с эскизами Arduino создайте папку PiPwr и скопируйте в нее файл PiPwr.ino. Запустив Arduino IDE, вы найдете ее в своем альбоме для рисования.
Есть несколько способов программирования ATTiny85. Если у вас установлен загрузчик, вы можете использовать плату разработки ATTiny85, которая стоит всего несколько фунтов. Он подключается к вашему ПК через порт USB. Я использовал Hidiot, который по сути такой же, но с областью прототипирования.
В Arduino IDE в разделе File - Preferences добавьте
digistump.com/package_digistump_index.json
к URL-адресам менеджера дополнительных досок.
В разделе «Инструменты - Доска» вы должны увидеть несколько опций Digispark. Выберите Digispark (по умолчанию - 16,5 МГц).
Если у вашего ATTiny85 нет загрузчика (или вы не знаете), вы можете получить программатор AVR ISP за несколько фунтов. Или вы можете использовать Arduino Uno или более дешевый Pro Mini или Nano в качестве программиста. Google по запросу "arduino as isp attiny85" (без кавычек) для получения инструкций.
Если вы хотите изменить эскиз, вы найдете его полностью прокомментированным и, надеюсь, легким для понимания. Для отладки намного проще использовать Arduino Pro Mini или Nano. Раскомментируйте serial.begin () в Setup и операторы печати в loop (), чтобы увидеть шаги, которые он выполняет с помощью монитора последовательного порта. В источнике есть альтернативные определения контактов, закомментированные, для Uno, Pro Mini или Nano.
На своем Raspberry Pi скопируйте файл shutdown_helper.py в папку / etc / local / bin и установите его как исполняемый с помощью команды
sudo chmod + x /usr/local/bin/shutdown_helper.py
Теперь отредактируйте файл /etc/rc.local в своем любимом редакторе. (Вам нужно будет сделать это как root.) Перед последней строкой (выход 0) вставьте строку
nohup /usr/local/bin/shutdown_helper.py &
Перезагрузитесь, и вспомогательная программа запустится автоматически.
Рекомендуемые:
Создайте свой собственный лабораторный источник питания переменного тока: 4 шага (с изображениями)
Создайте свой собственный лабораторный лабораторный источник питания переменного тока: в этом проекте я покажу вам, как я объединил LTC3780, который представляет собой мощный повышающий / понижающий преобразователь мощностью 130 Вт, с источником питания 12 В 5 А для создания регулируемого источника питания лабораторного стола (0,8 В-29,4В || 0,3А-6А). В сравнении производительность неплохая
Добавьте кнопку питания в вашу установку LibreELEC на Raspberry Pi: 6 шагов
Добавьте кнопку питания в вашу установку LibreELEC на Raspberry Pi: Далее мы узнаем, как добавить кнопку питания в LibreELEC, работающую на Raspberry Pi. Мы будем использовать PowerBlock не только для добавления кнопки питания, но и для светодиода состояния, который показывает состояние питания вашей установки LibreELEC. Для этого я
Создайте лучшую Vista бесплатно: 3 шага
Build a Better Vista for Free: Как создать лучшую Vista бесплатно. Многие люди сообщали о серьезных проблемах при обновлении существующих компьютеров с Windows XP (TM) до Vista (TM). Даже на совершенно новых машинах. См., Например: http://www.youtube.com/watch?v=FVbf9tOGwnoСлишком много людей планировали
Преобразование компьютерного блока питания в настольный лабораторный блок питания переменного тока: 3 шага
Превратите компьютерный блок питания в настольный лабораторный блок питания с регулируемой мощностью: сегодня цены на лабораторный блок питания значительно превышают 180 долларов. Но оказалось, что для этой работы идеально подходит устаревший компьютерный блок питания. С их стоимостью всего 25 долларов и имеющейся защитой от короткого замыкания, тепловой защитой, защитой от перегрузки и
Используйте старый блок питания Xbox для питания автомобильного усилителя: 3 шага
Используйте старый блок питания Xbox для питания автомобильного усилителя. Это моя первая инструкция, так что не будьте слишком строги со мной. Я уверен, что это во многих местах сбивает с толку. Ну, я вижу в Интернете учебные пособия о том, как использовать блок питания для ПК для питания автомобильного усилителя в доме. Хотел попробовать, но вроде свеж