Настройка NanoPi
Подключение к плате с помощью TTL переходника
Для того чтобы подключаться к плате без использования платы расширения, нам необходим USB-TTL-переходник. Нам необходимо подключить контакт RX переходника к TX платы, RX переходника к TX платы, 5V к пину 5V и GND к пину GND на плате.
Далее используем команду в терминале:
picocom -b 115200 /dev/ttyUSB0Подключится к плате.
Совет: Если после выполненных действий подключение не удалось осуществить, то необходимо проверить правильность подключения контактов TX и RX.
Запись ОС во внутреннюю память
Что же такое внутреyняя память или же eMMC-хранилище? Хранилище eMMC (встроенная MultiMediaCard) --- это форма внутренней памяти, состоящая из контроллера и флэш-памяти NAND, которые расположены в одной интегральной схеме. Или же другими словами eMMC --- это таже самая SD-карта, но заранее установленная на саму плату.
Для установки нам необходимо скачать версию ОС, рассчитанную на установку во внутреннюю память. Скачать можно по ссылке:
https://drive.google.com/drive/folders/1ws6rPIIQoS4khtabX0ohfg5JTQ0YywOvНам необходим образ, в названии которого есть приписка «eflasher», это означает, что образ рассчитан на установку во внутреннюю память. После скачивания образа нам необходимо установить образ на SD с помощью программы Balena Etcher.
Совет: Более подробная инструкция с установкой образа на SD карту указана в главе XXX
Чтобы начать установку нам необходимо подключится к плате с помощью команды:
picocom -b 115200 /dev/ttyUSB0Внимание: Подавать питание на плату можно только после подключения к ней
Далее нам необходимо загрузиться во внутренний загрузчик операционной системы для загрузки с SD-карты. Для этого необходимо во время загрузки зажать кнопу на клавиатуре, чтобы предотвратить автоматическую загрузку.

Рисунок 1.1 – Вход во внутреннюю ОС
Далее в консоли вводим команду:
bootzБлагодаря этой команде мы начнем запускаться с подключеной к системе SD картой и с функцией eflasher. После того, как мы выбрали способ загрузки, необходимо ввестии команду:
boot
Рисунок 1.2 – Загрузка
Благодаря ней, начнется процесс запуска. После того как загрузится внутреняя система, необходимо ввести логин и пароль пользователя. Мы будем заходить под администратором:
Логин: root
Пароль: faВнимание: Во время ввода пароля он не отображается.
После входа в систему вводим команду для начала процесса прошивки внутренней памяти:
eflasher
Рисунок 1.3 – Запуск eflash
Нам предложат выбрать место, из которого мы будем устанавливать. Нам необходимо ввести в консоль место, из которого будет производиться процесс установки, зачастую SD-карта отображается как 1. Поэтому в консоли мы введем число 1.

Рисунок 1.4 – Выбор места расположения установочного файла
Далее мы можем проверить место, из которого осуществляется установка, и названия образов. Чтобы начать сам процесс установки, мы должны подтвердить его. Поэтому вводим в консоль yes.

Рисунок 1.5 – Подтверждение
И после этого начинается процесс установки образа.

Рисунок 1.6 – Процесс установки
После окончания процесса установки нам требуется отключить питание от платы и вынуть SD-карту. После этого мы можем использовать плату без использования SD-карты.
Использование SD как хранилища
После того, как мы установили ОС на внутреннюю память, мы можем использовать SD-карту как дополнительное хранилище информации. Для этого необходимо определиться с диском, который мы будем использовать. Для этого необходимо ввести в консоль:
sudo fdisk -lПосле того как мы определились с диском, в моем случае, это "/dev/mmcblk1p1", нам необходимо установить диск в систему. Для этого используем команду:
mount /dev/mmcblk1p1 /mediaИ, перейдя в директорию /media мы увидим все файлы, расположенные внутри нашей SD-карты.
Взаимодействие с GPIO
Для взаимодействия с портами gpio используется библиотека RPi.GPIO_NP, доступная по ссылке:
https://github.com/friendlyarm/RPi.GPIO_NP
После установки данной библиотеки можно из программы, написанной на языке программирования Python, считывать напряжение с gpio портов nanopi и настраивать их на отдачу напряжения, чтобы, например, зажечь светодиод. Для начала настраивается режим работы BOARD, этот режим показывает, что нумерация портов в программе будет производиться как на самой плате. Делается это с помощью команды GPIO.setmode(GPIO.BOARD). Далее требуется настроить порты, которые будут использоваться. Чтобы обратиться к конкретному порту на плате, необходимо знать его номер. Номера портов можно посмотреть на схеме, которая называется Pinout. Для данной платы она выглядит следующим образом:

Рисунок 1.7 – Расположение пинов на плате
Также можно воспользоваться командой из библиотеки Wiring (https://wiki.friendlyelec.com/wiki/ index.php/WiringNP:_NanoPi_NEO/NEO2/Air_GPIO_Programming_with_C) gpio readall. Затем настраивается режим работы порта, он может либо отдавать напряжение, либо считывать его значение. Для настройки порта в режим отдачи напряжения используется команда GPIO.setup(12, GPIO.OUT), на считывние — GPIO.setup(12, GPIO.IN), где 12 — номер пина на плате.
import RPi.GPIO as GPIO
import time as t
GPIO.setmode(GPIO.BOARD)
ledRed = 8
GPIO.setup(ledRed, GPIO.OUT)
GPIO.output(ledRed, GPIO.LOW)
while True:
GPIO.output(ledRed, GPIO.HIGH)
t.sleep(1)
GPIO.output(ledRed, GPIO.LOW)
t.sleep(1)