Некоторое время вожусь с апельсиновым семейством микрокомпьютеров.
ORANGE PI PC, PC PLUS, теперь вот ZERO. Встала задача применения этих малюток в качестве серверов в домашней автоматизации и даже микроконтроллеров.
Но возникла одна проблема: при выключении питания сбрасываются аппаратные часы этих микро ПК.
О том как решается эта проблема данный обзор
Все апельсиновые ПК построены на базе процессора AllWinner H2 и H3.
Судя по описанию, эти микросхемы имеют встроенные часы RTC.
Но вот незадача. Из экономии, на платы Orange забыли установить батарейку резервного питания для RTC, и время после выключения питания сбрасывается. Можно пойти путем крутого железячника и подпаять батарейку к RTC_VCC AllWinner. В этом обзоре я расскажу о другом пути — подключении внешнего модуля часов реального времени.
Наиболее оптимально для этого использовать DS3231. Эти RTC производства Dallas Semiconductor (с 2001 года входит в Maxim Integrated Products) имеют невысокую стоимость и высокую точность хода ± 2ppm при температуре 0-40C (разбег порядка минуты в год), а также довольно минималистичную обвязку
Для тех кто не любит паять, RTC на базе DS3231 продаются в виде готовых модулей
Для подключения DS3231 (или DS1307) к Orange PI используется интерфейс TWI0 (I2C) разведенный на гребенку GPIO40 на больших платах и GPIO26 у миниатюрного ZERO
Специально для Raspberry PI и других микро ПС с таким же разъемом GPIO разработан миниатюрный модуль DS3231
В отличие от более крупных плат, на миниатюрном модуле нет внешней EEPROM и не разведены выходы тактового импульса и встроенного будильника
Зато размеры его минимальны
И разъем можно сразу воткнуть в гребенку GPIO40 или GPIO26
Ну а если разъем занят, то можно и так
Хотя в финальной версии планируется развести микросхему DS3231 с батарейкой прямо на плату.
Подключение
У меня установлен
Armbian Linux.
Изначально встроенные в AllWinner часы RTC опознаются как устройства
/dev/rtc0. Linux использует для аппаратных часов устройство
/dev/rtc которое залинковано с
/dev/rtc0
Команда hwclock -r показывает нулевое время (для всех Unix/Linux это 01.01.1970). Системное время взято из интернета. Можно синхронизировать аппаратные часы с системными, но только до сброса питания
Активировать внешний модуль DS3231 (DS1307) в системе LINUX-SUNXI можно следующей командой
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
После этого в системе появляется новое i2c устройство с адресом
0x68 и устройство
/dev/rtc1
Теперь можно залинковать устройство
/dev/rtc на
/dev/rtc1
rm /dev/rtc
ln -s /dev/rtc1 /dev/rtc
После этого система начинает работать с внешним RTC модулем.
Чтобы данное действо проходило в автоматическом режиме, пропишу в файле /etc/rc.local определение и установку внешних часов
Теперь при загрузке системы инициализируется внешний модуль RTC и делается попытка считать с него время. Если попытка удачная, то
/dev/rtc линкуется с
/dev/rtc1.
Модуль DS1307 совместим с DS3231 и его подключение полностью аналогично. Только вот точность этих китайских модулей с внешним кварцем оставляет желать лучшего.
Если возникают проблемы с устройствами I2C в LINUX нужно установить i2c-tools
После того утилита i2cdetect -y 0 показывает все устройства на шине
Интересно, что в Orange PI ZERO обнаруживается еще одно I2C устройство — АЦП/ЦАП PCF8591. Но как считают на
апельсиновом форуме, данное устройство появляется из за ошибочной инициализации модуля ядра pcf8591.ko. Тем более АЦП-шка показывает у всех совершенно одинаковые неменяющиеся значения.
Итог
Всего за 50 рублей в любой микрокомпьютер Orange PI (а также Rapberry PI и прочие с аналогичным разъемом GPIO и без RTC с батарейкой) мы получаем аппаратные часы с сохранением времени и хода при отключении питания.
И совсем без проводов и мучительных шаманских танцев с подключением.
Лично меня теперь греет мысль, что мои устройства все меньше и меньше зависят от интернета и от этого гораздо более жизнеспособны.
Ну и серьезный котик, изучающий подключение RTC к Orange PI
Полезные ссылки
для тех, кто не читал, модуль совместим с малиной и с девбордами, имеющими гребёнку от малины
К сожалению, цена у малинки не очень гуманная.
Или в 80-е когда ДВК-2М, по всем параметрам сливающий этой «пачке сигарет» стоил 7000 рублей, почти как Волга…
Ребят, может хватит кивать на цену Raspberry? Это и так один из самый ДЕШЕВЫХ компьютеров. Один полный бак бензина стоит дороже этого мелкого, но тем не менее полноценного компа.
Можно еще с комплектухой для настольного компа сравнить, когда один хард или модуль памяти получается дороже.
Просто реально непонятный стон про стоимость. Если есть что-то дешевле, это не значит, что Raspberry дорогая. Просто есть что-то дешевле.
Да хоть с ценой на карточку памяти сравнить. Недавно купил карточку памяти SanDisk на 128 ГБ, так она подороже Малины вместе взятой будет.
По мне любой комп дешевле $50 будет не дешевым, а очень дешевым.
Та же фигня была с ардуиной. Сперва была итальянская плата ценою более 1000р. Но как показало время, нельзя продавать копеечный контроллер с несколькими детальками обвязки за такие деньги. Вот и имеем мы сейчас Ардуино за 100 руб.
Так что китайцы навариваются на любом устройстве и не факт, что на апельсинке наваривают в процентах меньше.
Но в принципе оно и хорошо, что их много разных. Больше выбор, больше шанс подобрать нужное устройство под конкретное применение.
Про Атмегу с детальками могу сказать, что Сименс ЛОГО! в этом плане просто огонь. Там обычная мега стоит, а стоит дороже этих игрушек вместе взятых. Зато сертифицировано и имеет гарантированную надёжность, но это уже совсем другая история.
Как бы я тоже знаю как кучку деталей за $20 превратить в изделие ценой в $250. И ведь лет 15 как покупали, так и покупают. Цена это то, что готов заплатить клиент, а не себестоимость плюс издержки.
> Та же фигня была с ардуиной. Сперва была итальянская плата ценою более 1000р.
Как же вы, «маркетологи», достали своими «расчётами».
Хоть один проект запустили? Знаете, сколько нужно на старте вложить? Какова себестоимость первой партии? Как деньги возвращать?
Ты можешь сделать что-то не хуже и дешевле? ДЕЛАЙ! Я охотно куплю у кого-то дешевле. А трындеть — не мешки ворочать: спина не болит.
«Каждый мнит себя стратегом, видя бой со стороны».
А то прямо как в футболе: «лучше» всех в футбол играют те, кто сидят с пивом у ТВ…
При условии что часы питаятся в основном от внешнего источника, либо отключены
Часто нужно иметь устройства, независящие от интернета.
А еще туда можно выводить прогноз погоды, новости, фотки, интернет радио и видео
Здесь я ЖК дисплейчик подключал
все из коробки заработает. писать и паять ничего не надо будет. мышкой нужные галочки наставите и все
wifi-iot.com/
Если использовать малинку как недодесктоп или медиаплеер, то часы и не нужны. Если как умный контроллер чего-либо где-то в глухом подвале и тд — внешние rtc вне конкуренции и фактически единственный вариант, если нужны рабочие часы на плате.
h3disp -m32
и будет счастие
А остальное только FPSами мерить
Там BGA микросхема и плата многослойная. Не прозвонить ни припаяться
Не нашел у PC PLUS. Но наверное плохо искал на плате
Сейчас пока занят другим проектом — часы не к спеху (подождут).
Вариант использования — отпаять беспонтовую батарейку и посадить на её контакты на проводках такую штуку: aliexpress.com/item/2016-New-Vertical-CR2032-2025-Half-Round-Battery-Coin-Button-Socket-3-PIN-Holder-Case-ET57/32659632236.html
Чудные китайцы куда не нужно — делают схему с подзарядкой, под LIRы, а куда надо, как здесь — ставят всё по минимуму.
Да уж, батарейка там приварена. Мужеложцы узкоглазые…
мой модуль
Вообще то в модуле соединение даташитовсое. 14 с 16-й ногой не соединены точно
Только выходы не разведены никуда
Когда Vcc нету питается от Vbat.
А в материнках/эл.счетчиках при включенном устройстве, я так полагаю, на Vbat подается чуть более высокое напряжение от БП (порядка 3.4в). Что позволяет продлить жизнь батареи тем сильнее, чем больше устройство питается от сети. По крайней мере я в своей материнке уже лет 5 точно не менял батарею. А стоит материнке полежать годик — сразу заорёт «CMOS error». Ну и надо понимать разницу в емкости между 2025/2032 и 0927. В 4-5 раз, я думаю…
ЗЫ: Впрочем, все куда проще, наверное, и при наличии внешнего питания чип вообще никак не нагружает батарею. Тогда этот аглоритм («чем дольше включено, тем больше живёт батарея») будет работать и тут. Ейбо, не изучал даташит, :) там сей момент наверняка отражён!
100нА при питании от VCC
100нА в отключенном виде (сохранение даты)
3мкА а режиме поддержания времени
Получается 5-10 лет вполне проживет, что в принципе соответствует времени саморазряда литиевой батарейки
Orange Pi Lite. Случайно подключил к 12В, секунд на пять.
Теперь вроде как не работает) Пытался подключить к 5В, показывает потребляемый ток аж в 3-3.5А а то и выше, не запускается, светодиоды никакие не горят. Процессор при подключении нагревается довольно ощутимо. Можно реанимировать или уже всё?
Посмотреть, идет ли процессор 5В.
Но, как показывает практика в подобных случаях, одним стабилизатором дело не закачивается (((
обычно стоят специальные диоды, которые пробиваются и замыкают, чтобы предохранитель сгорел
но это не твой случай
Оригинальность микросхем с Али — это вообще отдельная тема. Большая честь стоит гораздо дешевле, чем у производителя, но при этом они нормально работают