Sim800c - проект - опрос датчиков

Тема в разделе "Посоветуйте детальки", создана пользователем Рокки1945, 21 июл 2020.

  1. SergeiL

    SergeiL Оракул Модератор

    Ну, да, вы начинайте народ и опыт - подскажет.
    С первого взгляда видны некоторые моменты, но это на первый взгляд:
    Мастер должен по очереди опрашивать всех слейвов и давать им таймслот собщить информацию.
    Слейвы могут сообщить свое состояние, или сказать, что нет изменений, это с периодом обновления.
    И еще могут быть широковещательные команды от мастера к слейвам, типа выставить время, дату для всех.
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Хост должен просто позвонить и отключиться. Юзер по номеру поймет что надо. И не придется на СМС тратиться.
     
  3. Рокки1945

    Рокки1945 Гуру

    А если 16 работяг - как юзер поймёт какой сработал и что надо делать, а надо именно выполнить корректирующее действие.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Я не знаю ваших планов. Если 16 работяг - они что с одного номера звонить будут ? А если с одного - то ДТМФ сигналом выбираете нужного, типа как датчик на 1-wire.
     
  5. SergeiL

    SergeiL Оракул Модератор

    Ну да, так и было в 90-ых. Но технологии то не стоят на месте, как некоторые.
    Прогресс движется. Появились более удобные решения лет 10 назад.
     
  6. Рокки1945

    Рокки1945 Гуру

    Связь с сим модулем только у мастера он и слушает линию
     
  7. Рокки1945

    Рокки1945 Гуру

    Сейчас нет понимания - если один слейв передал байт, мастер его принял. Как перевести все остальные слейвы в приём?
     
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Это понятно. Но по-жизни, более удобными решениями считаются - бесплатные (или почти б/п) ))))) решения.
    Слейвы должны быть всегда на приеме "без перевода". Кроме момента, когда он сигналит хосту.
     
    Последнее редактирование: 22 июл 2020
    Daniil и Рокки1945 нравится это.
  9. Andrey12

    Andrey12 Гик

    Библиотеку набросал небольшую, но правда сейчас думаю, что проще было для MQTT использовать PubSubClient. Да и написана у меня только передача, прием в зачаточном состоянии. Особенно беда когда стартанул устройство и если много retained топиков использовать то валится огромный объем, вот не придумал как это все разобрать.

    А так пингую каждую минуту MQTT сервер, а то отконекчивается, хотя пробовал время ожидания ставить 5 минут, но минуты через две три отваливается.
    Код (C++):
       
    bool ask_sim800c::fMQTTPing() {
        stream.println(F("AT+CIPSEND=2"));
        gAnswerParams lAnswerParams = { A_CIPSE, 12000, 16, 255, nullptr };
        if (!waitAnswer(&lAnswerParams)) {
            //# не получили ответ >
        }
        stream.print(char(192));
        stream.print(char(0));
        if (waitAnswer(&lAnswerParams)) {
            //# получили ответ SEND OK
            return true;
        }
        else {
            //# если не дождались выход по таймауту
            return false;
        }
    } // ask_sim800c::fMQTTPing()
     
     
  10. Рокки1945

    Рокки1945 Гуру

    Модули Sim800l не видят сети, 1 видит 2 не видят:(:(
    Одному звонишь он и номер показывает и 145, а второй только RING или NO CARRIER (по уарту нету номера звонившего)
    Извиняюсь - AT+CLIP=1 - не включил АОН
     
    Последнее редактирование модератором: 23 июл 2020
  11. Рокки1945

    Рокки1945 Гуру

    Подскажите надо ли ватчдог использовать? Спасибо..
     
  12. parovoZZ

    parovoZZ Гуру

    С вачдогом есть много нюансов. Если его сбрасывать в каком-то определённом месте, то где гарантия того, что именно в этом месте программа не зациклится? Поэтому надо ввести флаги и сбрасывать их в нескольких критических местах. А уже в отдельной функции анализировать состояние флагов и сбрасывать вачдог. В более правильных МК вачдог имеет оконный компаратор, т.е. если сброс вачдога произошел раньше времени, то происходит сброс МК. Как-то так.
     
    Рокки1945 нравится это.
  13. Рокки1945

    Рокки1945 Гуру

    Дело в том, что я построил программу так, что после обращения к жсм модулю в цикле while жду от него "OK" и если его не будет программа зациклится. Вот как на фото
    111.PNG
    И такое общение между модулем и мк всегда, жду от него "OK".
    Подскажите будет ли такой вариант общения правильным?
     
    Последнее редактирование модератором: 24 июл 2020
  14. parovoZZ

    parovoZZ Гуру

    Я вачдог в таких случаях использую как таймер. Т.е. отправляю запрос и спать. Меня разбудит либо устройство, либо вачдог.