Русский
Русский
English
Статистика
Реклама

Iot

Мультисенсорный беспроводной датчик с E-Ink дисплеем

08.04.2021 12:19:54 | Автор: admin
Приветствую всех читателей Хабра и особенно читателей раздела DIY или Сделай сам! В сегодняшней статье я расскажу о своем очередном DIY проекте из серии устройств с дисплеями на электронных чернилах(e-ink). Устройство о котором пойдет речь это беспроводной мультисенсорный датчик с e-paper дисплеем 2.13 дюймов. На датчик можно установить сенсор температуры и влажности SHT21, HTU21D, SI7021, сенсор температуры влажности и давления BME280, сенсор атмосферного давления BMP280, сенсор освещенности MAX44009. Датчик работает от одной батарейки CR2450. Но ничего не мешает напаять на датчик держатель под батарейки CR2430 или CR2477.




Проект датчика с e-ink дисплеем размером 2.13 дюймов начинался достаточно давно. Первый прототип был сделан более года назад. Та первая версия работала на двух батарейках cr2450, имела стабилизированное питание. Со временем проект изменялся и оптимизировался, уменьшались размеры, менялись радио модули и сенсоры.


Плата окончательной версии датчика имеет размеры 72 mm * 31 mm, толщина текстолита 1.2mm. Размеры датчика в корпусе 76mm * 35mm * 12mm.
Устройство работает на микроконтроллере nRF52840, используется радио модуль MS88SF3 от компании MINEW. Модуль не имеет боковых падов для пайки, они расположены снизу радио модуля. Эта особенность немного напрягала, но глаза боятся, а руки делают. В итоге модуль достаточно просто напаивается феном (плату устройства, на которую устанавливался радио модуль я грел снизу).


Устройство имеет две модификации платы. В модификации А на датчике установлен сенсор BME280, светодиод, в модификации B добавлен датчик освещенности, датчики температуры и влажности SHT21, HTU21D, SI7021, добавлена возможность установки сенсора BMP280, добавлена защита от переполюсовки на транзисторе.




В модификации B место под пайку сенсоров BME280 и BMP280 сделал универсальным, BMP280 отлично устанавливается на место BME280. Это изменение я сделал уже в крайней ревизии второй версии датчика. Причиной стало резкое удорожание сенсоров BME (в среднем на 70% на последние два месяца). Теперь появилась возможность заменить функционал BME280 установив на плату BMP280 + SHT21 (серия BMP пока не поднимается в цене). Если кому-то известна причина такого роста цен на сенсоры BME, расскажите об этом в комментариях.


Корпус датчика был напечатан на FDM 3D принтере. После печати корпус дополнительно шлифовался и полировался. Для светодиода в модификации А и сенсора освещенности в модификации B в верхней части корпуса на внутренней стороне имеются углубления для последующего сверления отверстий. Просверленные отверстия я заливал полимерной смолой для SLA принтера.


Программа датчика написана под опенсорс проект MySensors. Датчик выводит на дисплей данные с сенсоров, заряд батарейки, уровень сигнала, прогноз изменения погоды на ближайшие часы. Рядом с данными с сенсоров так же выводится стрелками направление изменения значений. Было несколько вариантов дизайна интерфейса, варианты 2 и 3 доступны на моем гитхаб.






Есть возможность по нажатию кнопки инвертировать экран. На кнопку добавлен функционал простого меню с пунктами: инвертирование цвета, конфигурация устройства, презентация устройства, сброс датчика. В режиме конфигурации датчик в течение 20 секунд слушает эфир, в это время можно с контроллера УД отправить на датчик конфигурационные команды: изменение интервала отправки данных с сенсоров(от 1 минуты до 1 часа с шагом в 1 минуту), изменение интервала отправки данных о состояния батареи и уровне сигнала(от 1 часа до 24 часов). В режиме презентации устройство отправляет на контроллер УД данные о себе(название, версия прошивки) и о сенсорах, делает запрос о том в какой системе(метрическая или имперская) работает сеть. Так же отправляет свои конфигурационные настройки.

При работе в радиосети датчик передает данные:
  • Температура,
  • Влажность,
  • Атмосферное давление,
  • Уровень освещенности,
  • Прогноз погоды,
  • Уровень сигнала,
  • Уровень заряда батарейки,
  • Причина перезагрузки


Если сеть работает в метрической системе, то данные о температуре отправляются и выводятся на экран в Цельсиях, а данные об атмосферном давлении в миллиметрах ртутного столба(только при компиляции RU версии), иначе температура выводится в Фарингейтах, а атмосферное давление в Паскалях.

Перед компиляцией программы необходимо внести изменения в конфигурационный файл aConfig.h.
Какая языковая версия будет скомпелированна(RU или ENG):
#define LANG_RU

Вывод дебага в сериал:
#define MY_DEBUG

Мощность радиопередатчика:
#define MY_NRF5_ESB_PA_LEVEL (0x8UL)

Скорость передачи данных:
#define MY_NRF5_ESB_MODE (NRF5_1MBPS)


Потребление устройства в режиме сна 5 мкА, в режиме чтения сенсоров и обновления экрана 2-3 мА. В режиме передачи данных 8 мА, в режиме прослушивания 5мА. Время обновления экрана 300мс, время передачи одного сообщения с данными сенсоров 10мс, время передачи сообщения о заряде батареи с ожиданием эхо 100-300мс. Срок работы на одной батарейке CR2450 год и более(с конфигурацией опроса сенсоров раз в минуту и отправкой данных при изменении, опросе напряжения батарейки один раз в 6 часов и обязательной отправкой без сравнения).

Видео с демонстрацией работы датчика:

Рекомендую подписалтся на мой домашний канал, на нем я впервую очередь публикую самую свежую информацию о своих новых опенсорс проектах, их тестах.


Фото датчика:















GitHub проекта github.com/smartboxchannel/

В файле readme находится инструкция по установке и настройке среды для редактирования и компиляции ПО для датчика.

Если вам интересно все что связано с DIY, вы являетесть DIY разработчиком или хотите только начать, вам интересно использование DIY девайсов, а так же хотите узнавать первыми о моих проектах, то приглашаю всех заинтересованных в телеграм чат DIYDEV.

Всем, кто хочет делать устройства, начать строить автоматизацию своего дома, я предлагаю познакомиться с простым в освоении протоколом Mysensors телеграм-чат MySensors

А тем кто ищет достаточно взрослые решения для домашней автоматизации приглашаю в телеграм-чат Open Thread. (что такое Thread?)

Спасибо за внимание, всем добра!

Подробнее..

Миниатюрный датчик качества воздуха на батарейке с e-ink экраном

21.06.2021 12:17:59 | Автор: admin
Приветствую всех читателей Habr! В своей сегодняшней статье, хочу рассказать вам о своем новом DIY беспроводном устройстве датчике качества воздуха. Помимо оценки качества воздуха, датчик может оценивать уровень освещенности в помещении, температуру, влажность и атмосферное давление, на основе данных атмосферного давления, устройство может предсказывать прогноз погоды. Это полностью открытый проект.



Внутреннее устройство


Датчик работает на микроконтроллерах nRF52, были разработаны 4 версии плат датчика под радиомодули nRF52 разных производителей. Одна основная и еще три расширенные версии (пояснения будут чуть ниже по тексту).

Используемые в проекте модели радиомодулей:

  • основной MINEW MS88SF3 (nRF52833, nRF52840)
  • дополнительные: MINEW MS50SFA1 (nRF52810, nRF52811), MINEW MS50SFA2 (nRF52832), EBYTE E73-2G4M08S1C (nRF52840) и EBYTE E73-2G4M08S1E (nRF52833)

Используемые в проекте сенсоры:

  • сенсор качества воздуха в помещении для измерения ЛОС SGP40
  • сенсор давления, температуры и влажности BME280
  • сенсор освещенности MAX44009

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

Устройство может выводить данные на экране и передавать данные в системы Умного Дома, так же может работать в режиме без сети.

Для вывода информации использовался e-ink дисплей со сверхнизким потреблением и диагональю 2.13 дюймов компании WaveShare.



Характеристики дисплея:

  • Разрешение: 250x122
  • Диапазон рабочих температур: 0 50 C
  • Потребление в рабочем режиме: 3мА
  • Потребление в режиме глубокого сна: 1мкА
  • Минимальное время обновления экрана: 0.3 сек.

В ближайшее время в проект будет добавлена поддержка дисплея DES e-Ink 2.13 c рабочим температурным режимом -20C~60C (что такое DES).
..upd Пока статья писалась сделал драйвер, дисплей протестирован, в морозильнике работает :), из минусов разрешение 212х104, но зато морозов не боится, в общем рабочий вариант.


Основная версия PCB датчика:

Дополнительные версии:



Основным сенсором в данном проекте является сенсор качества воздуха в помещении SGP40. Можно сказать что это новинка на рынке от компании Sensorion c весьма неплохими характеристиками.


Сенсор измеряет общую концентрации летучих органических веществ (TVOC). В сравнении с предыдущим датчиком этой компании SGP30 потребление было значительно снижено, 48 мА при измерении у SGP30 и 2.6мА у SGP40. Правда предыдущий датчик мог отдавать уже готовые значения VOC и эквивалента СО2, в то время как новинка отдает сырые данные которые в дальнейшем надо обрабатывать на стороне МК при помощи поставляемой с датчиком библиотеки с алгоритмом расчета качества воздуха. Даташит на датчик SGP40.


Для работы в батарейном и низко потребляющем устройстве пришлось доработать библиотеку Adafruit_SGP40. Была добавлена работа с нагревателем сенсора, получение, сохранение, выгрузка текущих состояний алгоритма для быстрого старта датчика, например после замены батарейки, минуя режим обучения. Почему-то никто не озадачился этими моментами, найти готовую библиотеку поддерживающую полный функционал сенсора мне не удалось. Модифицированная библиотека находится на моем GitHub.

Схема устройства:



Передача датчиком данных с сенсоров в системы Умного Дома реализована на открытом проекте MySENSORS.




Функционал датчика


Устройство, при подаче питания, осуществляет попытку поиска сети, если сеть не найдена, то устройство переходит в основной режим работы без работы в сети (не шлет данные), но периодически делает короткие запросы на поиск сети(~раз в 2 часа). Интервал опроса сенсора SGP40 3 секунды, чтение остальных сенсоров, отправка данных, основное обновление экрана раз в 1 минуту. Обновление экрана и отправка данных(если сеть доступна) происходит при изменении данных уровня качества воздуха (TVOC) на 10 единиц, температуры на 0.5C, влажности на 5%, давления на 1 единицу, при изменении уровня освещенности на 10 люкс, при изменении прогноза по погоде. Интервал опроса батарейки задается пользователем в интервале от 1 часа до 24 часов, по умолчанию опрос один раз в 6 часов.
Так же есть дополнительная подпрограмма для обновления экрана и отправка данных при резком повышении уровня TVOC на 30 единиц, интервал проверки раз в 6 секунд.

При первом включении устройства, происходит цикл обучения алгоритма расчета качества воздуха, в моей реализации максимальное время обучения 12 часов. После обучения, датчик начинает сохранять в памяти МК текущие состояния алгоритма с четырехчасовым интервалом. При сбросе устройства, при возобновлении работы после выключения устройства, при замене батареек происходит проверка наличия записей состояний алгоритма в памяти, если они есть то эти данные выгружаются, и устройство минует период обучения. Для удаления сохраненных данных, необходимо нажать на кнопку меню на устройстве и выбрать соответствующий пункт меню. сброс устройства.

Доступный функционал кнопки меню:

  1. Инверсия экрана
  2. Отправка презентации
  3. Вход в режим конфигурации внешними командами по радио
  4. Поиск сети
  5. Сброс устройства

Так же, помимо кнопки меню, датчик может настраиваться внешними командами из интерфейса УД. Для этого необходимо активировать нужный пункт меню конфигурация датчика нажатием кнопки меню. После активации режима конфигурации, датчик перейдет в режим прослушивания на 20 секунд. В этот интервал необходимо отправить команду. Внешними командами можно настроить интервал проверки батарейки, изменить вывод информации на экран в инверсии, выбор режима работы: LP (чтение сенсора SGP40 раз в 3 секунды) или ULP (чтение сенсора SGP40 раз в 5 секунд).

Датчик умеет анализировать данные атмосферного давления и рассчитывать по ним прогноз погоды, выводить на экран данные о прогнозе погоды и отправлять эти значения в УД. Описание алгоритма расчета прогноза погоды (NXP Application Note 3914 | John B. Young)

На экране рядом с каждым типом данных выводится индикация направления изменения значений.



Для компиляции нужной версии ПО необходимо сконфигурировать файл aConfig.h.

//#define MY_DEBUG#define LANG_RU // If this is not used the English localization will be displayed.#ifndef LANG_RU#define LANG_EN#endif#define SN "eON Air Quality Sensor"#define SV "0.99"#define MY_RADIO_NRF5_ESB#define MY_NRF5_ESB_PA_LEVEL (0x8UL)//#define MY_PASSIVE_NODE//#define MY_NODE_ID 151//#define MY_NRF5_ESB_MODE (NRF5_1MBPS)#define MY_NRF5_ESB_MODE (NRF5_250KBPS)#define ESPECIALLY#define SEND_RESET_REASON#define MY_RESET_REASON_TEXT

Потребление датчика в режиме сна составляет в среднем 33мкА (смотрите даташит на SGP40), в режиме считывания сенсоров и обновления экрана 4мА(среднее), в режиме передачи данных 8мА(среднее), время передачи одного сообщения 10мc (идеальные условия).
Датчик работает от батарейки CR2477 (950мА), среднее расчетное время работы устройства 1 год(зависит от конфигурации прошивки, установленных сенсорах на устройстве, больше сенсоров больше данных нужно будет отправлять, а передача по воздуху это основной потребитель), данных о реальном сроке работы пока нет, устройство пока работает 2 месяца.



Модели разработанного корпуса датчика я печатал на FDM 3D принтере, что бы добиться более или менее приличного вида, корпус после печати шлифовался и полировался. На задней крышке корпуса можно установить магниты.



GitHub проекта github.com/smartboxchannel/

В файле readme находится инструкция по установке и настройке среды для редактирования и компиляции ПО для датчика.

OPEN SOURCE HARDWARE CERTIFICATION
OSHWA UID: RU000004


В завершении, уже как обычно, сделаю небольшой фото анонс проектов с которыми в скором времени поделюсь и о которых расскажу (Датчики влажности почвы Zigbee, Уличный датчик температуры и влажности Zigbee Long Range, Датчик качества воздуха bme680 c e-ink3.7).

Новые проекты на стадии тестирования












Если вам интересно все, что связано с DIY, вы являетесь DIY разработчиком или хотите только начать, вы заинтересованы в использовании DIY девайсов, а так же хотите узнавать первыми о моих проектах, то приглашаю всех в телеграм чат DIYDEV.

Если вы как и я, хотите понять что такое Zigbee, попытаться сделать свои первые DIY Zigbee устройства, то приглашаю вас в чат для разработчиков zigbee девайсов/прошивок ZIGDEV

Всем, кто хочет делать устройства, начать строить автоматизацию своего дома, я предлагаю познакомиться с простым в освоении протоколом Mysensors телеграм-чат MySensors

А тех кто смотрит в будущее IOT приглашаю в телеграм-чат Open Thread (Matter, Project CHIP). (что такое Thread?, что такое Matter?)

Спасибо за внимание, всем добра!


Подробнее..

Часть 3 ESPboy2 гаджет для ретро игр и экспериментов с IoT, новости проекта 2021

24.05.2021 16:18:49 | Автор: admin

Предыдущие статьи:

В основе лежит старенький уже на сегодня чип ESP8266 c WiFi с подключенными к нему цветным экраном 128х128, кнопками, динамиком, RGB светодиодом и еще парой удобных дополнений.

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

В ESPboy есть слот расширения, на который выведены интерфейсы I2C, SPI, UART, I2S куда втыкаются штатные модули, которые при загрузке соответствующего софта превращают устройство в ретро игровую консоль, GSM телефон, GPS навигатор, FM радио, перехватчик радиопакетов, читалку/писалку rfid/nfc, MP3 плеер, погодную станцию, универсальный ИК пульт, LORA мессенджер и много чего еще.

Есть фирменный онлайн AppStore с приложениями, куда можно подключиться прямо с устройства через WiFi, выбрать из списка нужное приложение и за полминуты загрузить. Это значительно удобнее классического обновления прошивки микроконтроллера через подключение проводами к компьютеру и последующими плясками с бубном вокруг среды разработки и библиотек с многократными попытками все это скомпилировать и залить в железку.

Список опробованных модулей можно увидеть на сайте проекта www.espboy.com, весь софт, как уже говорилось, на GitHub для изучения и экспериментов. Много чего в работе и еще больше в планах. К сожалению не удалось поспеть в прошлом году довести модули до промышленного изготовления, все они в виде прототипов, но энтузиасты с помощью сообщества в проектном форуме и Discord чате собирают при желании любой без сложностей. Думаю, что в этом году часть модулей все же получится выпустить в заводском исполнении.

Так что же конкретно нового получилось сделать за прошедший год несмотря на опостылевший вирус и волны прокрастинации:

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

Уже есть задумки по ESPboy3.

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

Заглядываясь на кикстартер успех FLIPPER ZERO, тоже посещают мысли о запуске компании на Kickstarter. Но такой разворот требует значительных усилий в сторону маркетинга, продаж, что далее неизбежно повлечет за собой масштабирование производства, логистики, поддержки, переход на новый уровень R&D и управление процессами в целом. Бросаться в такой омут очертя голову не охота. Хочется делать основательно, а в этом случае уже нужны заинтересованные люди, понимающие в бизнесе и инвестиции.

В целом проект ESPboy и сопутствующий Little Game Engine неспешно развиваются с участием нескольких энтузиастов в режиме хобби с тестированием коммерческих моделей по монетизации (что пока не покрывает и малой части личных затрат), но с сохранением полностью бесплатного варианта использования.

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

Да и просто поиграться с устройством в современные технологии довольно увлекательно и познавательно.

Всем добра!

С уважением, РоманС

mailto: espboy.edu@gmail.com

Подробнее..

Перевод Пять причин выбрать JavaScript для IoT-проекта

01.06.2021 14:09:01 | Автор: admin

В мире, где цифровая трансформация правит бал, Интернет вещей (IoT) играет ключевую роль в переосмыслении нашего образа жизни и бизнеса. Интернет вещей экономит наше время и повышает производительность мы можем пользоваться устройствами умного дома, работать в едином виртуальном пространстве и взаимодействовать с коллегами, которые далеко от нас.

Согласно исследованию тенденций в области IoT, проведенному по инициативе корпорации Майкрософт, 85% респондентов в настоящее время активно внедряют IoT-технологии и три четверти планируют их внедрение. Примерно 88% респондентов считают, что Интернет вещей критически важен для развития их бизнеса.

Для тех, кто занимается разработкой IoT-технологий, выбрать язык программирования так же сложно, как выбрать тип датчиков или других устройств.

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

И здесь нам не обойтись без JavaScript!

JavaScript для разработки ПО

На современном этапе разработка программного обеспечения без JavaScript кажется немыслимой. Согласно опросу разработчиков, проведенному Stack Overflow в 2019году, JavaScript вот уже 7лет остается самым популярным языком разработки. Немаловажно и то, что на 95% всех сайтов JavaScript используется как язык программирования на стороне клиента.

С помощью JavaScript на стороне клиента можно писать пользовательские сценарии, создавая динамичные и интерактивные веб-страницы. Вместе с тем можно использовать кросс-платформенные среды выполнения наподобие Node.js для написания серверного кода на JavaScript.

Выбираем JavaScript для IoT

JavaScript это не только веб-приложения. Если вы умеете программировать на JavaScript, вы можете заняться разработкой приложений для Интернета вещей.

Есть несколько вариантов использования JavaScript для разработки IoT-приложений.

Метод клиент сервер

Вы можете запустить сценарий JavaScript на своем компьютере (сервере) и отправлять сигналы на устройство-клиент (вещь). Этот режим идеально подходит для сценариев, в которых вещи не могут исполнять даже простейший код JavaScript.

Встроенный JavaScript

Код JavaScript можно запускать с помощью оптимизированных под малые объемы памяти движков прямо на IoT-устройствах. На устройствах могут использоваться такие фреймворки, как JerryScript.

JavaScript на одноплатных компьютерах

Исполнение кода JavaScript или Node.js на одноплатных компьютерах не вызовет никаких проблем.

JavaScript прекрасно подходит для разработки IoT-решений, поскольку он может реагировать на события и исполнять код асинхронно. Также этот язык отлично подходит для быстрой разработки прототипов.

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

Что ж, теперь рассмотрим основные причины выбрать JavaScript для IoT-проекта.

Пять основных причин выбрать JavaScript для IoT-проекта

  1. Node.js

  2. Управление памятью

  3. Событийно-ориентированное программирование

  4. Простота внедрения

  5. Библиотеки и фреймворки JavaScript

Node.js

Это кросс-платформенная среда выполнения JavaScript с открытым кодом, позволяющая создавать решения для обработки данных в реальном времени.

В сфере IoT она пригодится для обработки большого количества запросов, генерируемых различными датчиками, маячками, передатчиками и электродвигателями. Node.js позволяет отладить операции запрос ответ и выполнять их быстрее.

К тому же в Node.js используются сокеты и протокол MQTT (MQ Telemetry Transport), которые обеспечивают непрерывную передачу данных в IoT-приложениях.

В состав Node.js входит менеджер пакетов NPM, который включает более 80 пакетов для одноплатных IoT-совместимых компьютеров, таких как Arduino, BeagleBone Black, Raspberry Pi и Intel IoT Edison. Таким образом, службы разработки на Node.js позволяют быстро создавать надежные IoT-приложения.

Управление памятью

Работая с такими языками, как C, программистам приходится вручную выделять и освобождать память с помощью методов malloc(), calloc(), realloc() и free(). У программистов JavaScript в этом нет необходимости.

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

Благодаря функции сборки мусора IoT-разработчики могут полностью сосредоточиться на проекте, не отвлекаясь на управление памятью. В определенной степени автоматическое освобождение неиспользуемой памяти обеспечивает стабильную работу IoT-решения, так как сборщик мусора исключает утечки памяти.

Событийно-ориентированное программирование

В приложениях с управлением по событиям каждое устройство реагирует на события определенным поведением. JavaScript отлично подходит для разработки таких приложений.

Циклы событий в JavaScript позволяют выполнять несколько задач одновременно. Благодаря этому возможно реагирование в режиме реального времени, при этом на одно и то же событие могут реагировать несколько устройств.

Поддержка событийно-ориентированного кода в JavaScript позволяет существенно продлить время работы от батареи.

Простота внедрения

JavaScript, в отличие от C++, Ruby и Python, прост в изучении и внедрении. Это один из самых распространенных языков программирования, с которым внедрение IoT-решений не составит труда. Он эффективен в разных средах, в том числе на шлюзах и в облаке.

Библиотеки и фреймворки JavaScript

В последнее время JavaScript все чаще используется для разработки приложений, и число библиотек и фреймворков JavaScript тоже растет.

JerryScript

Это легкий движок JavaScript, который используется на устройствах с очень ограниченными ресурсами, например на микроконтроллерах. JerryScript поддерживает локальную компиляцию и исполнение и предоставляет доступ к периферийным устройствам через JavaScript.

Cylon.js

Cylon.js это фреймворк JavaScript для робототехники, аппаратных вычислений и IoT. Это простое и эффективное решение для разработки приложений, которые работают одновременно на нескольких разнородных устройствах. Кроме того, Cylon.js поддерживает более 50 платформ, а также интерфейс ввода/вывода общего назначения через общий набор драйверов, включенных в модуль cylon-gpio (тоесть модуль Cylon для интерфейса ввода/вывода общего назначения [GPIO]).

Johnny-Five

Johnny-Five это фреймворк JavaScript, который используется для контроля компонентов оборудования на основе различных микропроцессоров и однокристальных систем. Он подойдет для всех, кто собирается разрабатывать решения для робототехники на JavaScript.

IoT.js

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

Резюме

Безусловно, JavaScript популярный язык программирования веб-решений. Поэтому вполне разумно использовать его для программирования устройств, которые уже являются частью Интернета. Кроме того, в пользу JavaScript для IoT говорят такие преимущества этого языка, как Node.js, управление памятью, событийно-ориентированное программирование, простота внедрения и большое количество библиотек и фреймворков.


Перевод материала подготовлен в рамках курса "JavaScript Developer. Basic".

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

Подробнее..

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

23.03.2021 12:19:49 | Автор: admin

Всем привет!

В этой статье я расскажу, как мне пришлось исправить ошибку строителей, которые заложили в штробу всего один 3-х проводной кабель, идущий к двум рольставням, тогда как нужно было проложить два таких кабеля. А так же про недорогой WiFi + RF433 МГц блок управления рольставнями и подключение его к голосовому ассистенту Яндекс Алиса. Если Вам интересны подробности, то прошу под кат.

Распаковка блока управления рольставнями


Я достраиваю свой дом, и недавно у меня на окнах первого этажа установили моторизированные рольставни. Для управления ими я приобрел на Aliexpress WiFi+RF433 переключатели от компании Moes, на упаковке указано название Smart WiFi + RF Curtain Switch. Обошлись они мне по 900 руб. за 1 шт. В комплекте идет небольшая инструкция по подключению и два болтика для монтажа. Панель сделана из стекла, на ней расположены три сенсорные кнопки с синей подсветкой. Подключается устройство всего 4-мя проводами: L-линия, N-ноль, Open, Close. В инструкции нет упоминаний про работу блока с Яндекс-станцией Алиса, но как потом оказалось, устройство прекрасно сопрягается с умной колонкой через приложение Tuya Smart.



Блок управления изнутри


Переключатель состоит из двух плат: верхняя плата, это WiFi контроллер, приемник 433 МГц, емкостные кнопки и две антенны, также разведенные на плате, и нижняя это блок питания, винтовые разъемы для подключения проводов, два реле управления моторами рольставней.

Соединяются обе платы между собой обычной двухрядной гребенкой, с шагом 2 мм.



Подсветка кнопок


Стоит ещё упомянуть, как работает подсветка в модуле управления. Днем подсветку всех кнопок не заметно. Но на панели всегда ярко светится последняя нажатая кнопка. Если нажать клавишу опустить занавес и не важно по WiFi или кнопкой на пульте, то будет светится кнопка Close до того момента, пока не будет нажата другая кнопка. А у клавиши STOP есть две функции: с её помощью можно остановить ставни в любом положении, и вторая функция это перевод свечения кнопок в ночной режим. В полной темноте свечение всех клавиш очень комфортное и абсолютно не раздражает глаза.



Подключение к WiFi


При первом включении сразу же начнут мигать все три кнопки тем самым блок говорит, что его нужно подключить к WiFi сети. Для этого потребуется установить приложение Tuya Smart. запускаем приложение->нажимаем +(добавить устройство)->мелкая бытовая техника->шторы/карниз WiFi->включаем геолокацию->подтверждаем Имя и ключ WIFI сети после непродолжительной паузы устройство будет добавлено и после чего можно сменить его название. Для удобства управления я у себя все три добавленных устройства назвал окно, только присвоил им всем разные комнаты. В голосовом ассистенте Алиса нажимаем (+) -> другое устройство -> находим Tuya Smart -> обновить список устройств.

Я так же в голосовом ассистенте создал такие сценарии, как: Сим-сим откройся, Открой все окна, Включи кино и т. д.



Подключаем пульт 433МГц


Так же для более широких возможностей управления рольставнями, я приобрел пульт, работающий в радиодиапазоне 433 МГц.
Для того, чтобы модуль переключателей запомнил кодовые команды с радиопульта, нужно нажать и удерживать требуемую кнопку на блоке управления до того момента, пока он не издаст одиночный звуковой сигнал и при этом индикатор начнет быстро мигать, после чего нужно нажать такую же кнопку на пульте дистанционного управления. Если переключатель запомнил код, то он переведет индикатор в постоянно светящийся режим. Для обнуления ранее записанного кода, нужно нажать и удерживать кнопку блока управления в течении 10 секунд до того момента, пока он не издаст три прерывистых звуковых сигнала, после чего код пульта из блока будет стёрт.



Косяки строителей


Теперь о проблеме, с которой я столкнулся при подключении рольствней. Строители, которые занимались отделкой, несмотря на мои неоднократные напоминания, заложили всего один трех проводной кабель для двух окон. А всплыла эта проблема, когда приехали установщики роллетов. Ну ладно, подумал я, подключу их параллельно, но, как оказалось, подключать рольставни параллельно между собой нельзя. Я, конечно, сначала не поверил в это, но потом убедился в этом сам, когда попытался проверить это на практике и чуть было на спалил моторы. Проблема заключается в том, что моторы имеют несколько обмоток и между ними установлен фазосдвигающий конденсатор. И если подать управляющий ток на поднятие занавеса Open, то на открытом конце Close будет напряжение 220В, которое начнет вращать рольставни в противоположную сторону, и они останутся на одном месте в заклиненном состоянии, а ток при этом будет протекать через обмотки двигателей. Получится как в той басне про лебедя, рака и щуку.



Так же установщики сказали, что существуют блоки, при помощи которых можно объединять рольставни в группы и подключать их на один переключатель.



Но групповой блок GC-2 мне тоже ни как не поможет, так как ему кроме проводов Open, Close и N-ноль требуется ещё и линия-L. Если игнорировать заземление, то в сумме получается 4 провода. А у меня, как вы помните, их всего 3. Перерыв весь интернет, я так и не нашел решения, хотя встретил братьев по несчастью с такой же проблемой, просящих помощи у сообщества. В итоге у меня остался только один вариант штробить стену и прокладывать недостающие провода. Что меня никак не устраивало, так как на первом этаже уже выполнена свежая отделка и смонтированы натяжные потолки. Мне бы не хотелось портить строительной пылью свежий ремонт. Пришлось напрячь мозг и придумать своё решение.

Благо решение нарисовалось на бумаге в течении пары минут и для его реализации мне понадобилось всего одно реле на 220 В, с тремя контактными группами.



Схема подключения реле


Я думаю у многих может возникнуть вопрос: почему именно 3 группы контактов, а не две? Если исключить самую верхнюю группу контактов на схеме, замкнув эти два провода, то через взаимосвязанные обмотки электродвигателей и через обмотку реле будет протекать ток в любом положении переключателя, и реле всегда будет переходить во включенное состояние.



Монтаж реле


Мне не терпелось и хотелось побыстрее проверить работоспособность схемы. А ввиду отсутствия у меня плоских разъемов 3 мм, я не стал тратить время на их поиски и покупку, а взял и припаял к нужным контактам реле провода. Заизолировал их термоусадочным кембриком и подключил реле к рольставням соеденителями типа скрутка. Разместил его в соединительной коробке, в которой предварительно замазал силиконом все сквозные отверстия.



Ну вот наконец все подключено, можно проверять.

Заключение


Спасибо, что дочитали до конца!

Если Вам понравилась моя статья то поддержите её лайком и подпиской.

Если у Вас есть вопросы, то можете задавать их в комментариях.
Подробнее..

Использование LoRa для интеграции кота в IoT

09.05.2021 16:23:04 | Автор: admin
Duivendrecht, вид на ферму и церковьDuivendrecht, вид на ферму и церковь

Я всегда мечтал жить в деревне - чтобы зелень и птички щебетали летом - но недалеко от города и выбора удобств. И наконец мечта сбылась - я поселился в доме с садом, в местечке Дёйвендрехт, тихой деревне, которая ближе к центру Амстердама чем половина собственных его районов.

А в дом с садом просто необходимы коты.

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

Поэтому через некоторое время у нас появился Барсик, по паспорту Эскобар.

Эскобар - британский голубой кот, который своё имя оправдывает полностью. Способен находить лазейки и убегать практически из любых ситуаций.Эскобар - британский голубой кот, который своё имя оправдывает полностью. Способен находить лазейки и убегать практически из любых ситуаций.

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

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

Было решено исследовать рынок кото-трекеров. Кейс простой - хочу знать где гуляет кот в данный момент, и если он вдруг потерялся, не может найти дорогу домой, или же куда-то направился, где много и часто ездят машины - знать, куда направлять спасательную группу.

Протестированы были устройства Invoxia, Findster, Tractive и некоторые другие. Invoxia это сеть SigFox, Tractive и прочие - GPRS с симкой, Findster - собственное радио.

  • Симочные все требуют денег, минимум 5 евро в месяц абонемент. При этом видимо используются какие-то дешёвые IoT симки с 2G connectivity. Задержки сигналов 1-2 минуты.

  • На SigFox возлагались надежды - но сеть теряет сигналы как-то уж очень часто, локации приходят в перемешанном порядке. Качество фикса позиции ужасное.

  • Findster - хороший фикс и реалтайм отслеживание. Производитель рекламирует радиус 900 метров в городе, реально 100+ метров - трекинг теряется. Его я использовал дольше всего - пока Барсик вокруг дома уже всё не изучил, ему не стало скучно и он отправился в более дальние экспедиции.

  • Жизнь батарейки - реалтайм GNSS трекинг выжирает часа за 2-3 батарейку у всех трекеров.

LoRa и The Things Network

Трекеру в общем-то не очень нужна симка, надо передавать десятки байт раз в минуту или несколько минут. Погуглив туда и сюда, выяснил, что есть радиостандарт LoRa, который гораздо лучше подходит под мой кейс чем всё вот это вот.

  • LoRa использует EU 868MHz нелицензированные частоты, которые доступны и в РФ.

  • LoRa использует chirp модуляцию, изначально придуманную для военных целей, которая позволяет энерго-эффективную радио коммуникацию в отсутствии прямой видимости.

  • LoRa поддерживает различные сети - можно делать частную сеть со своей базовой станцией, или пользоваться сетью провайдера. KPN предоставляет покрытие по всем Нидерландам.

  • Устройства LoRa не стоят индустриальных денег

Стандартных решений для трекеров с LoRa сетью на рынке не было - и нет - но почему бы и не сделать собственное?

Gateway и антенна


Нидерландская компания The Things Network предлагает TTN Indoor gateway за 70 евро. Установка и конфигурация (gateway передаёт через wifi на сеть TTN всё, что ловит на радио сам) была завершена за 10 минут.

TTN консоль сделана с любовью, всё понятно и удобно.TTN консоль сделана с любовью, всё понятно и удобно.

Единственная проблема - gateway содержит внутреннюю напечатанную антенну, которая не обеспечивает связи вне дома.

Решение проблемы - подключить внешнюю антенну. Благо дом свой, можно лезть на крышу и ставить что угодно.

Aurel GP 868 антенна на крышеAurel GP 868 антенна на крыше

Решение по частям

  • заказать внешнюю антенну с ground plane диаграммой (например Aurel GP 868, EUR 40,-)

  • заказать IPEX кабель-адаптер (для Aurel был нужен IPEX-to-BNC-female, EUR 3,-)

  • вскрыть корпус gateway, отсоединить IPEX кабель от печатной планы и воткнуть свой кабель внешней антенны

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

После такого хака я увидел на гейтвее трафик с нескольких LoRa устройств поблизости. Это колхозный принцип организации TTN - каждый любитель, типа меня, с гейтвеем ловит и передаёт трафик от всех устройств, активированных в TTN. В сутки где-то 100 тысяч сообщений, но каждое меньше 100 байт, поэтому +10 мегабайт в сутки на фоне всего остального незаметно, от слова вообще.

В результате получается бесплатная (и без SLA) колхозная сеть. Покрытие не 100% и даже не близко, но сам факт, почему бы и нет?

Бесплатное покрытие TTN в АмстердамеБесплатное покрытие TTN в Амстердаме

С антенной как есть - покрытие порядка 1 км радиус, планирую поднять антенну на 6 метров, посмотрю насколько увеличится радиус. Фанаты устанавливают рекорды LoRa связи в несколько сотен километров.

На рынке LoRa трекеров есть несколько устройств, но единственное устройство можно было использовать в качестве кото-трекера. Это BroWAN Object Locator, которые делает тайваньская фирма Browan. Кроме этих сенсоров, они делают ещё десятки других LoRa устройств, от CO2 до протечек воды. Очень милые ребята, хорошая техническая поддержка.

Другие сенсоры были либо слишком тяжёлые (для авто или мотоциклов), либо с батарейкой, которая не перезаряжается, либо не позволяли сконфигурировать себя под TTN.

BroWAN tabBroWAN tab

Вес 28 граммов, батарейка 540mAh, которой хватает на передачу позиции раз в минуту в течение 8 часов, или дольше, если реже.

Но если бы я был котом, мне бы с такой блямбой на шее бегать было бы неудобно. К тому же кот носил Findster и теперь носит два BroWAN tab - TTN с моей антенной и KPN, который тестируется.

Поэтому я купил шлейку для прогулок котов, отрезал всё лишнее и пришил как умел два кармашка, получился такой типа жилетик-разгрузка.

Пришлось ещё удлинить лямку вокруг шеи, чтобы не затягивать сильно, но и не расстёгивалось.

Два ярких вырвиглазных жёлтых кармашка - для оборудования. Вырвиглазных, потому что мех голубого британца Барсика - это наноматериал, который принимает разные оттенки серого в зависимости от угла падения света, смешивая кота с фоном. Сделать кота заметнее важно и для его безопасности, чтобы не раздавило машиной, и для птичек.

Для птичек, потому что эта пушистая машина убийства в полном камуфляже, с точной моторикой и реакцией в миллисекунды убивала бы местных птичек в больших количествах, не находя понимания у живущих по соседству граждан нашего болотного королевства.

Чтобы сместить баланс жизни и смерти в пользу птичек, я ещё пришил звякающий шарик сверху. Теперь Эскобар может выполнять функцию верхнего хищника просто гоняя птичек, чтобы не жирели, но не убивая их. Или же, если некая птица не способна заметить кота с колокольчиком в ярком жилетики и свалить восвояси, кот может рассчитывать на применение по отношению к ней законов Дарвина, а не человеческой этики.

Ещё Барсик таскает в одном из кармашков маленькую круглую таблетку Tile- она не умеет в GNSS и из радио всего лишь Bluetooth. Но зато она умеет громко пиликать, когда ты от неё в 10 метрах или ближе (в рекламе 30-40, но с 10 точно берёт). Это позволяло мне находить жилетик в 6 случаях, когда кот его сбрасывал и гулял дальше голый.

Эскобар в боевом облаченииЭскобар в боевом облачении

Программное обеспечение

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

Кот начинает гулять, трекер активируется акселерометром и начинает посылать позиции раз в минуту. Пакеты ловятся каким-то gateway (иногда несколькими) и пересылаются в сеть TTN.

Каждый пакет это примерно 50 байт, содержит заголовки, метаданные, локация и напряжение батарейки.

Приложение в консоли TTNПриложение в консоли TTN

Gateway добавляет свою информацию, в частности отношение сигнал/шум и посылает всё в сеть TTN. В консоли TTN каждое устройство (device) конфигурируется как честь приложения (application) - группа устройств, парсер входящих пакетов + дальнейшие интеграции - MQTT, HTTP и прочие.

Конфигурация устройстваКонфигурация устройства

В TTN application можно добавить функцию-парсер для преобразования байтов из устройства в структуру типа JSON. Для BroWAN трекеров код выглядит так:

function Decoder(bytes, port) {    var params = {        "bytes": bytes    };    bytes = bytes.slice(bytes.length-11);      if ((bytes[0] & 0x8) === 0) {        params.gnss_fix = true;      } else {        params.gnss_fix = false;      }      // Mask off enf of temp byte, RFU      temp = bytes[2] & 0x7f;      acc = bytes[10] >> 5;      acc = Math.pow(2, parseInt(acc) + 2);      // Mask off end of accuracy byte, so lon doesn't get affected      bytes[10] &= 0x1f;      if ((bytes[10] & (1 << 4)) !== 0) {        bytes[10] |= 0xe0;      }      // Mask off end of lat byte, RFU      bytes[6] &= 0x0f;      lat = bytes[6] << 24 | bytes[5] << 16 | bytes[4] << 8  | bytes[3];      lon = bytes[10] << 24 | bytes[9] << 16 | bytes[8] << 8  | bytes[7];      battery = bytes[1];      capacity = battery >> 4;      voltage = battery & 0x0f;      params.latitude = lat/1000000;      params.longitude = lon/1000000;      params.accuracy = acc;      params.temperature = temp - 32;      params.capacity = (capacity / 15) * 100;      params.voltage = (25 + voltage)/10;      params.port=port;      return params;}view rawttn-browan hosted with  by GitHub

В TTN добавлена интеграция HTTP, чтобы посылать события в приложение catracker, которое сохраняет позиции в базу и посылает их подключенным клиентам по вебсокетам.

Приложение состоит из Scala/Akka сервиса, фронтенда на голом TypeScript, Azure DevOps CI и Kubernetes дескриптора.

Полный код доступен в https://github.com/jacum/catracker.

Сегодня был дождь и Барсик не ходил далекоСегодня был дождь и Барсик не ходил далеко

Интерфейс минималистичный но вполне MVP - показывает проценты батарейки, позицию кота и время с апдейта последней позиции, если прошло больше двух минут. Скриншот сделан после 1 часа и 53 того, как кот пришёл домой - трекер не посылает событий, если акселерометр не показывает движения.

Большое спасибо TTN за надёжное и недорогое оборудование, и добротную консоль, и BroWAN за лучшие LoRa трекеты.

И конечно же коту Барсику за ежедневные усилия по тестированию решения.

Мяу!Мяу!

Оригинал (моей же) статьи

Подробнее..

Управляем контактами GPIO из C .NET 5 в Linux на одноплатном компьютере Banana Pi M64 (ARM64) и Cubietruck (ARM32)

10.05.2021 12:10:00 | Автор: admin
dotnet libgpiod

Когда заходит речь про программирование на C# .NET для одноплатных компьютеров, то разговоры крутятся только в основном вокруг Raspberry Pi на Windows IoT. А как же Banana/Orange/Rock/Nano Pi, Odroid, Pine64 и другие китайские одноплатные компьютеры работающие на Linux? Так давайте это исправим, установим .NET 5 на Banana Pi BPI-M64 (ARM64) и Cubietruck (ARM32), и будем управлять контактами GPIO из C# в Linux. В первой части серии постов, подключим светодиод и кнопку для отработки прерываний и рассмотрим библиотеку Libgpiod (спойлер, библиотеку так же можно использовать в C++, Python) для доступа к контактам GPIO.

Предисловие


Управление светодиодом и получение событий от кнопки будет реализовано через библиотеку Libgpiod, которая не является частью платформы .NET. Данная библиотека предоставляет доступ к GPIO из любого языка программирования, требуется лишь написание класса обертки.

Данный пост применим не только к платам Banana Pi BPI-M64 и Cubietruck, но и другим, основанных на процессоре ARM архитектуры armv71(32-bit) и aarch64 (64-bit). На Banana Pi BPI-M64 (ARM64) и Cubietruck (ARM32) установлена ОС Armbian версии 21.02.1, основанная на Ubuntu 18.04.5 LTS (Bionic Beaver), ядро Linux 5.10.12. uname: Linux bananapim64 5.10.12-sunxi64 #21.02.1 SMP Wed Feb 3 20:42:58 CET 2021 aarch64 aarch64 aarch64 GNU/Linux

Armbian это самый популярный дистрибутив Linux, предназначенный для одноплатных компьютеров построенных на ARM процессоре, список поддерживаемых плат огромен: Orange Pi, Banana Pi, Odroid, Olimex, Cubietruck, Roseapple Pi, Pine64, NanoPi и др. Дистрибутив Armbain основан на Debian и Ubuntu. Из большого перечня поддерживаемых одноплатных компьютеров можно выбрать то решение, которое лучше всего походит для вашего IoT проекта, от максимально энергоэффективных до высокопроизводительных плат с NPU. И на базе всех этих одноплатных компьютеров, вы сможете реализовать свое решения на платформе .NET и работать с периферийными устройствами из кода на C#.

Что такое GPIO


GPIO(general-purpose input/output) интерфейс ввода/вывода общего назначения. GPIOподключены напрямую к процессоруSoC (System-on-a-Chip Система на кристалле), и неправильное использование может вывести его из строя. Большинство одноплатных компьютеров, кроме обычных двунаправленных Input/Output портов, имеют один или более интерфейсов: UART,SPI,IC/TWI,PWM (ШИМ), но не имеютADC (АЦП). GPIO- порты обычно могут быть сконфигурированны на ввод или вывод (Input/Output), состояние по умолчанию обычноINPUT.

Некоторые GPIO-порты являются просто питающими портами 3.3V, 5V и GND, они не связаны сSoCи не могут использоваться как либо еще.

Порты сальтернативной функцией- могут быть мультиплексированны с одним изсоответствующих емуинтерфейсов.

Порты в режиме INPUTмогут генерироватьпрерывания по спаду, по фронту, по логическому уровню, по изменению сигнала и в асинхронном режиме по фронту и спаду. Порты в режиме INPUTимеют входную фильтрацию на триггереШмитта(преобразовывают аналоговый сигнал в цифровой с резкими переходами между состояниями).

Работа с контактами GPIOосуществляется через виртуальную файловую систему sysfs. стандартный интерфейс для работы с контактами sysfs впервые появился с версии ядра 2.6.26, в Linux. Работа с GPIO проходит через каталог /sys/class/gpio путём обращения к файлам-устройствам.

К портам GPIO подключаются:

  • светодиоды;
  • кнопки;
  • реле;
  • температурные и другие датчики;
  • различные периферийные устройства.

Для программирования GPIO существует несколько способов обращения:

  • Посредством файл-устройства GPIO;
  • Используя языки программирования:
    • Через прямое обращение к регистрам чипа;
    • Используя уже готовые библиотеки (libgpiod).


Одноплатный компьютер Banana Pi BPI-M64


Banana Pi BPI-M64 это 64-битный четырехъядерный мини-одноплатный компьютер, поставляемый как решение с открытым исходном кодом. Ядром системы является процессор Allwinner A64 с 4-мя ядрами Cortex-A53 с частотой 1.2 ГГц. На плате размещено 2 ГБ DDR3 SDRAM 733МГц оперативной памяти и 8 ГБ eMMC.

На плате размещен 40-контактный совместимый с Raspberry Pi разъем, который содержит: GPIO (x28), Power (+5V, +3.3V and GND), UART, I2C, SPI. И 40-контактный интерфейс MIPI DSI.

dotnet libgpiod
Banana Pi BPI-M64 и 40-контактный разъем типа Raspberry Pi 3

Наличие 40-контактного разъема типа Raspberry Pi 3 GPIO, существенно облегчает подключение датчиков из-за совпадение назначение контактов с Raspberry Pi 3. Не приходится гадать к какому контакту подключать тот или иной датчик. Указанные в посте датчики (светодиод и кнопка) подключенные к Banana Pi BPI-M64, можно подключать на те же самые контакты другого одноплатного компьютера, на котором тоже есть 40-контактный разъем, типа Raspberry Pi 3 (или к самой Raspberry Pi 3, разницы нет никакой). Единственное, необходимо изменить номера контактов (линий, ножка процессора) в программном коде, т.к. они зависят от используемого процессора. Но легко определяются но названию контакта. Плата Cubietruck (ARM32) приведена для проверки совместимости и работы кода на 32-разрядных ARM процессорах.

Banana Pi BPI-M64 GPIO Header Position
Позиция [1] 3V3 power соответствует позиции на плате со стрелочкой

Формула для вычисления номера GPIOXX
Для обращение к контактам из C# кода необходимо знать порядковый номер (линия, порт) физической ножки процессора SoC(для Allwinner). Эти данные в спецификациях отсутствую, т.к. порядковый номер получаем путем простого расчета. Например, из схемы возьмем 32-контакт на разъеме типа Raspberry Pi. Название контакта PB7, для получения номера контакта на процессоре произведем расчет по формуле:
(позиция буквы в алфавите 1) * 32 + позиция вывода.Первая буква не учитывается т.к. P PORT, позиция буквы B в алфавите = 2, получаем (2-1) * 32 + 7 = 39. Физический номер контакта PB7является номер 39. У каждого разработчика SoC может быть свой алгоритм расчета номера контактов, должен быть описан в Datasheet к процессору.

Banana Pi BPI-M64 GPIOXX
Контакт PB7 на процессоре Allwiner A64, номер ножки 39

Библиотеки .NET IoT


До того как напишем первую программу на C# по управления GPIO, необходимо рассмотреть пространство имен входящих в dotnet/iot. Все используемые библиотеки добавляются через Nuget пакеты. Подробно рассмотрим драйвера для получения доступа к контактам GPIO одноплатного компьютера. Код на C# взаимодействует с GPIO через специальный драйвер, который является абстракцией доступа к GPIO и позволяет переносить исходный код от одного одноплатного компьютера к другому, без изменений.

Пространства имен .NET IoT:

  • System.Device.Gpio. Пакет System.Device.Gpio поддерживает множество протоколов для взаимодействия с низкоуровневыми аппаратными интерфейсами:
    • General-purpose I/O (GPIO);
    • Inter-Integrated Circuit (I2C);
    • Serial Peripheral Interface (SPI);
    • Pulse Width Modulation (PWM);
    • Serial port.


  • Iot.Device.Bindings. Пакет Iot.Device.Bindings содержит:
    • Драйвера и обертки над System.Device.Gpio для различных устройств которые упрощают разработку приложений;
    • Дополнительные драйвера поддерживаемые сообществом (community-supported).


dotnet IoT Library
Стек библиотек .NET IoT

Рассмотрим первую программу типа Hello World, мигание светодиода (Blink an LED):

using System;using System.Device.Gpio;using System.Threading;Console.WriteLine("Blinking LED. Press Ctrl+C to end.");int pin = 18;using var controller = new GpioController();controller.OpenPin(pin, PinMode.Output);bool ledOn = true;while (true){    controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low));    Thread.Sleep(1000);    ledOn = !ledOn;}

Разбор кода:

  • using System.Device.Gpio пространство имен для использования контроллера GpioController доступа к аппаратным ресурсам;
  • using var controller = new GpioController() создает экземпляр контроллера для управления контактами GPIO;
  • controller.OpenPin(pin, PinMode.Output) инициализирует контакт pin = 18 на вывод, к 18 контакту подключен светодиод;
  • controller.Write(pin, ((ledOn)? PinValue.High: PinValue.Low)) если ledOn принимает значение True, то PinValue.High присваивает высокое значение 18 контакту и светодиод загорается. На 18 контакт подается напряжение в 3.3V. Если ledOn принимает значение False, то PinValue.Low присваивает низкое значение контакту 18 и светодиод гаснет. На 18 контакт подается напряжение в 0V (или минимальное пороговое для значения 0, может быть немного выше 0V).

Далее остается компиляция под ARM архитектуру: dotnet publish -r linux-arm или dotnet publish -r linux-arm64. Но так работает просто только для Raspberry Pi. При использование одноплатных компьютерах отличных от Raspberry Pi необходимо при инициализации GpioController выбирать драйвер доступа к GPIO.

Драйвера доступа к GPIO из .NET


Классы драйверов доступа к GPIO находятся в пространстве имен System.Device.Gpio.Drivers. Доступны следующие драйвера-классы:

  • HummingBoardDriver GPIO драйвер для платы HummingBoard на процессоре NXP i.MX 6 Arm Cortex A9;
  • LibGpiodDriver этот драйвер использует библиотеку Libgpiod для получения доступа к портам GPIO, заменяет драйвер SysFsDriver. Библиотека Libgpiod может быть установлена на Linux и Armbian, не является аппаратно-зависимой, что позволяет ее использовать для различных одноплатных компьютерах ARM32 и ARM64;
  • RaspberryPi3Driver GPIO драйвер для одноплатных компьютеров Raspberry Pi 3 или 4;
  • SysFsDriver GPIO драйвер работающий поверх интерфейса SysFs для Linux и Unux систем, предоставляет существенно меньше возможностей, чем драйвер LibGpiodDriver, но не требует установки библиотеки Libgpiod. Тот случай, когда хочется просто попробовать помигать светодиодом из C# без дополнительных действий;
  • UnixDriver базовый стандартный класс доступа к GPIO для Unix систем;
  • Windows10Driver GPIO драйвер для ОС Windows 10 IoT. Из поддерживаемых плат только Raspberry Pi, весьма ограниченное применение.

В данном посте будет рассматриваться доступ к GPIO через драйвер LibGpiodDriver. Драйвер SysFsDriver базируется на устаревшем методе работы с GPIO через виртуальную файловую систему SysFs. Для решений IoT, SysFs не подходит по трем серьезным причинам:

  • Низкая скорость работы I/O;
  • Есть проблемы с безопасной работой с GPIO при совместном доступе;
  • При контейнеризации приложения на C# в контейнер придется пробрасывать много путей из файловой системы Linux, что создается дополнительные сложности. При использование библиотеки Libgpiod этого не требуется.

Библиотека Libgpiod предназначена для работы с GPIO не только из .NET кода, но и из Python, C++, и т.д. Поэтому ниже изложенная инструкция по установке библиотеки Libgpiod позволит разработчикам на Python реализовывать подобную функциональность, как и на C#. В состав пакета Libgpiod входят утилиты для работы с GPIO. До создание программы на C#, поработаем с датчиками через эти утилиты.

Схема подключения светодиода (LED) и кнопки


Подключать светодиод и кнопку будем на 40-контактный разъем совместимый с Raspberry Pi 3. Светодиод будет подключен на 33 контакт разъема, название контакта PB4, номер линии 36. Кнопка будет подключен на 35 контакт разъема, название контакта PB6, номер линии 38. Необходимо обратить внимание на поддержку прерывания на контакте PB6 для кнопки. Поддержка прерывания необходима для исключения постоянного опроса линии с помощью CPU. На контакте PB6 доступно прерывание PB_EINT6, поэтому кнопку к этому контакту и подключим. Например, соседний контакт PL12 не имеет прерывание, поэтому подключать кнопку к нему кнопку не будем. Если вы подключаете кнопку и резистор напрямую, то не забывайте в цепь добавить резистор для сопротивления для избежания выгорания порта!

libgpiod Armbian
Схема подключения светодиода (LED) и кнопки к 40-контактному разъему совместимый с Raspberry Pi 3

libgpiod Armbian
Схема назначения контактов к которым подключается светодиод (LED) и кнопка

Интерфейс GPIO ядра Linux


GPIO (General-Purpose Input/Output) является одним из наиболее часто используемых периферийных устройств во встраиваемых системах (embedded system) Linux.

Во внутренней архитектуре ядро Linux реализует доступ к GPIO через модель производитель/потребитель. Существуют драйверы, которые предоставляют доступ к линиям GPIO (драйверы контроллеров GPIO) и драйверы, которые используют линии GPIO (клавиатура, сенсорный экран, датчики и т. д.).

В ядре Linux система gpiolib занимается регистрацией и распределением GPIO. Эта структура доступна через API как для драйверов устройств, работающих в пространстве ядра (kernel space), так и для приложений пользовательского пространства (user space).

libgpiod Armbian
Схема работы gpiolib

Старый путь: использование виртуальной файловой системы sysfs для доступа к GPIO


До версии ядра Linux 4.7 для управления GPIO в пользовательском пространстве использовался интерфейс sysfs. Линии GPIO были доступны при экспорте по пути /sys/class/gpio. Так, например, для подачи сигнала 0 или 1 на линию GPIO, необходимо:

  1. Определить номер линии (или номер ножки процессора) GPIO;
  2. Экспортировать номер GPIO, записав его номер в /sys/class/gpio/export;
  3. Конфигурировать линию GPIO как вывод, указав это в /sys/class/gpio/gpioX/direction;
  4. Установить значение 1 или 0 для линии GPIO /sys/class/gpio/gpioX/value;

Для наглядности установим для линии GPIO 36 (подключен светодиод) из пользовательского пространства, значение 1. Для этого необходимо выполнить команды:

# echo 36 > /sys/class/gpio/export# echo out > /sys/class/gpio/gpio36/direction# echo 1 > /sys/class/gpio/gpio36/value

Этот подход очень простой как и интерфейс sysfs, он неплохо работает, но имеет некоторые недостатки:

  1. Экспорт линии GPIO не связан с процессом, поэтому если процесс использующий линию GPIO аварийно завершит свою работу, то эта линия GPIO так и останется экспортированной;
  2. Учитываю первый пункт возможен совместный доступ к одной и той же линии GPIO, что приведет к проблеме совместного доступа. Процесс не может узнать у ОС используется ли та или иная линия GPIO в настоящий момент;
  3. Для каждой линии GPIO приходится выполнять множество операций open()/read()/write()/close(), а так же указывать параметры (export, direction, value, и т.д.) используя методы работы с файлами. Это усложняет программный код;
  4. Невозможно включить/выключить сразу несколько линий GPIO одним вызовом;
  5. Процесс опроса для перехвата событий (прерываний от линий GPIO) ненадежен;
  6. Нет единого интерфейса (API) для конфигурирования линий GPIO;
  7. Номера, присвоенные линиям GPIO непостоянны, их приходится каждый раз экспортировать;
  8. Низкая скорость работы с линиями GPIO;

Новый путь: интерфейс chardev


Начиная с ядра Linux версии 4.8 интерфейс GPIO sysfs объявлен как deprecated и не рекомендуется к использованию. На замену sysfs появился новый API, основанный на символьных устройствах для доступа к линиям GPIO из пользовательского пространства.

Каждый контроллер GPIO (gpiochip) будет иметь символьное устройство в разделе /dev, и мы можем использовать файловые операции (open(), read(), write(), ioctl(), poll(), close()) для управления и взаимодействия с линиями GPIO. контроллеры GPIO доступны по путям /dev/gpiochipN или /sys/bus/gpiochipN, где N порядковый номер чипа. Просмотр доступных контроллеров GPIO (gpiochip) на Banana Pi BPI-M64:

root@bananapim64:~# ls /dev/gpiochip*/dev/gpiochip0  /dev/gpiochip1  /dev/gpiochip2


libgpiod Armbian
Стек работы библиотеки libgpiod

Несмотря на то, что новый API предотвращает управление линиями GPIO с помощью стандартных инструментов командной строки, таких как echo и cat, он обладает весомыми преимуществами по сравнению с интерфейсом sysfs, а именно:

  • Выделение линий GPIO связано с процессом, который он его использует. При завершение процесса, так же в случае аварийного завершения, линии GPIO используемые процессом освобождаются автоматически;
  • Дополнительно, можно всегда определить какой процесс в данное время использует определенную линию GPIO;
  • Можно одновременно читать и писать в несколько линий GPIO одновременно;
  • Контроллеры GPIO и линии GPIO можно найти по названию;
  • Можно настроить состояние вывода контакта (open-source, open-drain и т. д.);
  • Процесс опроса для перехвата событий (прерывания от линий GPIO) надежен.

Библиотека libgpiod и инструменты управления GPIO


Для использования нового интерфейса символьного устройства есть библиотека и набор инструментов, предоставляемых проектом libgpiod.

Libgpiod(LibraryGeneralPurposeInput/Outputdevice) предоставляет набор API для вызова из своих программ и несколько утилит для управления линиями GPIO из пользовательского режима.

В состав libgpiod входят следующие утилиты:

  • gpiodetect выведет список всех чипов GPIO, их метки и количество линий;
  • gpioinfo выведет информацию о линиях GPIO конкретного контроллера GPIO. В таблице вывода по колонкам будет указано: номер линии, название контакта, направление ввода/вывода, текущее состояние;
  • gpioget считает текущее состояние линии GPIO;
  • gpioset установит значение для линии GPIO;
  • gpiofind выполняет поиск контроллера GPIO и линии по имени;
  • gpiomon осуществляет мониторинг состояния линии GPIO и выводит значение при изменение состояния.

Например, следующая программа написанная на C использует libgpiod для чтения строки GPIO:

void main() {struct gpiod_chip *chip;struct gpiod_line *line;int req, value;chip = gpiod_chip_open("/dev/gpiochip0");if (!chip)return -1;line = gpiod_chip_get_line(chip, 3);if (!line) {gpiod_chip_close(chip);return -1;}req = gpiod_line_request_input(line, "gpio_state");if (req) {gpiod_chip_close(chip);return -1;}value = gpiod_line_get_value(line);printf("GPIO value is: %d\n", value);gpiod_chip_close(chip);}

Библиотеку можно вызывать так же и из кода на C++, Python, C#, и т.д.

Для управления линиями GPIO из терминала необходимо использовать инструменты командной строки, предоставляемые libgpiod. Библиотеку libgpiod и инструменты управления GPIO можно установить скомпилировать из исходного текста и установить.

Установка библиотеки libgpiod и инструментов управления GPIO


Репозитарий библиотеки libgpiod доступ по адресу libgpiod/libgpiod.git. В разделе Download опубликованы релизы библиотеки. На 28.04.2021 последний релиз: v1.6.3.

Библиотеку libgpiod можно установить из репозитария дистрибутива, но скорее всего будет доступна старая версия. Установка libgpiod:

$ sudo apt-get update$ sudo apt-get install -y libgpiod-dev gpiod

Для установки последней актуальной версии необходимо выполнить скрипт установки, который возьмет последнюю версию библиотеки из исходного репозитария. В строке вызова скрипта установки setup-libgpiod-arm64.sh, в качестве первого параметра указать номер версии библиотеки (например: 1.6.3), второй параметр (необязательный) папка установки скрипта. По умолчанию библиотека установится по пути: /usr/share/libgpiod.

Скрипт установки из исходного текста библиотеки libgpiod и утилит для ARM32/ARM64:

$ cd ~/$ sudo apt-get update$ sudo apt-get install -y curl $ curl -SL --output setup-libgpiod-armv7-and-arm64.sh https://raw.githubusercontent.com/devdotnetorg/dotnet-libgpiod-linux/master/setup-libgpiod-armv7-and-arm64.sh$ chmod +x setup-libgpiod-armv7-and-arm64.sh$ sudo ./setup-libgpiod-armv7-and-arm64.sh 1.6.3

Для удаления библиотеки выполнить скрипт: remove-libgpiod-armv7-and-arm64.sh

Если по итогу выполнения скрипта появится надпись Successfully, то значит библиотека и утилиты успешно установлены. Дополнительно для проверки, можно вызвать команду с выводом номера версии библиотеки:

root@bananapim64:~# gpiodetect -vgpiodetect (libgpiod) v1.6.3Copyright (C) 2017-2018 Bartosz GolaszewskiLicense: LGPLv2.1This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.

Инструменты библиотеки libgpiod


Команда gpiodetect выведет список всех чипов GPIO, их метки и количество линий. Результат выполнения команды:

root@bananapim64:~# gpiodetectgpiochip0 [1f02c00.pinctrl] (32 lines)gpiochip1 [1c20800.pinctrl] (256 lines)gpiochip2 [axp20x-gpio] (2 lines)

gpiochip0 и gpiochip1, это чипы входящие в состав SoC Allwinner A64. gpiochip1 имеет выход на 40-контактный разъем совместимый с Raspberry Pi. Чип gpiochip2 отдельная микросхема управления электропитанием axp209 подключенная по интерфейсу I2C.

Для вывод справки к вызываемой команде необходимо добавлять параметр "--help". Вызов справки для команды gpiodetect. Результат выполнения команды:

root@bananapim64:~# gpiodetect --helpUsage: gpiodetect [OPTIONS]List all GPIO chips, print their labels and number of GPIO lines.Options:  -h, --help:           display this message and exit  -v, --version:        display the version and exit

Команда gpioinfo выведет информацию о линиях GPIO конкретного контроллера GPIO (или всех контроллеров GPIO, если они не указаны).Результат выполнения команды:

root@bananapim64:~# gpioinfo 1gpiochip1 - 256 lines:        line   0:      unnamed       unused   input  active-high...        line  64:      unnamed         "dc"  output  active-high [used]...        line  68:      unnamed "backlightlcdtft" output active-high [used]...        line  96:      unnamed   "spi0 CS0"  output   active-low [used]        line  97:      unnamed       unused   input  active-high        line  98:      unnamed       unused   input  active-high        line  99:      unnamed       unused   input  active-high        line 100:      unnamed      "reset"  output   active-low [used]...        line 120:      unnamed "bananapi-m64:red:pwr" output active-high [used]...        line 254:      unnamed       unused   input  active-high        line 255:      unnamed       unused   input  active-high

В таблице по колонкам указано: номер линии, название контакта, направление ввода/вывода, текущее состояние. Сейчас к Banana Pi BPI-M64 подключен LCD экран ILI9341 на SPI интерфейсе, для подключения используется вариант с управляемой подсветкой, файл DTS sun50i-a64-spi-ili9341-backlight-on-off.dts. В DTS файле контакт PC4 GPIO68 обозначен для управления подсветкой, название backlightlcdtft. Соответственно в выводе команды, указан номер линии 68, название backlightlcdtft, направление вывод, текущее состояние active-high (включено).

Команда gpioset установит значение для линии GPIO. Например, следующая команда попытается выключить подсветку на LCD ILI9341. Команда: gpioset 1 68=0, где 1 gpiochip1, 68 номер линии(контакта), 0 логическое значение, может быть 0 или 1. Результат выполнения команды:

root@bananapim64:~# gpioset 1 68=0gpioset: error setting the GPIO line values: Device or resource busyroot@bananapim64:~#

В результате мы получим ошибку линия занята, т.к. данная линия занята драйвером gpio-backlight.

Попробуем включить светодиод на линии 36, название PB4, номер контакта на 40-контактном разъеме (совместимый с Raspberry Pi) 33. Результат выполнения команды:

root@bananapim64:~# gpioset 1 36=1

В результате выполнения команды, светодиод включится.

Команда gpioget считывает текущее состояние линии GPIO. Результат выполнения команды:

root@bananapim64:~# gpioget 1 361

Получили значение 1, т.к. до этого включили светодиод командой gpioset.

Команда gpiomon будет осуществлять мониторинг состояния линии GPIO и выводить значение при изменение состояния. Будем мониторить состояние кнопки, которая подключена на линию 38, название PB4, номер контакта на 40-контактном разъеме (совместимый с Raspberry Pi) 35. Команда: gpiomon 1 38, где 1 gpiochip1, 38 номер линии (контакта). Результат выполнения команды:

root@bananapim64:~# gpiomon 1 38event:  RISING EDGE offset: 38 timestamp: [     122.943878429]event: FALLING EDGE offset: 38 timestamp: [     132.286218099]event:  RISING EDGE offset: 38 timestamp: [     137.639045559]event: FALLING EDGE offset: 38 timestamp: [     138.917400584]

Кнопка несколько раз нажималась. RISING повышение, изменение напряжения с 0V до 3.3V, кнопка нажата и удерживается состояние. FALLING понижение, изменение напряжения с 3.3V до 0V, происходит отпускание кнопки, и кнопка переходит в состояние не нажата.

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

Установка .NET 5.0 для ARM


Одно из лучших нововведений в .NET 5.0 стало увеличение производительности для архитектуры ARM64. Поэтому переход на новую версию не только увеличит производительность решения на базе ARM64, но и увеличит время автономной работы в случае использования аккумуляторной батареи.

Определение архитектуры ARM32 и ARM64 для SoC


.NET 5 устанавливается на одноплатный компьютер в соответствие с архитектурой SoC:

  • ARM32, ARMv7, aarch32, armhf 32-разрядная архитектура ARM. Первые процессоры ARM для встраиваемых систем разрабатывались именно на этой архитектуре. По заявлению компании ARM Holding, в 2022 поддержка 32-битных платформ прекратится, и будет поддерживаться только 64-битная архитектура. Это означает, что компания не будет поддерживать разработку ПО для 32-битных систем. Если конечный производитель устройства пожелает установить 32-битную ОС, то ему придется самостоятельно заняться портированием драйверов с 64-битной архитектуры на 32-битную.
  • ARM64, ARMv8, aarch64 64-разрядная архитектура ARM. Ядра Cortex-A53 и Cortex-A57, поддерживающие ARMv8, были представлены компанией ARM Holding 30 октября 2012 года.

Плата Banana Pi BPI-M64 построена на основе процессора Allwinner A64, содержит в себе 64-битные ядра Cortex-A53, поэтому поддерживает 64-разрядные приложения. Для платы Banana Pi BPI-M64 используется 64-разрядный образ ОС Armbian, поэтому на плату будем устанавливать .NET для 64-разрядных систем ARM.

Плата Cubietruck построена на основе процессора Allwinner A20 содержит в себе 32-битные ядра Cortex-A7, поэтому поддерживает только 32-разрядные приложения. Соответственно на плату устанавливается .NET для 32-разрядных систем.

Если вы не знаете какую версию .NET установить на одноплатный компьютер, то необходимо выполнить команду для получения информации об архитектуре системы: uname -m.

Выполним команду на Banana Pi BPI-M64:

root@bananapim64:~# uname -maarch64

Строка aarch64 говорит о 64-разрядной архитектуре ARM64, ARMv8, aarch64, поэтому установка .NET для 64-х разрядных ARM систем.

Выполним команду на Cubietruck:

root@cubietruck:~# uname -marmv7l

Строка armv7l говорит о 32-разрядной архитектуре ARM32, ARMv7, aarch32, armhf, поэтому установка .NET для 32-разрядных ARM систем.

Редакции .NET 5.0 на ARM


.NET 5.0 можно устанавливать в трех редакциях:

  • .NET Runtime содержит только компоненты, необходимые для запуска консольного приложения.
  • ASP.NET Core Runtime предназначен для запуска ASP.NET Core приложений, так же включает в себя .NET Runtime для запуска консольных приложений.
  • SDK включает в себя .NET Runtime, ASP.NET Core Runtime и .NET Desktop Runtime. Позволяет кроме запуска приложений, компилировать исходный код на языках C# 9.0, F# 5.0, Visual Basic 15.9.

Для запуска .NET программ достаточно установки редакции .NET Runtime, т.к. компиляция проекта будет на компьютере x86.

Загрузить .NET с сайта Microsoft можно по ссылке Download .NET 5.0.

Установка .NET Runtime


На странице Download .NET 5.0. можно узнать текущую актуальную версию .NET. В первой колонке Release information будет указана версия: v5.0.5 Released 2021-04-06. Версия номер: 5.0.5. В случае выхода более новый версии .NET, ниже в скрипте в строке export DOTNET_VERSION=5.0.5, нужно будет заменить номер версии на последний. Выполним скрипт установки, в зависимости от разрядности системы ARM32 (Cubietruck) или ARM64(Banana Pi BPI-M64):

ARM64

$ cd ~/$ apt-get update && apt-get install -y curl$ export DOTNET_VERSION=5.0.5$ curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Runtime/$DOTNET_VERSION/dotnet-runtime-$DOTNET_VERSION-linux-arm64.tar.gz \&& mkdir -p /usr/share/dotnet \&& tar -ozxf dotnet.tar.gz -C /usr/share/dotnet \&& rm dotnet.tar.gz$ ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet

ARM32
$ cd ~/$ apt-get update && apt-get install -y curl$ export DOTNET_VERSION=5.0.5$ curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Runtime/$DOTNET_VERSION/dotnet-runtime-$DOTNET_VERSION-linux-arm.tar.gz \&& mkdir -p /usr/share/dotnet \&& tar -ozxf dotnet.tar.gz -C /usr/share/dotnet \&& rm dotnet.tar.gz$ ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet


Проверим запуск .NET, командой (результат одинаков для Banana Pi BPI-M64 и Cubietruck): dotnet --info

root@bananapim64:~# dotnet --infoHost (useful for support):  Version: 5.0.5  Commit:  2f740adc14.NET SDKs installed:  No SDKs were found..NET runtimes installed:  Microsoft.NETCore.App 5.0.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]To install additional .NET runtimes or SDKs:  https://aka.ms/dotnet-download

.NET установлен в системе, для запуска приложений в Linux необходимо воспользоваться командой: dotnet ConsoleApp1.dll

Обновление .NET 5.0


При выходе новых версий .NET необходимо сделать следующее:

  1. Удалить папку /usr/share/dotnet/
  2. Выполнить скрипт установки, указав новую версию .NET в строке export: DOTNET_VERSION=5.0.5. Номер последней версии .NET можно посмотреть на странице Download .NET 5.0. Строку скрипта создания символической ссылки выполнять не надо: ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet


Удаленная отладка приложения на .NET 5.0 в Visual Studio Code для ARM


Удаленная отладка в Visual Studio Code позволяет в интерактивном режиме видеть ошибки и просматривать состояние переменных, без необходимости постоянного ручного переноса приложения на одноплатный компьютер, что существенно облегчает разработку. Бинарные файлы копируются в автоматическом режиме с помощью утилиты Rsync. Для работы с GPIO, настройка удаленной отладки не является обязательной задачей. Более подробно можно почитать в публикации Удаленная отладка приложения на .NET 5.0 в Visual Studio Code для ARM на примере Banana Pi BPI-M64 и Cubietruck (Armbian, Linux).

Создание первого приложения для управления (вкл/выкл светодиода) GPIO на C#, аналог утилиты gpioset


Поздравляю тебя %habrauser%! Мы уже подходим к финалу, осталось буквально чуть-чуть. Разрабатывать и компилировать приложение будем на x86 компьютере в в Visual Studio Code. Находясь в этой точке, подразумевается, что на одноплатном компьютере уже установлена платформа .NET 5 и библиотека Libgpiod, а на компьютере x86 .NET 5 и Visual Studio Code. Итак приступаем:

Шаг 1 Создание приложения dotnet-gpioset


Действия выполняются на x86 компьютере. В командной строке создаем проект с названием dotnet-gpioset: dotnet new console -o dotnet-gpioset, где dotnet-gpioset название нового проекта. Результат выполнения команды:

D:\Anton\Projects>dotnet new console -o dotnet-gpiosetGetting ready...The template "Console Application" was created successfully.Processing post-creation actions...Running 'dotnet restore' on dotnet-gpioset\dotnet-gpioset.csproj...  Определение проектов для восстановления...  Восстановлен D:\Anton\Projects\dotnet-gpioset\dotnet-gpioset.csproj (за 68 ms).Restore succeeded.

После выполнения команды будет создана папка \Projects\dotnet-gpioset\, в этой папке будет расположен наш проект: папка obj, файл программы Program.cs и файл проекта dotnet-gpioset.csproj.

Шаг 2 Установка расширения C# for Visual Studio Code (powered by OmniSharp) для Visual Studio Code


Запустим Visual Studio Code и установим расширение C# for Visual Studio Code (powered by OmniSharp), для возможности работы с кодом на C#. Для этого нажмем на закладке: 1. Extensions, затем 2. в поле ввода напишем название расширения C# for Visual Studio Code, выберем пункт 3. C# for Visual Studio Code (powered by OmniSharp). 4. Перейдем на страницу описание расширения и нажмем на кнопку Install.

.NET Visual Studio Code ARM
C# for Visual Studio Code (powered by OmniSharp)

После установки можно выполнить настройку расширения.

.NET Visual Studio Code ARM
Настройка расширения C# for Visual Studio Code

После установки расширения, перезапустим Visual Studio Code.

Шаг 3 Открытие проекта в Visual Studio Code и добавление NuGet пакетов


Откроем проект в Visual Studio Code. Меню: File =>Open Folder, и выберем папку с проектом \Projects\dotnet-gpioset\

dotnet libgpiod
Проект в Visual Studio Code

Откроем файл dotnet-gpioset.csproj, убедимся что версия .NET выставлена верно, должно быть следующее содержание:

dotnet libgpiod
Содержание файла dotnet-gpioset.csproj

NuGet пакеты можно добавить через командную строку или расширение NuGet Package Manager. Установим данное расширение, и добавим пакеты: Iot.Device.Bindings и System.Device.Gpio. Для этого нажмем комбинацию Ctrl+Shift+P, затем в поле введем: Nuget, выберем Nuget Packet Managet: Add Package.

dotnet libgpiod
Запуск расширения NuGet Package Manager

В поле ввода укажем название пакета Iot.Device.Bindings, нажмем Enter, затем выберем версию 1.4.0 и нажмем Enter. Так же сделать и для пакета System.Device.Gpio. В результате добавление пакетов, содержимое файла dotnet-gpioset.csproj должно быть следующим:

dotnet libgpiod
Содержание файла dotnet-gpioset.csproj

Шаг 4 Добавление обработки аргументов в код


Утилита dotnet-gpioset как и оригинальная gpioset будет принимать на вход точно такие же аргументы. Вызов: dotnet-gpioset 1 36=1, включит светодиод на gpiochipX 1, номер линии 36, значение 1. В режиме отладки будут заданы значения по умолчанию int_gpiochip=1, int_pin=36, pin_value = PinValue.High. Подключим пространство имен System.Device.Gpio для использование структуры PinValue.

Обработка входящих аргументов:

static void Main(string[] args){  //run: dotnet-gpioset 1 36=1  //-----------------------------------------------                          int? int_gpiochip=null,int_pin=null;  PinValue? pin_value=null;    #if DEBUG    Console.WriteLine("Debug version");    int_gpiochip=1;    int_pin=36;    pin_value = PinValue.High;  #endif  if (args.Length==2)    {      //Read args      if (int.TryParse(args[0], out int output)) int_gpiochip = output;      Regex r = new Regex(@"\d+=\d+");//36=1      if (r.IsMatch(args[1])) //check: 36=1        {          var i = args[1].Split("=");          if (int.TryParse(i[0], out output)) int_pin = output;          if (int.TryParse(i[1], out output))            {              pin_value=(output != 0) ? PinValue.High : PinValue.Low;                                         }        }      }  Console.WriteLine($"Args gpiochip={int_gpiochip}, pin={int_pin}, value={pin_value}");  //next code  Console.WriteLine("Hello World!");}

Запускаем выполнение кода для проверки, меню Run => Start Debugging, все работает отлично!

Загружено "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.5\System.Text.Encoding.Extensions.dll". Загрузка символов пропущена. Модуль оптимизирован, включен параметр отладчика "Только мой код".Debug versionArgs gpiochip=1, pin=36, value=HighHello World!Программа "[8528] dotnet-gpioset.dll" завершилась с кодом 0 (0x0).

Шаг 5 Добавление контроллера управления GPIO c драйвером LibGpiodDriver


Для управления GPIO необходимо создать объект GpioController и указать драйвер LibGpiodDriver, для этого добавим пространство имен System.Device.Gpio.Drivers.

Добавление контроллера:

//next codeGpioController controller;var drvGpio = new LibGpiodDriver(int_gpiochip.Value);            controller = new GpioController(PinNumberingScheme.Logical, drvGpio);

Описание кода:

  • GpioController класс контроллера для управления контактами GPIO;
  • LibGpiodDriver(int_gpiochip.Value) драйвер обертки библиотеки Libgpiod, в качестве аргумента указываем номер gpiochip;
  • GpioController(PinNumberingScheme.Logical, drvGpio) инициализация контроллера, PinNumberingScheme.Logical формат указания контактов. Есть два варианта, по названию контакта или по его номеру. Но т.к. названия контактов не заданы, то обращение будет только по номеру.

Шаг 6 Управление контактом GPIO


Добавление кода для задания значения контакту:

//set value            if(!controller.IsPinOpen(int_pin.Value))  {    controller.OpenPin(int_pin.Value,PinMode.Output);    controller.Write(int_pin.Value,pin_value.Value);                      } 

Описание кода:

  • controller.IsPinOpen проверка открытия контакта, может быть занят или недоступен;
  • controller.OpenPin открытие контакта и задание ему режима работы, PinMode.Output на вывод;
  • controller.Write(int_pin.Value,pin_value.Value) выставление контакту int_pin значение pin_value.

Шаг 7 Публикация для архитектуры ARM


Открыть командную строку, и перейти в папку \Projects\dotnet-gpioset\.

Для ARM32 выполнить команду:

  • параметр --runtime задает архитектуру выполнения программы (берется из списка Runtime Identifiers (RIDs));
  • параметр --self-contained указывает на необходимость добавление в каталог всех зависимых сборок .NET, при выставление значение в False, копируются только дополнительные сборки не входящие в .NET Runtime (в данном случае будут скопированы сборки из дополнительных NuGet пакетов).

dotnet publish dotnet-gpioset.csproj --configuration Release --runtime linux-arm --self-contained false

Файлы для переноса на одноплатный компьютер будут в папке: \Projects\dotnet-gpioset\bin\Release\net5.0\linux-arm\publish\.

Для ARM64 выполнить команду:

dotnet publish dotnet-gpioset.csproj --configuration Release --runtime linux-arm64 --self-contained false

Файлы для переноса на одноплатный компьютер будут в папке: \Projects\dotnet-gpioset\bin\Release\net5.0\linux-arm64\publish\.

Шаг 8 Перенос папки \publish\


Содержимое папки \publish\ необходимо перенести в домашний каталог Linux пользователя на одноплатном компьютере. Это можно сделать используя терминал MobaXterm.

Шаг 9 Запуск dotnet-gpioset на одноплатном компьютере


Содержимое папки \publish\ было скопировано в папку /root/publish-dotnet-gpioset. Исполняемым файлом будет файл с расширением *.dll. В самом начале, светодиод был подключен на контакт 33, 40-контактного разъема совместимого с Raspberry P, название контакта PB4, номер линии 36. Поэтому в качестве аргумента номера контакта указываем 36. Для запуска программы необходимо выполнить команду:

dotnet dotnet-gpioset.dll 1 36=1

Результат выполнения команды:

root@bananapim64:~# cd /root/publish-dotnet-gpiosetroot@bananapim64:~/publish-dotnet-gpioset# dotnet dotnet-gpioset.dll 1 36=1Args gpiochip=1, pin=36, value=HighOK

Светодиод включился!



Проект доступен на GitHub dotnet-gpioset.

Создание приложения обработки прерывания от кнопки


Теперь реализуем программу обработки прерываний от GPIO. Задача будет заключаться в переключение светодиода по нажатию кнопки. Первое нажатие кнопки включит светодиод, последующее, выключит светодиод, и так до бесконечности. Программа основана на примере Push button.

Светодиод подключен контакту с номером 36. Кнопка подключена на контакт с номером 38. Итак приступаем:

Шаг 1 Создание приложения dotnet-led-button


Действия выполняются на x86 компьютере. В командной строке создаем проект с названием dotnet-led-button: dotnet new console -o dotnet-led-button, где dotnet-led-button название нового проекта.

D:\Anton\Projects>dotnet new console -o dotnet-led-buttonGetting ready...The template "Console Application" was created successfully.Processing post-creation actions...Running 'dotnet restore' on dotnet-led-button\dotnet-led-button.csproj...  Определение проектов для восстановления...  Восстановлен D:\Anton\Projects\dotnet-led-button\dotnet-led-button.csproj (за76 ms).Restore succeeded.

После выполнения команды будет создана папка с файлами проекта \Projects\dotnet-led-button\.

Шаг 2 Открытие проекта в Visual Studio Code и добавление NuGet пакетов


Точно так же, как и в предыдущем проекте добавим Nuget пакеты: Iot.Device.Bindings и System.Device.Gpio.

Шаг 3 Добавление контроллера управления GPIO c драйвером LibGpiodDriver


Добавим контроллер для управления GPIO, и выставим режим работы контактов:

private const int GPIOCHIP = 1;private const int LED_PIN = 36;private const int BUTTON_PIN = 38;       private static PinValue ledPinValue = PinValue.Low;     static void Main(string[] args){                          GpioController controller;  var drvGpio = new LibGpiodDriver(GPIOCHIP);  controller = new GpioController(PinNumberingScheme.Logical, drvGpio);  //set value  if(!controller.IsPinOpen(LED_PIN)&&!controller.IsPinOpen(BUTTON_PIN))    {      controller.OpenPin(LED_PIN,PinMode.Output);      controller.OpenPin(BUTTON_PIN,PinMode.Input);    }  controller.Write(LED_PIN,ledPinValue); //LED OFF

Описание кода:

  • controller.OpenPin(LED_PIN,PinMode.Output) - открывает контакт светодиода, и выставляет режим работы на вывод;
  • controller.OpenPin(BUTTON_PIN,PinMode.Input) - открывает контакт кнопки, и выставляет режим работы на ввод (сигнал поступает от кнопки.

Шаг 4 Добавление обработки прерывания кнопки


Обработка прерывания реализуется путем добавление Callback на изменение состояние контакта. Callback регистрируется в контроллере GPIO:

controller.RegisterCallbackForPinValueChangedEvent(BUTTON_PIN,PinEventTypes.Rising,(o, e) =>  {    ledPinValue=!ledPinValue;    controller.Write(LED_PIN,ledPinValue);    Console.WriteLine($"Press button, LED={ledPinValue}");          });

Описание кода:

  • RegisterCallbackForPinValueChangedEvent регистрация Callback на контакт BUTTON_PIN, будет срабатывать при нажатие на кнопку Rising. Так же доступно срабатывание на событие отпускание кнопки.

Шаг 5 Публикация для архитектуры ARM


Открыть командную строку, и перейти в папку \Projects\dotnet-led-button\.

Для ARM32 выполнить команду:

dotnet publish dotnet-led-button.csproj --configuration Release --runtime linux-arm --self-contained false

Файлы для переноса на одноплатный компьютер будут в папке: \Projects\dotnet-led-button\bin\Release\net5.0\linux-arm\publish\.

Для ARM64 выполнить команду:

dotnet publish dotnet-led-button.csproj --configuration Release --runtime linux-arm64 --self-contained false

Файлы для переноса на одноплатный компьютер будут в папке: \Projects\dotnet-led-button\bin\Release\net5.0\linux-arm64\publish\.

Шаг 6 Перенос папки \publish\


Содержимое папки \publish\ необходимо перенести в домашний каталог Linux пользователя на одноплатном компьютере.

Шаг 7 Запуск dotnet-led-button на одноплатном компьютере


Содержимое папки \publish\ было скопировано в папку /root/publish-dotnet-led-button. Для запуска программы необходимо выполнить команду:

dotnet dotnet-led-button.dll

Результат выполнения команды:

root@bananapim64:~/publish-dotnet-led-button# dotnet dotnet-led-button.dllCTRL+C to interrupt the read operation:Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:Press button, LED=LowPress button, LED=HighPress button, LED=LowPress button, LED=HighPress button, LED=Low

Кнопка работает!

Проект доступен на GitHub dotnet-led-button.

Теперь поговорим о скорости


Замеры скорости управления GPIO на Banana Pi BPI-M64 не проводились из-за отсутствия осциллографа. Но не так давно, пользователь ZhangGaoxing опубликовал результаты замеров скорости на Orange Pi Zero: ОС Armbian buster, ядро Linux 5.10.16, .NET 5.0.3. Тест заключался в быстром переключение контакта GPIO с 0 на 1 и наоборот, по сути осуществлялась генерация сигнала ШИМ (в Arduino аналог SoftPWM). Чем больше частота, тем быстрее переключатся контакт. Для замера был разработан проект SunxiGpioDriver.GpioSpeed. ZhangGaoxing для доступа к контактам разработал драйвер SunxiDriver, который напрямую обращается к регистрам памяти для управления GPIO. Код этого драйвера так же можно адаптировать к любой плате, путем изменения адресов регистров памяти из datasheet к процессору. Минус такого подхода заключается в отсутствие контроля к GPIO со стороны ОС, можно влезть в контакт используемой ОС и вызвать сбой работы.

Таблица замеров:
Драйвер Язык Версия библиотеки Средняя частота
SunxiDriver C# - 185 KHz
SysFsDriver C# System.Device.Gpio 1.3.0 692 Hz
LibGpiodDriver C# System.Device.Gpio 1.3.0
libgpiod 1.2-3
81 KHz
wiringOP C 35de015 1.10 MHz

Результаты подтвердили, что самым медленным интерфейсом является SysFs, и его не стоит использовать для серьезных проектов. wiringOP является С оберткой доступа к GPIO. Непосредственно управление GPIO из C кода существенно быстрее, чем из приложения на .NET, разница скорости в ~13 раз. Это и есть плата за Runtime.

Итог


Управлять контактами GPIO в C# оказалось не сложнее чем на Arduino. В отличие от Arduino в нашем распоряжение Linux с поддержкой полноценной графики, звуком, и большими возможностями подключения различной периферии. В далеком 2014 году с хабровчанином prostosergik был спор о целесообразности использовании Raspberry Pi в качестве школьного звонка. Мною был реализован подобный функционал на C# .NET Micro Framework, отладочная плата FEZ Domino. С того времени многое что изменилось. Сейчас вариант использования для подобных индивидуальных задач, одноплатных компьютеров на Linux более оправдан, чем использование микроконтроллера. Первое существенное изменение это .NET теперь работает на Linux нативно. Второе появились библиотеки которые упрощают и скрывают под капотом все сложную работу. Третье цена, сейчас одноплатный компьютер с 256 Мб ОЗУ, Ethernet и Wi-Fi в известном китайском магазине можно приобрести за 18$. За такие деньги МК, с поддержкой полноценного Web-интерфейса и шифрования сетевого трафика, вряд ли найдешь. Платформа .NET IoT позволяет работать с GPIO на достаточно высоком уровне абстракции, что существенно снижает порог вхождения. В результате любой разработчик .NET платформы, может с легкостью реализовать свое решение для IoT не вдаваясь в детали как это работает внутри. Установка платформы .NET и библиотеки Libgpiod было приведено для понимания, как это работает, но такой подход не является самым удобным. Гораздо удобнее все разворачивать в Docker контейнере, тем более это mainstream для Linux. В продолжении посмотрим как упаковывать приложение на C# вместе с .NET 5 и Libgpiod в один контейнер, для дальнейшей удобной дистрибьюции нашего решения потенциальному клиенту, задействуем LCD для вывода информации из .NET кода.



На правах рекламы


Прямо сейчас вы можете заказать мощные серверы, которые используют новейшие процессоры AMD Epyc. Гибкие тарифы от 1 ядра CPU до безумных 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Подписывайтесь на наш чат в Telegram.

Подробнее..

3 стратегии сегментации для граничных вычислений

01.04.2021 18:23:17 | Автор: admin

По прогнозам IDC, в 2024 году размер мирового рынка граничных вычислений (edge computing) достигнет $250,6 млрд, так что эта технология определенно заслуживает пристального внимания. И сегодня мы поговорим о таком ее важном аспекте, как сегментация: что это, зачем она нужна, и как реализуется.

Суть концепции edge computing физически перенести вычисления как можно ближе к конечному потребителю, чтобы предоставлять их максимально быстро и эффективно. Однако в отличие от распределенной архитектуры ЦОД, где информационный обмен между сервисами сводится к взаимодействию кластеров машин, сконцентрированных в одной локации, граничные вычисления подразумевают использование физических устройств, которые рассредоточены на обширной территории (например, банкоматы) и даже могут активно перемещаться в пространстве (складские погрузчики или беспилотные автомобили). Такое резкое увеличение парка и разнообразия устройств, образующих цифровой домен, принципиально меняет архитектурные подходы к распределенным вычислениям, см. Рис. 1.

Рис. 1: Граничные вычисления повышают уровень сегментации распределенных вычислений.Рис. 1: Граничные вычисления повышают уровень сегментации распределенных вычислений.

Критическим фактором при проектировании архитектуры граничных вычислений является сегментация: физическая, логическая и на уровне данных. В edge computing очень важно, где и как именно существуют вычислительные ресурсы, образующие домен приложения. Кроме того, если в облачных вычислениях главным предметом обеспокоенности является защита данных, то в граничных вычислениях не менее важно защищать от вредоносного вторжения и сами устройства, между которыми циркулируют данные, а количество таких устройств может исчисляться не только десятками и сотнями, но и тысячами. В самом деле, вам вряд ли понравится, если хакер подключится к умной колонке в вашей гостиной и начнет прослушивать домашние разговоры? Или, не дай бог, перехватит управление электронным ассистентом в вашем автомобиле и устроит Армагеддон прямо посреди города.

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

В этой статье мы рассмотрим сегментацию граничных вычислительных сред, обсудим сопутствующие таким средам проблемы, и разберем различные подходы к сегментации: физические, логические и на уровне данных.

Проблемы на пороге

Вместе с граничными вычислениями в распределенных системах появляется ряд факторов, которые усложняют архитектурное проектирование сегментации. Если классическая среда облачных вычислений относительно однородна и состоит из дата-центров, заполненных стойками серверов x86 или мейнфреймов, которые связаны оптоволоконным Ethernet-ом и общаются по TCP/IP, то граничные вычисления выводят на арену широкий спектр устройств и коммуникационных протоколов на базе различных аппаратных архитектур и чипсетов. Одни из этих устройств, такие как банкоматы, используют стандартные процессоры x86. Другие, например, различные системы на базе микрокомпьютеров Raspberry PI, построены на архитектуре ARM. И наконец, третьи, вроде роботизированных систем или автомобилей, используют узко специализированные чипсеты.

Помимо железа взрыв разнообразия происходит и на уровне коммуникационных протоколов. Одни устройства могут напрямую подключаться Ethernet-кабелем, другие по беспроводному 802.11x, третьи через Bluetooth. И все эти устройства требуется поддерживать.

Другой важный момент обновление этих новых граничных систем. Для стандартных вычислительных устройств, таких как ноутбуки, планшеты или мобильные телефоны, обновление выполняется довольно просто, поскольку они, как правило, почти всегда доступны по сети. Но как обновить ПО на беспилотном автомобиле, который использует очень специфическое железо и протоколы, а к сети подключен отнюдь не постоянно? Это создает серьезные вызовы при проектировании ИТ-архитектуры предприятия, которые надо всесторонне учитывать. И именно поэтому в граничных вычислениях так важно тщательно прорабатывать сегментацию на физическом и логическом уровнях, а также на уровне данных.

Физическая сегментация

Физическая сегментация это про то, как разнести части распределенной архитектуры по различным физическим машинам. Как уже говорилось, в дата-центре физическая сегментация обычно сводится к размещению оборудования в серверных стойках внутри одного здания. В ситуациях, когда требуется обеспечить молниеносную связь между какими-то конкретными машинами, их надо размещать как можно ближе друг к другу. Это просто законы физики: чем меньше расстояние, тем быстрее обмен данными. Для приложений, менее требовательных в плане задержек, физическое расстояние между машинами внутри дата-центра не критично, им просто достаточно быть в одном здании.

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

Одна из таких моделей разбиения получила название туманных вычислений (fog computing) и подразумевает наличие промежуточных дата-центров и точек сбора данных, расположенных между устройствами IoT и главным центром обработки данных, см. Рис. 2.

Рис. 2: Туманные вычисления (fog computing) это способ сегментации физических вычислительных ресурсов между устройствами IoT и главным дата-центром.Рис. 2: Туманные вычисления (fog computing) это способ сегментации физических вычислительных ресурсов между устройствами IoT и главным дата-центром.

В рамках fog-модели дата-центры зачастую выступают в роли квази-граничных устройств: они работают в частных сетях, обслуживают какую-то конкретную локацию и решают какую-то специфическую задачу.

Хорошим примером fog-архитектуры является городская система дорожных камер, которые группами подключаются к районным ЦОД в городской сети, а эти ЦОД уже подключены к главному дата-центру города. Передача данных при этом становится эффективнее, так как каждая камера подключена к fog-облаку. Однако простое перемещение данных туда и обратно имеет смысл только с точки зрения логики использования этих данных. Здесь можно добиться хорошей эффективности, если разместить критически важный программный интеллект в правильно выбранном относительно других вычислительных активов месте. И именно здесь в игру вступает сегментирование программной логики.

Сегментирование логики

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

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

Эмпирическое правило гласит, что на каждом физическом уровне должно присутствовать столько логики, сколько требуется для выполнения работы на этом участке. Допустим, IoT-устройство это умный складской погрузчик с геолокацией в реальном времени, который может сам находить нужный отсек на складе и забирать оттуда паллету с запрошенным товаром. В этом случае логика безопасного передвижения по складу должна быть реализована на самом погрузчике. Погрузчик не должен постоянно спрашивать сервер, как ему двигаться по складу. Кроме того, непосредственно на погрузчике должна иметься и логика его обновления. Это может быть SSH-сервер, чтобы оператор или bash-скрипт могли делать обновление. Либо это может быть подписчик системы обмена сообщениями, привязанный к расположенному в fog-облаке брокеру и получающий от него сигнал о необходимости обновить свой код и затем связывающийся с fog-сервером с помощью клиента HTTP.

Навигация по складу, выбор паллеты с нужным товаром и активное участие в обновлении своего ПО это основные функции погрузчика. А вот работа с данными клиентского заказа, к которому относится товар, к основным функциям погрузчика не относится. Поэтому соответствующая логика должна реализовываться уже в другом месте, например, на серверной миниферме на том же складе, где работает погрузчик, либо выше, где-то в частном fog-облаке, накрывающем территорию склада.

Также логично будет разграничить обработку заказов, чтобы каждый склад обрабатывал только свои заказы. Есть и следующий, более высокий уровень логики, где клиентский заказ уже отслеживаются в рамках общей картины управления цепочками поставок, и который реализуется на уровне корпоративной системы ERP, охватывающей все регионы присутствия компании, см. Рис. 3.

Рис. 3: В архитектуре граничных вычислений логика должна разделяться согласно ключевым функциям уровня сегментации.Рис. 3: В архитектуре граничных вычислений логика должна разделяться согласно ключевым функциям уровня сегментации.

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

Умение сегментировать это одновременно и наука, и искусство. Важно понимать, что сегментация логики является важным аспектом проектирования архитектуры граничных вычислений и требует самого тщательного обдумывания и планирования, а также четкого понимания задач каждого элемента в архитектуре граничных вычислений.

Сегментирование на уровне данных

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

Впрочем, всегда полезно помнить, что маленькие пакеты проще передаются по сети и быстрее обрабатываются, чем большие. Преобразование данных в двоичный формат, такой как Protocol Buffers, и потоковая передача данных, такая как gRPC, обеспечивают очень быстрый обмен данными. Обратная сторона перехода на двоичные структуры данных и потоковую передачу усложнение архитектуры за счет упаковки и обработки данных. Как бы то ни было, основное правило здесь следующее: маленькие пакеты это хорошо, а потоковые данные еще лучше! Запомним это правило и вернемся к сценарию со складом и умным погрузчиком.

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

Задача погрузчика забрать паллету с нужным товаром из складского отсека. Для этого локальное fog-облако склада отправляет погрузчику соответствующую информацию о заказе.

Причем, fog-облако отслеживает передвижения погрузчика, а также отправляет в ERP-систему данные по выполнению заказа после того, как погрузчик заберет на складе паллету с товаром и загрузит ее в грузовик для доставки клиенту.

В свою очередь, расположенная в глобальном облаке ERP отправляет складскому fog-облаку информацию по заказам, которые надо отправить клиентам. Полностью этот сценарий показан на Рис.3.

Теперь займемся сегментацией данных с учетом конечных точек.

Как происходит обмен данными в средах IoT

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

Данные о местоположении и статусе очень чувствительны ко времени. Если какой-то проезд по складу оказывается заблокирован, то погрузчик должен срочно изменить свой маршрут. Или если погрузчик вдруг сломался, то заказ, который он обрабатывал, необходимо передать другому погрузчику. Погрузчик может инкапсулировать данные о местоположении, маршрутизации и состоянии в небольшие структурированные сообщения, которые непрерывным потоком передаются в складское fog-облако. Как уже говорилось, потоковые данные передаются быстро и эффективно, особенно если текст предварительно трансформируется в двоичный формат. Таким образом, сегментация данных в двоичные сообщения с потоковой пересылкой gRPC, решает поставленную задачу.

Что касается клиентского заказа, то погрузчику достаточно знать лишь ID заказа, идентификатор товара (SKU) и складской отсек, где хранится паллета с этим товаром. Эти три значения можно упаковать в очень маленькое сообщение, которое погрузчик будет получать от fog-облака. Доставку таких сообщений легко организовать с помощью типового запроса-ответа HTTP на RESTful API, а чтобы ускорить передачу информации о заказе, погрузчик и fog-облако могут общаться через двусторонний поток gRPC.

На самом деле неважно, какой транспортный метод используется в системе. Важно лишь чтобы данные, которыми обмениваются устройство IoT (в нашем случае погрузчик) и частное fog-облако, координирующее работу этого устройства на складе, сегментировались на небольшие сообщения, которые можно было отправлять и принимать очень быстро. Короче говоря, здесь прежде всего важна скорость. И именно под эту задачу и сегментируются данные.

Сегментирование данных при обмене между fog-облаком и корпоративным облаком

Сегментация данных при информационном обмене между складским fog-облаком и корпоративной системой ERP, расположенной в глобальном облаке, существенно отличается от только что рассмотренной выше, и прежде всего тем, что здесь совсем не так критичен фактор времени.

Обмен данными между устройством IoT и fog-облаком должен быть практически мгновенным, то есть измеряться миллисекундами. Обмен данными между fog-облаком и глобальной системой ERP вполне переживет задержку в секунду-две. Кроме того, системе ERP и складскому fog-облаку нужна только информация о выполнении заказа. Иначе говоря, здесь вполне возможен пакетный обмен, когда одно сообщение содержит данные сразу по нескольким заказам. В результате сообщения становятся больше, но это не страшно, поскольку на обмен информацией есть гораздо больше времени, см. рис. 4.

Рис. 4: Сегментация данных это важный аспект корпоративной архитектуры в средах edge computing.Рис. 4: Сегментация данных это важный аспект корпоративной архитектуры в средах edge computing.

Обмен данными можно упростить за счет использования стандартного HTTP через RESTful API или же передавать их потоковым методом, тут уже дело личных предпочтений. Кому-то работать через REST на уровне ERP покажется намного проще, чем создавать и поддерживать механизмы кодирования-декодирования двоичных потоков данных по открытому и постоянному сетевому соединению. Интересно отметить, что наряду с сегментацией данных с учетом специфики физической среды и решаемых задач, для успешной работы организации требуется и сегментация ИТ-специалистов по профессиональным навыкам, чтобы нужные люди были на нужных местах.

Для программирования устройств IoT требуется совсем другие навыки, чем для кодирования систем ERP, особенно при работе со специализированными IoT-устройствами с проприетарными языками программирования. И организации склонны сегментировать ИТ-разработчиков соответствующим образом. Поэтому выбор используемых API-фреймворков и форматов данных в некоторой степени определяется и наличием людей с определенными квалификациями, а не только спецификой задач, которые решаются в ходе обмена данными, и особенностями физической среды, где происходит такой обмен.

Подводим итоги

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

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

Подробнее..

Перевод 10 плат для начала разработки IoT в 2021г

26.03.2021 20:17:43 | Автор: admin

Есть масса хороших вариантов для старта

В рамках запуска курса Разработчик IoT делимся с вами переводом полезной статьи.

Приглашаем также на открытый вебинар на тему
Практика IoT: создаем проект по шерингу самокатов.
На этом бесплатном демо-уроке мы:
- обсудим наиболее перспективные приложения Интернета вещей в разных сферах;
- познакомимся с облачной платформой Rightech IoT Cloud;
- создадим свой проект по шерингу самокатов;
- будем эмулировать данные сервисом ботов;
- применим постобработку данных;
- сформируем сценарии автоматизации.


Интернет вещей, или IoT, уже стал реальностью. Вы, вероятно, используете одно (или более) устройство IoT прямо сейчас, или, по крайней мере, воспользовались преимуществами его применения. И этот рынок имеет тенденцию только расти.

Вообще говоря, интернет вещей это сеть физических объектов, которая позволяет этим объектам создавать данные и обмениваться ими.

Согласно некоторым исследованиям, в 2021 году в мире насчитывалось 25 миллиардов устройств IoT, а к 2025 году эта цифра достигнет около 64 миллиардов (а объем рынка составит 11 триллионов долларов). От сельского хозяйства до домашней автоматизации, каждый сектор использует IoT, для помощи в своей сфере деятельности.

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

Независимо от того, используете ли вы устройство, чтобы определить лучшее время для полива вашего растения, или же человек ослаб и нуждается в медицинской поддержке, IoT будет все больше и больше частью нашей жизни.

Что такое Development Board?

Development Board (Плата разработки) это печатная схема, содержащая микроконтроллер или микропроцессор с аппаратным обеспечением для помощи в ваших экспериментах. Она может содержать различные периферийные устройства, от датчиков до источников питания.

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

Особенности, которые необходимо учитывать:

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

  • Подключение: это те опции, которые необходимы для связи с миром, такие как WiFi, Cellular, Ethernet и т.д.

  • Интерфейсы: протоколы или контакты, которые необходимо подключить к другим компонентам и оборудованию, таким как I2C, GPIO, SPI и т.д.

  • Программное обеспечение: параметры, необходимые для разработки программы, такие как OS (операционная система), IDE, языки программирования и т.д.

  • Контроллер: в чем заключаются возможности центрального процессора, такие как память, память, скорость и т.д.

В этой статье я покажу вам 10 плат, которые вы можете использовать при разработке чтобы начать.

. . .

ESP32

Производимая компанией Espressif, эта плата является одной из самых используемых для создания продукта IoT. Она имеет встроенный Bluetooth (v4.2 и v5.0) и WiFi, так что вам не нужен никакой другой модуль, чтобы начать общение с миром.

Оснащен двухъядерным микроконтроллером Xtensa, может разгоняться до 240 МГц и располагает 520К оперативной памяти (RAM). Имеет хороший объем GPIO (с различными 12-битными каналами АЦП), с поддержкой I2C, SPI и UART протоколов. Разработан для переносных и мобильных устройств, имеет низкое энергопотребление и способен работать в широком диапазоне температур.

Вы можете осуществлять разработку с помощью Arduino IDE, используя собственный SDK, или даже другой RTOS.

Он имеет относительно низкую цену, в диапазоне от $6 до $12.

Источник: https://www.espressif.com/Источник: https://www.espressif.com/

. . .

Onion Omega2

В сущности, это компьютер с предустановленной системой на базе Linux, что увеличивает возможности использования языков и библиотек программирования. Компьютер оснащен процессором MT7688 SoC с тактовой частотой 580 МГц, доступен WiFi и Ethernet.

Он имеет память 128 Мб RAM и 32 Гб Flash, поэтому, когда дело доходит до IoT, это очень много. С 18 GPIO, он поддерживает I2C, SPI и UART протоколы.

Отсутствие аналогового входа можно решить с помощью платы расширения или конвертера I2C.

Он стоит около $13.

Источник: https://onion.io/Источник: https://onion.io/

. . .

Arduino Nano 33 BLE Sense

Совсем недавно появилась новая плата разработки - это великий Arduino Nano 33 BLE Sense. Она оснащена чипом Nordic nrf52840, имеет поддержку Bluetooth 5.0, WiFi и ZigBee.

Она имеет часы 64 МГц, память 1 Мб Flash и 256 Кб RAM. С 14 GPIO, также имеет поддержку SPI, I2C и UART протоколов.

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

Главной особенностью данной платы, помимо впечатляющего выбора датчиков, является возможность запуска на ней приложений Edge Computing (AI) с использованием TinyML. И, конечно же, вы можете использовать всю поддержку программного обеспечения Arduino и Nordic для разработки.

Это стоит $31.

Источник: https://www.arduino.cc/Источник: https://www.arduino.cc/

. . .

Adafruit Feather M0

У Adafruit есть много прорывных плат, поэтому, в случае, если вы являетесь энтузиастом DYI, то обязательно обратите на них внимание.

Его плата Feather M0 не исключение. Оснащена ARM-процессором, работающим на частоте 48 МГц с 256 КБ FLASH + 32 КБ RAM памятью, она специально разработана для использования CircuitPython. Да, вы можете использовать Python для программирования платы IoT!

С 20 GPIO, поставляется с поддержкой ADC (12-бит), SPI, I2C и UART. И вы можете научиться как использовать это с великолепными учебными материалами от Adafruit.

Это стоит около $20.

Источник: www.adafruit.comИсточник: www.adafruit.com

. . .

Particle Boron

Если вы хотите разработать сотовое устройство, вам следует рассмотреть для начала эту плату. Она оснащена чипом Nordic nrf52840, поэтому в комплект поставки также входит поддержка WiFi и Bluetooth.

Имеет 20 GPIO (с 6 аналоговыми каналами), с поддержкой SPI, I2C и UART протоколов.

Но главной ее особенностью является мобильный модуль (2G/3G), который поставляется с SIM-картой с поддержкой более чем 100 стран.

Вы также можете использовать Arduino IDE для программирования.

Одним из недостатков является относительно высокая стоимость, около $80.

Источник: https://docs.particle.io/Источник: https://docs.particle.io/

. . .

Arduino MKR NB 1500

Если вы намереваетесь начать с узкополосного Narrowband IoT вида связи, то можете воспользоваться этой платой. Она оснащена маломощным 32-битным процессором ARM с частотой 48 МГц, имеет до 32 КБ RAM + Flash 256 КБ памяти.

Имеет 28 GPIO, с интерфейсами UART, SPI и I2C и 12-битными аналоговыми входами. В комплект поставки входит радиомодуль IoT LTE, который можно использовать для создания приложения (проверьте его доступность в вашем регионе).

И Вы можете использовать всю среду Arduino для программирования Вашего устройства.

Стоит это $77.

Источник: https://arduino.cc/Источник: https://arduino.cc/

. . .

Teensy 4.1

Этот 32-битный ARM Cortex M7 является одним из самых быстрых микроконтроллеров, с часами вплоть до 600MHz и памятью 8MB Flash + 1MB RAM.

Он имеет 40 GPIO (18 аналоговых входов), поставляется с поддержкой I2C, SPI, UART и CAN протоколов.

Не имеет WiFi или BLE соединения, но это может быть компенсировано поддержкой Ethernet 10/100M.

Вы можете запрограммировать его с Arduino IDE или даже с CircuitPython.

Это стоит $26.85.


Источник: www.pjrc.comИсточник: www.pjrc.com

. . .

BeagleBone Black

BeagleBone Black - это недорогая, поддерживаемая сообществами платформа разработки для разработчиков и любителей. Оснащена 1 ГГц ARM Cortex-A8, с 512 Мб RAM + 8 Гб Flash памятью.

Она имеет различные операционные системы (OS), такие как Ubuntu, Debian и Android, что действительно увеличивает возможности ее программирования.

С более чем 60 GPIO (7 аналоговых), он поставляется с SPI, I2C, CAN и UART протоколами. Он также имеет Ethernet и USB интерфейсы, с HDMI портом.

В нем отсутствует чип WiFi / BLE, но если он вам действительно нужен, вы можете рассмотреть BeagleBone AI версию (которая стоит намного дороже).

Она стоит $49.


Источник: https://beagleboard.org/blackИсточник: https://beagleboard.org/black

. . .

Raspberry Pi 4

Наверное, самая известная (и любимая) плата из этого списка. В версии 4B у вас есть доступ к мини-плате для ПК размером с кредитную карту, которую вы также можете использовать как персональный компьютер.

Оснащена четырехъядерным процессором Broadcom, 64-битным, 1,5 ГГц. Имеет память 2 ГБ RAM в версии по умолчанию (с возможностью увеличения до 4 и 8 ГБ). Для связи доступен WiFi, Bluetooth и Ethernet.

Имеет 40 GPIO, с интерфейсами SPI, I2C, UART, а также 2 порта micro-HDMI (до 4к). Также имеется интерфейс для USB, DSI дисплея и CSI камеры.

Имеет различные операционные системы (OS), которые могут быть использованы (от Raspbian, с собственной версией Debian, до Windows IoT), так что у вас есть хороший набор языков программирования, которые вы можете выбрать.

Ей не хватает аналогового входа, но вы можете легко решить эту проблему с помощью адаптера. Одна вещь, которая хорошо работает для Raspberry Pi, это количество продуктов и расширений, которые могут быть использованы с платой, в дополнение к огромному сообществу.

Она стоит от $35 до $55.

Источник: https://www.raspberrypi.org/Источник: https://www.raspberrypi.org/

. . .

NVIDIA Jetson Nano

Небольшой, мощный компьютер, на котором можно запускать приложения для AI или робототехники без каких-либо сложностей. Оснащен четырехъядерным процессором ARM 1.53 ГГц, оперативной памятью (RAM) 2 ГБ и выделенным 128-ядерным графическим процессором NVIDIA.

Он оснащен HDMI, разъемом CSI и соединением Gigabit Ethernet (можно использовать WiFi через адаптер). С 40 GPIO у вас есть интерфейсы I2C, SPI и UART.

С помощью JetPack Development Kit вы получаете доступ к Linux с уже установленными библиотеками и фреймворками, такими как CUDA, OpenCV, VisionWorks и TensorRT.

Вы можете изучать AI и другие интересные проекты на сайте NVIDIA, а также в сообществе.

Это стоит $59.

Источник: https://developer.nvidia.comИсточник: https://developer.nvidia.com

. . .

Бонус: Meadow F7

Как уже упоминалось в комментариях, еще одна замечательная плата - это Meadow Dev Kit от Wilderness Labs.

Она оснащена микроконтроллером STM32F7, с микропроцессором ESP32, который обеспечивает WiFi и Bluetooth-соединение. Имеет 25 GPIO, с SPI, I2C, CAN и UART протоколами. Он также имеет встроенное зарядное устройство LiPo.

Одной из интересных вещей в этой плате является возможность использования стандарта .NET, который может сэкономить вам много времени при программировании.

Она стоит $50.

Meadow F7 Development Kit. Источник: https://store.wildernesslabs.co/Meadow F7 Development Kit. Источник: https://store.wildernesslabs.co/

. . .

Заключение

Мы видели 10 плат для разработки, которые вы можете купить сегодня и начать работать с миром IoT. Это не единственные варианты для создания продукта IoT, но это хороший старт.

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


Узнать подробнее о курсе Разработчик IoT.

Смотреть открытый вебинар на тему Практика IoT: создаем проект по шерингу самокатов.

Подробнее..

ГКРЧ выделит российскому IoT частоты 300-400 МГц, но этот спектр не очень востребован

22.03.2021 04:10:35 | Автор: admin

На днях в сети появилась информация о том, что Госкомиссия по радиочастотам выделит для работы узкополосного IoT диапазон 300-400 МГц. Положительный момент здесь в том, что этот спектр частот позволяет работать в закрытых помещениях. Отрицательный оборудования именно для этого диапазона либо мало, либо вообще нет.

Для российского узкополосного интернета вещей выделяется очень ограниченный диапазон частот, включая 301,125-305, 825 МГц, 337,125-341, 825 МГц, 343-344 МГц и 390-393 МГц. Доступ к нему предоставляется тем, кто регистрирует радиоэлектронные средства (РЭС). Но есть и второе условие эти компании/лица должны использовать радиооборудование, которое включено в Единый реестр российской радиоэлектронной продукции при Минпромторге со статусом телекоммуникационного оборудования российского производства (ТОРП).

Что это за узкополосный IoT?


В РФ сейчас есть три типа беспроводных сетей такого типа, включая лицензируемые и нет. В первом случае имеются в виду технологии EC-GSMи NB-IoT, базирующиеся на технологиях сотовых сетей второго поколения стандарта GSM и мобильных сетей четвертого поколения (4G) стандарта LTE.

Во втором случае мы говорим о диапазоне 863-876 МГц с главной полосой 868,7-869,2 МГц, где нет ограничений на рабочий цикл.

С диапазоном 800 МГц работают разные технологии, включая LoRaWAN или российские технологии Стриж, NB-Fi и GoodWAN. Что более важно, именно в этом спектре работает Федеральная сеть транспортной телематики (ФСТТ), которую разворачивает компания Глонасс-ТМ на базе технологии XNB. Частоты для нее выделены отдельным решением Государственной комиссии.

Это было сделано в 2007 году, тогда Госкомиссия вынесла решение о полосах частот, которые выделяются для устройств малого и среднего радиуса действия. Это решение несколько раз модифицировалось. Например, в 2018 году операторов IoT решили обязать работать лишь с отечественным оборудованием.

Согласно решению той же ГКРЧ до конца 2026 должно быть прекращено использование действующими средствами воздушной радионавигации диапазона 790-960 МГц с переводом их в диапазон 960 МГц 1,215 ГГц. По мнению чиновников, в этом случае проблема с нехваткой оборудования будет решена.

Можно подробнее про отечественное оборудование?


Да, конечно. Как в ЕС, так и в России подходы к распределению полос частот для интернета вещей отличаются. В то же время представители ГКРЧ заявили, что гармонизацию выделенных полос частот не стоит рассматривать как цель развития радиочастотного обеспечения сетей интернета вещей.

Причины называются следующие:
Наличие радиоинтерфейсов для беспроводного интернета вещей российской разработки, включая NB-FI и наличие оборудования для интернета вещей российского производства с обязательным его использованием.
Значимость уровня приложения, а не передачи сигнала на физическом уровне. Последний инвариантен к рабочей полосе радиочастот, которая используется в том либо ином радиоинтерфейсе.

Сейчас активнее всего разворачивается инфраструктура мобильных сетей радиосвязи в нижних полосах радиочастот, включая LTE-450 и LTE-350. Так, сети LTE-450 развивает LTE-450, хотя и под брендом Skylink. Представители ГКРЧ считают, что в этом случае необходимо рассмотреть вопрос выделения в полосе 300-400 МГц радиочастотного ресурса еще и сетям интернета вещей.

Положительным моментом в этой ситуации является то, что развертывание сетей IoT в диапазонах ниже 400 МГц позволит обеспечить электромагнитную совместимость с передатчиками цифрового ТВ-вещания, которые планируется разворачивать в диапазоне 470-694 МГЦ.

Окей, а кто сейчас занимает диапазон 300-400 МГц?


В первую очередь, частоты 301,125-305, 825 МГц и 337,125-341, 825 МГц используют радиоэлектронные средства сетей стандарта McWll(другое название NG-1). Эту сеть, в частности, строит компания НИИРИТ-Синвей. Эта компания пыталась занять и диапазон 1800 МГц, но успеха не достигла.

Кроме того, в диапазонах 307-308 МГц и 343-344 МГц работают радиоудлинители фиксированных телефонных линий. В полосе 390-394 МГц работают средства транкинговой радиосвязи стандарта Tetra. Соответственно, на работу IoT-сетей в указанных полосах частот будут наложены ограничения.

В чем проблема с этими частотами?


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

Похожее мнение высказал и и председатель Ассоциации участников рынка интернета вещей Андрей Колесников. Данный диапазон из-за размера антенны не подразумевает миниатюризацию, говорит он. Собственно, длинна волны является параметром удорожания любых устройств интернета вещей в этом диапазоне. Следовательно, будет ограниченное использование, и не будет массового внедрения. Фундаментальные решения проблемы размера антенны в низких диапазонах без удорожания устройства мне не известны.

Подробнее..

IoT практикум от Microsoft и МТС

23.03.2021 10:07:12 | Автор: admin

Мероприятие будет крайне полезно компаниям, перед которыми стоят задачи быстрого внедрения IoT-решений. Всего за 7 часов вы создадите полноценные IoT-решения получения и визуализации необходимой информации внутри компании.

31 марта, подробности и регистрация.

В качестве платформы для IoT-решений будет использоватьсяAzure IoT Central, куда будут передаваться данные сNB-IoT Development Kit от МТС.

Мероприятие рассчитано на технических специалистов в сферу обязанности которых входит разработка, внедрение и поддержка систем мониторинга активов компании.

К участию допускаются команды от 2 до 5 человек.
Всем командам предстоит последовательно пройти 14 челленджей (за каждый из челленджей команды получают призовые баллы):

  1. Развернуть виртуальную машину для NB-IoT шлюза

  2. Присвоить NB-IoT шлюзу публичное доменное имя с учетом названия команды

  3. Открыть порты для работы с виртуальной машиной через SSH и Node-RED

  4. Установить Node-RED

  5. Импортировать в Node-RED скелет шлюза/данных

  6. Проверить получение входных данных с NB-IoT устройства на шлюз

  7. Преобразовать данные из формата NB-IoT в JSON

  8. Развернуть приложение Azure IoT Central

  9. Развернуть Device Bridge для подключения NB-IoT шлюза к IoT Central

  10. Создать и опубликовать шаблон устройства в Azure IoT Central

  11. Проверить поступление данных в Azure IoT Central

  12. Настроить панель мониторинга в Azure IoT Central

  13. Настроить правило отправки уведомлений на почту при превышении заданных показателей

  14. Настроить экспорт данных из Azure IoT Central в хранилище двоичных данных (blob)

Не стоит переживать из-за отсутствия навыков использования конкретных сервисов. На протяжении всего хакатона вас будут сопровождать менторы, которые познакомят не только с теорией разработки решений, но и помогут на практике.

Подробности и регистрация.

Подробнее..

Что такое IoT и что о нем следует знать

29.03.2021 18:20:06 | Автор: admin

Интернет вещей (Internet of Things, IoT) это множество физических объектов, подключенных к интернету и обменивающихся данными. Концепция IoT может существенно улучшить многие сферы нашей жизни и помочь нам в создании более удобного, умного и безопасного мира. Примеры Интернета вещей варьируются от носимых вещей, таких как умные часы, до умного дома, который умеет, например, контролировать и автоматически менять степень освещения и отопления. Также ярким примером служит так называемая концепция умного предприятия (Smart Factory), которое контролирует промышленное оборудование и ищет проблемные места, а затем перестраивается так, чтобы не допустить поломок. Интернет вещей занимает важное место в процессе цифровой трансформации в компаниях. Прогнозируется, что к 2030 году количество подключенных к сети устройств вырастет примерно до 24 млрд с годовой выручкой до 1,5 трлн долларов.

История происхождения

Термин Интернет вещей был впервые употреблен в 1999 году Кевином Эштоном, предпринимателем и соучредителем центра Auto-ID Labs (независимая сеть лабораторий и исследовательская группа в области сетевой радиочастотной идентификации и новых сенсорных технологий) при Массачусетском технологическом институте. Эштон состоял в команде, которая сумела изобрести способ подключения объектов к интернету с при помощи технологии RFID. RFID-метка это метка идентификации, позволяющая идентифицировать объекты посредством радиосигналов; на нее можно нанести определенную информацию, а позднее считать устройством.

В 2012 году произошли значительные изменения датчиков, что привело к ускорению рыночной готовности IoT, и для многих компаний это означало, что цифровая трансформация набирает обороты. Технологическое совершенствование сделало возможным появление МЭМС микроэлектромеханических систем (миниатюрное устройство, изготовленное методом микрообработки как из механических, так и из электрических компонентов). Благодаря этому датчики уменьшились настолько, что их стало возможно фиксировать, например, на одежде.

История развития IoT. Источник изображения: https://www.avsystem.com/blog/what-is-internet-of-things-explanation/ История развития IoT. Источник изображения: https://www.avsystem.com/blog/what-is-internet-of-things-explanation/

Из чего состоит IoT? Архитектура

Для простоты попробуем разбить стек технологий IoT на четыре технологических уровня и рассмотреть их раздельно.

Конечные устройства

Устройства это объекты, которые фактически образуют вещи (Things) в Интернете вещей. Они играют роль интерфейса между реальным и цифровым мирами и принимают разные размеры, формы и уровни технологической сложности в зависимости от задачи, которую они выполняют в рамках конкретного развертывания IoT. Будь то микрофоны размером с булавочную головку или внушительного размера машины, практически любой материальный объект можно превратить в подключенное устройство путем добавления необходимых элементов (датчиков или приводов вместе с соответствующим программным обеспечением).

Программное обеспечение

Это то, благодаря чему подключенные устройства можно назвать умными. Программное обеспечение отвечает за связь с облаком, сбор данных, интеграцию устройств и за анализ данных в реальном времени. Также оно предоставляет возможности для визуализации данных и взаимодействия с системой IoT.

Коммуникации

Уровень коммуникации включает в себя как решения для физического подключения (сотовая и спутниковая связь, LAN), так и специальные протоколы, используемые в различных средах IoT (ZigBee, Thread, Z-Wave, MQTT, LwM2M). Выбор подходящего коммуникационного решения одна из жизненно важных частей при построении каждой IoT-системы. Выбранная технология будет определять не только способы отправки и получения данных из облака, но способы связи со сторонними устройствами.

Платформа

Устройства способны ощущать, что происходит вокруг и сообщать об этом пользователю через определенный канал связи. IoT-платформа это место, где все эти данные собираются, анализируются и передаются пользователю в удобной форме. Платформы могут быть установлены локально или в облаке. Выбор платформы зависит от требований конкретного проекта IoT и многих факторов: архитектура и стек технологий, надежность, параметры настройки, используемые протоколы, аппаратная независимость, безопасность, эффективность, стоимость.

Ниже можно рассмотреть подробнее составляющие трех уровней IoT: конечных устройств (вещей), сети, облака.

Типовая архитектура IoT-системы. Источник изображения: https://ru.rsdelivers.com/campaigns/InternetofThings/internet-of-thingsТиповая архитектура IoT-системы. Источник изображения: https://ru.rsdelivers.com/campaigns/InternetofThings/internet-of-things

Безопасность

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

Благодаря SOTA (Software Over the Air) обновление по воздуху и FOTA (Firmware Over the Air) прошивка по воздуху, программное обеспечение подключенных устройств и настройки можно обновлять с помощью беспроводной связи.

Примеры областей применения IoT

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

Розничная торговля

Среди примеров приложений IoT в сфере розничной торговли можно встретить множество случаев использования интеллектуальных устройств для повышения качества обслуживания в магазинах. В частности, различные приложения IoT здесь означают, что возможности использования смартфонов (на основе технологии Beacon миниатюрных маячков) облегчают общение между розничными продавцами и покупателями, а наиболее востребованные товары и услуги появляются перед глазами клиентов в нужном месте. Кроме того, интеллектуальная розничная торговля открывает возможности для приложений IoT с точки зрения точной рекламы, улучшения цикла цепочки поставок и фактического анализа моделей спроса. Также приложения IoT уже включают приложения для платежей NFC и интеллектуальных покупок. И конечно, нельзя не упомянуть RFID-метки для маркировки товара, которые обеспечивают моментальный и точный сбор информации, что помогает непрерывно отслеживать перемещение товаров, упростить процесс инвентаризации и в целом сократить количество ошибок.

Источник изображения: https://www.pochta.ru/support/post-rules/rfidИсточник изображения: https://www.pochta.ru/support/post-rules/rfid

Производство

Благодаря IoT производство может получать общую картину о процессах производства и состоянии продукта на всех этапах от поставки сырья до отгрузки готового продукта.

С помощью датчиков, установленных на заводском оборудовании и в складских помещениях, анализа больших данных и прогностического моделирования (predictive modeling) можно предотвратить множество ошибок, ведущих к простою и убыткам, максимизировать производительность, уменьшить гарантийные расходы и в целом улучшить качество клиентского сервиса.

Здравоохранение

С помощью технологии IoMT (The Internet of Medical Things, Интернет медицинских вещей) в режиме реального времени происходит сбор потоков малых данных из медицинских сетевых и других носимых устройств, отслеживающих различные физиологические моменты, связанные со здоровьем пациентов движения, динамика сна, сердечный ритм, аллергические реакции и прочее. Собранные данные помогают врачам в постановке точных диагнозов, построении плана лечения, повышают безопасность пациентов, упрощают уход за ними, дают возможность непрерывного мониторинга состояния тяжелобольных пациентов.

Применение Интернета вещей способствует созданию более персонализированного подхода к анализу состояния здоровья и более последовательных стратегий борьбы с болезнями.

Ключевые моменты в сфере здравоохранения, которые можно улучшить с помощью IoT. Источник изображения: https://evercare.ru/news/kak-internet-medicinskikh-veschey-vliyaet-na-zdravookhranenieКлючевые моменты в сфере здравоохранения, которые можно улучшить с помощью IoT. Источник изображения: https://evercare.ru/news/kak-internet-medicinskikh-veschey-vliyaet-na-zdravookhranenie

Энергетика

Здесь с помощью IoT конструкция электрических сетей меняет правила потребления, автоматически собирая данные и обеспечивая мгновенный анализ циркуляции электроэнергии. В результате этого и клиенты, и поставщики лучше понимают, как оптимизировать использование ресурса.

Заключение

Революция в области Интернета вещей представляется важной для развития бизнеса, и это может относиться к любому типу предприятия. Будь то выращивание устриц или создание системы управления движением, самое ценное в технологической концепции IoT это то, что он открыт к новым вызовам, и в нем достаточно возможностей для реализации практически любой бизнес-идеи.


Прямо сейчас в OTUS открыт набор на курс "Разработчик IoT". Приглашаем на бесплатный вебинар, в рамках которого наши эксперты расскажут еще больше о том, что такое интернет вещей и где он применяется, а также о карьерных перспективах в данной сфере.

Записаться на вебинар.

Подробнее..

Перевод AI только собирается стать умнее

31.03.2021 18:20:59 | Автор: admin

Как люди уже стали киборгами и используют AI

Привет, хабровчане.


AI (Artificial Intelligence, ИИ Искусственный Интеллект) как Аугментативный Интеллект (Augmentative Intelligence), использующий машинное обучение, алгоритмы и обширныеданные для расширения возможностей человека и бизнеса, вскоре может стать иллюзией.

Ускоряющиеся темпы технологических изменений дают людям возможность иметь как технологические ресурсы, так и научные знания для создания Искусственного Общего Интеллекта (Artificial General Intelligence).

Успех в создании эффективного ИИ может стать величайшим событием в истории нашей цивилизации. Или наихудшим. Мы просто не знаем. Поэтому мы не можем точно знать, будет ли ИИ помогать нам бесконечно, или же он будет игнорировать и пренебрегать нами, а может быть и уничтожит нас. слова Стивена Хокинга в 2017 году.

Сегодня искусственный интеллект может сортировать огромные объемы данных и находить скрытые от нас взаимосвязи. ИИ может прорваться сквозь помехи, через миллионы сообщений в день. Все это оборачивается вокруг данных и позволяет получать информацию практически о чем угодно.

Большая часть этих данных создается людьми.

Как часто вы в своей жизни записываете, оцифровываете и, в конце концов, делитесь этим?

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

Люди, по сути, уже "киборги", потому что у них есть третичный "цифровой слой" благодаря телефонам, компьютерам и приложениям слова Илона Маска в 2021 году.

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

Нет времени смотреть в прошлое, мы слишком часто заняты тем, чтобы вести запись настоящего.

Сегодня, с приходом Covid-19, мир становится намного более цифровым благодаря тому, что данные передаются через периферию интернета быстрее, в том числе и благодаря 5G, позволяя развивать скорость до 10 Gbps.

Смартфоны и датчики вокруг нас получили доступ к высокоскоростному интернету. Фактически исчезает последняя миля (передача данных от оборудования конечного клиента до последнего сетевого узла провайдера) с медленным WiFi или кабельным подключением.

По мере того, как мы привыкаем к новым реалиям в ситуации с Covid-19, социальная дистанция ускоряет оцифровку наших записей в большом объёме. Когда это в конечном итоге закончится, наше общее пространство станет гораздо более опустошенным, чем оно когда-то было.

Однако, как социальным субъектам, нам необходимо объединиться, чтобы выжить. Мы поддерживаем связь из дома. Деятельность из дома в значительной степени стала новым способом работы. Дети получают школьное образование онлайн. Родители работают дома.

Мы видим, как происходят огромные изменения в интернете. Резко возросло создание контента. Скорость взаимодействия с контентом также стремительно растет. Люди жаждут смотреть новые фильмы и поиграть в новые игры. Развлекательная и игровая индустрии развиваются.

Любители и профессиональные геймеры загружают миллионы видео, которые они записали во время игры. Распространяются всевозможные технические средства конференц-связи, поскольку они позволяют удаленно подключить людей к работе.

С разрушением индустрии туризма возникает виртуальное путешествие. Люди проектируют виртуальную реальность с передачей голограмм, в том числе и для спортивных аттракционов.

Мы являемся свидетелями революции в здравоохранении, когда появились устройства IoT для дистанционной цифровой диагностики.

В результате в этих примерах получается немало данных, снабжающих AI (Artificial Intelligence, ИИ Искусственный интеллект). Чем больше мы полагаемся на машинный интеллект, тем больше мы смотрим на него в качестве руководства для работы.

Надкусив яблоко и оценив его вкус, мы не можем остановиться, пока не доедим его. То есть, чем чаще мы полагаемся на ИИ, тем сильнее ощущаем на себе зависимость от него.

Сегодня исследователи ИИ, изучая персональные характеристики людей, могут вплотную приблизиться к реализации Слабого ИИ (Weak AI), имитирующего человеческое поведение. В настоящее время эти программы позволяют компьютерам понимать человеческую речь, распознавать объекты, описывать фотографии и видео, рекомендовать музыку или проводить поиск.

Сильный ИИ (Strong AI) преобразовывает машинный интеллект в универсальный интеллект. Поскольку человеческий интеллект это универсальный интеллект, искусственный интеллект часто называют общим искусственным интеллектом (Artificial General Intelligence, AGI).

Общий искусственныйинтеллект (AGI) наделил бы машины неалгоритмическими способностями, такими как благоразумие и мудрость. Благоразумие это способность принимать правильные решения в конкретных ситуациях, а мудрость это способность видеть целое.

Я думаю, что это десятилетие приведет к революции в создании AGI по трем причинам:

  • стремительно растущему созданию контента и обмену им. Люди оцифровывают большинство областей своей частной жизни с экспоненциальной скоростью благодаря социальному дистанцированию, более скоростному подключению к Интернету с помощью 5G, широкополосным спутниковым интернет-системам, таким как Starlink. Скоро появится возможность отслеживать данные от детства до старости для очень большого количества людей, разбросанных по географиям и культурам. Многочисленные данные это живительная сила искусственного интеллекта.

  • достижение квантового превосходства. Квантовые вычисления позволят будущим компьютерам обрабатывать невероятные объемы большого объема данных. Компания Google заявила, что докажет превосходство квантовых вычислений в 2019 году, и у IonQ есть план по коммерциализации квантовых вычислений.

. . .

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


Прямо сейчас в OTUS открыт набор на курс Разработчик IoT.

В связи с этим приглашаем всех желающих записаться на открытый вебинар Практика IoT: создаем проект по шерингу самокатов. На этом бесплатном демо-занятии:
- обсудим наиболее перспективные приложения Интернета вещей в разных сферах;
- познакомимся с облачной платформой Rightech IoT Cloud;
- создадим свой проект по шерингу самокатов;
- будем эмулировать данные сервисом ботов;
- применим постобработку данных;
- сформируем сценарии автоматизации.

ЗАПИСАТЬСЯ НА ДЕМО-УРОК

Подробнее..

Перевод 10 плат для начала разработки IoT в 2021

02.04.2021 20:22:21 | Автор: admin

Есть масса хороших вариантов для старта

Интернет вещей, или IoT, уже стал реальностью. Вы, вероятно, используете одно (или более) устройство IoT прямо сейчас, или, по крайней мере, воспользовались преимуществами его применения. И этот рынок имеет тенденцию только расти.

Вообще говоря, интернет вещей - это сеть физических объектов, которая позволяет этим объектам создавать данные и обмениваться ими.

Согласно некоторым исследованиям, в 2021 году в мире насчитывалось 25 миллиардов устройств IoT, а к 2025 году эта цифра достигнет около 64 миллиардов (а объем рынка составит 11 триллионов долларов). От сельского хозяйства до домашней автоматизации, каждый сектор использует IoT, для помощи в своей сфере деятельности.

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

Независимо от того, используете ли вы устройство, чтобы определить лучшее время для полива вашего растения, или же человек ослаб и нуждается в медицинской поддержке, IoT будет все больше и больше частью нашей жизни.

Что такое Development Board?

Development Board (Плата разработки) - это печатная плата, содержащая микроконтроллер или микропроцессор с аппаратным обеспечением для помощи в ваших экспериментах. Она может содержать различные периферийные устройства, от датчиков до источников питания.

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

Особенности, которые необходимо учитывать:

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

  • Подключение: это те опции, которые необходимы для связи с миром, такие как WiFi, Cellular, Ethernet и т.д.

  • Интерфейсы: протоколы или контакты, которые необходимо подключить к другим компонентам и оборудованию, таким как I2C, GPIO, SPI и т.д.

  • Программное обеспечение: параметры, необходимые для разработки программы, такие как ОС (операционная система), IDE, языки программирования и т.д.

  • Контроллер: каковы возможности центрального процессора, такие как память, хранилище, скорость и т.д.

В этой статье я расскажу вам про 10 плат, которые вы можете использовать при разработке чтобы начать создание продуктов IoT.

. . .

ESP32

Производимая компанией Espressif, эта плата является одной из самых используемых для создания продукта IoT. Она имеет встроенный Bluetooth (v4.2 и v5.0) и WiFi, так что вам не нужен никакой другой модуль, чтобы начать общение с миром.

Оснащен двухъядерным микроконтроллером Xtensa, может разгоняться до 240 МГц и располагает 520Кb оперативной памяти (RAM). Имеет хороший объем GPIO (с различными 12-битными каналами АЦП), с поддержкой I2C, SPI и UART протоколов. Разработан для переносных и мобильных устройств, имеет низкое энергопотребление и способен работать в широком диапазоне температур.

Вы можете осуществлять разработку с помощью Arduino IDE, используя собственный SDK, или даже другой RTOS.

Он имеет относительно низкую цену, в диапазоне от $6 до $12.

Источник: https://www.espressif.com/Источник: https://www.espressif.com/

. . .

Onion Omega2

В сущности, это компьютер с предустановленной системой на базе Linux, что увеличивает возможности использования языков и библиотек программирования. Компьютер оснащен процессором MT7688 SoC с тактовой частотой 580 МГц, доступен WiFi и Ethernet.

Он имеет память 128 Мб RAM и 32 Гб Flash, поэтому, когда дело доходит до IoT, это очень много. С 18 GPIO, он поддерживает I2C, SPI и UART протоколы.

Отсутствие аналогового входа можно решить с помощью платы расширения или конвертера I2C.

Он стоит около $13.

Источник: https://onion.io/Источник: https://onion.io/

. . .

Arduino Nano 33 BLE Sense

Совсем недавно появилась новая плата разработки - это великий Arduino Nano 33 BLE Sense. Она оснащена чипом Nordic nrf52840, имеет поддержку Bluetooth 5.0, WiFi и ZigBee.

Она имеет тактовую частоту 64 МГц, память 1 Мб Flash и 256 Кб RAM. С 14 GPIO, также имеет поддержку SPI, I2C и UART протоколов.

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

Главной особенностью данной платы, помимо впечатляющего выбора датчиков, является возможность запуска на ней приложений Edge Computing (AI) с использованием TinyML. И, конечно же, вы можете использовать всю поддержку программного обеспечения Arduino и Nordic для разработки.

Это стоит $31.

Источник: https://www.arduino.cc/Источник: https://www.arduino.cc/

. . .

Adafruit Feather M0

У Adafruit есть много прорывных плат, поэтому, в случае, если вы являетесь энтузиастом DYI, то обязательно обратите на них внимание.

Его плата Feather M0 не исключение. Оснащена ARM-процессором, работающим на частоте 48 МГц с 256 КБ FLASH + 32 КБ RAM памятью, она специально разработана для использования CircuitPython. Да, вы можете использовать Python для программирования платы IoT!

С 20 GPIO, поставляется с поддержкой ADC (12-бит), SPI, I2C и UART. И вы можете научиться как использовать это с великолепными учебными материалами от Adafruit.

Это стоит около $20.

Источник: www.adafruit.comИсточник: www.adafruit.com

. . .

Particle Boron

Если вы хотите разработать сотовое устройство, вам следует рассмотреть для начала эту плату. Она оснащена чипом Nordic nrf52840, поэтому в комплект поставки также входит поддержка WiFi и Bluetooth.

Имеет 20 GPIO (с 6 аналоговыми каналами), с поддержкой SPI, I2C и UART протоколов.

Но главной ее особенностью является мобильный модуль (2G/3G), который поставляется с SIM-картой с поддержкой более чем 100 стран.

Вы также можете использовать Arduino IDE для программирования.

Одним из недостатков является относительно высокая стоимость, около $80.

Источник: https://docs.particle.io/Источник: https://docs.particle.io/

. . .

Arduino MKR NB 1500

Если вы намереваетесь начать с узкополосного Narrowband IoT вида связи, то можете воспользоваться этой платой. Она оснащена маломощным 32-битным процессором ARM с частотой 48 МГц, имеет до 32 КБ RAM + Flash 256 КБ памяти.

Имеет 28 GPIO, с интерфейсами UART, SPI и I2C и 12-битными аналоговыми входами. В комплект поставки входит радиомодуль IoT LTE, который можно использовать для создания приложения (проверьте его доступность в вашем регионе).

И Вы можете использовать всю среду Arduino для программирования Вашего устройства.

Стоит это $77.

Источник: https://arduino.cc/Источник: https://arduino.cc/

. . .

Teensy 4.1

Этот 32-битный ARM Cortex M7 является одним из самых быстрых микроконтроллеров, с тактовой частотой до 600MHz и памятью 8MB Flash + 1MB RAM.

Он имеет 40 GPIO (18 аналоговых входов), поставляется с поддержкой I2C, SPI, UART и CAN протоколов.

Не имеет WiFi или BLE соединения, но это может быть компенсировано поддержкой Ethernet 10/100M.

Вы можете запрограммировать его с Arduino IDE или даже с CircuitPython.

Это стоит $26.85.


Источник: www.pjrc.comИсточник: www.pjrc.com

. . .

BeagleBone Black

BeagleBone Black - это недорогая, поддерживаемая сообществами пользователей платформа разработки для программистов и любителей. Оснащена 1 ГГц ARM Cortex-A8, с 512 Мб RAM + 8 Гб Flash памятью.

Она имеет различные операционные системы, такие как Ubuntu, Debian и Android, что действительно увеличивает возможности ее программирования.

С более чем 60 GPIO (7 аналоговых), он поставляется с SPI, I2C, CAN и UART протоколами. Он также имеет Ethernet и USB интерфейсы, с HDMI портом.

В нем отсутствует чип WiFi / BLE, но если он вам действительно нужен, вы можете рассмотреть BeagleBone AI версию (которая стоит намного дороже).

Она стоит $49.


Источник: https://beagleboard.org/blackИсточник: https://beagleboard.org/black

. . .

Raspberry Pi 4

Наверное, самая известная (и любимая) плата из этого списка. В версии 4B у вас есть доступ к мини-плате для ПК размером с кредитную карту, которую вы также можете использовать как персональный компьютер.

Оснащена четырехъядерным процессором Broadcom, 64-битным, 1,5 ГГц. Имеет память 2 ГБ RAM в версии по умолчанию (с возможностью увеличения до 4 и 8 ГБ). Для связи доступен WiFi, Bluetooth и Ethernet.

Имеет 40 GPIO, с интерфейсами SPI, I2C, UART, а также 2 порта micro-HDMI (до 4к). Также имеется интерфейс для USB, DSI дисплея и CSI камеры.

Имеет различные операционные системы (OS), которые могут быть использованы (от Raspbian, с собственной версией Debian, до Windows IoT), так что у вас есть хороший набор языков программирования, которые вы можете выбрать.

Ей не хватает аналогового входа, но вы можете легко решить эту проблему с помощью адаптера. Одна вещь, которая хорошо работает для Raspberry Pi, это количество продуктов и расширений, которые могут быть использованы с платой, вдобавок к огромному сообществу разработчиков и пользователей.

Она стоит от $35 до $55.

Источник: https://www.raspberrypi.org/Источник: https://www.raspberrypi.org/

. . .

NVIDIA Jetson Nano

Небольшой, мощный компьютер, на котором можно запускать приложения для AI или робототехники без каких-либо сложностей. Оснащен четырехъядерным процессором ARM 1.53 ГГц, оперативной памятью (RAM) 2 ГБ и выделенным 128-ядерным графическим процессором NVIDIA.

Он оснащен HDMI, разъемом CSI и соединением Gigabit Ethernet (можно использовать WiFi через адаптер). С 40 GPIO у вас есть интерфейсы I2C, SPI и UART.

С помощью JetPack Development Kit вы получаете доступ к Linux с уже установленными библиотеками и фреймворками, такими как CUDA, OpenCV, VisionWorks и TensorRT.

Узнать об AI (Artificial intelligence, ИИ - Искусственный Интеллект) и других интересных проектах вы сможете на сайте NVIDIA, а также в сообществе.

Это стоит $59.


Источник: https://developer.nvidia.comИсточник: https://developer.nvidia.com

. . .

Бонус: Meadow F7

Как уже упоминалось в комментариях, еще одна замечательная плата - это Meadow Dev Kit от Wilderness Labs.

Она оснащена микроконтроллером STM32F7, с микропроцессором ESP32, который обеспечивает WiFi и Bluetooth-соединение. Имеет 25 GPIO, с SPI, I2C, CAN и UART протоколами. Он также имеет встроенное зарядное устройство LiPo.

Одной из интересных вещей в этой плате является возможность использования стандарта .NET, который может сэкономить вам много времени при программировании.

Она стоит $50.

Meadow F7 Development Kit. Источник: здесь.Meadow F7 Development Kit. Источник: здесь.

. . .

Заключение

Мы видели 10 плат для разработки, которые вы можете купить сегодня и начать работать с миром IoT. Это не единственные варианты для создания продукта IoT, но это хороший старт.

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


Прямо сейчас в OTUS открыт набор на курсРазработчик IoT.

В связи с этим приглашаем всех желающих записаться на открытый вебинарПрактика IoT: создаем проект по шерингу самокатов. На этом бесплатном демо-занятии:- обсудим наиболее перспективные приложения Интернета вещей в разных сферах;- познакомимся с облачной платформой Rightech IoT Cloud;- создадим свой проект по шерингу самокатов;- будем эмулировать данные сервисом ботов;- применим постобработку данных;- сформируем сценарии автоматизации.

ЗАПИСАТЬСЯ НА ДЕМО-УРОК

Подробнее..

Что такое энергоэффективность LPWAN. Проживет лиNB-IoTустройство 10 лет от батарейки?

04.04.2021 06:16:15 | Автор: admin

Привет, всем уважаемым читателям Хабра!

Я, Шептовецкий Александр, в последнее время профессионально занимаюсь различными вопросами эффективности работы различныхLPWANсистем интернета вещей и хотел бы выступить на данной площадке в качестве эксперта в этой области.

В интернете можно найти очень много разнообразной информации о работеLPWAN, но, к сожалению, некоторые очень важные специфические особенности работыLPWANосвещаются самими производителями, заинтересованными показать свою технологию только в лучшем свете. У всех систем объявляется большая дальность работы, все устройства работают 10 лет от батарейки, все обещают беспрецедентную безопасность и надежность системы. Независимые же эксперты как правило просто перепечатывают рекламную информацию в виде сравнительных таблиц с набором самых разных параметров, часто не понимая, что значат эти цифры для потребителя.

Хочу анонсировать серию статей, в которых попытаюсь внести дополнительную ясность в ключевые особенности работыLPWAN систем, энергоэффективность, дальность, время работы от одной батарейки, пропускная способность, безопасность и многое другое. Постараюсь быть максимально объективным.

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

Как померить энергоэффективность

При описанииLPWANсистем постоянно используется слово энергоэффективность, что же оно означает и можно ли ее померить?

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

Посмотрим, как определяется понятие энергоэффективность в рекомендациях международного союза электросвязи. В разделе общие положения МСЭ-T L.1310 определено, что показатель энергоэффективности обычно определяется как отношение между функциональной единицей и энергией, требуемой для вырабатывания функциональной единицы.

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

Энергоэффективность - величина обратно пропорциональная энергии, затраченной на передачу одного сообщения.

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

Рисунок 1. Позиционирование LPWANРисунок 1. Позиционирование LPWAN

В интернете постоянно попадается картинка из трех кругов со следующим комментарием: Любые существующие беспроводные технологии передачи данных обладают такими характеристиками какдальность, скорость иэнергоэффективность. Причем одновременно можно соответствовать лишь 2-м из3-х..

Более точным комментарием будет: Увеличение любого одного или двух из этих трех параметров возможно только за счет уменьшения оставшихся, их произведение остается постоянным.

Энергоэффективность х Площадь покрытия х Скорость =Constant

LPWANдатчики как правило питаются от 3,6 В литиевой батарейки, энергию которой принято определять в милиампер-часах (мАЧ), поэтому, удобнее всего энергию сообщения будет считать в микроампер-часах (мкАЧ). Например, на стандартное короткое сообщение LoRaWAN, длительностью 1,6 секунд расходуется 20 мкАЧ энергии батарейки, что позволяет в предельном случае отправить до 100 тысяч сообщений от стандартной батарейки емкостью 2000 мАЧ. УSigFoxс энергетикой дело обстоит хуже, там сообщение повторяется три раза и длится в эфире 6,2 секунд и потребляет 78 мкАЧ (реальные испытания компанией Rohde & Schwarz показали, что в реальности потребление даже выше - 106 мкАЧ, можно убедиться в этом в отчете). Это значит, что если энергия тратится только на передачу регулярных сообщений, то батарейка уSigFoxразрядится в 3,8 раза быстрее, чем уLoRaWAN устройства! Эта разница существенна! Там, где одно устройство проработает от одной батарейки более трех лет, другое не проживет и года!

Энергоэффективность нельзя сравнивать для систем с разной дальностью работы. Попробуем, например, оценить энергоэффективность датчика сBluetoothканалом.BLEмаячок мощностью 0dBmс короткими сообщениями тратит на передачу с периодом 1 раз в секунду около 7 мкА, это говорит о его беспрецедентной энергоэффективности. От литиевой батарейки 1000 мАЧ он проработает до 15 лет, и передаст более 470 миллионов сообщений, потратив на каждое только 2,1 нАЧ!

Bluetoothможет передать от одной батарейки в десятки тысяч раз больше сообщений, чемLoRaWANилиSigFox

Теперь посмотрим наNB-IoT.

ЭнергоэффективностьNB-IoT

В первую очередь прояснить вопрос энергоэффективностиNB-IoTменя заставило распространенное утверждение, что NB-IoT -LPWANрешение от сотовых операторов полностью вытеснит другиеLPWANрешения, которые работают в безлицензионном диапазоне частот, такие какLoRaWAN,SigFoxи т.п. Давайте посмотрим, как обстоит дело с ключевымLPWANпараметром - энергоэффективностью NB-IoT.

Требования стандарта 3GPPрассчитаны на то, что NB-IoT устройства работать от батарейки десять лет. К сожалению, реальных практических исследований в этой области очень мало. Я обратился к некоторым производителямGPSтрекеров в России, которые реально используют NB-IoT и получил ответ, что по их данным: "NB-IoT действительно обеспечивает большую зону покрытия, но добиться значительного уменьшения потребления связи для передачи коротких сообщений им не удается", по их опыту потребление 2Gмодуля, в среднем, менее чем в 2 раза превышает потребление NB-IoT модуля. То есть NB-IoT получается выигрывает по энергетике у решений 2G не более чем в 2 раза. Выдающимся этот результат явно не назовешь, почему так получилось?

Для прояснения этого вопроса пришлось изучить последние зарубежные исследования в этой области, и вот краткий результат. В отличие от большинства своих конкурентов, NB-IoT появился не с чистого листа, он является модификацией LTE, из которой он наследует многие особенности, определяющие его критические характеристики - энергопотребление, надежность и другие.

Результаты исследования NB-IoT показывают, что его производительность - с точки зрения энергии, в идеальном случае - сопоставима с LoRaWAN. В реальности же наблюдается очень высокий разброс характеристик расхода энергии на одно сообщение от конечного устройства ( данные взяты из публикации Exploring the Performance Boundaries of NB-IoT).

Рисунок 2. разброс энергии на передачу данных в зависимости от режима работыРисунок 2. разброс энергии на передачу данных в зависимости от режима работыРисунок 3. Соотношение сигнал/шумРисунок 3. Соотношение сигнал/шум

ЭнергоэффективностьNB-IoTобеспечивается установкой соответствующих параметров конечного устройства и установками операторов сети для режима сохранения энергииPSM. На рисунках 2 и 3 ( данные взяты из публикации Exploring the Performance Boundaries of NB-IoT) приведены примеры разброса энергии, затраченной конечным устройством в зависимости от устройств в сетях разных операторов и при разных уровнях принимаемого сигнала.

Нельзя забывать, что вNB-IoT энергия тратится не только на саму передачу информации, но и на некоторые другие специфические процедуры, присутствующие в протоколах сотовой связи и унаследованные от LTE и 5G, такие как присоединение и синхронизация с сетью, обмен ключами и шифрование данных.

Вопросы дополнительного потребления NB-IoT устройств подробно рассмотрены в отчетеNarrowband IoT Device Energy Consumption Characterization and Optimizations.

Структура безопасности, используемая в NB-IoT, унаследована от сетей 4G и 5G и обеспечивает процессы фактической аутентификации между устройством и сетью, установление контекста безопасности устройства (SC), который должен быть использован в последующих сообщениях для обеспечения целостности и конфиденциальности данных.

Рисунок 4. Доля времени, потраченного на различные операции в рабочем состоянии (кроме IMSI шифрования).Рисунок 4. Доля времени, потраченного на различные операции в рабочем состоянии (кроме IMSI шифрования).

Сеть может запрашивать у устройства повторную аутентификацию сколь угодно часто, даже если устройство уже подключено к сети.В некоторых случаях сеть даже обязана удалить SC устройства и запросить повторную аутентификацию при следующем подключении устройства (например, во время процесса TAU).

УстройстваNB-IoTпотребляют энергию в любом из трех состояний: легкий сон, глубокий сон и работа.Состояния легкого и глубокого сна соответствуют состояниям ожидания и PSM 3GPP, когда устройство потребляет мало энергии или почти не потребляет.Рабочее состояние это состояние, во время которого устройство генерирует данные и общается с сетью и потребляет энергию на процесс установления соединения (RA), процесс присоединения, обмен данными (включая любые требуемые запросы на планирование, прием контрольных данных, шифрование / дешифрование), IMSI дешифрование и активное ожидание. При этом надежные механизмы шифрования могут быть очень энергозатратными и существенно повлияют на время автономной работы устройства.

Потребление энергии в рабочем состояние может быть на порядки больше, чем два других состояния. Фактически потребление энергии для передачи данных и прием на порядки ниже, чем при оперативном выполнении функций RA, Attach и Active Waiting.

Кроме того, NB-IoT определяет три возможных уровня связи, нормальный, надежный и экстремальный, в которых используют разные количество повторов (до 128 и 2048 повторов для восходящей и нисходящей линии связи соответственно).

На рисунке 5 приведены расчеты потребления конечных устройств для 10 лет непрерывной работы взятые из отчетаNarrowbandIoTDeviceEnergyConsumptionCharacterizationandOptimizations. Следует отметить, что у стандартной литиевой батарейки емкостью 1 000 мАЧ соответствует энергии около 12 КДж.

Рис 5. Энергия на периодическую передачу данных в зависимости от качества покрытия (normal, robust, extreme).Устройство A - GPy от Pycom, B - BC95 от Quectel, C - SARA-N2 от Sodaq.Рис 5. Энергия на периодическую передачу данных в зависимости от качества покрытия (normal, robust, extreme).Устройство A - GPy от Pycom, B - BC95 от Quectel, C - SARA-N2 от Sodaq.

Графики на рисунке 5 показывают очень большой разброс потребления в зависимости от качества покрытия сети и типаNB-IoTустройства. Действительно, если устройство передает один раз в сутки и находится в зоне качественного приема, то его потребление за 10 лет может составить от 5,5 до 55 кДж - в зависимости от установок сети, типа и качества программы устройства. Это соответствует емкости литиевой батарейки 3,6 вольт от 460 до 4 600 мАЧ. Как видим, условие десяти лет работы от батарейки выполняется, но! только в идеальных условиях! В зоне среднего уровня качества связи для передачи сообщений раз в сутки потребуется уже емкость батарейки от 1 700 до 6700 мАЧ. При этом, для передачи сообщений раз в час в течение 10 лет в зоне среднего качества покрытия понадобится неимоверно большая литиевая батарейка емкостью до 150 000 мАЧ.

Сравнение энергоэффективностиNB-IoTс безлицензионными системами получается явно не в пользуNB-IoT. Только в идеальных условиях: условиях высокого качества приема, правильно установленных оператором параметров сети, можно добиться результата не хуже, чем у безлицензионных решений. В зоне среднего качества покрытия ситуация будет другой, она отражена в таблице ниже:

Параметр

NB-IoT

LoRaWAN

SigFox

Энергозатраты на сообщение с полезной нагрузкой 2 байта*

400 мкАЧ

29 мкАЧ

128 мкАЧ

Количество сообщений от литиевой батарейки емкостью 2 АЧ

5 000

70 000

15 600

Срок жизни КУ на передачу раз в 10 минут от батарейки 2АЧ

1,1 мес

1,3 года

3,5 мес

Срок жизни КУ на передачу раз в час от батарейки 2АЧ

6,8 мес

7,8 лет

1,8 лет

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

Выводы:

  • Энергоэффективность различных LPWAN проще измерять в милиджоулях или микроампер-часах, затраченных на передачу одного стандартногосообщения.

  • Время работы от одной батарейки у различныхLPWANсистем может отличаться в разы и определяется количеством переданных сообщений (как правило это десятки-сотни тысяч сообщений от батарейки).

  • Датчики на NB-IoT будут обладать очень большим разбросом потребления в зависимости от производителя, рабочей сети и условий эксплуатации. Один и тот-же датчик в одних условиях проживет 10 лет, а в других не протянет и пару месяцев.

Получается, что датчики NB-IoT, несмотря на то, что они работают на выделенных частотах, в реальных условиях массового применения будут проигрывать в энергетике малопотребляющим LPWAN решениям, работающим в безлицензионном диапазоне частот.

Подробнее..

Создание своей оценочной платы для микроконтроллеров

16.04.2021 02:15:22 | Автор: admin

Заказывая много оценочных плат из Китая, я и подумать не мог что всюду будет брак, недоработки и подделка. Всё это ужасно путало в изучении и порой было тяжело понять то ли мой код кривой, то ли контроллер. Примерно в это же время я нашёл микроконтроллеры и другую рассыпуху дешевле чем в Китае при это локально в России. Я сразу загорелся тем, что бы сделать себе платы и забыть о китайских корявых blue pill.

Брак или странная задумка инженеров

Земля на ножках для прошивки висела в воздухе, после доработки всё окей.

Я как раз переезжал, и из-за этого у меня появилось много свободного времени, чем я и воспользовался, когда рисовал платы в EDA. Начать было решено с STM8S003F3U6 потому как очень уж полюбилась мне эта серия микроконтроллеров.

Первые наброски выглядели примерно так:
v1v1

Тут я ещё не знал, что для нормальной прошивки мк нужен pull-up резистор на ногу сброса.

Хорошо что я проверил всё на макетной плате, прежде чем заказывать. По итогу я полностью переделал макет платы, избавился от односторонней компоновки, сделал заказ и стал ждать.

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

Детальное фото печатной платы

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа.

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа:

Фото ужасное, но переснять не могу уже раздал их)Фото ужасное, но переснять не могу уже раздал их)

Немного о платах

Остановился на 6 светодиодах. Всего 3 группы: питание, 4 GPIO, 1 GPIO(ШИМ) на обратной стороне. У каждой группы есть маленькая напаиваемая перемычка.

USB только питание, по входу стоит диод, защита usb выхода от обратного напряжения которое может пойти если запитать схему >5в напряжением. Стабилизатор выдерживает пиковые 16в, штатное до 14в.

Контроллер может без проблем работать и от 5в, но расчёт резисторов для светодиодов выполнял для 3.3, да и базово считаю что лучше работать с 3.3, ибо потом по привычке можно что-нибудь спалить.

Продолжаем вакханалию

Это была только половина пути, я ведь хотел много плат и очень не хотел делать их вручную.

Для информации из паяльного инструмента у меня был только паяльник, не было даже фена (оставил там откуда уехал). Зато в новой квартире обнаружилась духовка с очень чётким контролем температуры, я думаю дальше понятно что будет, особо впечатлительные не принимайте близко к сердцу.

И так, надо было решать как спаять всё быстро и с минимумом косяков. Трафарета у меня не было и я решил попробовать просто намазать тонким слоем паяльную пасту (благо она была).

Сказано сделано, вот что из этого вышло:

Мелкие капельки припоя что никуда не стекли прилипли прилично, далеко не с первого раза я их смог убрать, так же видно что 2 контроллера немного поплыли и встали криво. Выглядит жуть, но в целом получилось неплохо. Я делал несколько прогонов, первый мк и обвязка, остальное вторым. И по выходу получилось около 70% годных и готовых сразу без танцев плат.

Финальный результат, usb портов к этому времени не подвезли, так что без них.

Пока остановился на этом, с новой партией плат должен прийти трафарет, там уже будут другие танцы и другие бубны.

Планы у меня наполеоновские, уже нарисовал и под stm32f0 и под f1 платы, ещё есть идея создать плату на stm32f4(7) с интегрированных ethernet.

Для тех кто дочитал, спойлер след платы!

В следующей статье затрону контроллер и среды, в которых пишу. Ни пуха ни пера и не болейте!

Подробнее..

Дальность работы безлицензионныхLPWANсистем

20.04.2021 00:18:08 | Автор: admin

Привет всем уважаемым читателям Хабра!

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

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

Например, если оценить дальностьLoRaWANв городе порядка 5 км, аBluetooth35 метров, то уBluetoothплощадь покрытия будет в 20 тысяч раз меньше. При этом энергия сообщенияLoRaWANбольшеBluetoothпримерно во столько же раз это означает, что энергоэффективность приведенная к площади покрытия уLoRaWANиBluetoothимеют примерно одинаковые значения.

Такой результат полностью согласуется с физическими законами распространения информации по радиоканалу. Известное ограничение Шеннона на скорость передачи информации в эфире можно трактовать в следующей формулировке:

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

Bluetoothработает быстро, но на маленькое расстояние; для обеспечения связи на площади работы одного шлюзаLoRaWANпридется поставить огромное количествоBluetoothшлюзов, примерно равное как раз отношению площадей покрытия - 20000.

Так какую же дальность имеют распространенныеLPWANсистемы? Если погуглить, то можно найти очень противоречивую информацию, с одной стороны:

  • 766 км новый рекорд дальности для LoRaWAN!

  • Радиус действия: 30-50 км (3-10 км в зашумленных и труднодоступных районах)

  • В городской черте превышает 10 км, а за пределами города ограничивается видимостью горизонта и составляет в среднем 50 км

Есть и другая информация:

  • большое расстояние до 10 км от шлюза

  • максимальная успешная дальность связи 3.8 км

  • в результате испытаний удалось получить устойчивую связь в радиусе 500 метров от базовой станции

Попробуем немного прояснить ситуацию. Есть общее понимание, что дальностьLPWANв первую очередь определяется чувствительностью приемника шлюза. На самом деле одной чувствительности совсем не достаточно, но об этом будет в следующей статье.

ЧувствительностьLPWANприемника

В интернете активно гуляют следующие картинки обосновывающие уникально высокую чувствительностьLoRa.

Давайте проверим, так ли это на самом деле. Возьмём характеристикиLoRaWANприемников и для сравнения возьмём качественный чип приемника в диапазоне 868 МГц с возможностью медленной передачи информации. Идеальным примером является приемникAX5243 производстваONSemiconductor. Результаты приведены в таблице 1 и на рисунке 2.

Рис 2. Зависимость чувствительности приемника от скорости передачи данных для LoRaWAN и AX5243Рис 2. Зависимость чувствительности приемника от скорости передачи данных для LoRaWAN и AX5243

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

Ключевым преимуществом чиповLoRaявляется, собственно, не высокая чувствительность на низких скоростях, а низкие требования к стабильности опорного генератора. На конечных устройствах нет необходимости применять дорогие и много потребляющие компоненты для стабилизации частоты.

Зависимость дальности от чувствительности приемника

Для сравнения дальности работы радиоканала обычно используют специально разработанные модели оценки, например модель распространения радиоволн Хата, которая работает при условии размещения антенн шлюзов выше соседних крыш, что как раз важно при установкеLPWANшлюзов. Потери в канале в условиях города определяются по формуле:

Для потерь в условиях сельской местности и открытого пространства в модели вводятся соответствующие поправочные коэффициенты. Подробности модели Хата можно посмотреть в Википедии или других источниках в интернете, там же можно найти калькуляторы расчета дальности радиоканала в городе, основанные на этой модели.

Оценим по модели Ханта дальность работы для нескольких типичных вариантов использования в частотном диапазоне 868 МГц. Рассмотрим несколько типичных случаев использованияLPWANв плотной городской застройке и сельской местности. Мощность излучения примем равной 14dbm. Коэффициент усиления антенны шлюза будем считать равным 6dbi, дополнительные потери 3db, а конечное устройство расположенным на высоте 1 метр над землей. Чувствительность приемника будем считать -137dbmдляLoRaWAN, -142dbmдляSigFoxи -145dbmдля продвинутыхUNBсистем типа Стриж, Вавиот,GoodWAN(почему в последнем случае указано -145dbmи при каких условиях такую чувствительность можно получить обсудим в одном из следующих постов). Для оценкиindoorпокрытия примем величину ослабления на излучение из помещений на первых и полуподвальных этажах зданий равным 15db(грубая оценка, реально эта величина слишком зависит от местных условий).

Важно, что модель Ханта корректно работает только в случае плоского рельефа местности, с антенной шлюза, расположенной над ближайшими крышами домов, для дальностей 1-20 км (последняя строка таблицы 2 выходит за пределы 20 км, но для примерной оценки полученные цифры достаточно адекватны). В условиях открытого пространства обычно работает такое эмпирическое правило: если от антенны шлюза видны крыши ближайших к конечному устройству домов, то связь будет обеспечена.

Обратите внимание, что дальность очень сильно зависит от высоты подъема антенны. В большом городе можно установить шлюз на крыше жилой высотки, обычно это 60 метров и более, в сельской местности высоко разместить антенну обычно не получается и для расчета мы взяли 15 метров. В результате дальность в селе оказалась меньше, чем в городе! Это, казалось бы, полностью противоречит распространенным утверждениям, что за городом дальностьLPWANсильно больше. Да, сильно больше, но при одинаково высоко установленных антеннах, в реальности же обычно имеем теже 10 кмoutdoorпокрытия.

СравниватьLPWANсистемы правильнее не по дальности, а по площади покрытия, так как количество обслуживаемых конечных устройств обычно пропорционально именно площади покрытия, сравнительная таблица приведена ниже.

Эти цифры легко запомнить, они нам пригодятся при дальнейшем анализе эффективности различныхLPWANсистем.

В настоящее время активно обсуждается возможность использованияLPWANв диапазоне 433 МГц. В распоряжении Ассоциации Интернета Вещей появился опросникМинцифры России от 06 апреля 2021 года об оценке необходимости новых полос радиочастот для внедрения узкополосных беспроводных сетей связи Интернета вещей в диапазонах 400 МГц и 800 МГц. Основным аргументом для использования 433-го диапазона является утверждение о значительно лучшем в этом диапазоне распространении радиоволн в городе. Основным отрицательным фактором является необходимость использовать значительно большие по габаритам антенны в конечных устройствах.

Оценим увеличение площади покрытия при переходе на 433. Разрешенная мощность излучения в этом диапазоне 12,5dbm, дополнительные потери на конечном устройстве увеличим на 3db(скорее всего будут использоваться укороченные антенны), но дополнительные потери наindoorпокрытие, наоборот, уменьшим на 3db.

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

Дальность работы и соответствующая площадь покрытия очень сильно уменьшается в случае необходимостиindoorпокрытия на первых и подвальных этажах зданий. Оценочные значения приведены в таблице 2 и обобщены в таблице 5.

Как связана дальность и энергоэффективность системы? Возможно такое сравнение.

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

Так и при оценке энергоэффективностиLPWANсистем, есть смысл рассчитывать ее в пересчете на количество обслуживаемых конечных устройств, или на площадь покрытия, которая в общем случае пропорциональна количеству датчиков на ней размещенных. Имеет смысл ввести коэффициент эффективностиLPWANсистемы прямо пропорциональный ее площади покрытия, например, см таблицу 3.

Выводы

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

  2. Зона покрытия сильно зависит от высоты подъема антенны шлюза, она должна располагаться выше ближайших крыш.

  3. Площадь покрытия правильно спроектированныхUNBсистем в 2-3 раза большеLoRaWAN

  4. Indoorиoutdoorпокрытие две большие разницы, дальностьindoorпокрытия на первых и полуподвальных этажах в 2-3 раза меньше. Когда говорят о дальностиLPWANвсегда требуется уточнять о какой дальности идет речь.

  5. Переход на более низкий частотный диапазон с 868 на 433 МГц сопряжен с необходимостью использовать на конечных устройствах антенны с большими габаритами, но позволяет увеличить площадь покрытия, порядка в 2,4 раза дляindoorустройств на первых и полуподвальных этажах зданий.

Подробнее..

Samsung превратит устаревшие смартфоны пользователей в устройства для управления умным домом

22.04.2021 18:21:21 | Автор: admin

Компания Samsung Electronics Co., Ltd. запускает официальную программу утилизации смартфонов Galaxy. В рамках этой программы корейский гигант предлагает владельцам устаревших физически и морально гаджетов перепрофилировать их, дав новую жизнь.

В новой жизни смартфоны станут элементами систем умного дома. Доступ к сервису получат пользователи из США, Кореи и Великобритании. Программа будет реализована в рамках инициативы Galaxy Upcycling at Home. Сейчас проект вошел в стадию бета-тестирования.

В чем заключается инициатива


Получившие своеобразный апгрейд устройства будут работать через приложение SmartThings. Приложение получит два новых режима: звуковой и световой задействующий датчики телефонов.

Во что превратят устаревшие модели телефонов серии Galaxy:

1. Инструмент присмотра за маленькими детьми со звуковым сенсором как радионяня.


2. Решение по присмотру за домашними питомцами со световым сенсором.


3. Датчик уровня освещенности в помещении. Причем устройство сможет автоматически включать свет, если уровень освещенности опустится ниже заданного.

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

Чтобы девайсы могли длительное время работать в режиме обнаружения света и звука, Samsung оснастила устройства решениями по оптимизации энергопотребления.

В итоге все устройства будут легко взаимодействовать с широким спектром IoT-систем.

Что еще


По словам вице-президента и руководителя группы SmartThings в Samsung Джайен Джанг (Jaeyeon Jung) интерес пользователей к умным домашним устройствам активно растет, поэтому неиспользуемые устройства Galaxy могут помочь превратить каждый дом в умный.

Решение, безусловно, выглядит интересно, однако использует только часть потенциала смартфонов. Пока что не будет задействоваться камера наиболее распространенная и потенциально полезная часть старого смартфона.

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

Подробнее..

Алгоритм оценки стиля вождения водителя грузового (коммерческого) автомобиля

15.05.2021 20:20:44 | Автор: admin

2021 год. IoT окружил нас с Вами со всех сторон. GPS/GLONASS трэкерами и всевозможными облачными платформами слежения нас зазывают со всех сторон. Казалось бы, с чего вдруг я решил, что данный пост имеет актуальность?! Но не все так однозначно - давайте разбираться!

Ни для кого не секрет, что основной статьей затрат при автомобильных грузоперевозках является стоимость топлива. Все участники данной игры (Автомобильные грузоперевозки) прилагают максимум усилий для минимизации данной статьи расходов. Автопроизводители бесконечно совершенствуют свои модели автомобилей, предлагая все более производительные, безопасные и экономичные седельные тягачи. Развитые страны строят более экономичные автомагистрали.

Логистические компании выстраивают более оптимальные логистические маршруты и казалось бы все движется только вверх и вперед и с каждым годом расходы транспортной компании на топливо должны уменьшаться! Но в жизни получается не так. Несомненно, если сравнивать 1990,2000 и 2010 года, то по мере обновления моделей грузовых автомобилей, расход топлива стремительно сокращался. К примеру для грузовиков 1990 года выпуска при перевозке 20 тонн груза расход топлива 45л/100км считался нормальным. Моделям 2000-х годов удавалось выйти из 40л/100км расхода топлива, а грузовики 2010 годов выпуска уже могли хвастаться расходом 30-35 л/100км пути. Но что происходит сейчас, в 2021году? Современные модели грузовиков заявляют о паспортных расходах в 21....23...25л/100км, но в реальных условиях транспортные компании получают средний расход автомобилей в районе 30-31л/100км. Встает резонный вопрос?

Получается что автопроизводители лгут и их автомобили не стали более экономичными и это всего лишь маркетинговые ходы? На самом деле нет - проблема кроется в другом.

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

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

Но, казалось бы, с этим у нас тоже должно быть все в порядке. Практически все навигационные системы и GPS/Glonass трэкеры имеют опцию ECO DRIVING которая должна оценивать водителя. Но вот тут как раз таки маркетинг чистой воды!) Опция вроде бы есть, а вот толку от нее нет!

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

Алгоритмы ECO DrivingАлгоритмы ECO Driving

Хотел было я дать комментарий к каждому параметру, в чем его + и -, но текста получилось на 3 страницы) В общем, если подвести жирную черту ИТОГО, то эти критерии оценки стиля вождения водителя настолько сильно обобщенные, что более половины ситуаций не анализируются данными критериями, а если и рассматриваются - то без обоснованно штрафуют водителей за ситуации, на которые они не влияют. К примеру критерий Остановки - за рейс Москва - Париж - Москва, автомобиль сделал 157 остановок, из них 54 остановки - это пробки, 82 остановки - это прохождение очередей на границах. 13 остановок - это загрузки/выгрузки/растаможки, и всего 8 остановок были инициированы водителем. А по данной системе оценится он по всем 157 остановкам...) Системы оценки стиля вождения, основанные на схожих алгоритмах больше игрушка, нежели инструмент оптимизации и управления.

Что же, начнем строить свои алгоритмы!

За исходные данные мы берем седельный тягач, с расширенным CAN протоколом, цифровой ДУТ, вариации с количеством ступеней неизнашивающихся тормозных систем и наличие встроенных электронных помощников (круиз контроль, система аварийного торможение, система слежения за разметкой, система учета рельефа местности и пр.) без привязки к марке грузовика. МКПП и АКПП. Электронная педаль газа и наличием системы EBS не старше 2006г.ПО верхнего уровня Wialon. Выбор обусловлен всеядностью платформы с точки зрения телематического оборудования.GPS трэкер с интерфейсами RS,1-wire, BT, CAN BUS. Дополнительные модули RFID, выносной модуль вибраций (удара). И конечно же нам понадобится гибкая логика, что то вроде Easy Logic от Galileosky.

Итак, начнем, пожалуй, с самого энергозатратного с точки зрения автомобиля параметра.

Превентивная езда/ Режим разгона

Данный критерий характеризует способность водителя к предусмотрительному вождению, т.е. умению водителя прогнозировать и предусматривать дорожную обстановку и принимать управляющее воздействие на автомобиль во время разгона до события, а не по факту. Основная задача избегать РЕЗКИХ управляющих воздействий

Пример: водитель начинает движение и динамично разгоняется до ограничителя скорости в 83 км/ч, но тут же быстренько упирается в идущий автомобиль с меньшей скоростью 75 км/ч, а совершить обгон возможности нет и ему приходится тормозить до скорости данного транспортного средства, а затем снова разгоняться и пытаться его обгонять.

Способ реализации алгоритма: после промежутка разгона автомобиля на >=10км/ч, должен следовать равномерный участок графика скорости в диапазоне +-2км/ч.
Система выставления баллов:
22 секунды прямолинейного движения - 10 баллов,
18 секунд - 9 баллов,
15 секунд - 8 баллов
// 22 секунды взяты из расчета 500 метров прямой видимости на дороге

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

Превентивная езда/ Режим торможения

Здесь все аналогично Режиму разгона.

Равномерная скорость движения

Энергия, необходимая для достижения более высоких скоростей, должна поддерживаться как можно дольше, чтобы постоянно поддерживать скорость движения. Лучшая оценка в этом разделе достигается за счет плавания в транспортном потоке и недопущения слишком частых и интенсивных процессов ускорения и замедления.

Анти пример: данный параметр нам нужен для борьбы вот с таким вот графиком скорости автомобиля.

  1. Способ реализации алгоритма: Считается количество циклов изменения вектора скорости. Идеальная езда - один цикл от троганья с места до полной остановки.

    Система выставления баллов:
    10 циклов - 9,0 баллов
    20 циклов - 8,0 баллов

    !. Изменением вектора считается изменение скорости на величину от 2 км/ч до 10 км/ч. Колебания скорости до 2км/ч обусловлено гистерезисом круиз контроля, а изменение скорости на 10 км/ч и более рассматриваем за дорожную обстановку.

Использование педали газа

Когда водитель орудует педалью газа, система управления двигателем отрабатывает нажатие на педаль газа в процентном значение и даже небольшое кратковременное дерганье педалью приводит к подачам порций топлива для отработки желаемого ускорения, но так как автопоезд с массой 40 тонн слишком инерционен, то такие управляющие воздействия не заметны водителю, но приводят к пустой трате топлива. Ошибочно мнение, что автомобиль сглаживает волнения педали для экономии топлива.

Анти пример: Режим движения водителя по проселочной дороге за впереди идущем авто. Он едет примерно с одной скоростью но постоянно мучает педаль газа туда/сюда пытаясь держаться на одинаковом расстоянии до впереди идущего авто.

Способ реализации алгоритма: Считается количество колебаний процентов нажатия педали газа. Идеальная езда - один цикл от троганья с места до полной остановки.
1 цикл - 10,0 баллов
10 циклов - 9,0 баллов
20 циклов - 8,0 баллов
!. Циклом считается изменение нажатия педали газа на величину от 2 до 30% вниз затем вверх. Аналогия как с равномерной скоростью, только анализируем график нажатия педали газа в %.

Разгон

Процесс разгона должен происходить в зеленом секторе оборотов двигателя. Если водитель разгоняется слишком медленно - то АКПП сбрасывает повышенную передачу на 850-900 об/мин, а зеленый сектор работы турбины начинается с 1040об/мин. Если же разгонять автомобиль слишком сильно - то АКПП переключает передачи в диапазоне 1300-1650 об/мин, а это уже выходит за пределы зеленого сектора.

Способ реализации алгоритма:Считаем количество раз превышения двигателем оборотов свыше 1600 и ниже 1050 при затребованной мощности.
! Если в момент превышения мощности не было затребовано, значит это режим наката или торможения моторного тормоза.
10 раз - 10 баллов
20 раз - 9 баллов
30 раз - 8 баллов

Торможение

Тут все сложно...Важно правильно тормозить! Не только важна сила нажатие педали тормоза, но и алгоритм торможения/Замедления автомобиля, поскольку постоянное и длительное очень легкое торможение палит и перегревает колодки, и его можно заменить использованием не изнашиваемых тормозных систем (торможение оборотами двигателя/ретардер/претардер/моторный тормоз/горный тормоз) . Идеальный алгоритм торможения:
1 этап торможения это накат - 10 сек длительность использования
2 этап торможения это Моторный тормоз ступень 1 - 9 сек
3 этап торможения это Моторный тормоз ступень 2 - 8 сек
4 этап торможения это Моторный тормоз ступень 3 - 7 сек
5 этап торможения это Ретардер ступень 1 - 6 сек
6 этап торможения это Ретардер ступень 2 - 5 сек и только после этого жмем на педаль)))
7 этап торможения это Рабочий тормоз 1-30% - 4 сек
8 этап торможения это Рабочий тормоз 30-50% - 3 сек
9 этап торможения это Рабочий тормоз 50-70% - 2 сек
10 этап торможения это Рабочий тормоз 70-100% - 1 сек

!! На разных авто разное количество ступеней моторного тормоза и ретардера.

Балл за одно торможение зависит от количества ступеней, которые водитель выполнил правильно.
1-10 выполнены, то балл 10,00
2-10 выполнены, то балл 9,00
5-10 выполнены, то балл 8,00
7-10 выполнены, то балл 7,00

Остановки

Поскольку трогание с места является одним из наиболее затратных по топливу процессов (около 700 грамм топлива на разгон сцепки полной массы) при движении, количество остановок, которых можно избежать, следует по возможности сократить до минимума. Тут очень важно понимать что общее количество остановок слишком неинформативный критерий! Есть пробки, особенно их много в Европе. Есть очереди на границах, есть погрузки и выгрузки на которые водители не влияют

Способ реализации алгоритма:Считаем количество остановок после 3 км пути. Т.е. остановки через каждые 10 метров игнорируем, это пробки/очереди/загрузки/выгрузки.
5 остановок - 10 баллов
10 остановок - 9 баллов
15 остановок - 8 баллов

Сложность трассы

Не все маршруты одинаковы и количество и процент нажатия педали тормоза при поездке в Азербайджан и в Германию очень отличается и в этом нет влияния водителя поэтому сложность трассы тоже необходимо учитывать
"Средний уклон"
"Средний вес"
"Количество положительных остановок (очереди и пробки)"

Способ реализации алгоритма:
А. Средний уклон - акселерометр
Б. Средний вес - CAN
В. Количество остановок = общее количество остановок за вычетом количество ненужных остановок из п.6

Оценка = (а+б+в)/3

Накат

С этим параметром попроще его уже все хорошо считают. Из практики - хороший накат за рейс плавает в размере 14-16% от общего пути.

Неиспользование помощников автомобиля

В современных автомобилях много очень полезных помощников, которые водители так и норовят выключить в пути, мол мне лучше знать как ехать! К примеру рельеф местности загружен практически в каждый современный автомобиль. В Мерседесе данная система называется PPC, и автомобиль выбирает скоростной режим прохождения гор и поворотов учитывая рельеф. К примеру если после высокой горы будет сразу следовать спуск, то в конце подъема на гору машина перестанет поддерживать заданную скорость и закатится на горку на скорости 50км/ч и начнет потихоньку перекатываться горку а затем разгоняться накатом, но не всем водителям такое по душе. А еще машины теперь любят сами заранее тормозить перед поворотом)

Система РРС сама заранее сбросит скорость перед перекрестком.Система РРС сама заранее сбросит скорость перед перекрестком.

Оцениваем процент пути с включенными системами
А. Режим AUTO ВКЛ (в сравнении с Manual)
Б. РРС ВКЛ
В. Слежение за разметкой ВКЛ
Г. аварийное торможение ВКЛ
Д. Режим ECONOMY вкл (в сравнении с AUTO)
Е. круиз контроль/ограничитель скорости ВКЛ (круиз + ограничитель)
Ё. Усталость водителя ВКЛ
Ж. Слежение за дорожными знаками ВКЛ

Оценка = (А+Б+0,25*В+0,25*Г+Д+Е + 0,25*Ё + 0,25 * Ж)/6

Мощностная диаграмма пути

При движении водителю необходимо избегать диапазонов высоких оборотов при низких нагрузках и диапазонов низких оборотов при высоких нагрузках . Поэтому будем контролить режимы:

Считаем секунда вне селеного диапазона и штрафуем голубчика))) Кстати, зачастую водители чтобы сымитировать повышенный расход топлива, к примеру после установки ДУТ, кидает автомобиль на 10 передачу вместо 12 и едет весь день на 1600 оборотах при малой нагрузке. А тут мы его и подловим) А также здесь будут видны обгоны на скорости.

Вибрация от внешнего датчика вибрации на раме

Этим параметром мы будим приучать водителей бережно относиться к авто и тормозить на лежачих полицейских и ямах в колено.

Способ реализации алгоритма: Устанавливаем внешний датчик вибрации на раме и проезжаем спящий на 20 км/ч, и удар в средненькую яму на скорости 60км/ч. Смотрим показания датчика, определяемся с какой-то критической величиной и все последующие колебания свыше этого значения штрафуем

10,0 0 ударов за рейс
9,00 2 удара за рейс
8,00 4 удара за рейс

Внутренний акселерометр в данном случае не подойдет, т.к. спящие на скорости 60 км/ч пневмоподвеска рама+кабина глотает. А вот колеса становятся квадратными!

P.S.. В заключении нужно сказать, что, анализируя и влияя на водителей в рамках этих критериев возможно максимально минимизировать негативное влияние водителя на расход топлива. Однако не стоит забывать, что помимо стиля вождения на расход также влияет и техническое состояние транспортного средства, и в борьбе за экономию топлива необходимо должное влияние уделять также и техническому состоянию ТС.

Приведу небольшой пример: при закоревании направляющих тормозного суппорта одного из колес на ведущей оси, расход топлива за рейс Минск, РБ-Вольфсбург, Германия Минск, РБ вырос с 24,9 до 29,2 л/100км. Наш менее опытный водитель даже не заметил ничего неладного в пути, т.к. ступица ведущей оси рассеивает тепло через бортовую и масло моста, и колесо грелось сильнее остальных, но не критично больше, а опытный водитель в следующем рейсе жаловался на слабый накат автопоезда и легкий запах паленых колодок после длительного вождения. И стоит отметить, что используемая смазка в направляющих, имеет срок службы 36 месяц, после чего она высыхает и теряет свои свойства.

Но как видим не каждый водитель способен увидеть данные тонкие проблемы, и, следовательно, человеческий фактор необходимо по максимум исключать в нашей работе!)

P.S.

Самый главный вопрос почему стоит прислушиваться к нашему мнению?

  1. Наша компания заняла 1 место в Mercedes-Benz FleetBoard Drivers League среди стран СНГ.

  2. Среднегодовой расход по автопарку за 2020 год 24,6 л/100 км (14 машин, 130-140 т.км пробега на каждый грузовик, 27 водителей)

Подробнее..

Промышленные VS офисные сети построение, защита, подвохи, и как надежно отделить первые от вторых

07.06.2021 18:08:54 | Автор: admin
Привет, Хабр! Этим постом я хотел бы начать серию публикаций по промышленным решениям, которые мы сейчас активно тестируем в нашей КРОК-лаборатории. Для начала попробую разобрать основные вопросы проводных промышленных сетей и показать, чем их построение отличается от классических офисных. В качестве подопытного кролика возьму наиболее востребованное на рынке оборудование и софт от Cisco и разберу их особенности.



Как организовать Ethernet-подключения в промышленных зонах?


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

Здесь возникает первая сложность и первое же отличие промышленных сетей от офисных: большая часть коммутаторов устанавливается не в серверные, а в монтажные шкафы, разбросанные по цехам или по территории объекта. Тянуть от каждого монтажного шкафа по две оптические линии по разным путям дорого и сложно, из-за этого становится сложнее организовать привычную и надёжную звездообразную топологию. Приходится использовать кольца. Каждый, кто погружался в построение Ethernet-сетей, помнит, что кольца из коммутаторов зло. В случае со Spanning-Tree это действительно так. Этот протокол в кольцевой топологии может отрабатывать до 30 секунд, что часто неприемлемо для сетей, обслуживающих производственные процессы. Хуже того, скорость сходимости STP падает с увеличением количества хопов от корневого коммутатора до крайних коммутаторов, и как правило, рекомендуется не превышать расстояние в 7 хопов. Это значит, в кольце должно быть не больше 14 коммутаторов.

Что с этим можно сделать? В случае с коммутаторами Cisco, самое простое решение использовать вместо STP Resilient Ethernet Protocol REP и его модификацию REP Fast. Данный протокол специально предназначен для кольцевых топологий и обеспечивает сходимость сети максимум за 50-100мс при любых типах неисправностей и размерах колец до 50 коммутаторов. Причём 50 коммутаторов в кольце это не предел для такого протокола. Время сходимости при росте кольца конечно будет увеличиваться, но тот же Spanning-Tree на кольцах такого размера не сойдётся вообще никогда. REP поддерживается не только в промышленных коммутаторах, но и в офисных, в частности в серии Catalyst 9000, которые могут служить в качестве коммутаторов агрегации.

Протокол очень прост в настройке, вот пример:



Для более сложных случаев доступны протоколы PRP и HSR. Они предполагают полную дупликацию трафика по двум путям в сети. При отказе одного из путей потерь в передаче данных не возникает вообще. Однако и стоимость реализации такой устойчивости выше протокол поддерживается только в старших моделях и только промышленных Ethernet-коммутаторов (IE3400, IE4000, IE4010, IE5000). Впрочем, требования к надёжности и сходимости промышленной сети, как правило жёстко определяются характером производственного процесса, который эта сеть будет обслуживать. Один простой даже в 50 миллисекунд порой может стоить дороже, чем хорошее сетевое оборудование.

Как обеспечить требуемую надёжность работы?


Как правило требования по надёжности и отказоустойчивости к промышленному сегменту сети выше, чем к офисному. Промышленное сетевое оборудование делается и тестируется так, чтобы отвечать этим требованиям. В случае с коммутаторами Cisco, промышленное исполнение означает:

монтаж в компактные шкафы на DIN-рейку, питание от постоянного тока;
защита микросхем и портов от электростатических разрядов до 4000 кВ;
отсутствие вентиляторов высокоэффективное охлаждение конвекцией, несмотря на малый размер устройств;
способность выдерживать скачки напряжения электропитания согласно требованиям сертификаций IEC 61000-4-11, IEC 61850 коммутаторы Cisco продолжают работать при пропадании электропитания на промежуток времени до 50 мс, а при отключении отправляют сигнал Dying Gasp;
высокоточные внутренние часы;
возможность быстро заменить неисправный коммутатор, просто переставив SD-карту в новый (при этом новый коммутатор поднимется не только с тем же конфигом, что и старый, но и с тем же образом IOS);
быстрая загрузка (в пределах 80 секунд);
тщательное тестирование на соответствие промышленным сертификациям.


Рисунок 1. Симуляция процесса охлаждения коммутатора конвекцией


Рисунок 2. Тестирование коммутатора на устойчивость к электромагнитным воздействиям


Рисунок 3. Тесты с воздействием водой на коммутатор с уровнем защиты IP67

Часто так бывает, что промышленные коммутаторы подключаются к обычным офисным, как к коммутаторам агрегации и при отказе последних промышленный сегмент перестаёт работать. Чтобы такого не допустить, необходимо обеспечивать агрегацию промышленных коммутаторов, расположенных в цехах или по территории промышленного предприятия, на специальных промышленных коммутаторах агрегации. Cisco для этой цели предлагает коммутаторы серии Cisco IE5000:



Они монтируются в 19-дюймовый шкаф, могут питаться и от постоянного и от переменного тока, обеспечивают высокую плотность портов, высокую производительность, но при этом промышленную надёжность и поддержку промышленных протоколов, например PTP, PRP, HSR, PROFINET MRP. Как и другие коммутаторы промышленной линейки, Cisco IE5000 умеют принимать сигналы тревоги от устройств автоматики, например, устройств контроля климата или датчика открытия двери в помещение, и отдавать их например для включения сирены и светового оповещения, помимо, конечно же, SNMP и Syslog-сообщений о состоянии коммутатора, отсылаемых в системы мониторинга. Кроме того, эти коммутаторы поддерживают стекирование через 10G-порты. Вот пример построения сети с использованием REP-колец и коммутаторов IE5000 в качестве агрегирующих:



Поддержка промышленных протоколов


В промышленных Ethernet-сетях используются Ethernet-версии различных промышленных протоколов: PROFINET, CCLINK, CIP и т.п. При этом, как правило, от сетевого оборудования требуется поддержка таких протоколов в том или ином виде. К примеру, при использовании PROFINET, требуется управлять с помощью этого протокола не только контроллерами, сенсорами или исполнительными устройствами, но и самими коммутаторами, образующими сеть. Для этого в моделях промышленных коммутаторов Cisco начиная с IE3000 реализована поддержка работы по PROFINET в качестве устройства ввода-вывода. Кроме того, некоторыми моделями коммутаторов Cisco можно управлять с помощью портала Siemens TIA.

Ещё один пример промышленного стандарта, поддержка которого часто требуется Time-Sensitive Networking (TSN). Это набор стандартов Ethernet, позволяющий обеспечить доставку Ethernet-фреймов с предсказуемой и не меняющейся во времени задержкой. Привычный Ethernet, напомню, работает асинхронно и фреймы в нём доходят до адресата настолько быстро, насколько получается. Функционал TSN протокол поддерживается в коммутаторах Cisco IE3400, IE4000, IE4010 и IE5000.

Как защитить промышленную сеть?


Многие стандарты и рекомендации построения промышленных сетей предусматривают реализацию демилитаризованной зоны ДМЗ между офисной и промышленной сетями. В этой зоне могут располагаться рабочие станции для удалённого доступа к промышленным компонентам. Есть целый ряд рекомендаций по построению такой ДМЗ, например:

трафик не должен проходить между офисной и промышленной сетями насквозь;
любой протокол, разрешённый между ДМЗ и промышленным сегментом должен быть в явном виде запрещён между ДМЗ и офисным сегментом;
в промышленный сегмент сети не должно быть доступа из интернета, даже через межсетевой экран;
И конечно никаких Any в полях для IP-адресов, портов и протоколов в политиках межсетевого экрана.

В идеале ДМЗ должна быть устроена так что если её физически отключить от сети, промышленный сегмент продолжит работать.

Промышленный, офисный и ДМЗ-сегменты отделяются друг от друга межсетевыми экранами. Здесь у Cisco явное преимущество на её продуктах можно построить защищённую сеть от и до.
Межсетевые экраны Cisco умеют распознавать не только промышленные сетевые протоколы:







но и промышленные устройства, подключённые к сети:



А также обнаруживать, разрешать или запрещать конкретные действия в рамках данных протоколов:



Это позволяет выстраивать политики межсетевого экранирования не только на базе IP-адресов и TCP/UDP-портов, но и на базе наименований конкретных моделей устройств и протоколов взаимодействия между ними. Для большинства ситуаций в межсетевом экране есть преднастроенные правила, которые можно использовать с собственными параметрами. Такими правилами можно защищаться не только от преднамеренных атак, но и от дурака ошибочно подаваемых на промышленные устройства команд.

Межсетевые экраны обеспечивают так называемую макросегментацию сети разделение на крупные участки, трафик между которыми либо запрещён, либо фильтруется через правила межсетевого экранирования. Таким образом отделяются друг от друга не только ДМЗ, промышленный и офисный сегменты сети, но и, например, разные цеха и производственные линии в промышленном сегменте. Для последней задачи может пригодиться межсетевой экран Cisco Industrial Security Appliance (ISA) полноценный фаерволл в промышленном исполнении.



Как правильно обеспечить удалённый доступ?


Как правило, в промышленных сетях требуется обеспечивать удалённый доступ для организаций, обслуживающих оборудование АСУТП. При этом, важно хорошо контролировать кому и куда такой доступ предоставляется и защититься от доступа несанкционированного. Удалённый доступ осуществляется через описанную выше ДМЗ.

Здесь, помимо межсетевых экранов Cisco Firepower, огромную помощь может оказать решение Cisco Identity Services Engine. Межсетевые экраны обеспечивают подключение с помощью AnyConnect VPN или проксирование трафика удалённого рабочего стола, а ISE позволяет максимально чётко идентифицировать и человека, получающего доступ и объект в сети, к которому этот доступ предоставляется, а также определить политики такого доступа в виде своего рода матрицы:



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





Как выполнить требования регуляторов?


Стандарты международных организаций и дизайн-документы Cisco Validated Design только дают рекомендации как лучше. Но кроме рекомендаций есть ещё и требования регулирующих органов, которые необходимо выполнять при построении промышленных сетей. В России к таким относится приказ 239 ФСТЭК Об утверждении требований по обеспечению безопасности значимых объектов критической информационной инфраструктуры Российской Федерации. Он содержит перечень архитектурных решений функционала, которые должны быть реализованы.

Часть требований приказа, такие как наличие межсетевого экрана и обновляемого IPS на периметре промышленного сегмента, сегментация сети, организация ДМЗ закрываются межсетевыми экранами Cisco Firepower, описанными выше. Требования по аутентификации и авторизации Cisco ISE. Далее, целый набор требований, связанных с мониторингом промышленной сети закрывается решением Cisco CyberVision.

Решение Cisco CyberVision может собрать данные с промышленной сети в виде SPAN-трафика или со специальных сенсоров в сетевых устройствах и представить картинку происходящего администратору, а также отправить необходимую информацию в системы управления конфигурациями и SIEM. Администратор сети может получить полный список устройств, подключённых к промышленному сегменту сети (не только Ethernet-коммутаторов, но и устройств промышленной автоматики), проверить их на известные уязвимости и отследить их поведение.


Рисунок 4. Пример отображения известных уязвимостей для промышленных устройств

Еще детальнее тему проводных промышленных сетей будем разбирать на вебинаре 22 июня, если хотите записаться, можно зарегистрироваться здесь
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru