Сообщество - Arduino & Pi

Arduino & Pi

1 493 поста 20 825 подписчиков

Популярные теги в сообществе:

16

Arduino как данные с com порта вывести в веб?

Здравствуйте, уважаемые пикабушники!

Немного предыстории: сам я не разбираюсь ни в программировании на должном уровне, ни на проектировании умных вещей, опыта работы с платой arduino не имею. Специализируюсь на защите информации.


К сути, столкнулся с проблемой, в силу обстоятельств мне понадобилось срочно освоить что такое arduino, как это и с чем есть. Окунувшись в это всё за неделю плюс минус получил базовые навыки, которых хватило на создание прототипа нужного. Далее столкнулся с проблемой, плата arduino подключена к ноутбуку через кабель Микро юсб - юсб. Сама плата посылает на так называемый com порт (да я знаю, что это не ком порт, но плата воспринимает его как ком порт) некую информацию, вывести эту информацию на сам ноутбук в красивом окошечке у меня получилось (помогло готовое решение Putty).


Суть проблемы, нужно что бы эти данные которые поступают от платы на ком порт выводились в веб-интерфейс. Знаний у меня в этом полный ноль, прошу если возможно подскажите готовое решение или помогите решить вопрос. Если будете объяснять то лучше объясняйте, как для человека, который в этом не смыслит совсем.


Вводные данные: плата -Arduino leonardo ethernet, кабель для подключения обычный кабель от android Микро юсб - юсб. Порт к которому подключена плата обычный юсб на ноутбуке, информацию которую посылает плата состояния датчика. Вывести необходимо в веб среду.

Показать полностью
189

Теплица на Ардуино Мега. Часть 8.

Теплица на Ардуино Мега. Часть 8.

Этим постом подытожу зимне-весенние мероприятия по созданию и запуску умной теплицы. 10 июня собран первый урожай в количестве пары килограммов огурцов. Вроде бы все хорошо, теплица сама выращивает огурцы без посторонней помощи, остается только собирать. Хотя нет, вру. Я слежу, приезжая по субботам, чтобы плети не хулиганили, заплетались как положено, что-то подрезаю, подвязываю. Жена вносила подкормку путем заливания 0,5л концентрированного раствора в шланг подачи воды. При включении набора воды все это перемешалось и разбавилось. Как выглядят огурцы в нашей теплице можно глянуть на видео. Теперь о планах на лето:

1. Теплица и дальше будет выращивать самостоятельно огурцы, а я их собирать.

2. Жена будет вводить подкормку, когда необходимо, путем заливки раствора в шланг подачи воды.

3. Будут установлены лампочки красно-синие светодиодные китайские, типа ультрафиолетовые с автоматическим включением (они уже приехали).

4. К осени заменю реле для обогревателя воздуха и подогрева почвы на триаки. Схему смотри в посте про самогонный аппарат.

5. Посмотрю как долго можно выращивать осенью растения в этой теплице, подытожу - выложу видео и измененный скетч.

6. На зиму тоже есть планы, буду держать в курсе по мере реализации.

Показать полностью
107

Ардуино и изготовление спиртных напитков.

Предыстория: Давно не виделись с друзьями-пенсионерами и собрались посетить сауну. Один мой товарищ, а по совместительству бывший начальник, угощал спиртными напитками собственного производства - неплохим бренди и рябиновой настойкой. Во время беседы он пожаловался на то, что в процессе производства спирта ему неудобно регулировать температуру исходного сырья, а поскольку я прихвастнул своей умной теплицей (см. мои посты), то предложение родилось само собой: помочь автоматизировать процесс нагрева. Я тут же сбросил ссылки с Али, что нужно для этого, а он, увидив копеечные цены, тут же и заказал. А поскольку блок питания 12в в железном корпусе валялся у него в гараже, то как бы все было в наличии.

Ну что ж, обдумав на трезвую голову будущий проект, я позвонил и предложил процесс автоматизации сделать более глубоким (а ардуино уно это позволяет), но получил отказ - нужно только универсальный контроллер подогревателя, регулируемый по температуре. Собрал схему на макетной плате, написал код - попросил приехать, глянуть функционал и одобрить к изготовлению. Но "заказчик" долго не приезжал - был занят. За это время мне попалась плата от сгоревшего устройства с пьезодинамиком, выпаял его и прикрутил к проекту. Теперь будет со звуком.


Теперь схемы. Сначала планировал использовать для проекта ардуиновские реле, но опыт эксплуатации теплицы показал, что лучше для таких мощных нагрузок его не использовать. Решил использовать триак. Купил что было в магазине спаял платку по такой схеме:

Конечно же для триака присобачил сверху корпуса радиатор (от процессора, валялся).


Для кнопочек и светодиодов сделал платку по такой схеме:

Вот плата кнопок и дисплей с ней же в одном блоке, распечатанном на 3Д принтере (наверное зря прозрачный пластик, но он уже был заправлен в принтер, да и светодиоды хорошо просвечивают).

Для Ардуино решил сделать шилд:

Схему шилда как всегда прилагаю:

Работу устройства я осветил в видео.

Скетч тоже выложу, как обычно, может пригодится кому-то. Заметил, что ссылки на Гитхаб нельзя вставлять ни на Пикабу, ни на Ideone. А посему ссылку на мою библиотеку для аналогового датчика температуры (а она потребуется, если захотите воспользоваться скетчем) смотрите в описании к видео на ютубе, по той ссылке, что я дал выше.

Теперь осталось дождаться, пока товарищ проверит все на практике.

Показать полностью 6
84

Проигрыватель на базе Raspberry Pi 3 модель B (часть 4)

Очередная порция доработок проигрывателя.


Это продолжение, начало здесь: часть 1, часть 2, часть 3.


Теперь прототип имеет следующий вид:

Как видно из фото, для того, чтобы разместить розетку для подключения кабеля питания я перенёс блок питания и релейный включатель/выключатель питания.


Также я установит панель с разъёмами:

Ethernet Удлинитель (30 см)

HDMI Удлинитель (30 см)

Запрессованные гайки под дюймовую резьбу, поэтому мне пришлось искать винты от HDD, они конечно были найдены, шлиц под биту Torx t8.

Также я сделал переходник с Jack, диаметр 3,5 мм, 4 контакта на розетки RCA. Подробно о разъёме для передачи  аналогового звука/изображения у Raspberry Pi 3 модель B здесь.

Подробная техническая информация доступна на этой странице.
Показать полностью 5
170

Виртуальный полет в WarThunder

В продолжение поста о контроллере для авиасимов.( http://pikabu.ru/story/kontroller_dlya_aviasimulyatorov_svoi... )

WarThunder используется просто для упрощенного ознакомления народа с контроллером. Вполне применим для Ил-2, MFSX и других симуляторов. Еще много органов управления предстоит припилить, так что ждите развития событий.

Подробнее в описании к видосу.

Показать полностью
2209

Контроллер для авиасимуляторов своими руками

Контроллер для авиасимуляторов своими руками

Добрый день, уважаемые Пикабушники! Выношу на Ваш суд разработку контроллера для авиасимуляторов, спроектированную и собранную мной и двумя моими товарищами.

Контроллер авиасимов на Arduino Micro + инерционный трекер на Arduino Nano с акселерометром GY-85 + VR-Box. Пока что первая, сырая, но, тем не менее, уже эффектная версия. Многое еще подлежит переделке, но впечатлений и эмоций очень много.

Узел Педали+РУС начерчен и изготовлен из стали при помощи плазменной резки, всё на подшипниках и газ-лифтах. Оси на датчиках Холла. РУД временно собран из Lego и потенциометра на 10КОм. Рукоятка РУС начерчена и распечатана на 3д принтере.

В WarThunder показания приборов тянутся из игры и выводятся в WEB-интерфейс.

Пока из очевидных недостатков тяжелая ручка управления самолетом с большим ходом. Во первых масса не дает работать возвратным пружинам корректно срабатывать (при сборке под руку подвернулась стальная толстостенная труба, далее будет алюминиевая), во вторых ручка, вероятнее всего, будет укорочена, а механизм джоя поднят выше и уменьшен диапозон свободного хода, пока же трубой стучим по коленям)) Зато ручка "быстросъем", на защелках от пневматики.

Как сделать трекер, хорошо описано во многих статьях в рунете, в том числе и на Пикабу, а в софтвенной части контроллера нам очень помог проект MMJOY2.

Вот, получился такой небольшой сумбур, первопост всё-таки.

Как только рейтинг позволит, выложу видео.

Показать полностью 1
205

Udoo x86 для гиков и не только

На днях в мои руки попала любопытная железка. Признаться я давно её ждал со времени анонса на кикстартере. И даже чуть-чуть отчаялся дождаться (т.к. мне слили причины, почему задерживался выпуск, та еще санта-барбара была). А заполучив её, будет преступлением не сделать хоть какой-нибудь обзор.

Что собой представляет Udoo x86?


Это мини-компьютер с 4х ядерным процессором на х86 архитектуре, имеет внушительный потенциал, который может выделить её среди сородичей. Есть 4 версии, различающиеся моделью процессора, размером оперативной памяти и наличием встроенного EMMC диска на 32GB.


Мне досталась версия Advanced с 4х ядерным процессором Intel Celeron N3160, EMMC на 32GB и 4GB DDR3L двухканальной оперативной памяти (что меня больше всего расстроило, хотелось-то все 8).

Из разъемов железка имеет:

разъем питания 12V.

стандартный SATA

Gigabit Ethernet

3 x USB 3.0 type-A

1x HDMI

2x miniDP++

Microphone + Headphone combo

2x UART ports

IR interface

Digital I/O Pins Up to 20 extended GPIOs

Arduino 101-Compatible:

Digital I/O Pins 14 (PWM)

Analog I/O Pins 6 (10 Bits of resolution)

и еще много чего...


В интернете уже есть видео обзор достоинств от производителя в сравнении с Raspberry Pi3, но хочется самому поиграться.


Итак, запускаем:

Первым делом конечно же был нажат Esc при запуске и просмотрен BIOS.

По моему скромному мнению (с коим вы, конечно, можете быть не согласны в корне) количество всевозможных настроек BIOS в некоторой степени коррелирует с количеством действий, которые можно произвести с железкой. Исходя из перечисленного выше, я был готов увидеть возможность «включить/выключить» порты, но разделы Advanced меня немного шокировали обилием переключателей режимов работы и выбора объемов памяти. А наблюдательные читатели увидят курсор мыши. Да, на этом сине-белом экране она работает.

Далее была исследована возможность «с чего бы такого загрузиться?» и самое главное «как?».

Ответом на этот вопрос подсказали «Boot manager» и «Boot From File». Последний открывает удобное меню выбора необходимого файла с путешествием по каталогам.

Boot Manager видит встроенный жесткий на 32Гб, флешки и диски на SATA-шлейфе. Так же есть слот под microSD карту и mini PCI-E, с которых загрузится скорее всего тоже получится.

Доступна загрузка как в режиме UEFI так и Legacy.

А Возможные операционные системы варьируются в пределах от Win7 до Win10, любого Linux и Android x86. Проверим.


Валявшаяся рядом флешка на 8гб с Ubuntu 14 версии тут же была воткнута в USB порт и загружена без установки за 60 секунд. Думаю может и быстрее если использовать не самую дешевую как я. Пробуем втыкаем Ethernet провод, запускаем огненного лиса и… интернет есть, видео работает вплоть до 1080р онлайн хотя и не идеально (имхо), и я не Линуксовод, поэтому прошу прощения не знаю как и чем еще по тестировать, но мне понравилось, работает из коробки.


Далее из ящика стола был извлечен 2.5 SATA диск, оставшийся у меня после замены сотрудникам их на SSD из-за начавшегося процесса осыпания. Пока ошибок не много, и он живой, но количество их увеличивается. Но тут производители чуть-чуть подвели, ибо разъем для питания этого диска от платки предполагает наличие вот такого переходника, коего в обычных компьютерных магазинах я не нашел, но зато их полно на aliexpress.

Можно конечно и самому сделать как здесь, и даже подцепить HDD 3.5 как здесь:

Цепляем диск, цепляем загрузочную флешку с win10x64 и за несколько кликов и несколько минут получаем установленную на 2.5 диск Windows 10. Автоматическая установка драйверов Win10 работает медленно, но работает, и пока я ставил драйвера на видеокарту, количество неопределенных потихоньку уменьшалось. обновления,… мдааа. Тут я понял что нескоро я смогу получить возможность полноценно работать. Причиной этого, как вы уже догадались, является вот этот процесс:

Как и в убунте сходу заработала сетевая карта и видео с ютуба в 1080р открылось. И показывало на отлично, без подтормаживаний и фризов. Глаз шутерного геймера очень быстро выцеплял микрофризы при запуске видео 1080р в убунте, и так бесившие меня еще в мелких видео-проигрывателях на слабых процессорах с встроенными декодерами. Но здесь сколько я не пытался, но подобного поведения не увидел.

Но что нам один монитор? С одним каждый может. И я заказал переходнички DisplayPort=>DVI, а по получении стянул со столов коллег их мониторы для теста на пол часа. Чтобы уж совсем хардкорно, было запущено 3 окна хрома с видео на ютубе в качестве 1080р. Результат:

Вполне работает и даже так как надо, без замедления, но периодически, раз в 3-4 секунды микролаги на 5-10 кадров проскакивают на одном из экранов. С чем это связано не знаю. Пробую запустить скачанный 1080р мультик через Player Classic с набором кодеков:

Красиво, хорошо, но проблема та же. Изрядно перебрав варианты нашел решение: исчезают микролаги только если оставить два одинаковых приложения, а в третье окно запустить другое, например стандартный виндовый Media Player. В таком виде все три монитора показывают разное видео в 1080р без каких-либо тормозов и лагов вообще.


Тестить качественно 4К возможности нет, по причине отсутствия доступа к мониторам и телевизорам такого разрешения. На этих же с ютуба в 4К ролики запускаются, но проигрываются медленно. А скачанное демо в 4К Player Classic показывал только на 10-15 fps. Виндовый же его не осилил вовсе. Просто рабочий стол же с разрешением в 4К думаю подключится без проблем.


Поигравшись с Win10 и вызвав немало зависти у сотрудников, проходящих мимо, я отдал мониторы и перезагрузил устройство… и пропустил момент выбора boot загрузчика. С HDD загрузилась Win7x64, которая работала 2 года на ноутбуке и не была потерта на другом разделе. А загрузилась по причине установки Win7 в legacy, а Win10 в UEFI режимах. Загрузчик же для Win10 записался на 32гб встроенный диск. Это оставило загрузчик семерки на HDD и позволило Win7 беспрепятственно загрузится. Увидев приглашение войти в систему, я очень удивился живучести Win7, запустившейся на совершенно другом железе, и даже обрадовался, но рано. Мышь и клавиатуры не работали. Windows устройства на USB 3.0 без драйверов не желала воспринимать. Но чтобы попытаться скормить ей драйвера нужно зайти в систему. Что делать? А нужно зайти снова в биос и выбрать USB mose/keyboard = Enable.

После этих манипуляций система позволила ввести пароль и пустила внутрь. Активация слетела, это понятно, но тут меня поджидало другое разочарование: большинства драйверов для WIN7 нет.


Полностью драйвера есть только для win10, все остальные версии окошек вполне могут запускаться, но вот пользоваться всеми плюшками просто так не получится (по крайней мере на данный момент и из коробки). На форуме есть темы где люди успешно подсовывают драйвера для USB 3.0, Ethernet'а и т.д. или можно самому попытаться нарыть подходящий и скормить.


Ещё меня очень интересовал процессор. 4 ядра х86 архитектуры в такой крошке с заявленной неплохой производительностью? Проверим, сравним. Для сравнения далеко ходить не нужно, моя рабочая лошадка PC башенного типа с процессором Intel Core i5 760 (2.8 Ghz по умолчанию), старенький pentium D 2.8 Ghz нашего инженера, и вполне свежий чистокровный китаец планшетка-нетбук 4Good с процессором Atom Z3735F. Т.к. на Core i5 собрана суровая рабочая станция в коробке размера Full Tower, энергопотреблением 95W на процессор и 450W на всю машину, то она по-умолчанию будет олицетворять комфортную работу всего что только нужно. Atom Z3735F главный конкурент в этом споре с потреблением 2.2W, а Pentium D покажет насколько далеко мы эволюционировали за 10 лет (95W). Для справки Celeron N3160 2.24 Ghz имеет около 6W энергопотребления. Чтобы более-менее равноценно сравнить я взял AIDA64 Extreme 520 (что было под рукой), и запустил тесты на всех машинках. Результаты занес в таблицу:

Т.к. тесты разные, где-то мб/с, где-то ns, а где-то цифры в попугаях, то я привел результаты к процентному виду, взяв Core i5 за 100%.

Все тестировались на одной версии операционной системы Win7 x64 (кроме планшетки 4Good на Win10).


Здесь из обще массы выбились: планшет с Atom Z3735F по параметру задержки памяти показал 311ns, уж не знаю почему, но он показал себя хуже даже чем старенький Pentium c DDR2 памятью, задержки на которой должны били быть закономерно больше, а Udoo x86 показал минимальные задержки в 71ns.


Еще интересным моментом оказался тест на AES шифрование, по которому «малыши» обогнали рабочий ящик. А всё потому что новые поколения процессоров имеют инструкцию AES, которая позволяет показывать большую производительность именно на этой операции.


Следующим этапом было решено тестировать EMMC, в ход пошла уже знакомая флешка с Ubintu 14. 20 минут и ОС готова к работе. Холодный старт с EMMC теперь уже занимает 27 секунд. Возможно в своей заточенной ОС они и добились в своем видео загрузки в 17 секунд, но у меня под рукой был обычный дистрибутив для десктопа со всем сопутствующим.


Udoo x86 имеет Arduino-совместимые выводы. За это отвечает второй процессор Intel Quark SE core 32 MHz plus 32-bit ARC core 32 MHz или проще Intel Curie. Как я понял из даташита, в нём то как раз и спрятан акселерометр с гироскопом.

Подключается же он к основной системе через USB, это видно в BIOS в разделе управления USB портами. Это даёт возможность работать обоим процессорам асинхронно. Чтобы работать с Curie нам понадобится Arduino IDE желательно последней версии и модуль для ядра Curie. Но если рассказывать о тестах Arduino — это потянет на отдельную статью.


Итоги: железка мне лично очень понравилась, крошка имеет внушительную вычислительную мощность, внушительную кучку всевозможных портов и разъемов плюс внушительные графические возможности, может потягаться с моим персональному компьютером на Core-i5, и хотя Udoo уступает ему, но если сравнить размер: с ладошку VS железный ящик на столе, и сравнить энергопотребление 6W против 95W, это не только простительно, но и вызывает у меня немало восхищения. Да та таких два десятка внутрь моего компа влезет! А если их кластер собрать? И у меня есть еще много идей куда её пристроить. Из минусов: требуется доп.питание 12V., требуется коробочка, и если подключать sata-диск то требуется переходник для питания или нужно делать его самому. На главный же вопрос ответ напрашивается сам собой: Udoox86 интересна для гиков, и довольно проста в освоении для большинства умеющих держать мышь и следовать инструкциям. В случае windows всё ставится и работает из коробки, в случае linux тоже работает из коробки, хотя и могут быть подводные камни (как я столкнулся при попытке подключить убунте 3 монитора).


Статья моя, тег моё, в комментах ссылка на мою статью на хабре.

Показать полностью 15
69

Как сделать Raspberry Pi доступным из любой точки мира

Введение


В прошлой статье я рассказал о том, как развернуть домашнее облачное хранилище на базе подготовленного командой cusdeb.com образа для Raspberry Pi 2 и 3 с предустановленным Nextcloud 11 (кстати, совсем недавно мы обновили образ до 12-й версии), а прямо сейчас я расскажу о том, как делать сервисы наподобие Nextcloud доступными извне. Несмотря на то, что на протяжении всей статьи упоминается Raspberry Pi, ничего из сказанного здесь не ограничивает вас в использовании любого другого устройства.


«Белые» динамические и статические IP-адреса


Все IP-адреса протокола IPv4 делятся на «белые» (более формально – публичные, глобальные или внешние) и «серые» (более формально – частные, локальные или внутренние). К устройству с «белым» IP-адресом можно получить доступ из любой точки мира, т.к. «белые» IP-адреса маршрутизируются в Интернете, в отличие от «серых» IP-адресов.

«Белые» IP-адреса, в свою очередь, делятся на динамические и статические. Динамические «белые» IP-адреса являются сегодня большой редкостью, но если вам все-таки повезло, то у вас есть возможность с небольшими трудозатратами абсолютно бесплатно сделать свой RPi (или любую другую машину) доступным через Интернет. Дело в том, что сервис NO-IP позволяет зарегистрировать домен третьего уровня и посредством специального клиентского ПО в фоновом режиме отслеживать изменение вашего динамического IP-адреса и при необходимости обновлять DNS, чтобы ваша машина была всегда доступна по зарегистрированному вами домену.

Если у вас по той или иной причине нет динамического «белого» IP-адреса, то почти наверняка у вас есть возможность купить у вашего провайдера «белый» статический IP-адрес. На самом деле это является наиболее надежным и наименее трудозатратным решением. Вот расценки трех провайдеров, которые у меня всегда на слуху.

* ТТК – 250 руб. в месяц

* Ростелеком – 50 руб. активация и 100 руб. в месяц

* Дом.ru – 450 руб. активация и 20 руб. в месяц


Если вы являетесь клиентом провайдера Дом.ru, то не спешите покупать у него статический «белый» IP-адрес, т.к. у вас определенно есть возможность получить динамический «белый» IP-адрес абсолютно бесплатно. Для этого убедитесь в своем личном кабинете, что у вас выключен NAT.


Проброс портов


Этот этап необходимо пройти в том случае, если у вас есть «белый» IP-адрес (вне зависимости от того, динамический он или статический). Основная идея здесь заключается в том, чтобы маршрутизатор, который стоит перед вашим RPi, принимал все запросы, а затем передавал их одноплатнику. Для каждого маршрутизатора эта процедура выглядит по-разному, и в Сети можно легко найти описание той, которая будет применима именно для вашего маршрутизатора. Вот как она выглядит для моего ZyXEL Keenetic DSL.

Для начала нужно назначить RPi статический адрес в локальной сети, чтобы при перезагрузке устройства маршрутизатор случайно не дал ему IP-адрес отличный от предыдущего. Для этого переходим на страницу «Домашняя сеть» и на вкладке «Устройства» выбираем свой RPi, подключенный к локальной сети. В появившемся диалоговом окне ставим галочку напротив «Постоянный IP-адрес».

Теперь можно выполнить сам проброс портов. Для этого переходим на страницу «Безопасность» и на вкладке «Трансляция сетевых адресов (NAT)» добавляем новое правило. В появившемся диалоговом окне указываем «Broadband connection (ISP)» в качестве «Интерфейса». Теперь все зависит от того, какой сервис нужно сделать доступным извне. В данном конкретном примере я рассмотрю Nextcloud, до которого в моей локальной сети можно дотянуться по адресу http://192.168.1.37:8001/nc. Таким образом, указываем «TCP» в качестве «Протокола» и говорим, что все запросы, которые приходят на 80-й порт маршрутизатора, нужно передавать на http://192.168.1.37:8001.
После этого сервис будет доступен через <белый IP-адрес>/nc без указания номера порта 8001. Если используется «белый» статический IP-адрес, то на этом можно остановиться. В данном случае последним штрихом может стать только регистрация домена, к примеру, на domain.com. Если же используется «белый» динамический IP-адрес, то сервис будет доступен до тех пор, пока не поменяется этот IP-адрес. Таким образом, необходимо воспользоваться услугами сервиса, предоставляющего услуги динамического DNS. В данной статье я предлагаю воспользоваться NO-IP.


NO-IP


Для начала работы с NO-IP перейдите на страницу регистрации, создайте Free'шную учетную запись, зарегистрируйте там же домен третьего уровня и активируйте вашу учетную запись. В качестве доменного имени я выбрал denismosolov.ddns.net. Также рассмотрите апгрейд вашего аккаунта с Free до Enhanced, иначе вам потребуется подтверждать ваш домен каждый месяц. (Тем не менее, лично мне цена $24.95 в год за эту услугу показалась слегка завышенной.) После этого я могу получать доступ к сервису, который крутится на моем устройстве, через denismosolov.ddns.net, но проблема с динамическим IP-адресом все еще остается актуальной. Для того чтобы RPi всегда был доступен по зарегистрированному домену, на него необходимо поставить специальное клиентское ПО. Если вы используете Raspbian, Debian, Ubuntu или любой другой дистрибутив GNU/Linux на своем одноплатнике, то я не рекомендую тратить время на официальный клиент от NO-IP под названием DUC (DNS Update Client). Во-первых, он не обновлялся с 2008-го года, а во-вторых, есть универсальное решение – inadyn, которое на данный момент поддерживает 25 сервисов, предоставляющих услуги динамического DNS, в числе которых NO-IP. К сожалению, несмотря на то, что пакет с inadyn есть в Debian и Ubuntu, он недостаточно актуален, хотя и поддерживает NO-IP в полной мере. Я предлагаю воспользоваться подготовленным мною Docker-контейнером с самой свежей версией inadyn или собрать контейнер самостоятельно, воспользовавшись проектом cusdeb-services.

Для того чтобы воспользоваться готовым контейнером, клонируйте проект, перейдите в поддиректорию inadyn этого проекта, раскомментируйте блок default@no-ip.com в конфигурационном файле inadyn.conf, добавьте в него параметры своей учетной записи и выполните docker-compose up.

$ git clone https://github.com/tolstoyevsky/cusdeb-services.git

$ cd cusdeb-services/inadyn

$ nano inadyn.conf

$ docker-compose up


После того как вы убедитесь в том, что клиент нормально стартовал и не жалуется на конфигурационный файл, который вы ему подсунули, убейте текущий интерактивный процесс и перезапустите контейнер командой docker-compose up -d. Теперь ваше устройство будет доступно из любой точки мира через Интернет.


IPv6-туннель


Я попытался сделать статью как можно более универсальной и на любой вкус, поэтому решил не останавливаться на паре описанных выше способах решить проблему доступности устройства через Интернет. Дело в том, что есть еще один способ – сделать свой сервер IPv6-only, но в этом случае у клиентов почти наверняка возникнут проблемы с доступом к нему, т. к. их провайдер до сих пор не сделал и шагу в сторону IPv6. Тем не менее, я расскажу об этом подходе, т. к. считаю, что в некоторых случаях он может оказаться очень полезным. К примеру, если вы поднимаете не массовый сервер и знаете своих клиентов в лицо. В этом случае вы можете раздать им простую инструкцию, которая бы рассказывала, как (бесплатно) воспользоваться услугами туннельного брокера для доступа к вашему и другим IPv6-only сервисам.

Для начала предлагаю убедиться в том, что вы все-таки не можете обращаться к IPv6-only сервисам, иначе все описанное далее будет для вас абсолютно бесполезным. Выполните на своем устройстве ping6 ipv6.test-ipv6.com. Если ответом стало «connect: Network is unreachable», то придется читать дальше. Если ipv6.test-ipv6.com все-таки пингуется, то поздравляю – или ваш провайдер поддерживает IPv6, или вы уже настроили работу с IPv6-only сервисами через туннельного брокера.

Teredo – это один из способов настройки поддержки IPv6 на компьютере, имеющем адрес IPv4. Teredo позволяет получить IPv6-туннель даже тем клиентам, которые выходят в Интернет через провайдерский NAT (т. е. имеют «серый» IP-адрес). Несмотря на то, что Teredo разрабатывался Microsoft только для Windows, существует реализация клиента под названием Miredo для Linux и других Unix-подобных операционных систем. Если вы используете на своем одноплатнике Raspbian, Ubuntu или любой другой Debian-подобный дистрибутив GNU/Linux, то установите Miredo следующей командой.

$ sudo apt-get install miredo

Теперь ping6 ipv6.test-ipv6.com должен возвращать ожидаемый результат. Вот так все просто. IP-адрес, который вы получили, является по определению «белым». Теперь вместо проброса портов нужно только открыть UDP-порт 3544. Дело в том, что Teredo инкапсулирует пакеты IPv6 в заголовках IPv4 и использует UDP-порт 3544 для передачи этих пакетов. Процедура открытия того или иного порта варьируется от маршрутизатора к маршрутизаторы. Вот как она выглядит для моего ZyXEL Keenetic DSL. Сначала переходим на страницу «Безопасность», а затем на вкладке «Межсетевой экран» добавляем новое правило, открывающее UDP-порт 3544.

Для того чтобы достучаться до вашего устройства, ваши клиенты могут также установить Miredo в любой Unix-подобной операционной системе (включая macOS) или настроить Teredo в Windows, но сейчас остаются нерешенными две проблемы:

* в данном конкретном случае IPv6-адрес зависит от IPv4-адреса, поэтому является динамическим (если конечно IPv4-адрес динамический)

* IPv6-адреса достаточно трудно запоминать.

Эти две проблемы легко решить посредством сервиса, предоставляющего услуги динамического DNS. Для этих целей предлагаю в этот раз воспользоваться dynv6, который, как и NO-IP, позволяет зарегистрировать домен третьего уровня и привязать его к динамическому IP-адресу. В качестве клиента, который в фоновом режиме будет отслеживать изменение вашего динамического IP-адреса и при необходимости обновлять DNS, предлагаю использовать inadyn, который также упомянуть упомянался в предыдущем разделе. Для того чтобы воспользоваться готовым контейнером с клиентом, клонируйте проект cusdeb-services, перейдите в поддиректорию inadyn этого проекта, раскомментируйте блок default@dynv6.com в конфигурационном файле inadyn.conf и измените в нем параметры username и hostname. Обратите внимание, что в качестве значения username необходимо использовать токен, который можно найти в настройках вашего домена на вкладке Instructions. Для параметра password нужно оставить значение «n/a».

$ git clone https://github.com/tolstoyevsky/cusdeb-services.git

$ cd cusdeb-services/inadyn

$ nano inadyn.conf

$ docker-compose up


Теперь ваше устройство будет доступно из любой точки мира, но для клиентов, у которых настроен IPv6.


Заключение


В этой статье я рассказал как сделать свое устройство, будь то одноплатник, ноутбук или стационарный компьютер, доступным из любой точки мира через Интернет. Также я рассмотрел как решить эту задачу посредством «белого» статического и динамического IP-адреса, и рассказал как сделать сервисы на своем устройстве IPv6-only через туннельного брокера. Не прошли незамеченными и сервисы, предоставляющие услуги динамического DNS, которые предлагаю абсолютно бесплатно регистрировать домены третьего уровня, привязывать их к своему IP-адресу и сохранять устройство доступным по этому домену несмотря на то, что IP-адрес может в любое время измениться.

К сожалению, за бортом осталась важная тема получения сертификата через сервис Let's Encrypt для того, чтобы устанавливать защищенное соединение между вашим сервером и клиентами. Дайте знать в комментариях, если эта тема нуждается в том, чтобы я о ней также написал на Пикабу.

Спасибо!

Показать полностью 3
Отличная работа, все прочитано!