Исследователи разработали программный способ расширения диапазона стандартного Wi-Fi. Не волнуйтесь, скорость передачи слишком низкая для Netflix, но она может быть полезна для сенсорных сетей.
Wi-Fi повсюду, и кажется, что радиопередатчик и приемник в каждом устройстве слишком хороши, чтобы их игнорировать. Но, и все мы это знаем, диапазон Wi-Fi ограничен. Если отойти слишком далеко от точки доступа, скорость передачи данных упадет, а затем, наконец, устройство отключится от сети. Причина в том, что Wi-Fi — сложный протокол, и для его работы требуется хороший сигнал.
Есть много ситуаций, когда более низкая скорость передачи данных была бы приемлемой, если бы диапазон мог быть увеличен. Существуют аппаратные реализации радиоканалов большой дальности с низким энергопотреблением, такие как loRa, но они требуют специального оборудования и, следовательно, стоят дороже. Группа исследователей из Университета Бригама Янга, Вашингтонского университета и Университета Юты поставила перед собой задачу реализовать метод связи на большие расстояния, используя только стандартное оборудование Wi-Fi и специальное программное обеспечение. Они также включали условие, что новый метод не должен нарушать нормальную работу Wi-Fi. Это сложный набор условий, и то, как именно они это делали, может вдохновить вас на мысль о собственной модификации или применении.
В качестве передатчиков они опробовали Raspberry Pi и ESP8266, но обнаружили, что изменение времени на Pi слишком велико для их предполагаемых методов, и поэтому остановились на ESP8266. Это было связано с тем, что Pi работал под управлением полного Linux, и это приводило к прерыванию программы другими потоками. Жаль, что команда не испробовала некоторые из стандартных методов, чтобы обеспечить бесперебойную работу потока на Pi — предоставив ему ядро или используя планирование первого срока. Как я объясняю в Raspberry Pi IoT на C, временные вариации Pi реальны, но их легко минимизировать. Подробная информация о требуемом расписании в настоящее время содержится в разделе «Применение C для Интернета вещей с Linux».
Остановившись на ESP8266, команда во главе с Филом Лундриганом смогла использовать опубликованный Wi-Fi API для отправки кадров маяков. Это стандартные кадры Wi-Fi, которые игнорируются устройствами Wi-Fi, достаточно близкими для их приема.
Идея не в том, что кадры маяка несут данные — это данные. Думайте об этом как об элитном коде Морзе. Кадр маякового радиосигнала отправляется для представления единицы, а отсутствие кадра маякового радиосигнала — это ноль. Код и известное псевдослучайное число отправляются как прерывистые кадры маякового радиосигнала, чтобы упростить идентификацию последовательности кадров с помощью корреляции.
Хорошо, вот передатчик отработал, а как насчет приемника? Здесь использовалась стандартная точка доступа (AP), но с использованием прошивки DD-WRT с открытым исходным кодом. Это не считается модификацией оборудования, потому что это легко и широко поддерживается.
Как приемник использует кадры маяка?
Предполагается, что передатчик находится слишком далеко, чтобы точка доступа могла получить от него кадры, поэтому о прямом обнаружении кадра маяка не может быть и речи. Вместо этого используется стандартное средство API для измерения фонового шума. Когда удаленный передатчик отправляет фрейм маяка, он не воспринимается достаточно сильно, чтобы его можно было декодировать и рассматривать как сигнал. Вместо этого он просто увеличивает фоновый шум. Путем поиска изменений фонового шума и известного псевдослучайного шаблона приемник может подтвердить, что передатчик находится в эфире, и он может даже извлечь немного данных, хотя со скоростью передачи данных около 0,5 бит в секунду, это не очень много. но этого могло быть достаточно.
Расстояния обычно составляют от 100 до 250 метров в зависимости от местности и препятствий. Этот метод называется ONPC, On-Off Noise Power Communication, и он переворачивает обычную парадигму коммуникации с ног на голову: шум — это сообщение!
Команда внедрила систему Stayin ‘Alive, используя технику, которая позволила им определить, что удаленный датчик все еще работает, несмотря на то, что соединение Wi-Fi было потеряно на некоторое время.
Единственный недостаток — я не могу найти код команды. Будем надеяться, что они выложат это на Github. Это идея, которую почти наверняка можно развить.
Гарри Фэйрхед является автором книги Fundamental C, в которой он подробно рассматривает C для использования в любом аппаратном контексте, Raspberry Pi IoT на C и Micro: bit IoT на C. Его последняя книга — Применение C Для Интернета вещей с Linux.