67 posts tagged

OrangePI PC

WiFi NAT Router на esp8266

Трансляция сетевых адресов (NAT) является способом переназначения одного адресного пространства в другое путем изменения информации сетевых адресов в IP (Internet Protocol). То есть заголовки пакетов изменяются в то время, когда они находятся в пути через устройство маршрутизации трафика.

Тестировал на ARMBIAN 5.40 user-built Debian GNU/Linux 9 (stretch) 4.14.17-sunxi

Компиляция и прошивка A full functional WiFi Repeater (correctly: a WiFi NAT Router) на OrangePi :

Как собирать компилятор и установить esp-open-sdk в этом посте – Сборка компилятора на основе Crosstool-NG и esp-open-sdk
качаем с гита исходники wifi repeater:

cd /opt/Espressif/esp-open-sdk
git clone https://github.com/martin-ger/esp_wifi_repeater.git
cd esp_wifi_repeater

меняем в файле Makefile окружение в двух строках 15 и 30:

BUILD_AREA = /opt/Espressif
ESPPORT		?= /dev/ttyS3

если надо, копаемся в коде и компилируем:

export PATH=/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
make

Прошивка чипа ESP8266
схема подключения модуля ESP8266 к OrangePi  – пост Прошивка ESP8266 модулей на Orange Pi
перед прошивкой кратковременно нажать кнопку сброс (подключена к RST модуля)
не забывайте включить uart3. В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 — это 8,10 (PA13,PA14) пины на гребёнке OrangePi
команда прошивки:

make flash

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.
Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.
0xfc000 для 1 MB.
0x3fc000 для 4 MB.
0xffc000 для 16 MB.

wget http://demo.homes-smart.ru/foto/esp_init_data_default.bin

esptool.py --port /dev/ttyS3  write_flash -fs 4m -ff 40m \
    0x7c000 esp_init_data_default.bin

Подключаемся к появившейся точке доступа MyAP. Адрес интерфейса настройки сети http://192.168.4.1/
скорость не мерял, “Чудес не бывает”. но вполне достаточно, чтобы смотреть ютюб и прочие видео.

Feb 18   armbian   ESP8266   NAT Router   OrangePI PC

Сборка прошивки DeviceHive для чипа ESP8266 на OrangePi

Платформа DeviceHive содержит множество различных компонентов, включая плагин Grafana. Он может собирать данные с сервера DeviceHive и отображать их с помощью различных информационных панелей, используя популярный инструмент Grafana.

Сборка компилятора на основе Crosstool-NG и esp-open-sdk
Тестировал на ARMBIAN 5.40 user-built Debian GNU/Linux 9 (stretch) 4.14.17-sunxi
Для сборки нужна флешка не менее 8Gb.
Установку кросс-компилятора и сборку производим из под обычного пользователя

sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial \
    sed git unzip bash help2man wget bzip2 libtool-bin
sudo mkdir /opt/Espressif

username меняем на логин текущего пользователя.

sudo chown username:root /opt/Espressif/
cd /opt/Espressif/ 
git clone --recursive https://github.com/pfalcon/esp-open-sdk
cd esp-open-sdk

в файл /opt/Espressif/esp-open-sdk/crosstool-config-overrides добавляем строки:

# CT_GMP_V_6_0_0 is not set
CT_GMP_V_5_1_3=y
CT_GMP_VERSION="5.1.3"

компилируем:

make STANDALONE=y
export PATH=/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Пару часов ожидания...
И можно собрать WiFi NAT Router или продолжим собирать DeviceHive esp8266-firmware :

cd /opt/Espressif/esp-open-sdk
git clone https://github.com/devicehive/esp8266-firmware.git
cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src

Меняем строки в файлах,
в директории /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src
сохраняя табуляцию в начале строк:

6 строка Makefile

CROSS_COMPILE	?= /opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-

54 строка Makefile

@(cd $(dir $(FIRMWARE)) && ./../../esp-utils/build/esp-flasher   /dev/ttyS3 --developer)

62 строка Makefile

@./../esp-utils/build/esp-terminal /dev/ttyS3

25 строка genbin.sh

CROSS_COMPILE="/opt/Espressif/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-"

Компилируем утилиты:

cd /opt/Espressif/esp-open-sdk/esp8266-firmware/esp-utils
make

Компилируем прошивку DeviceHive для чипа ESP8266:

cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src
make


text data bss dec hex filename
394491 2352 38728 435571 6a573 build/devicehive.elf
Extract sections...
Writing header...
Writing .text section...
Writing .data section...
Writing .rodata section...
Writing checksum...
Writing irom0 section...
Done
Firmware file is firmware/devicehive.bin, size is 413323 bytes

файл прошивки в папке
/opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src/firmware devicehive.bin

Прошивка чипа ESP8266
не забывайте включить uart3. В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 — это 8,10 (PA13,PA14) пины на гребёнке OrangePi

reboot
cd /opt/Espressif/esp-open-sdk/esp8266-firmware/firmware-src

схема подключения модуля ESP8266 к OrangePi – пост Прошивка ESP8266 модулей на Orange Pi
перед прошивкой кратковременно нажать кнопку сброс (подключена к RST модуля)

make flash

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.
Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.
0xfc000 для 1 MB.
0x3fc000 для 4 MB.
0xffc000 для 16 MB.

wget http://demo.homes-smart.ru/foto/esp_init_data_default.bin

/opt/Espressif/esp-open-sdk/esp8266-firmware/esp-utils/build/esp-flasher /dev/ttyS3 0x7c000 esp_init_data_default.bin

Теперь настроить все предельно просто:
• устройство трижды перезагружается (с интервалом не более 3-х секунд), после чего превращается в точку доступа Wi-Fi;
• вы подключаетесь к этой точке и через браузер вводите все необходимые настройки;
• после применения настроек устройство автоматически перезагружается уже с новыми настройками.
запуск терминала:

make terminal

команда help выведет описание команд терминала

После успешного коннекта заходим вручную по адресу http://192.168.2.1 используя веб браузер.

Подробнее про DeviceHive
Feb 14   armbian   DeviceHive   ESP8266   Grafana   OrangePI PC

Установка MQTT-сервера Mosquitto на Debian9 (stretch)

MQTT или Message Queue Telemetry Transport – это легкий, компактный и открытый протокол обмена данными созданный для передачи данных на удалённых локациях, где требуется небольшой размер кода и есть ограничения по пропускной способности канала. Вышеперечисленные достоинства позволяют применять его в системах M2M (Машинно-Машинное взаимодействие) и IIoT (Промышленный Интернет вещей).
Основные особенности протокола MQTT:

  • Асинхронный протокол
  • Компактные сообщения
  • Работа в условиях нестабильной связи на линии передачи данных
  • Поддержка нескольких уровней качества обслуживания (QoS)
  • Легкая интеграция новых устройств

Mosquitto – это популярный MQTT-сервер (или брокер). Он прост в установке и настройке и активно поддерживается сообществом.
Установка на Debian9 (stretch)
лучше установить более современную версию пакета из репозитория проекта Mosquitto. Загрузите ключ репозитория и установите его::

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

Добавьте URL репоизтория в файл /etc/apt/sources.list.d/

nano /etc/apt/sources.list.d/mosquitto.list

В этот пустой файл вставьте такую строку:

deb http://repo.mosquitto.org/debian stretch main
apt-get update
apt-get install mosquitto mosquitto-clients

Откройте ещё одну сессию терминала, в результате у вас должно быть два терминала. Запустите в новом терминале команду mosquitto_sub, чтобы подписаться:

mosquitto_sub -h localhost -t "sensor/temperature"

Флаг –h указывает имя хоста сервера MQTT, -t – тему. После запуска команды на экране не появится вывода, поскольку команда mosquitto_sub ждет получения сообщений. Вернитесь в первый терминал и опубликуйте сообщение:

mosquitto_pub -h localhost -t "sensor/temperature" -m 21.0

Команда mosquitto_pub использует те же опции, что и mosquitto_sub, однако в этот раз используется дополнительный флаг –m (он позволяет ввести текст сообщения). Нажмите Enter, и вы увидите в другом терминале MQTT-сообщение 21.0.

Mosquitto ставим перед установкой OpenHAB

Feb 8   armbian   Mosquitto   MQTT   OrangePI PC

Прошивка ESP8266 модулей с помощью esptool на Orange Pi

Wi-Fi модуль ESP8266 на сегодняшний день является, пожалуй, самым популярным устройством среди радиолюбителей и энтузиастов, позволяющим подключать свои проекты к сети Wi-Fi и организовывать “Интернет вещей”.
SoC ESP8266 построен на базе процессора Xtensa LX106 фирмы Tensilica
У меня оказался модуль ESP-07,схема подключения для прошивки :

тестировал на ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.15-sunxi
В терминале OrangePi:

armbian-config --> System --> Hardware

включаем uart3 – это 8,10 (PA13,PA14) пины на гребёнке OrangePi
подключаем к OrangePi данный модуль

Утилита для загрузки прошивки

В данном случае мы используем esptool – это утилита на базе Python, разработанная Фредриком Албергом (Fredrik Ahlberg).

apt upgrade && apt install python-pip -y
pip install --upgrade pip
pip install setuptools
pip install esptool

команда flash_id
перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --chip esp8266 --port /dev/ttyS3    flash_id

вывод команды:

esptool.py v2.2.1
Connecting...
Chip is ESP8266EX
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4013
Detected flash size: 512KB
Hard resetting...

видим, что модуль содержит 512Kbyte флеш памяти.

Прошьём ESP-link

Возможности проекта ESP-link ESP-LINK: Wifi-Serial Bridge
•Прозрачный шлюз между Wi-Fi и последовательным портом для отладки и обмена данными
•Программирование микроконтроллеров AVR/Arduino модулей ESP8266, LPC800 и других с последовательным интерфейсом по «воздуху» через WiFi.
•Встроенные протокол STK500V1 для загрузки файла с прошивкой AVR через встроенный WEB-сервер.
•Отправка HTTP REST запросов через интернет
•MQTT клиент для связи микроконтроллера с сервисами

Загрузка прошивки для ESP8266:

curl -L http://s3.voneicken.com/esp-link/esp-link-v3.0.14-g963ffbb.tgz | \
    tar xzf -
cd esp-link-v3.0.14-g963ffbb

очистка флеш ESP8266: перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --chip esp8266 --port /dev/ttyS3   erase_flash

прошивка для модуля 4Mbit / 512Kbyte
перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)

esptool.py --port /dev/ttyS3  write_flash -fs 4m -ff 40m \
    0x00000 boot_v1.6.bin 0x1000 user1.bin \
    0x7C000 esp_init_data_default.bin 0x7E000 blank.bin

отсоединяем GPIO0 модуля от земли, перезагружаем модуль и подсоединяемся к появившейся точке доступа, IP вебинтерфейса http://192.168.4.1/

Feb 5   armbian   ESP8266   OrangePI PC

Libgpiod “New GPIO Interface for User Space” OrangePI

Новая библиотека для работы с GPIO, обеспечивает работу со всеми выделенными выводами SOC и добавляет несколько новых функций, не присутствующих в устаревшем интерфейсе sysfs.
Также возможна паралельная работа с GPIOs.

тема sgjava на форуме armbian
ставим хидеры ядра:
в терминале: armbian-config -> Software -> Headers

sudo apt-get install libtool pkg-config 
git clone https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git 
cd libgpiod 
mkdir -p include/linux 
cp /usr/src/linux-headers-$(uname -r)/include/linux/compiler_types.h include/linux/.
 
./autogen.sh --enable-tools=yes --prefix=/usr/local CFLAGS="-I/usr/src/linux-headers-$(uname -r)/include/uapi -Iinclude" 

make 
sudo make install 
sudo ldconfig

README
cnx-software

Jan 29   armbian   Libgpiod   OrangePI PC

Linphone version: 3.12 на OrangePi

Linphone (англ. Linux Phone) — кроссплатформенный программный клиент IP-телефонии в стандарте SIP с открытым исходным кодом, распространяемый по лицензии GNU GPL. Программа Linphone предназначена для организации аудио и видео-вызовов, а также обмена текстовыми сообщениями посредством Интернета.

Консольные приложения linphonec и linphonecsh version: 3.12.0
linphonec — версия программы для работы из командной строки.
linphonecsh — консольная программа для управления работающей в фоновом режиме программой linphonec
Сборка:
git clone https://github.com/ua3nbw-cf/linphone_arm.git
cd linphone_arm
./compil.sh

Проверено на:

Armbian_5.35_Orangepipc_Ubuntu_xenial_default_3.4.113
Armbian_5.37_Orangepipc_Debian_stretch_next_4.14.12
2018   armbian   Linphone   OrangePI PC

Device Tree Mainline Linux

Дерево устройств (ДУ) представляет собой структуру данных для описания оборудования. Mainline Linux использует его для активации и настройки драйверов, доступных в ядре.
В Linux есть механизм для определения подключенных устройств – Device Tree. Это список всех устройств подключенных к компьютеру. Ядро подгружает его при старте и настраивает все устройства согласно настройкам в файле.

«Оверлеями» называются частичные, «опциональные» ДУ.
Оверлей состоит из нескольких фрагментов, каждый из которых нацелен на какой-то конкретный нод (и его суб-ноды). Хотя эта концепция выглядит довольно просто, сам синтаксис на первый взгляд может показаться довольно странным.
Вот оверлей включающий пины (PA11,PA12) GPIO при начале загрузки,
использовал драйвер gpio-leds,
создаём файл you-overlay.dts и вставляем код:

/dts-v1/;
/plugin/;

/ {
	compatible = "allwinner,sun8i-h3";

	fragment@0 {
		target = <&pio>;
		__overlay__ {
			gpio_pin: gpio_pin {
				pins = "PA11","PA12";
				function = "gpio_out";
			};
		};
	};

	fragment@1 {
		target-path = "/";
		__overlay__ {
			gpiopull: gpiopull {
				compatible = "gpio-leds";
				pinctrl-names = "default";
				pinctrl-0 = <&gpio_pin>;
				status = "okay";
				gpio_out_11 {
					label = "GPIO PIN_11";
					gpios = <&pio 0 11 0>;  /* PA11 GPIO_ACTIVE_LOW */
				};
				gpio_out_12 {
					label = "GPIO PIN_12";
					gpios = <&pio 0 12 1>;  /* PA12 GPIO_ACTIVE_HI */
				};

			};
		};
	};
};

ставим хидеры ядра,
как поставить описал в начале этого поста: Кнопки на GPIO Mainline Linux OrangePi

Компилируем:

armbian-add-overlay you-overlay.dts
reboot

проверка:

cat /sys/kernel/debug/gpio

если установлен WiringOtherPi ввести команду: gpio readall:

Raspberry Pi:Настройка/Деревья устройств, оверлеи и параметры

2018   armbian   Device Tree   OrangePI PC   overlay

I2S slave на mainline ядре OrangePi

Для качественного аудио интерфейса требуется перевести I2S в слэйв-режим и подать сформированные на базе внешнего, стабильного клока, сигналы BCLK и LRCLK.

BCLK (Bit Serial Clock) — тактовые импульсы, по срезам которых происходит распознавание нужных пакетов данных.
LRCK (Left/Right Clock) — сигнал разделения левого и правого каналов – по нему ЦАП распознает, когда данные обрабатывать в левом, а когда в правом канале.
DATA — поток данных левого и правого каналов – то, что потом волшебным образом радует наш слух.
При использовании цифрового транспорта на базе OrangePi с подключением к ЦАП по I2S в слэйв-режиме, качество этого самого транспорта перестаёт иметь определяющее значение для конечного звука и дальше всё зависит от реализации самого ЦАП, усилителя, АС.
Используется патч драйвера I2S автор – Nikkov тема на веге и плата формирователя :
Цифровой транспорт с открытым кодом на NanoPI-Neo*
схема подключения к гребёнке :

собирал armbian на Win10 с VirtualBox + Ubuntu 16.04 x64 Developer-Guide_Build-Preparation

копируем файл:
sunxi-opipc-patch-I2S.patch в директорию /build/patch/kernel/sunxi-next

./compile.sh BOARD=orangepipc BRANCH=next RELEASE=jessie BUILD_DESKTOP=no KERNEL_ONLY=on KERNEL_CONFIGURE=yes

make linux-menuconfig (by buildroot)

Device Drivers
<*> -->Sound card support
<*>  -->Advanced Linux Sound Archtecture
<*>   -->ALSA for Soc audio support
          -->Allwinner Soc Audio support
             <*> Allwinner A10 Codec Support
             <*> Allwinner SUN8I audio codec
             <*> Allwinner sun8i Codec Analog Controls Suppor  
             <*> Allwinner A10 I2S Support
             <M> Allwinner A10 SPDIF Support
             <*> Allwinner sun8i I2S Support

Вот собранный имидж для OrangepiPC Armbian_5.35_Orangepipc_Debian_jessie_next_4.13.16.7z
На Opi:

armbian-config --> System --> Hardware

cat /proc/asound/cards

0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
                      H3 Audio Codec
 1 [sndsun8ii2sdac ]: snd-sun8i-i2s-d - snd-sun8i-i2s-dac
                      snd-sun8i-i2s-dac
 2 [allwinnerhdmi  ]: allwinner_hdmi - allwinner,hdmi
                      allwinner,hdmi
2017   armbian   I2S   OrangePI PC

I2S Аудио на mainline ядре OrangePi

Включение I2S аудио на armbian для Allwinner H2 & H3 на mainline ядре 4.13.

собирал armbian на Win10 с VirtualBox + Ubuntu 16.04 x64 Developer-Guide_Build-Preparation

./compile.sh BOARD=orangepipc BRANCH=next RELEASE=jessie BUILD_DESKTOP=no KERNEL_ONLY=on KERNEL_CONFIGURE=yes

make linux-menuconfig (by buildroot)

Device Drivers
<*>-->Sound card support
<*> -->Advanced Linux Sound Archtecture
<*>  -->ALSA for Soc audio support
        -->Allwinner Soc Audio support
             <*> Allwinner A10 Codec Support
             <*> Allwinner SUN8I audio codec
             <*> Allwinner sun8i Codec Analog Controls Suppor  
             <*> Allwinner A10 I2S Support
             <M> Allwinner A10 SPDIF Support

На Opi: cat /proc/asound/cards

0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
                      H3 Audio Codec
 1 [allwinnerhdmi  ]: allwinner_hdmi - allwinner,hdmi
                      allwinner,hdmi

Включение “Line Out”  – линейный выход на Opi (по умолчанию выключен)

amixer -c 0 -q set "Line Out"  100%+ unmute
amixer -c 0 -q set "DAC"  100%+ unmute
speaker-test -twav -c2

ставим headers(нужный пакет ищем после сборки имиджа в build/output/debs)
в моём случае:

dpkg -i linux-headers-next-sunxi_5.35_armhf.deb

Get the source & Build:

git clone https://github.com/ua3nbw-cf/ak4554.git
cd ak4554
make all install
armbian-add-overlay sun8i-h3-I2S.dts
reboot

в файле /boot/armbianEnv.txt появится строка:

user_overlays=sun8i-h3-I2S
проверка:

root@orangepipc:~# cat /proc/asound/cards
 0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
                      H3 Audio Codec
 1 [i2S            ]: i2S - i2S
                      i2S
 2 [allwinnerhdmi  ]: allwinner_hdmi - allwinner,hdmi
                      allwinner,hdmi
root@orangepipc:~# speaker-test -twav -c2 -Dhw:1
root@orangepipc:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Codec [H3 Audio Codec], device 0: CDC PCM Codec-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: i2S [i2S], device 0: 1c22000.i2s-ak4554-hifi ak4554-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: allwinnerhdmi [allwinner,hdmi], device 0: 1c22800.i2s-i2s-hifi i2s-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Ну и запись по I2S

root@orangepipc:~# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Codec [H3 Audio Codec], device 0: CDC PCM Codec-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: i2S [i2S], device 0: 1c22000.i2s-ak4554-hifi ak4554-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
2017   armbian   I2S   OrangePI PC

Real Time Kernel and LinuxCNC на Orangepi

Real Time Kernel – система должна гарантировать время реакции ,чтобы уменьшить задержки, количество процессов необходимо свести к минимуму. Для этого нужно не только убрать все лишние программы и отключить все неиспользуемые демоны, но и пересобрать ядро, оставив лишь действительно необходимый функционал.
LinuxCNC – универсальная программа, которая может управлять фрезерно-гравировальным станком, лазерной и плазменной резкой, а так же любыми другими станками.

собирал armbian на Win10 с VirtualBox + Ubuntu 16.04 x64 Developer-Guide_Build-Preparation

RT патч для версии ядра 4.13 RT патч

Собранный имидж с RT патчем для OrangePi-PC Armbian_5.34_Orangepipc_Debian_jessie_next_4.13.8-rt1_desktop

Сборка LinuxCNC на этом имидже :

sudo apt install cython uuid-runtime libtool  libgl1-mesa-dev libglu1-mesa-dev libudev-dev intltool python-pip libjansson-dev liburiparser-dev libwebsockets-dev uuid-dev libavahi-client-dev libprotobuf-dev protobuf-compiler libmodbus-dev libglib2.0-dev libgtk2.0-dev tcl-dev tk-dev libreadline-gplv2-dev gettext python-tk -y libboost-python-dev libboost-serialization-dev libboost-thread-dev bwidget libtk-img tclx  libxaw7-dev libc6  libgcc1   libudev1  libuuid1  libzmq3  yapps2-runtime

собираем от user (не от root`a)

git clone git://github.com/linuxcnc/linuxcnc.git linuxcnc-dev
cd linuxcnc-dev/src
./autogen.sh 
./configure --with-realtime=uspace
make
sudo make setuid

запуск теста:

~/linuxcnc-dev/scripts/latency-test

Тема на форуме cnc-club.ru LinuxCNC + Orange Pi

2017   armbian   LinuxCNC   OrangePI PC   Real Time Kernel
Ctrl + ↓ Earlier