Программирование ARM BitMaker-hub / NerdMiner_v2 Sun, October 06 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

BitMaker-hub / NerdMiner_v2 Печать
Добавил(а) microsin   

NerdSoloMiner v2 это бесплатный и открытый проект майнера [1], который пытается вычислить блок bitcoin на простейшем оборудовании. Основная цель проекта - освоить технологию криптовалюты и заодно получить красивое устройство, которое что-то там делает на столе. Оригинальная версия проекта также доступна на GitHub [2].

Требования для повторения проекта:

- TTGO T-Display S3, или любая из поддерживаемых плат (см. далее "Руководство по сборке").
- Распечатанный корпус 3D BOX (см. STL-файлы в каталоге NerdMiner_v2/3d_files/).

[Описание NerdSoloMiner v2]

ESP32 реализует протокол Stratum для майнинга в индивидуальном пуле (solo pool). Пул может быть изменен, однако он работает с public-pool.io (где поддерживаются устройства Nerdminer).

Изначально проект был реализован на основе ESP32-S3, однако теперь поддерживаются и другие платы. Используется WifiManager для изменения настроек майнера и сохранение их в SPIFF. Устройство microMiner поставляется с несколькими экранами, чтобы можно было отслеживать его рабочий процесс, а также сетевой статус майнинга:

NerdMiner Screen -> Mining data of Nerdminer (данные майнинга)
ClockMiner Screen -> Fashion style clock miner (красивый общий экран статистики)
GlobalStats Screen -> Global minery stats and relevant data (глобальное состояние майнинга и соответствующие данные)

Этот майнер использует несколько ядер (multicore) и несколько потоков (multithreads), оба ядра используются для майнинга, и несколько потоков используются для реализации работы стратума (stratum work) и поддержки доступа по wifi. Каждый раз при получении уведомления о задании стратума майнер обновляет свою текущую работу, чтобы не создавать устаревшие общие ресурсы.

Важное замечание: майнер не видят все стандартные пулы из за того, что у него ограниченная по сложности реализация общих ресурсов (low share difficulty). Вы можете проверять работу майнера удаленно с помощью перечисленных ниже определенных пулов, либо просматривая логи через UART.

Текущий проект все еще находится в стадии разработки, и в него будут со временем добавлены новые функции.

[Руководство по сборке]

В настоящее время поддерживаются платы:

LILYGO T-Display S3 (продаются на AliExpress)
ESP32-WROOM-32, ESP32-Devkit1.. (продаются на AliExpress)
LILYGO T-QT pro (продаются на AliExpress)
LILYGO T-Display 1.14 (продаются на AliExpress)
LILYGO T-Display S3 AMOLED (продаются на AliExpress)
LILYGO T-Display S3 AMOLED Touch (Board Info)
LILYGO T-Dongle S3 (продаются на AliExpress)
ESP32-2432S028R 2,8" (продаются на AliExpress / Dev support: @nitroxgas / ⚡jadeddonald78@walletofsatoshi.com)
ESP32-cam (Board Info / Dev support: @elmo128)
M5-StampS3 (продаются на AliExpress / Dev support: @gyengus)
Wemos Lolin S3 Mini [3]
Wemos Lolin S2 Mini [4]
Weact S3 Mini (WeActStudio.ESP32S3-MINI [5])
Weact ESP32-D0WD-V3 (WeActStudio.ESP32CoreBoard [6])
ESP32-S3 Devkit [7]
ESP32-C3 Devkit [8]
ESP32-C3 Super Mini [9]
Waveshare ESP32-S3-GEEK [10]

microMiners Flashtool (рекомендуемая утилита). Самый простой способ создать свой майнер и прошить в его память FLASH код firmware:

1. Заполучите платку TTGO T-display S3 или другое поддерживаемое устройство.
2. Перейдите по ссылке на NM2 flasher online: https://flasher.bitronics.store/ (рекомендуется использовать анонимный режим Google Chrome incognito mode).

Стандартный инструментарий. Также можно использовать онлайн прошивальщик (online firwmare flash tool ESPtool) и один из двоичных образов из папки bin. Если вы захотите, то можете скомпилировать весь проект, используя среду разработки Arduino, PlatformIO или Expressif IDF.

1. Заполучите платку TTGO T-display S3 или другое поддерживаемое устройство.
2. Загрузите репозиторий [1] (командой git clone https://github.com/BitMaker-hub/NerdMiner_v2.git).
3. Перейдите на ESPtool online: https://espressif.github.io/esptool-js/.
4. Загрузите firmware прошивкой бинарника из одной из подпапок bin, соответствующей вашей плате.
5. Подключите вашу платку и выберите каждый файл из подпапки (файлы *.bin).

Обновление NerdMiner firmware производится аналогично описанной выше прошивке, однако используется файл 0x10000_firmware.bin.

1. Online ESP Tool работает в браузерах chrome, chromium, brave.

2. Для ESPtool рекомендуется использовать скорость 115200 bps.

3. Если во время прошивки firmware процесс останавливается, рекомендуется ввести плату в режим загрузчика (boot mode). Отключите кабель, нажмите и удерживайте правую нижнюю кнопку (BOOT), и снова подключите кабель. Заново запустите процесс прошивки.

4. В определенных экстремальных случаях может помочь полная очистка памяти "Erase all flash" в ESPtool, чтобы очистить текущую конфигурацию перед прошивкой firmware. Это потребовалось во время разработки, когда проводилось экспериментирование с фичами Wifi.

5. Если используются платы ESP32-WROOM, то может потребоваться перевести плату в режим загрузки (boot mode). Для этого удерживайте кнопку BOOT, и нажмите кнопку сброса RST, после чего запустите процесс программирования.

[Конфигурирование NerdMiner]

После того, как вы запрограммировали устройство, вам понадобится только лишь задать настройки WiFi и адрес BTC. Майнинг не начнется, пока не будет предоставлен BTC address вашего выбранного кошелька (wallet).

Конфигурирование через WiFi

1. Имя (SSID) точки доступа: NerdMinerAP, пароль: MineYourCoins.

2. Настройте свою сеть (Wifi Network).

3. Добавьте ваш BTC address.

4. При необходимости поменяйте пароль.

Если вы используете public-pool.io, и хотите установить пользовательское имя для своего worker, то можете к адресу добавить строку суффикса в формате .yourworkername к адресу.

Конфигурирование через карту SD (когда она есть)

1. Отформатируйте SD-карту в файловой системе Fat32.

2. Создайте в коне карты текстовый файл config.json, где содержится следующая структура. Поменяйте в ней необходимые настройки:

{
  "SSID": "myWifiSSID",  
  "WifiPW": "myWifiPassword",  
  "PoolUrl": "public-pool.io",  
  "PoolPort": 21496,
  "PoolPassword": "x",
  "BtcWallet": "walletID",  
  "Timezone": 2,  
  "SaveStats": false
}

3. Установите SD-карту в слот платы.

4. Нажмите и удерживайте кнопку "reset configurations", как описано ниже, чтобы сбросилась конфигурация, и/или произошла загрузка без настроек из nvmemory платы.

5. Выключите питание и извлеките SD-карту. Для майнинга она не нужна.

Выбор пула для майнинга. Рекомендуется использовать следующие пулы (low difficulty share pools):

Pool URL Порт Web URL Статус
public-pool.io 21496 https://web.public-pool.io Open Source Solo Bitcoin Mining Pool, поддерживающий майнеры с открытым исходным кодом.
nerdminers.org   https://nerdminers.org Домен для будущей команды пула - в настоящее время указывает а public-pool.io.
pool.nerdminer.io 3333 https://nerdminer.io Поддержка от CHMEX.
pool.vkbit.com 3333 https://vkbit.com/ Поддерживается djerfy - форк от public-pool.
pool.pyblock.xyz 3333 https://pool.pyblock.xyz/ Поддерживается curly60e.
pool.sethforprivacy.com 3333 https://pool.sethforprivacy.com/ Поддерживается @sethforprivacy - форк от public-pool.

Другие стандартные пулы, не совместимые с low difficulty share:

Pool URL Порт Web URL
solo.ckpool.org 3333 https://solo.ckpool.org/
btc.zsolo.bid 6057 https://zsolo.bid/en/btc-solo-mining-pool
eu.stratum.slushpool.com 3333 https://braiins.com/pool

[Кнопки управления]

Устройства, где есть только одна кнопка

1. Одиночный клик поменяет экран.
2. Двойной клик поменяет ориентацию экрана.
3. Тройной клик выключает и включает экран.
4. Удерживание кнопки дольше 5 секунд сбрасывает конфигурации и перезапустит ваш NerdMiner.

Устройства с двумя кнопками (когда порт USB-C находится справа)

Верхняя кнопка:

1. Одиночный клик поменяет экран.
2. Удерживание кнопки дольше 5 секунд сбрасывает конфигурации и перезапустит ваш NerdMiner.
3. Удерживание кнопки при включении питания осуществит вход в режим конфигурирования и редактирования текущего config через Wifi. Вы можете поменять или проверить свои настройки.

Нижняя кнопка:

1. Одиночный клик выключает и включает экран.
2. Двойной клик поменяет ориентацию экрана.

Видео по сборке:

Указания по разработке

• Текущий проект был адаптирован для работы с PlatformIO.
• Текущий проект работает с модулями ESP32-S3 и ESP32-wroom.
• Таблица разделов (partition scheme) должна быть собрана как большое приложение (huge app).
• Все необходимые библиотеки показываются на platform.ini.

Что уже сделано:

• Проект перенесен на platformIO.
• Исправлен баг прямоугольника на экране, когда отображаются 1milion shares.
• Исправлен баг утечки памяти.
• Исправлен баг с перезагрузкой, когда принятый JSON содержит некоторые null значения.
• Реализован midstate sha256.
• Исправлен баг Wificlient DNS unresolved в Wifi.h.
• Произведен рефакторинг кода.
• Для экрана добавлен blockHeight.
• Добавлено отображение текущего времени на экране.
• Добавлен новый экран с глобальной статистикой майнинга (global mining stats).
• Добавлена поддержка пула для low difficulty miners.
• Добавлена лучшая сложность (best difficulty) на экран майнера.
• Добавлена поддержка стандартного ESP32 dev-kit / ESP32-WROOM.
• Внесены изменения в код для поддержки добавления нескольких плат.
• Добавлена поддержка для TTGO T-display 1.14
• Добавлена поддержка для Amoled.

В разработке:

• Реализовать протокол daisy chain через UART или I2C для поддержки хеш-плат ESP32 (hashboard).
• Создать новый экран наподобие clockMiner, но на котором будет BTC price.
• Добавить поддержку для управления BM1397.
• Добавить поле пароля в форму web-конфигурирования.

Если вы хотите поучаствовать в проекте или намерены поддержать команду разработчиков, обращайтесь по адресу ⚡teamnerdminer@getalby.com⚡ или по одной из связанных ссылок.

Если вы захотите купить готовый, полностью собранный Nerdminer, то можете это сделать на bitronics.store.

[Ссылки]

1. BitMaker-hub / NerdMiner_v2 site:github.com.
2. valerio-vaccaro / HAN site:github.com.
3. WEMOS LOLIN S3 Mini site:docs.platformio.org.
4. Wemos Lolin S2 Mini site:docs.platformio.org.
5. WeActStudio / WeActStudio.ESP32S3-MINI site:github.com.
6. WeActStudio / WeActStudio.ESP32CoreBoard site:github.com.
7. Espressif ESP32-S3-DevKitM-1 site:docs.platformio.org.
8. Espressif ESP32-C3-DevKitM-1 site:docs.platformio.org.
9. Seeed Studio XIAO ESP32C3 site:docs.platformio.org.
10. ESP32-S3-GEEK site:waveshare.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page