+1 голос

Я купил GPRS shield (на базе контроллера SIM800), и не знаю как с его помощью подключиться к интернету. В описании сказано, что можно, а примера нет. В библиотеке тоже вроде нет этой функции.

(925 баллов) 42 74 103
исправил
Вопрос слишком специфичный, о нишевой железке. Используйте более широкую формулировку вроде «шилд на базе SIM800».

2 Ответы

0 голосов
 
Лучший ответ

Возможность выходить в Интернет у него есть.

В даташите описаны команды, с помощью которых вы можете использовать TCPIP и HTTP (после 200 страницы).

В библиотеке Амперки эта возможность реализована не полностью. 

Вы можете разобрать пример умной теплицы, чтоб на реальном примере увидеть работу библиотеки.

Например, вы можете подключиться к сети Интернет следующим образом:

#include <GPRS_Shield_Arduino.h>

#include <SoftwareSerial.h>

#define INTERVAL 300000
 
#define LEN 370
// буфер для отправки данных на народный мониторинг
// согласно установленной сервисом форме
char tcpBuffer[LEN];
unsigned long previousMillis = 0;
 
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  Serial.begin(9600);
}
 
void loop()
{
  // включаем GPRS шилд
  gprs.powerOn();
  // проверяем есть ли связь с GPRS устройством
  while (!gprs.init()) {
    delay(1000);
    Serial.print("GPRS Init error\r\n");
  }
  // вывод об удачной инициализации GPRS Shield
  Serial.println("GPRS init success");
  delay(3000);
 
  // пытаемся установить GPRS-соединение
  // с заданными настройками, которые предоставляются операторами связи
  while (!gprs.join("internet.beeline.ru", "beeline", "beeline")) {
    Serial.println("Gprs join network error");
    delay(1000);
  }
  // выводим сообщение об удачной установке GPRS-соединения
  Serial.println("GPRS OK");
 
  // получаем  и выводим локальный IP адрес
  Serial.print("IP Address is ");
  Serial.println(gprs.getIPAddress());
 
  // пытаемся подключиться к серверу
  // указывая тип соединения, адрес сервера и номер порта
  while (!gprs.connect(TCP, "narodmon.ru", 8283)) {
      Serial.println("Connect error");
      delay(1000);
  }
  // выводим сообщение об удачном подключении к серверу
  Serial.println("Connect success");
 
  // вызываем функцию, которая формирует и отправляет tcp-запрос
  // в специальном формате для «народного мониторинга»
  tcpRequest();
  // разрываем все GPRS-соединения
  gprs.close();
  // деактивируем интерфейс GPRS
  gprs.disconnect();
  // выводим сообщение об удачном завершении операции
  Serial.println("OK");
  // выключаем GPRS-шилд
  gprs.powerOff();
 
  // проверяем не прошел ли нужный интервал времени
  while (millis() - previousMillis < INTERVAL) {
  // ждём 5 минут
  }
  //если прошел, то сохраняем текущее время
  previousMillis = millis();
}
 
// функция записи данных с датчиков в массив
// в специальном формате для «народного мониторинга»
void tcpRequest()
{
  // добавляем к строке tcpBuffer строку CLIENT
  strcat(tcpBuffer, CLIENT);
  // функция добавления в TCP-запрос значения температуры воздуха

  // добавляем к строке tcpBuffer два символа «##»,
  // которые свидетельствуют об окончании запроса
  strcat(tcpBuffer, "##");
 
  // отправляем массив TCP-запроса на сервис «народного мониторинга»
  gprs.send(tcpBuffer);
 
  // очищаем буфер
  clearTcpBuffer();
}
 

(925 баллов) 42 74 103
выбран
0 голосов

Здесь  обсуждалось получение времени от NTP сервера через GPRS шилд.

Приведена последовательность АТ команд для выхода в интернет.

(170 баллов) 1 6
Пожалуйста, сопроводите ссылку цитатой из источника, которая является ответом по существу. См пункт (2) БРЕD-политики: https://breadboard.ru/content-policy
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...