Библиотека WirelessUART для 434MHz модулей HC-11/HC-12 или им подобных

Тема в разделе "Проводная и беспроводная связь", создана пользователем RogerRU, 16 авг 2016.

  1. RogerRU

    RogerRU Нерд

    Всем добрый день!
    Для своего проекта умного дома (умной дачи) долго подбирал модули для беспроводного обмена данными.
    Пробовал и ESP и nRF24L01+ , в итоге остановился на модулях HC-11/HC-12.
    Фактически это беспроводной Сериал. К плюсам этих модулей можно отнести:
    - Простота подключения - VCC, GND, RX, TX
    - неприхотливость к питанию - нет танцев с бубном как у nRF24L01+
    - дальнобойность, особенно у HC-12
    полный обзор и ТТХ этих девайсов можно глятуть ТУТ

    ИМХО минус только один это просто Сериал и ничего больше. Никаких ID и прочего.
    Если имеем две Ардуины то это более или менее терпимо, хотя и там не без проблем, а если сеть из нескольких?
    Можно использовать известную библиотеку EasyTransfer, но и там есть ограничения:
    - никаких ID
    - на можно привязать только ОДНУ структуру на один экземпляр
    короче для нормальной работы нескольких ардуин тоже не приемлемо.

    На итог:
    Я произвел глубокую модернизацию библиотеки EasyTransfer
    что теперь имеем:
    - Передача ID
    - Неограниченное количество структур на один экземпляр класса
    - Передача и прием структур (пакетов) конкретному/от конкретного девайса/списка девайсов
    - фильтрация структур (пакетов) на уровне библиотеки по ID
    - контрольные суммы (были и в EasyTransfer)

    Пока библиотека в режиме Beta, так что прошу сильно не ругать

    <<СКАЧАТЬ>>
     
    nednedned, b707, Snork13 и 4 другим нравится это.
  2. Snork13

    Snork13 Нуб

    Есть продвижения с библиотекой?
     
  3. RogerRU

    RogerRU Нерд

    Да какие продвижения, я исправил пару мелких багов, а в остальном имхо работает без нареканий. Правда вот исправленную версию не выкладывал т.к. не видел спроса на нее )))
     
  4. Snork13

    Snork13 Нуб

    Я хочу сделать несколько модулей gps+ ардуино и чтобы они передавали друг другу координаты по воздуху через эти модули) Спрос есть! Можно ссылку на новую версию?) Могу я связаться с Вами(тобой) по почте, уточнить несколько вопросов?
     
  5. RogerRU

    RogerRU Нерд

    не вопрос. Почту отправил в личку, пиши тестовое письмо, либу прикреплю аттачем
     
  6. Alex Gard

    Alex Gard Нуб

    Здравствуйте.
    У меня есть задача к master контроллеру, подключить несколько slave контроллеров.
    С Вашей библиотекой это возможно реализовать?
    Если да, то могли бы Вы поделится со мной, новой версией библиотеки?
    Заранее благодарен!
     
  7. drew

    drew Нуб

    Привет. Я не автор, но недавно с этой библиотекой разбирался. Если помощь еще нужна, пиши
     
  8. nednedned

    nednedned Нуб

    Вот это ты фраерок от души придумал! Я уж кумекал сам библиотеку накалякать, но так впадлу было. А тут ты нарисовался. Красиво, мля буду!
     
  9. b707

    b707 Гуру

    RogerRU, библиотека интересная, спасибо.
    Отметил в коде пару мелких багов - кое-где количество нодов и структур задано деффайнами, а где-то - прямо цифрами в коде, что может привести к проблемам.
    Я правильно понял, что следить за тем, что один и тот же structure_id в приемнике и передатчике соответсвует одинаковой структуре - обязанность программиста?
     
  10. RogerRU

    RogerRU Нерд

    Правильно. Я у себя для этих целей инклюдил один .h файл для всех устройств, которые задействованы в проекте. Для экономии памяти можно использовать #ifdef
     
  11. b707

    b707 Гуру

    Добрый вечер!
    Нашел в коде библиотеки две неприятные ошибки. Не знаю, возможно вы их давно поправили, но в той версии, что на Гитхабе -они до сих пор есть.

    1. в функции WirelessUART::setStructs
    Код (C++):
    void WirelessUART::setStructs(uint8_t* struc_adress, uint8_t stru_size, uint8_t s_id = 0) {
        if (s_id < 11) {
            str_addr[s_id] = struc_adress;
            str_sizes[s_id] = stru_size;
        }
    }
    во второй строке стоит s_id < 11. Вместо 11 здесь должна стоять 10, так как это максимальное количество структур. А еще правильнее вместо явно указанной цифры поставить макрос MAX_STRUCTS_COUNT

    второе похожее - в методе WirelessUART::isValidSender во второй строке стоит i < MAX_NODES_COUNT - 1; - что неверно, нужно заменить на i < MAX_NODES_COUNT ;, иначе последний индекс в таблице останентся не проверенным.

    Надеюсь, Вы не обидитесь на эти незначительные поправки.
     
    Последнее редактирование: 21 май 2018 в 12:05