Какой шилд использовать для GPRS?
Я планирую создать устройство, которое будет считывать некоторые данные с датчиков и отправлять их через GPRS, например, раз в день. (Не так уж и оригинально, да.) Но моя проблема заключается в выборе GSM/GPRS-шилда.
Официальный шилд имеет хороший интерфейс для выполнения HTTP POST/GET. С другой стороны, шилд, похоже, распродан (и в любом случае будет довольно дорогим).
Кажется, есть и другие доступные щиты, но их примеры кода выглядят <b>довольно хакерски</b>: устройство ждет произвольный момент, а затем надеется, что сервер закончит работу. По моему мнению, это и неэффективно, и ненадежно.
Мой вопрос: какой GSM/GPRS-шилд вы бы порекомендовали со следующими характеристиками:
- нормальная библиотека с примерами, такими как официальная
- внешняя антенна
- бонус: конкурентоспособная цена
- еще один бонус: надеюсь, «настоящий» щит, поэтому пайка не потребуется, а несколько контактов все еще можно будет легко использовать для датчиков.
@tuomassalo, 👍10
4 ответа
Лучший ответ:
В итоге я заказал плату Elechouse, которая использует чип M10. Нашел одну на eBay за 59 долларов США. Похоже, она отлично работает с официальной библиотекой.
Как сказано в инструкции, необходимо внешнее питание — кабеля USB недостаточно!
Эта библиотека должна работать практически со всем, на чем есть модуль M10.
У меня есть опыт только с модулями SIM900. Самый дешевый нашел на EBay.
Хотя взаимодействие с этими вещами может быть поначалу сложной задачей, вам действительно нужно просто прочитать руководство по всем AT-командам и выполнить их. Я написал пару функций, которые могут помочь:
Примечание: вы можете безопасно заменить все экземпляры DEBUG_PRINT
и DEBUG_PRINTLN
на Serial.print
и Serial.println
.
SoftwareSerial SIM900(7, 8);
/*
Отправляет AT-команды на модуль SIM900.
Описание параметра
строка команды, содержащая AT-команду для отправки модулю
тайм-аут Тайм-аут в миллисекундах для ожидания ответа.
Возвращает строку, содержащую ответ. Возвращает NULL по тайм-ауту.
*/
String SIMCommunication::sendCommand(String command, int timeout) {
SIM900.listen();
// Очистить буфер чтения перед отправкой новой команды
while(SIM900.available()) { SIM900.read(); }
SIM900.println(command);
if (responseTimedOut(timeout)) {
DEBUG_PRINT(F("sendCommand Timed Out: "));DEBUG_PRINTLN(command);
return NULL;
}
String response = "";
while(SIM900.available()) {
response.concat((char)SIM900.read());
delayMicroseconds(500);
}
return response;
}
/*
Waits for a response from SIM900 for <ms> milliseconds
Returns true if timed out without response. False otherwise.
*/
bool SIMCommunication::responseTimedOut(int ms) {
SIM900.listen();
int counter = 0;
while(!SIM900.available() && counter < ms) {
counter++;
delay(1);
}
// Время истекло, возвращаем ноль
if (counter >= ms) {
return true;
}
counter = 0;
return false;
}
LinkitOne - ладно, не шилд, а скорее совместимая плата контроллера Arduino со встроенным GSM/GPRS/GPS/Wifi. Библиотека comms не имеет столько методов диагностики, как, например, Adafruit, но она проста в настройке и надежна. Главным недостатком LinkitOne было то, что она использует другой процессор, чем Arduino, поэтому многие библиотеки Arduino несовместимы, например, для устройств I2C.
Версия Adafruit Fona SIM808 2G Shield. Схема щита, но стекируемые заголовки нужно покупать и паять отдельно. Распиновка по умолчанию работает с Uno, но для Mega требуются модификации. Библиотека содержит множество удобных методов диагностики (напряжение батареи, уровень сигнала и т. д.). Работает с предоплаченной SIM-картой giffgaff, но почему-то не с vodafone. SMS работают нормально. Я могу подключиться к GPRS, но получение html с веб-сайта не работает.
DFRobot SIM808 GPS/GPRS/GSM Shield — предварительно смонтированный со стекируемыми разъемами shield, инструкции по загрузке кода и запуску устройства запутанные и неопределенные. Я даже не смог получить базовое подключение к Arduino для работы. Либо библиотека очень глючная, либо мое устройство было неисправно.
SEEEDStudio 113030009 GPRS Shield с антенной и внешним держателем SIM-карты V3.0 Я, вероятно, протестирую это в следующий раз..
Официальная плата Arduino GSM СНЯТА С ПРОИЗВОДСТВА
Модуль Sparkfun GSM/GPRS - SM5100B СНЯТ С ПРОИЗВОДСТВА
- SIM900 3G? Или SIM900A умеет подключаться к 3G?
- Плата Arduino 4G LTE
- Arduino GSM Shield GSM_READY никогда не готов
- Отправить SMS Arduino Uno + плата SIM900A
- Shield SIM808 EVB V3.2 заряжает литиевую батарею?
- Ошибка при обновлении ThingSpeak с помощью SIM808
- Как настроить модуль TinySine 3G (SIM5320E) для запроса HTTP GET
- Как использовать I2C от Arduino Uno, когда у меня установлен GSM-shield?