Радіомодулі Synapse: теорія і практика

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

В даний час існує дуже багато різновидів радіомодулів. Кожний з них відрізняється своїми характеристиками , кожний тип модулів має свої переваги та недоліки. Типовий радіомодуль складається із схеми керування і комунікації та трансивера:

Hозглянемо радіомодулі фірми Synapse, їхні різновиди та будову.
Назва Synapse походить від латинської назви «synapsis», це біологічна структура призначена для передачі сигналів (нервових імпульсів) між нейронами або іншими клітинами організму.

Основні переваги та недоліки Synapse радіомодулів:
Переваги:
• Великий радіус дії;
• Можливість обслуговування без демонтажу пристроїв;
• Засоби розробки для Windows, Linux та MAC;
• Простий в програмуванні;
• Можливість використання шифрування AES-128.
Недоліки:
• Відсутній прямий доступ до периферії (робота тільки через API функції);
• Закритий вихідний код;
• Відносно висока ціна.

Характеристики

Як видно з таблиці модулі можуть використовуватись як мікроконтроллери, що дозволяє спростити проектовану систему і відмовитись від використання зовнішнього мікроконтроллера. Програмне забезпечення дозволя працювати з ADC, SPI, I2C, GPIO, PWM, UART.

Для демонстрації можливостей Synapse системи компанія пропонує evaluation kit EK2100:

Оновлення програмного забезпечення відбувається бездротово. Для цього до комп’ютера підключається один із модулів (через USB aбо RS-232)

Процес оновлення програмного забезпечення модуля:

Архітектура мережі Synapse
Кожний радіомодуль може працювати як ретранслятор, збільшуючи покриття мережі. В прикладі інформація передається з модуля 0 в модуль 2, модуль 1 виконує роль ретранслятора:

Broadcast

Multicust

Приклади застосування:

Керування виконавчими механізмами на віддаленому об’єкті


Як складова частина «Smart House»

Програмні рівні Synapse радіомодуля

User Applications — на вершині ієрархії виконується користувацький скріпт.
Snappy Virtual Machine — цей створює абстракцію між переферією та користувацьким скріптом;
Hardware Abstraction Layer (HAL) — рівень абстрації між переферією та програмою.

Програми пишуться на високорівневій мові Python. Віртуальна машина модуля перетворює текст скріпта в «байт код» який може бути автоматично завантажений в один або інший модуль (нод). Це дозволяє робити скріпти переносимими. Вітруальна машина забезпечує рівень абстракції програми від пристристрою, тобто програма буде виконуватись на різних мікропроцесорах без модифікації.

Середовище розробки

Для розробки використовується середовище Synapse Portal, яке дозволяє:

Конфіругувати модулі;
Завантажувати скріпти в модулі дистанційно;
Моніторити мережу.

Як працювати з Synapse Portal можна також подивитись в цьому відео :

Практична частина
Структура програми

#Оголошення глобальних змінних define
SwLeft = 11     #GPIO_11
global LedCounter 
 
#Ініціалізація потрібної периферії модуля
@setHook(HOOK_STARTUP)
def Init ():
    setPinDir(1, True) #pin GPIO1 is output pins LED, for indication of work
 
#Реалазіція функцій
@setHook(HOOK_10MS)
 def ScanButtons(): 
    global ButtonStateL
 
    if(readPin(SwLeft) == 0):
        ButtonStateL = 1
    else:
        ButtonStateL = 0

@setHook() — функція яка викликається з певною періодичністю, в нашому випадку кожних 10mS(HOOK_10MS)

Програмування цих модулів дуже просте. На малюнку приклад де є 2 модулі, кнопка і світлодіод. Кнопка підключена до одного модуля, керує світлодіодом на іншому модулі. Скріпт на «Модулі 1» моніторить стан кнопки і якщо вона натиснута викликає віддалену функцію включення світлодіодна на іншому модулі.

Демонстраційний приклад
Для роботи використовуються дві плати з модулями. Живляться модулі від батарейок. Мигання світлодіодів означає що пристрої включені. До одного із них підключений п’єзодинамік. При натисканні кнопки , на іншому модулі генерується звук.

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

LED1  =  1 
LED2  =  2 
SwBuzzer = 5 #GPIO_12
 
ModuleAdress =  '\x04\x09\xEE'
 
global LedCounter
 
@setHook(HOOK_STARTUP)
def Init ():
    setPinDir(LED1, True) #pin GPIO1 is output pins LED, for indication of work
    setPinDir(LED2, True) #pin GPIO1 is output pins LED, for indication of work
    setPinDir(SwBuzzer, False) # set Pin 5 as Input
    
    
@setHook(HOOK_100MS)
def StartBlink():
    if (readPin(SwBuzzer) == 0):
        rpc(ModuleAdress, 'BuzzerOn', 0)
        writePin(LED1,True)
    else:
        rpc(ModuleAdress, 'BuzzerOff', 0)
        writePin(LED1,False)
        
@setHook(HOOK_1S)
def BlinkAll():
    pulsePin(LED2,200,True)
LED1  =  1 
LED2  =  2 
Buzzer = 11
 
@setHook(HOOK_STARTUP)
def Init ():
    setPinDir(LED1, True) #pin GPIO1 is output pins LED, for indication of work
    setPinDir(LED2, True) #pin GPIO1 is output pins LED, for indication of work
    setPinDir(Buzzer, True) #pin GPI11 is output pins LED
    
@setHook(HOOK_1S)
def blink():
    pulsePin(LED2,400,True)
  
 
def BuzzerOn():
    writePin(Buzzer,True)
    writePin(LED1,True)
        
def BuzzerOff():
    writePin(Buzzer,False)
    writePin(LED1,False)

демонстрація роботи (відео):

Ціни на модулі на Digi-Key($):
RF100 — 40.15
RF200 — 42.11
RF300 — 33.84
SM200 — 24.72
SM300 — 38.96

SNAP Primer : forums.synapse-wireless.com/upload/SNAP Primer.pdf
SNAP Reference Manual : www.synapse-wireless.com/...nual-snap-os-45352fdc.pdf

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

NRF24L модулі ідуть по 1у.е. на аліекспресі, сам купував і запускав з Атмегою,
по прямій зв"язок 25 м, в панельному будинку — в межах квартири.
homes-smart.ru/...nie-radiomodulya-nrf24l01

Коэффициент усиления антенны (пиковая): 2dBm
Коэффициент усиления антенны никак не может быть измерен в dBm. Но даже 2 dBi для зю-образной дорожки на текстолите — очень спорно.
-82dBm sensitivity at 2Mbps
-85dBm sensitivity at 1Mbps
-94dBm sensitivity at 250kbps
Чувствительность приемника никакая, типичная чувствительность для WiFi на скорости 1 Mbps равна −91 dBm (т.е. ровно в два раза лучше).
по прямій зв"язок 25 м
Bluetooth Class 3: та ж відстань, та ж швидкість, те ж споживання. Бонусом сумісність з BT-девайсами. Ціна — одиниці доларів.

BLE біля 5 баксів, а та херня за долар жере дохуа енергія, і там зовсім інший БТ стек, який для ембедедад ніяк не стоїть.
А ти чо, живе відео хоч ганяти в рілтаймі, чи температуру за бортом міряти?

Оновення програмного забезпечення відбувається безпровідно
Оновення — Оновлення
безпровідно — бездротово

Виправив, дякую!

Посмотрел на цены выше, ныне есть модульки повкуснее. Например от Espressif espressif.com/en/products/esp8266 — ESP01/03 на базе SoC чипа ESP8266, доступен с бесплатной доставкой у китайцев с али за 2.5 вечнохрустящих.

На борту 32bit CPU/SDIO 2.0/SPI/UART (от 300 до 2686400 бод)/GPIO (для пользователя доступно 2-4... в зависимости от конструктива) при мощности +19dBm, это приблизительно чуть более 80 мВт в режиме b (поддержка 802.11b/g/n c WPA2/PSK). Питание 2.7-3.3В при токопотреблении 135-215 мА в режиме передачи в зависимости от режима, при приеме 60 мА, но есть возможность ухода в спящий с потреблением микроамперы. Чувствительность порядка −98 dBm. Есть возможность как нативной разработки с использованием ESDK на Си, так и залить интерпретатор Lua. На нем и пишу.

Вот пример работы моего прозрачного моста UART/Wi-Fi --- Wi-Fi/UART на базе ESP8266 на Lua с возможностью внешней установки скорости и дополнительным WEB-сервером визуализации параметров:
<iframe width="640″ height="480″ src="www.youtube.com/embed/LZ2c1z-lEjw" frameborder="0″ allowfullscreen=""></iframe>

Антенна сложенная штыревая на лямбда на 4, выполнена прямо на печатной плате, поэтому эффективность в закрытом помещении, особенно с железобетоном, невысока (25...50 м). Впрочем это касается всех встраиваемых Wi-Fi карт и радиопультов-брелков. Модуль также легко переводится как из клиента в AP, так и в Soft AP с возможностью работы как AP и быть при этом клиентом другой точки. Есть прошивки энтузиастов для удаленной загрузки нового ПО (WebTCP2UART).

p.s.: пример работы raxp2.blogspot.com/...015/03/wi-fi-esp8266.html в качестве датчика температуры с отсылкой данных и открытия окна.

А як із сертифікацією? Можна використовувати в комерційних проектах?

Это отладочный модуль с тройкой компонентов, как расперри, буратина, первый раз слышу, чтобы это требовало разрешения на использование в коммерческих проектах (такие разрешения обычно идут на супердорогие решения в области видеокодирования и т.п.). Сертификация, как правило, идет на изделие в целом в ответственных проектах, имеющих отношение к человеческой жизни непосредственно, например медицинских. А использование WLAN с заданной мощностью в офисе и на улице регламентируется постановлениями частотнадзора. Тем не менее, Espressif Systems (производитель SoC ESP8266EX) имеет сертификаты СЕ и FCC на свой продукт.

У мене є такий модуль, от тільки ніяк до нього руки не доходять... цікава сама розробка на С, а не використання додаткового МК для комунікації АТ командами. Очевидний недолік — малий час роботи якщо використовувати батарейне живлення.

Как уже говорил, прошиваем интерпретатор Lua и пишем автономные программы прямо в нем, никакого дополнительного железа не нужно. Модули автономны сами по себе. Мне после ST проще было на Lua перейти.

Очевидный недостаток обходится классически также как и при использовании любых МК и батарейном питании — переводом в спящий режим. Внутренний таймер пробудит когда потребуется.

переводом в спящий режим.
споживання МК дуже мале в порівнянні із споживанням Wi-Fi трансивера, саме від нього залежить споживання всього модуля.

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

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

Небольшой обзор и внешний вид прозрачного Wi-Fi/UART моста www.youtube.com/watch?v=nxCo7TSN-_I

Можливо хтось підкаже як добавити вікно відео, а не посилання на youtu.be?

Ось так (я уже замінив в тексті топіка):

<iframe width="640" height="480" src="https://www.youtube.com/embed/bFXWYa-3l4M" frameborder="0" allowfullscreen></iframe>

Все зробив так само для іншого відео (youtu.be/rBho1_GR1m4 ), але чомусь не відображається....

Виправив. У вас було недостатньо так само, наприклад, замість

www.youtube.com/embed/

було

youtu.be/

В комментариях не сработало, или же это еще не предусмотрено?

Здається не передбачено, дозволені теги: blockquote, code, em, pre, i, li, ol, strike, strong, u, ul, a.

Залишилось придумати раціональне застосування.

Розумний дім — дистанційне знімання інформації з різних сенсорів, обробка, та передача на модулі керування.

Да применений уйма.
Вон хотя бы управление сигналом светофора из трамвая. Чтоб водитель или автоматично при приближении ему включался зелёный свет. И тогда не нужны лишние фазы, когда трамвай не едет, но автомобилям/пешеходам горит красный, как-будто они его пропускают...
Результат — улучшение ситуации на дорогах =)

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

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

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

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

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

Ни указания города, ни описания, ни намека контроля по Wi-Fi. Повторю еще раз — радиоканал не должен быть по Wi-Fi, это дыра.

якщо потрібне шифрування, не обов"язково повинний бути Wi-Fi.
Наприклад модулі із статті мають свій протокол,

Можливість використання шифрування AES-128
, і можна задати пароль.

модуль интересный, но за 24$ можно купить gsm-модуль например, питона там конечно не будет внутри...
Вообщем штука хорошая, но дорого + vendor lock :)

модуль интересный, но за 24$ можно купить gsm-модуль например
Вам не кажется, что это немного несопоставимые вещи?

Денис уже писал, для попробовать — любой MCU + NRF, не всем нужен питон и обновление прошивки по воздуху

Великим «+» цих модулів є те що можна обновити програмне забезпечення існуючої системи без демонтажу. Також можна з’єднати мережі пристороїв через інтернет

За GSM платить еще нужно. Покрытие не всегда есть.
А то что цена кусается — это да.
В сравнении с NRF по доллару + MCU на любимом яп все равно дешевле в десятки раз выйдет. Мощность сопоставимая с предложенными дивайсами.
Но вот 300 (RF, SM) очень даже ок могут быть, ибо не на заплеваных частотах работают. 2.4Ghz в городских условиях перегружен очень сильно.

Виглядає як копіпаста минулорічної статті
embedded.co.ua/...diomoduli-synapse-theory

Так, це той самий матеріал з мого сайту з невеликими змінами, опублікував для того щоб поділитись з ширшою аудиторією, можливо комусь буде цікаво.

Підписатись на коментарі