77 заметок с тегом

armbian

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/
скорость не мерял, «Чудес не бывает». но вполне достаточно, чтобы смотреть ютюб и прочие видео.

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

в файл 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
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

8 февраля   armbian   Mosquitto   MQTT   OrangePI PC

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

PlatformIO — это проект, созданный разработчиками из Украины. Он включает в себя утилиту коммандной строки, через которую можно запускать компиляцию и загрузку программ на несколько семейств микроконтроллеров (Atmel AVR, Atmel SAM, ST STM32, TI MSP430 и другие). При этом поддерживаются разные наборы библиотек(на сайте PlatformIO называются фреймворками): Arduino, Energia, mbed, а также нативный код для Atmel AVR, espressif, MSP430.

схема подключения модуля ESP8266 к OrangePi из предыдущего поста Прошивка ESP8266 модулей на Orange Pi
Устанавливаем PlatformIO

apt upgrade && apt install python-pip -y
pip install --upgrade pip
pip install setuptools
pip install -U platformio

Для начала посмотрим, какие платы поддерживаются. Для этого есть команда:

platformio boards

Создадие каталога и шаблона проекта с помощью PlatformIO
у моего модуля esp07 flash всего 512Kbyte, поэтому выбрал модуль esp01:

mkdir esp-simple
cd esp-simple
platformio init -d ./ -b esp01 --ide sublimetext

добавим в файл platformio.ini строки:

upload_port = /dev/ttyS3
upload_speed = 115200

Создадим в каталоге src/ файл Main.cpp со следующим содержимым:

#include <Esp.h>

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(900);
}

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

pio run

Процесс прошивки не сложнее процесса сборки, перед командой кратковременно нажать кнопку сброс (подключена к RST модуля)
uart3 на OrangePi должен быть включен (armbian-config > System > Hardware)

pio run -t upload
7 февраля   armbian   ESP8266   Platformio

Прошивка 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/

5 февраля   armbian   ESP8266   OrangePI PC

Кнопки на GPIO Mainline Linux OrangePi

Мы можем использовать GPIO (линии ввода/вывода общего назначения ) и с минимальными ресурсами отслеживать изменения на линии GPIO.
Также мы можем запустить любой скрипт или программу с помощью кнопок подключённых к GPIO.
тестировал на mainline ядре 4.14.15-sunxi

Пример подключения пяти нормально разомкнутых кнопок:

использовал драйвер gpio-keys
ставим хидеры ядра, в терминале:

apt upgrade

armbian-config -> Software -> Headers

по умолчанию в  armbian, модуль gpio-keys не установлен.
ставим модуль gpio-keys :

git clone https://github.com/ua3nbw-cf/gpio-keys
cd gpio-keys
make all install

вот фрагмент оверлея gpio-keys.dts из папки gpio-keys

g-keys_up {
					label = "GPIO KEY_UP";
					linux,code = <103>; /* KEY_UP, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 7 1>; /* PA7 GPIO_ACTIVE_LOW */
				};

				g-keys_down {
					label = "GPIO KEY_DOWN";
					linux,code = <108>; /* KEY_DOWN, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 8 1>; /* PA8 GPIO_ACTIVE_LOW */
				};

				g-keys_left {
					label = "GPIO KEY_LEFT";
					linux,code = <105>; /* KEY_LEFT, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 9 1>; /* PA9 GPIO_ACTIVE_LOW */
				};

				g-keys_right {
					label = "GPIO KEY_RIGHT";
					linux,code = <106>; /* KEY_RIGHT, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 10 1>; /* PA10 GPIO_ACTIVE_LOW */
				};
				g-keys_enter {
					label = "GPIO KEY_ENTER";
					linux,code = <28>; /* KEY_ENTER, see /usr/include/linux/input-event-codes.h */
					gpios = <&pio 0 21 1>; /* PA21 GPIO_ACTIVE_LOW */
				};

можно менять linux,code и gpios
компилируем:

armbian-add-overlay gpio-keys.dts
reboot

проверяем:

cat /sys/kernel/debug/gpio
evtest

в моём случае device event number 1 (gpio-keys-user)

готово, кнопки подключённые к GPIO дублируют кнопки обычной клавиатуры.

Компилируем демон, который будет следить за нажатиями

git clone https://github.com/elopez/keybinder.git
cd keybinder
make install

проверяем:

keybinder /dev/input/event1

event1 это мой event номер один, у вас event может быть другой.
жмакаем кнопки которые подключили к GPIO
Идем /etc/ правим keybinder.conf
для примера опять моргаем светодиодами на плате

28,reboot
103,echo heartbeat | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
105,echo none | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
106,echo heartbeat | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
108,echo none | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"

.....................................................................

Для автозапуска после перезагрузки
Идем /etc/ правим rc.local ……………..
до строки exit
добавляем строку

/usr/local/bin/keybinder /dev/input/event1 >/dev/null &

Device Tree Mainline Linux

1 февраля   armbian   Device Tree   GPIO   overlay

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

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
25 января   armbian   Linphone   OrangePI PC

Автомаунт флешек с помощью pmount в Debian(stretch)

Для debian(stretch) в репозитарии нет пакета usbmount для автоматического монтирования внешних накопителей usb
Решение для автоматического монтирования внешних накопителей usb с помощью pmount:

apt-get install pmount

Create file /etc/udev/rules.d/usbstick.rules
Insert:

ACTION=="add", KERNEL=="sd[a-z][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"

Create file /lib/systemd/system/usbstick-handler@.service
Insert:

[Unit]
Description=Mount USB sticks
BindsTo=dev-%i.device
After=dev-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/automount %I
ExecStop=/usr/bin/pumount /dev/%I

Create file /usr/local/bin/automount
Insert:

#!/bin/bash

PART=$1
FS_LABEL=`lsblk -o name,label | grep ${PART} | awk '{print $2}'`

if [ -z ${FS_LABEL} ]
then
    /usr/bin/pmount --umask 000 --noatime -w --sync /dev/${PART} /media/${PART}
else
    /usr/bin/pmount --umask 000 --noatime -w --sync /dev/${PART} /media/${FS_LABEL}_${PART}
fi
sudo chmod +x /usr/local/bin/automount
reboot

The mount points/folders names will be in the format of /media/PartitionLabel_sdxy. In case a partition has no label, it will just be /media/sdxy.
for example:

/media/My_sdb5

Auto mount USB stick on plug-in without UUID

18 января   armbian   pmount   stretch

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:Настройка/Деревья устройств, оверлеи и параметры

4 января   armbian   Device Tree   OrangePI PC   overlay
Ctrl + ↓ Ранее