Помогите объединить два и более скетчей в один

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем CasperSimfer, 7 дек 2014.

  1. buktopz

    buktopz Нерд

    Или это вывод 19 (ON/OFF)?
     
  2. buktopz

    buktopz Нерд

    Забыл сказать. Когда первый код проверял, модем не был подключен припаяян, только контроллер и индикатор
     
  3. buktopz

    buktopz Нерд

    Ну соеденил с 19 выводом. ничего не изменилось. Еще моменты. Код не загружается пока не подключен модем:
    Код (C++):
    Arduino: 1.6.10 (Windows 7), Плата:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

    C:\Users\vic\Documents\Arduino\sketch_aug21a\sketch_aug21a.ino: In function 'void setup()':

    C:\Users\vic\Documents\Arduino\sketch_aug21a\sketch_aug21a.ino:74:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

         if (gsm.find("+COPS: 0")) break;

                                ^

    C:\Users\vic\Documents\Arduino\sketch_aug21a\sketch_aug21a.ino: In function 'void loop()':

    C:\Users\vic\Documents\Arduino\sketch_aug21a\sketch_aug21a.ino:160:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

             if (gsm.find("NO CARRIER")) {     // ищим СЃР±СЂРѕСЃ вызова,

                                      ^


    Скетч использует 6 026 байт (19%) памяти устройства. Всего доступно 30 720 байт.
    Глобальные переменные используют 434 байт (21%) динамической памяти, оставляя 1 614 байт для локальных переменных. Максимум: 2 048 байт.
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe0
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0
    Произошла ошибка при загрузке скетча
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
     
     
  4. buktopz

    buktopz Нерд

    И еще в какой то момент, не смог повторить, грелся стабилизатор напряжения больше обычного, я так понял это был поиск связи?
     
  5. buktopz

    buktopz Нерд

    я ведь правильно но подключил модем к arduino: rx к tx и наоборот tx к rx?
     
  6. Alex19

    Alex19 Гуру

    Тут уже особенности модема, попробую подсказать в какую сторону копать.
    1. Что у Вас за модем, это голый чип M590 или он установлен на какую-то плату?
    Вы в курсе, что голый M590 требует писания от 3,3 до 4,5V, рекомендованное 3,9V. Если Вы просто подключили его к Ардуине Вы могли его спалить. Вот само описание - http://docs.mirifica.eu/Neoway.com/archive/M590/Neoway M590 Hardware Design Manual V1.1.pdf.

    Пины голого M590 не поддерживают работу с 5V, в том числе TX, RX.

    Из него же, ножки Boot нет, есть ON/OFF. Пункт 6.1.3, процесс включения модема, подать на эту ножку 0 и удерживать минимум 300ms (рекомендуют 500ms) и т.д. Один товарищ просто послал этот пин на землю, хотя в документации написано, о том, что такой финт не прокатит.

    2. Подключение к Ардуино TX-RX, RX-TX.

    3. Возможно его нужно будет запрограммировать на нормальную скорость работы. В этом файле - http://docs.mirifica.eu/Neoway.com/archive/M590/Neoway M590 AT Command Sets_V3.0.pdf, указана скорость по умолчанию 115200 (в некоторых моделях 9600, смотрел по обзору, возможно Китайцы отошли от док.), а у нас в коде 9600.

    Скорость 115200 недоступна для SoftwareSerial, если там 115200 для этого неплохо бы иметь USB-TTL конвертер с питанием 3,3V. Или использовать HardwareSerial, как вариант.

    Вот видео для изучения -

    ,

    , https://www.youtube.com/results?search_query=M590.

    1. Правильно подключите его.
    1.1. Если потребуется (скорость и т.д.), запрограммируйте его с помощью USB-TTL конвертер с питанием 3,3V.
    2. Запустите пример, к примеру этот, его плюс не надо пункт 1.1, минус ни чего не видно. Хотя можно добавить дерганье ногами, по вкусу (хоть как-то видеть, что происходит).
    Код (C++):
    #define pinBOOT 5           // нога BOOT или K на модеме
    void setup() {
      Serial.begin(115200);

      pinMode(pinBOOT, OUTPUT);                         /// нога BOOT на модеме

      digitalWrite(pinBOOT, 0);            
      delay(500);
      digitalWrite(pinBOOT, 1);                /// включаем модем

    }

    void loop()
    {
       static byte temp = 0;
       if(temp == 0){     // если нажали кнопку
          while(1){             // проверяем готовность модема
            Serial.println("AT+CPAS");
            if (Serial.find("0")) break;
            delay(100);
          }
          Serial.println("ATD+79990000000;"); // звоним по указаному номеру
          delay(100);
          if (Serial.find("OK"))
          {
            temp = 1;
          }
        }
    }
    Как-то, так, модуль не самый простой для начинающего.

    Могу подсказать, подправить, учиться все равно придется. Если бы работал с ним, просто расписал, а так получается самому нужно научиться и потом пояснить Вам.
     
    buktopz нравится это.
  7. buktopz

    buktopz Нерд

    питание отдельное - 4.0 В
     
  8. Alex19

    Alex19 Гуру

    Как подключены TX, RX на прямую от контролера?

    Максимально допустимый 3,3V, ардуино 5V. То же касается ноги ON/OFF, только к пину 3,3V, а на Ардуино 5V, если не получиться просто подключить к земле.

    Тут неплохо бы Logic Level Converter 3.3 To 5v.

    Это что касается, подключения.
     
    Последнее редактирование: 22 авг 2016
    buktopz нравится это.
  9. buktopz

    buktopz Нерд

    понял, завтра перепаяю на 3,3
    а вывод 5 на ардуино куда?
     
  10. buktopz

    buktopz Нерд

    ну там написано на boot, а если boot на 3,3в или на землю, то вывод 5 ардуино куда?
     
  11. Alex19

    Alex19 Гуру

    В идеале, должно быть так.

    Arduino TX и RX M590, через Logic Level Converter (или делитель напряжения). Аналогично Arduino RX и TX M590, Logic Level Converter (или делитель напряжения). Выход Boot пока просто повесим на землю, если не запуститься тогда на любую ножку через Logic Level Converter (или делитель напряжения).

    Logic Level Converter, это такие удобные платки - https://www.google.by/search?q=Logi...aCwdXOAhWB3SwKHSgbDP0QsAQINA&biw=1242&bih=603. Схему делителя, посмотрите в сети.

    Да есть USB-TTL конвертер с питанием 3,3V?
     
    buktopz нравится это.
  12. buktopz

    buktopz Нерд

    есть USB-TTL конвертер с питанием 3,3V есть
    ну а 5 вывод то куда, в коде то он есть, а физически то его куда?
     
  13. Alex19

    Alex19 Гуру

    Домашние дергают, поэтому паузы:).

    Не правильно выразился, не просто питание, а USB-TTL с переключателем режима работы 5V или 3,3V как тут - http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=77&products_id=2146.

    Тогда переключаем его в режим 3,3V.
    Питание модема, оставляем, дальше USB-TTL RX к M590 TX, USB-TTL TX - M590 RX. Пин BOOT (ON\OFF) на землю, земля общая. Подключаем USB-TT к компу, открываем монитор порта, дальше как на этом видео -

    с 6:30 там настройки и перебираем скорость от 9600 до 115200, он должен ответить на команду AT.

    Так можно проверить, работает ли вообще модем, можно настроить его и т.д.
     
    buktopz нравится это.
  14. buktopz

    buktopz Нерд

    но Вы упорно обходите 5 вывод, а между тем я про него уже 4 раза спросил. но не может же быть чтобы в коде он был, в на плпте в воздухе висел
     
  15. buktopz

    buktopz Нерд

    А вообще огромное Вам спасибо! Думаю я уже и так Вас замучил. Завтра все подробно сформирую и выведу в отдельную тему. Сейчас по крайней мере есть что выводить. Еще раз спасибо большое!
     
  16. Alex19

    Alex19 Гуру

    Да уберите его из кода.

    5 выход, это выход Boot (ON\OFF), о нем писал и не раз.
    Для Arduino
    Для USB-TTL
    Вот если не прокатит, тогда подключите 5 пин к BOOT. И тогда в коде вернете, для USB-TTL придется либо кнопкой или замыкать контакт на 0,5сек.

    По поводу USB-TTL, не до конца уверен с подключением к примеру ESP8266 для программирования, подключают так TX-RX, RX-TX. Если ошибетесь ни чего не случиться, попробуйте и такой вариант. И почитайте в сети, сам лишь пробежался по документации, примерам.
     
    buktopz нравится это.
  17. buktopz

    buktopz Нерд

    я все внимательно читал, вы писали про модем, но не писали куда 5 вывод контроллера. теперь такая деталь мы садим boot он же on/off на землю а 5 вывод оставляем на весу. так разве бывает, чтобы в коде был прописан, а физически был не подключен, это разве не ошибка?
     
  18. buktopz

    buktopz Нерд

    извеняюсь, не заметил убрать из кода
     
  19. buktopz

    buktopz Нерд

    там он в двух местах
     
  20. buktopz

    buktopz Нерд

    а 5 вывод у меня сейчас подключен к on/off - сеточка на дисплее