подскажите чем отличается GSM Модуль SIMCOM SIM900 от http://amperka.ru/product/arduino-gprs-shield ?
Прежде всего тем, что GSM Модуль SIMCOM SIM900 - это маленькая схемка, которую еще припаивать, мастерить обвязку по питанию (у него максимум 4.8 В), приделывать держатель SIM карт и т.д., и т.п., а GPRS Shield - это уже готовая плата, на которой уже все куда надо припаяно, да еще в формате шилда для Uno и подобных ардуин.
Тут готовая плата так называется http://ardunn.ru/goods/Антенна-для-...velopment-Board?from=MTlm&mod_id=53523101
Тогда практически ничем. Всего-то отличий, что другая разводка платы, по другому расположены разъемы, другая антенна в комплекте , возможно, другие задействованные пины под SWSerial и управление питанием. Из преимуществ (по сравнению с тем, что в Амперке) того, что по последней ссылке: 1. Металлическое гнездо для SIM карты. 2. Раздельные разъемы для микрофона и звукового выхода. 3. Дополнительный внешний разъем питания. Из недостатков: 1. Громоздкая антенна в комплекте. 2. Отсутствует ICSP разъем (если следующий щит в "бутерброде" использует его, то он ничего не получит).
В подавляющем большинстве случаев этот недостаток никак не повлияет на работу. Суть в следующем. Допустим, ардуина у нас Leonardo, т.е. SPI только на ICSP разъеме. Допустим, у нас есть щит, который получает доступ к SPI через ICSP разъем. Причем по каким-то причинам мы хотим видеть его сверху (например, какие-то элементы сильно выступают за габариты по высоте, или на нем есть элементы управления, к которым нужен доступ). И если на каком-то из щитов, поставленных между верхним и ардуиной, отсутствует разъем, осуществляющий транзит сигнала от ICSP ардуины к более верхнему щиту, то верхний не получит доступа к SPI.
подскажите почему то не хочет работать вот этот код : Код (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); } }
Модуль сам не стартует. Его принудительно включить. Обычно линию включения выводят на один из цифровых пинов Arduino. Называться должен PWRKEY или что-то в этом роде.
Ну тогда выведи в обычный Serial то, что приходит от шилда и сравни с тем, что ты ожидаешь. Похоже он просто что-то не то пишет.