Помогите с питанием Меги

Тема в разделе "Arduino & Shields", создана пользователем gvera, 6 сен 2017.

  1. gvera

    gvera Нуб

    Есть мега 2560, к ней подцепил GSM модуль 5 вольтовый Sim800C, выходы у него уже идут через понижение уровней.
    Как правильно запитать через повербанк, чтоб он заряжался и в случае пропадения внешнего питания отправлял смс.
    Со скетчем вопроса нет, сделаю.
    Вопрос больше в безопасном подключении.
    Ток, насколько я понимаю, на модуль идёт не слабый, поэтому от ардуинского пина 5 вольт напрямую запитывать не берусь.
    Идея пока такая, но рассудите знающие.
    К питанию повербанка подаю от внешнего питальника. Выход от повербанка сажаю один провод на сим модуль, и одновременно на USB питание ардуины. Земля общая. На входе питания повербанка поставить транзистор и подать на один из входов ардуины для контроля питания.

    Прав или нет.
     
  2. gvera

    gvera Нуб

    Подаю выходы с сим модуля на RX TX ( 18,19 ) меги напрямую.
     
  3. gvera

    gvera Нуб

    И ещё вопрос как из сериала вытаскивать уровень сигнала в виде числа, какое можно использовать не как текс, а как число. Это чтоб он в смс сообщении писал уровень сигнала, чтоб следить за ним. Делаю напрямую через команду serial1.print
     
  4. b707

    b707 Гуру

    в гугле примеров просто море.
     
  5. gvera

    gvera Нуб

    b707

    Если бы нашёл пример без библиотеки gsm.h , то не спашивал бы.
    gsm библиотека не работает с данным шилдом, только напрямую и без всякого softserial
     
  6. b707

    b707 Гуру

    Зачем какие-то библиотеки для этого? Уровень сигнала запрашивается командой AT+CSQ, получаешь ответ в виде +CSQ: 17,0 и извлекаешь из него число без всяких библиотек. Все что нужно - написать на Си разбор строки, примеров этого в инете море.
     
  7. b707

    b707 Гуру

    И еще - SoftSerial тоже работает с этим модулем, просто надо уметь
     
  8. gvera

    gvera Нуб

    b707

    1. Ответ приходит совсем в другой форме, в виде 2 строк, вторую строку извлечь пока не удалось. Видать Вы проводили это на другом шилде.
    2. Зачем тогда форум если всех в гугл отправлять. Для этого я и спрашиваю т.к решить проблему не могу и прошу может кто знает.
    3. Не согласны, тогда goto 1
     
  9. b707

    b707 Гуру

    Ага, в двух :
    +CSQ: 17,0
    ОК
    Существенная разница :)
     
  10. b707

    b707 Гуру

    Форум - для обсуждения интересных тем. А не для того, чтобы новички по сотне раз тупо спрашивали то, что можно прочитать в документации или найти в Гугле.

    Извлечение уровня сигнала делается на любом модеме одинаково, поскольку базовые АТ-команды стандартные у всех модемов, изменения минимальны. Поэтому берете ЛЮБУЮ библиотеку под любой GSM-модем или шилд и находите в ней пример кода. Например, библиотека для sim900

    Код (C++):
    bool GPRS::getSignalStrength(int *buffer)
    {
        //AT+CSQ                        --> 6 + CR = 10
        //+CSQ: <rssi>,<ber>            --> CRLF + 5 + CRLF = 9                      
        //OK                            --> CRLF + 2 + CRLF =  6

        byte i = 0;
        char gprsBuffer[26];
        char *p, *s;
        char buffers[4];
        sim900_flush_serial();
        sim900_send_cmd(F("AT+CSQ\r"));
        sim900_clean_buffer(gprsBuffer, 26);
        sim900_read_buffer(gprsBuffer, 26, DEFAULT_TIMEOUT);
        if (NULL != (s = strstr(gprsBuffer, "+CSQ:"))) {
            s = strstr((char *)(s), " ");
            s = s + 1;  //We are in the first phone number character
            p = strstr((char *)(s), ","); //p is last character """
            if (NULL != s) {
                i = 0;
                while (s < p) {
                    buffers[i++] = *(s++);
                }
                buffers[i] = '\0';
            }
            *buffer = atoi(buffers);
            return true;
        }
        return false;
    }
     
  11. gvera

    gvera Нуб

    b707

    На дачу через выходные поеду скину что сериал пишет, там
    что-то вроде
    +CSQ: OK
    +AT: 17,0

    Именно в две строки
    Первую разобрать сложности нет, а доступ до второй для меня сложность.
    Скатаюсь напишу точно.
     
  12. gvera

    gvera Нуб

    b707

    Ту процедуру, какую Вы описали может и проходит на шилде sim800 от SeedStudio, но не работает на аналогах, где вообще данная библиотека не работает. Напрямую из сериала вытащить ответ не удаётся со второй строки.
     
  13. b707

    b707 Гуру

    Пишите правильно - это Вам не удается вытащить ответ со второй строки, а в принципе там ничего сложного нет.
    Процедуру выше я вам привел КАК ПРИМЕР кода. Я не обещал, что она "из коробки" заработает. Ее надо чуть подправить под конкретный ответ модема. Если вы даже с примером не можете решить ерундовую задачу - значит надо учиться. Или обратится к кому-нибудь, кто напишет это для вас
     
  14. gvera

    gvera Нуб

    b707

    Что подправлять если то, что Вы привели это работает на основе библиотеки sim900.h, так же можно сделать и ещё проще с помощью библиотеки gsm.h. Поэтому и спросил кто подскажет как тоже самое сделать, только без использования данных библиотек.
    Тут нечего учить, тут всё просто ( то что Вы привели ).
    И модули что на m590, что на sim800-900 ответы дают идентичные, но всё они пишут в порт, откуда и надо вынимать информацию.
     
  15. b707

    b707 Гуру

    Вас почитать, так библиотека sim900.h написана сущестывами с другой планеты и недоступна человеческому разуму. Это не так. Исходный код доступен - посмотрите. что делают конкретные функции. Они довольно простые. Их легко заменить своим кодом и избавится от библиотеки. Одна посылает в порт строку команды - то же самое можно сделать вручную оператором Serial.println() Другая читает символы из порта в буфер. Дальше, уже непосредственно в том коде, который я привел - идет разбор содержимого буфера.
    Поймите, самый простой метод "написать без библиотек" - это разобрать код из библиотеки и вставить в свою программу.
    И что? "Вынимать информацию из порта" - это нереально сложно? В том примере, что я привел - именно это и делается, причем именно для разбора уровня сигнала сети. Если такого примера вам мало - думаю, вам надо бросить свою поделку и купить готовое устройство.
     
  16. ARDUIN-щик

    ARDUIN-щик Гик

    Отступление от темы: если Вы написали сообщение, но забыли что-то дописать, то нажмите кнопку "Редактировать", тогда не будет много сообщений. Красивее и удобнее.
     
  17. b707

    b707 Гуру

    gvera,
    я не вижу смысла продолжать дальше. В первом посте темы вы написали "со скетчем проблем не будет, напишу" - а теперь проявляете такой инфантилизм, что я начинаю сомневаться в правильности возраста в вашем профиле.
    Тех примеров и советов. что содержатся в теме - более чем достаточно, чтобы решить эту проблему.
    Посему отписываюсь.
    Удачи.