Библиотека для передачи больших объемов данных на частоте 433 МГц
Я пытаюсь установить связь между двумя Arduino, используя два модуля RF 433 MHz (передатчик и приемник). Я обнаружил, что библиотека Wildewire.h
допускает максимум 77 байт, так есть ли какая-то другая библиотека, которая позволяет отправлять больше?
@, 👍0
Обсуждение1 ответ
Радиомодули отправляют пакеты данных (и на то есть веские причины), поэтому, если общий размер данных, которые вы хотите отправить, превышает ограничение на пакет, вам придется разработать систему более высокого уровня (называемую протоколом), которая сможет разбить ваше большое сообщение на части, которые могут быть обработаны файлом .h.
Я не говорю, что он недоступен, и вы действительно можете его найти, но если вы его не найдете, вы сталкиваетесь с разработкой протокола для обработки больших сообщений. Это не так уж и сложно — представьте, что вы разделяете данные, которые хотите отправить, на 64-байтовые фрагменты и добавляете один байт в начало данных, описывающих полезную нагрузку пакета: -
- Как полноценное сообщение
- Как начало сообщения (сообщение превышает 64 байта)
- Как промежуточное сообщение
- Как конец сообщения (т.е. последние несколько байтов данных в сообщении)
Этой информации достаточно для вашего кода приемника, чтобы восстановить исходное сообщение, но убедитесь, что вы хорошо проверили ошибки, если в коде .h ее недостаточно. А также убедитесь, что ваш приемник «подтверждает» каждый полученный пакет как не содержащий ошибок.
Вы также можете захотеть встроить адрес, который сделает вашу передачу и прием более надежными, или даже добавить счетчик пакетов к байту маркера среднего сообщения. У вас есть максимум 77 байт для полезной нагрузки, поэтому у вас есть несколько байт в запасе для улучшения целостности, но минимальная система полезной нагрузки — это 1 байт заголовка и 76 байт полезной нагрузки (которая может включать другие проверки, такие как CRC).
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Радиочастотное дистанционное управление с использованием VirtualWire на ATtiny85, работающем на частоте 8 МГц на внутреннем генераторе
- Декодирование 2.4G RF пульта дистанционного управления?
- Питание Arduino Mini Pro с использованием батареи CR2032 в качестве пульта дистанционного управления
- SIM800C, CPIN: НЕ ГОТОВ (КОД ОШИБКИ: +CME ОШИБКА: 10)
- nRF24L01 + потеря пакетов, вызванная считыванием Arduino и связью с датчиками
- Как использовать get_properties для получения RSSI в RF24?
- Как подключить модуль RF433Mhz (WL101-341 /WL102-341)
Отредактируйте ссылку в вашем вопросе на источник этой библиотеки, чтобы кто-то мог взглянуть на нее и понять, почему она ограничена 77 байтами. [][][][][] Вы понимаете, что с небольшим размером ОЗУ почти всех процессоров AVR, используемых на платах Arduino, идея отправки огромных пакетов данных между этими устройствами с ограниченными ресурсами не имеет смысла. Даже «большая» часть ATMEGA2560, используемая на плате Arduino Mega, имеет всего 8 Кбайт ОЗУ., @Michael Karas
Частота 433 МГц не очень подходит для передачи больших объемов данных, но если вы хотите извлечь из нее максимальную пользу, отправьте несколько пакетов, как предлагалось ранее., @Chris Stratton
@MichaelKaras - похоже, вы упускаете из виду, что размеры пакетов на каналах с ограниченной пропускной способностью поддерживаются небольшими по веской причине - и вдвойне, если их нужно будет повторно передавать в вероятном случае сбоя. Ответ - не возиться с этим, а отправлять несколько пакетов, как предлагалось ранее., @Chris Stratton
@ChrisStratton - Я вовсе не игнорирую то, что вы говорите. Я просто ТАКЖЕ указываю на то, что небольшой размер ОЗУ типичного AVR будет играть роль в ограничениях размера пакета просто из-за ограничений реализации. Другим фактором, который также следует здесь учитывать, являются правовые ограничения того, как долго вы можете находиться в активном режиме передачи на нелицензированном маломощном устройстве (LPD) 433 МГц. В этой статье приведены некоторые подробности: https://www.edn.com/electronics-blogs/eye-on-iot-/4437311/Using-433-MHz-for-wireless-connectivity-in-the-Internet-of-Things. Размеры пакетов играют здесь большую роль!, @Michael Karas
Маленький объем оперативной памяти тут ни при чем, потому что он намного больше предполагаемых размеров, и потому что это использование легко *настраивается*, чтобы соответствовать компромиссам потребностей приложения. Что касается вашего второго пункта, то это было бы просто переосмыслением того факта, что узкая полоса пропускания приводит к маленьким пакетам, за исключением того, что вы в значительной степени неверно истолковываете правила, которые больше касаются *рабочего цикла*, чем *длительности*. Фактическая причина короткой продолжительности в том, что вы хотите иметь возможность переместить полезный фрагмент, прежде чем помехи испортят весь пакет., @Chris Stratton