NanoPi Neo первое знакомство
Так сложилось, что сейчас я участвую в одном проекте в котором предполагается использовать микрокомпьютер. Изначально разработка велась на Raspberry Pi, но для удешевление решили попробовать что-то подешевле. И я нашел NanoPi Neo...
Предисловие
Хотя в названии и фигурирует "Pi" -ничего общего с Raspberry у него нет: процессор другой, выходы gpio не совпадают, да и мало их. Но самое главное - никакой поддержки сообщества и очень мало информации.
Начало
Когда я купил данную плату я был изумлен насколько она мала, сложно поверить в то, что это полноценный компьютер. Когда эйфория прошла я начал разбираться, что с ней делать дальше.
Первое с чего я решил начать - понять под какую ОС оптимизирована плата. У данной платы есть свое wiki - тут. Там я нашел информацию, что поддерживается официально только Ubuntu Core, ее можно загрузить из репозитория по ссылке. Скачивая ОС я начал искать хоть какую-то информацию про работу с GPIO, I2C и 1-wire. Готовых модулей для работы в Python было немного и часть из них были тестовыми и тут я понял, что не все так радужно как я думал... Я начал искать альтернативу Ubuntu Core и я ее нашел - ARMBIAN.
ARMBIAN
Грубо говоря, Debian для ARM который, более не менее, стабилен и обладает довольно большим сообществом, так как подходит не только для NanoPi, но и еще на много плат, детально можно ознакомиться со списком плат и скачать саму систему тут.
Установить систему на карту можно теми же способами, что и на raspberry pi (можете почитать тут). После записи на флешку, вставляете ее в Neo, подключаете к сети и через какое-то время сканируете сеть любым сетевым сканером (я пользуюсь Lan Scan для Mac). Плата должна сама подключится к сети по DHCP. После того, как узнали ip-адресс - заходите либо в Terminal на Mac, либо в putty на Windows и подключаетесь по ssh c пользователем root и стандартным паролем "1234". После входа в систему нужно будет пройти небольшую начальную настройку: смена паролей, создание нового пользователя и потом система попросить Вас перегрузиться и автоматически расширит файловую систему на весь объем накопителя. После входа система выглядит так:
Наверное Вы уже заметили, что что-то не так... А если нет - температура 56 градусов в простое. Этого я, конечно же, не ожидал. Для него придеться ставить активное охлаждение, либо массивный радиатор. Эта штука греется как утюг. Мало того, я в начале не обратил на это внимание и начал устанавливать все нужные мне компоненты... Система зависла наглухо и перестала отвечать по ssh, ping. Просто зависла. Я подумал, что это какой-то глюк и решил переподключить питание... Тут я обжогся в первый раз, при чем это не образно, а совершенно реально - температура платы была больше 80 градусов. Поставив радиатор на процессор и установив активное охлаждение - я продолжил работать с платой. И она оказалась лчень шустрой. Програмно, я все перенес практически без проблем, но как только пришлось разбираться с работой GPIO - тут появилась проблема: непонятно как работать с python, а переписывать на C мне не хотелось.
GPIO
Сначала я нашел модуль для работы с gpio. Он по этой ссылке. Она не устанавливается, а нужно просто загрузить папку neo в папку с программой и импортировать как в инструкции. Потом нашел и распиновку всех портов:
Но все же было не понятно какой порт какое имеет название в системе, но даже поэксперементировав - у меня ничего не заработало. Я решил на время отложить этот вопрос и разобраться с 1-wire, так как везде написано, что оно работает из коробки.
1-wire
Так вот, ничего в этой плате не работает из коробки!
Провозившись день - я так и не смог заставить 1-wire работать и тогда я решил написать о своей проблеме на форуме тут. И, к моему удивлению, через пол часа получил ответ на свой вопрос: нужно поправить конфиги загрузки.
И так, что же нужно сделать, что бы заработал 1-wire:
cd /boot sudo bin2fex script.bin script.fex sudo nano script.fex
спускаемся до пункта ;[gpio_para]
присваеваем параметру ;gpio_used
значение ;1
присваеваем параметру ;gpio_num
значение ;18
и удаляем строчку ;gpio_pin_1 = port:PA06
опускаемся в самый конец файла к пункту [w1_para]
присваеваем параметру ;w1_used
значение ;1
присваеваем параметру ;gpio
значение ;6
жмем CTRL + X и Y, что б сохранить изменения.
далее вводим:
sudo fex2bin script.fex script.bin
теперь переходим в другую папку:
cd bin sudo bin2fex nanopineo.bin nanopineo.fex sudo nano nanopineo.fex
Производим такие же изменение как и в предыдущем файле,
сохраняем его и вводим:
sudo fex2bin nanopineo.fex nanopineo.bin
теперь включаем сами 1-wire модули при загрузке:
cd /etc/modules-load.d/
sudo nano modules.conf
приводим файл к такому виду:
#gpio_sunxi w1-sunxi w1-gpio w1-therm #sunxi-cir
Сохраняем файл и перезагружаем плату. Теперь должны заработать порты GPIO и модуль 1-wire при подключении к порту PA06.
Продолжение следует...