в чем разница ?

Тема в разделе "Arduino & Shields", создана пользователем Redn, 8 ноя 2014.

  1. Redn

    Redn Гик

  2. Unixon

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

    SIM900
    SIM900.jpg
     
  3. geher

    geher Гуру

    Прежде всего тем, что GSM Модуль SIMCOM SIM900 - это маленькая схемка, которую еще припаивать, мастерить обвязку по питанию (у него максимум 4.8 В), приделывать держатель SIM карт и т.д., и т.п., а GPRS Shield - это уже готовая плата, на которой уже все куда надо припаяно, да еще в формате шилда для Uno и подобных ардуин.
     
  4. Redn

    Redn Гик

  5. geher

    geher Гуру

    Тогда практически ничем. Всего-то отличий, что другая разводка платы, по другому расположены разъемы, другая антенна в комплекте , возможно, другие задействованные пины под SWSerial и управление питанием.
    Из преимуществ (по сравнению с тем, что в Амперке) того, что по последней ссылке:
    1. Металлическое гнездо для SIM карты.
    2. Раздельные разъемы для микрофона и звукового выхода.
    3. Дополнительный внешний разъем питания.
    Из недостатков:
    1. Громоздкая антенна в комплекте.
    2. Отсутствует ICSP разъем (если следующий щит в "бутерброде" использует его, то он ничего не получит).
     
    Последнее редактирование: 8 ноя 2014
  6. Redn

    Redn Гик

    про второе из недостатков можно объяснить по проще ?
     
  7. geher

    geher Гуру

    В подавляющем большинстве случаев этот недостаток никак не повлияет на работу.
    Суть в следующем.
    Допустим, ардуина у нас Leonardo, т.е. SPI только на ICSP разъеме.
    Допустим, у нас есть щит, который получает доступ к SPI через ICSP разъем. Причем по каким-то причинам мы хотим видеть его сверху (например, какие-то элементы сильно выступают за габариты по высоте, или на нем есть элементы управления, к которым нужен доступ).
    И если на каком-то из щитов, поставленных между верхним и ардуиной, отсутствует разъем, осуществляющий транзит сигнала от ICSP ардуины к более верхнему щиту, то верхний не получит доступа к SPI.
     
  8. Redn

    Redn Гик

    Подскажите с перемычками image.jpg
     
  9. Redn

    Redn Гик

    Я правильно понел что d7 и d8 это swserial ? А xduino rx и tx это базовый serial ?
     
  10. Unixon

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

    Да.
     
  11. Redn

    Redn Гик

    подскажите почему то не хочет работать вот этот код :
    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial gprsSerial(7, 8);
    //для зелёного светодиода будем использовать второй цифровой вход,
    //а для жёлтого - третий
    int greenPin = 2;
    int yellowPin = 3;
    void setup()
    {
        gprsSerial.begin(19200);
        pinMode(greenPin, OUTPUT);
        pinMode(yellowPin, OUTPUT);
        // Настраиваем приём сообщений с других устройств
        // Между командами даём время на их обработку
        gprsSerial.print("AT+CMGF=1\r");
        delay(300);
        gprsSerial.print("AT+IFC=1, 1\r");
        delay(300);
        gprsSerial.print("AT+CPBS=\"SM\"\r");
        delay(300);
        gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
        delay(500);
    }
    String currStr = "";
    // Переменная принимает значение True, если текущая строка является сообщением
    boolean isStringMessage = false;
    void loop()
    {
        if (!gprsSerial.available())
            return;
        char currSymb = gprsSerial.read();  
        if ('\r' == currSymb) {
            if (isStringMessage) {
                //если текущая строка - SMS-сообщение,
                //отреагируем на него соответствующим образом
                if (!currStr.compareTo("Green on")) {
                    digitalWrite(greenPin, HIGH);
                } else if (!currStr.compareTo("Green off")) {
                    digitalWrite(greenPin, LOW);
                } else if (!currStr.compareTo("Yellow on")) {
                    digitalWrite(yellowPin, HIGH);
                } else if (!currStr.compareTo("Yellow off")) {
                    digitalWrite(yellowPin, LOW);
                }
                isStringMessage = false;
            } else {
                if (currStr.startsWith("+CMT")) {
                    //если текущая строка начинается с "+CMT",
                    //то следующая строка является сообщением
                    isStringMessage = true;
                }
            }
            currStr = "";
        } else if ('\n' != currSymb) {
            currStr += String(currSymb);
        }
    }
     
    Последнее редактирование: 10 ноя 2014
  12. ALev

    ALev Гик

    Модуль сам не стартует. Его принудительно включить. Обычно линию включения выводят на один из цифровых пинов Arduino. Называться должен PWRKEY или что-то в этом роде.
     
  13. Redn

    Redn Гик

    это я знаю смс он мне отправить смог а это нехочет
     
  14. ALev

    ALev Гик

    Ну тогда выведи в обычный Serial то, что приходит от шилда и сравни с тем, что ты ожидаешь. Похоже он просто что-то не то пишет.