Raspberry Pi + X830 + DS1307

Что зачем

Начал замечать, как мой домашний внешний диск (WD MyBookWorld) с семейным фотоархивом начал умирать (уже во второй раз). В первый раз вовремя не спохватился и затем пришлось потратить больше года, чтобы круглосуточно без перерывов! шло восстановление данных побитовым считыванием напрямую с полудохлого диска (с помощью dd). Отдельное спасибо mybookworld.wikidot.com за дельные статьи по проблеме! Да знаю, что данные нужно хранить в нескольких местах. Но фотографии и видео занимают много места. Очень сложно это организовать финансово и технически. Пока был бесплатный терабайт от mail.ru и их рабочий клиент для GNU/Linux, - всё было хорошо, но позже они убрали возможность монтирования тома и прямую работу с ним (через rsync, например). Халява кончилась, внешний диск остался.
Опыт использования различной "специализированной" техники от знаменитых брендов показал, что доверять им не стоит никогда. Обновления безопасности? Обновление системообразующих пакетов (типа, samba, nfs)? Нет, ничего такого корпорации предпочитают не делать. Продали устройства и жрите пользуйтесь как есть. Я такое проходил с КПК Hewlett Packard, роутерами ZyXel, внешним диском Western Digital. Решил организовывать по возможности всё сам на базе максимально открытых технологий.

Raspberry + HDD

На смену моему "брендовому" внешнему диску пришла маленькая дешёвая плата Raspberry Pi 3 Model B с корпусом и платой управления HDD - X830. На борту Linux - Raspbian. Чтобы всё заработало, ещё нужна карта памяти с операционной системой. Знаю, что есть возможность перенести ОС на сам диск и обойтись вообще без карты памяти, но я для себя посчитал это слишком сложной и необязательной задачей. Проблема работы с карты micro SD в том, что эти карты "изнашиваются" и рано выходят из строя при активном использовании (перезаписи). Чтобы уменьшить или вовсе исключить операции записи на карту памяти - можно проделать некоторые шаги. Я ещё не проделал всё это. Надеюсь, мне полностью в этом процессе помогут статьи:
Жёсткий диск я поставил HDD 2 Tb SATA Western Digital Red <WD20EFAX> 3.5". Всё подключилось сразу и без проблем. Диск размечал сразу из операционки Raspbian. Сделал GPT разметку с двумя томами: один для закачек; другой для архива и бэкапов. Оба тома на файловой системе Ext4.

Raspberry + X830-A1 V1.0 + I2C

Плата расширения X830 подключается к Raspberry Pi через собственный переходник X830-A1 V1.0. Со стороны платы расширения это 4 пина. Со стороны Raspberry Pi - это 12 пинов! Не знаю, зачем так было сделано. Возможно, реально там используются только 4 - те, которые нужны для связи по протоколу I2C (03 - он же GPIO02 SDA1; 05 - он же GPIO03 SCL; 04 - Power DC 5v; 06 - Ground). Никакой документации на этот переходник не нашлось. Проблема в том, что переходник занимает пины Raspberry, и к ним уже больше ничего не подключить. Благо, разработчики платы расширения X830 это предусмотрели и оставили на своём переходнике параллельные пины, к которым я подпаял гребёнки и уже к этим параллельным пинам подключил свой модуль реального времени, который также работает по I2C. Если бы переходник X830-A1 полностью перекрыл бы пины Raspberry, я бы попробовал купить и использовать I2C-разветвитель на 4 канала - хорошо, что обошлось; не факт, что это заработало бы.
Отдельное спасибо проектировщикам этого корпуса, что предусмотрели на нём запас по высоте (мои новые гребёнки и провода поместились). Также без проблем нашлось место и для самого модуля RTC (на боковой стенке). Боковая стенка имеет перфорацию. К одному отверстию я и прикрутил на пластиковую стоечку свой модуль. Жаль, но шаг перфорации не совпал с размерами отверстий на модуле: вторым винтом не удалось прикрутить к корпусу. Но и на одном винте держится нормально, главное, что не мотыляется внутри корпуса.

Сначала я всё это подключил, и мой модуль реального времени никак не определялся в операционной системе Raspbian. Чтобы проверить, рабочий ли вообще модуль, я подключил его к своей Arduino Uno. Загрузил стороннюю библиотеку для работы с DS1307 прямо из среды программирования Arduino. Залил тестовую программу в Arduino и проверил работоспособность модуля. Проверить модуль через Arduino подсказала статья Обзор часов реального времени DS1307 (RTC). Оказалось, что всё работает как надо. Позже разобрался, что некачественно пропаял один из пинов на переходнике X830-A1 (в пайке я не силён). Исправил, и всё заработало в Raspbian.

Зачем часы реального времени

Вся затея с подключением модуля реального времени исходит из цели исключения операций записи на карту памяти. Когда карта памяти будет полностью переведена на режим только чтения, - во время загрузки пока не появится соединение с Internet (пока не будет получено время с серверов NTP), - в операционной системе будут сбиты часы. А модуль часов реального времени решает эту проблему. По аналогии с тем, как в материнской плате обычного компьютера сохраняется время, благодаря батарейке на материнской плате. Кстати, для модуля DS1307 нужна не простая батарейка (CR 2032), а литий-ионный аккумулятор (LIR 2032). Аккумулятор будет подзаряжаться при наличии питания в цепи.
Когда в системе есть свои часы - время будет браться из них. Все логи будут вестись с правильными датой и временем.

Настройка модуля DS1307

В настройке модуля мне помогли статьи:
Подключение RTC (часы реального времени) к Raspberry Pi
Raspberry PI 3 LibreELEC DS1307
Подключение часов реального времени к RPi
DS1307 Real Time Clock Raspberry Pi I2C Interface

Комментарии

Популярные сообщения из этого блога

Пропорциональное распределение суммы

Битрикс: своя геолокация

Bitrix24 API - разбор демо приложения третьего типа