Не мог определиться, в какой раздел запихать эту статью (в "Программирование" или "Железо"). По сути эта тема задевает обе категории. В общем предыстория такая: с усложнением добычи и ростом цен на электроэнергию асики старого образца, типа Antminer S9, S9k и пр. стали нерентабельны и ушли на покой.
Скопилось очень много таких аппаратов, и практически все рабочие. Хэш-платы от них особой ценности не составляют, а вот контрольные платы весьма любопытные для любителей "железа".
Коротко: это микрокомпьютер на базе 2 ядерного ARM CortexA9 с кучей инструкций, DDR3 оперативкой, NAND флешкой и сетевым интерфейсом на борту. Самое интересное, что стоковая прошивка по сути - это Linux Angstrom, которая хоть и урезана, но ещё много что умеет.
Вот ради интереса решил попробовать сделать из контрольной платы от Antminer S9k устройство, способное получать непрерывно данные из интернета и выводить результат на LCD дисплей.
А именно это будут интернет часы с актуальной погодой, курсом валют и курсом BTC.
Курсы валют (USD/RUB и EUR/RUB) мы будем получать из API центробанка. Курс биткойна с Coinbase. А прогноз погоды спарсим с Gismeteo.ru.
Вспоминая, что когда то давно я встречал китайские тестеры на базе КП S9k и дисплеем на борту, понимал, что данная контролька поддерживает дисплеи. Осталось разобраться с распиновкой.
Дисплеи 12864B3 есть в продаже, но иногда без некоторых компонентов и с не распаянными перемычками. Как правильно должно быть распаяно, показано на фото ниже:
Контент доступен только участникам форума
Так же я указал, какие контакты нам потребуются.
Теперь посмотрим на контрольную плату. Тут мы видим вывод для LCD дисплея:
Контент доступен только участникам форума
Чтобы цвета на схеме совпадали с настоящими я заготовил набор проводов для пайки:
Контент доступен только участникам форума
Далее распаиваем, согласно схеме:
Контент доступен только участникам форума
Далее осталось прошить контрольную плату прошивкой с встроенными драйверами на LCD дисплей.
Эти драйвера встречаются в образе для китайского тестера.
Но я ещё внедрил поддержку PHP для более удобной обработки информации и пересобрал прошивку.
Контент доступен только участникам форума
Вот его содержимое:
Контент доступен только участникам форума
Как видно, скрипт при запуске синхронизирует дату и время и начинает непрерывный цикл, который 1 раз в секунду запускает необходимый PHP скрипт. Кроме того идет наблюдение состояние кнопки "IP TEST" на контрольной плате. И если было зафиксировано нажатие, то режим переключается и 1 раз в секунду запускается другой PHP скрипт. Как нетрудно догадаться, finance.php отвечает за вывод курсов валют, а watcher.php за прогноз погоды.
Теперь рассмотрим эти PHP скрипты. finance.php:
Контент доступен только участникам форума
Тут мы видим, получение текущей даты и времени в переменную, причём с корректировкой часового пояса +3.
Далее средством CURL в прошивке КП мы делаем запрос на API на Minerflash.ru и выносим результат во временную папку. Далее уже самим PHP мы читаем и обрабатываем результат. Чтобы вывод результат на экране не разъезжался, к переменным добавляются пробелы, согласно количеству символов в результатах. Ну и в конце скрипт отдаёт сформированный вывод на экран. Вот как это выглядит на экране:
Контент доступен только участникам форума
Можно было упростить скрипт и заставить PHP напрямую делать запрос на API и получать результат сразу в переменную, но для этого необходимо подключать дополнительные модули и прописывать разрешение в PHP.INI
Теперь рассмотрим PHP скрипт watcher.php:
Контент доступен только участникам форума
Здесь всё по аналогии, за исключением, что теперь скрипт подтягивает конфиг /config/watcher.conf, который содержит код города, необходимый для Gismeteo.ru. Поскольку при загрузке по умолчанию выставлен код Москвы. Подсмотреть код города можно на сайте Gismeteo.ru:
Контент доступен только участникам форума
Чтобы изменить код города на свой, нужно подключить к контрольной плате USB-UART, прервать выполнение скрипта clock нажатием Ctrl+C несколько раз. Далее вводим логин root нажимем Enter и вводим пароль root (При вводе пароля символы в терминале не отображаются) и нажимаем Enter.
Копируем код города с сайта Gismeteo.ru и прописываем его в терминал:
Контент доступен только участникам форума
После перезагрузки погода будет актуальной для указанного города:
Контент доступен только участникам форума
Обозначения такие: T - текущая температура воздуха, W - скорость порыва ветра, P - атмосферное давление и H - влажность воздуха.
Теперь, что касается питания. На контрольную плату на борту асика приходит 12 вольт. Но такой вольтаж необходим для питания кулеров. Сама КП без кулеров потребляет порядка 250-300 mA. Для пробы подпаял на пины питания USB кабель и воткнул в блок питания 5v 500mA и контролька успешно завелась и работала. Необходимость искать блок питания на 12v отпадает.
Контент доступен только участникам форума
Выбрасывать на помойку контрольные платы от старого майнинг-оборудования это кощунство. Такие платы можно адаптировать под любые свои задачи, учитывая их производительность и функционал.
Контент доступен только участникам форума
Материал подготовил:
@Vinogradov
Копирование и распространение с разрешения автора.