Запуск и сборка gsm модуля m590e

Запуск и сборка GSM модуля M590E

Совсем недавно я решил попробовать такую платформу, как Железона где радиолюбителям предоставляют различные девайсы совершенно бесплатно. Собственно таким образом ко мне в руки попал данный наборчик. Набор предоставлен сайтом Neru5.ru.

Стоимость набора примерно ~1150 руб с arduino в комплекте и ~600 рублей без arduino. Точные цены можете посмотреть на сайте поставщика.

Конкретно в данном модуле меня заинтересовало заявление “Разработано в России”, далеко не часто мне приходится сталкиваться с модулями для ардуино, разработчики которых живут в России (кроме Амперки конечно). Поэтому решено было взять его и разобраться, что к чему и почему.

Наборчик пришел ко мне за 15 дней, в хорошо упакованной бандерольке (было очень много пузырьков). Внутри посылки находились следующие комплектующие.

Слева снизу находится плата Arduino Uno

Справа снизу GSM модуль

Справа сверху Адаптер для GSM модуля

Давнему серферу AliExpress уже давно забрела в голову мысль: “А чего здесь Российского то, я все это уже видел на алике!”. “А вот и нет!” – отвечу я вам.

Дело в том, что из этого набора Российской разработкой является Адаптер для GSM модуля (сам модуль и ардуино импортные).

Поэтому после сборки будем тестировать именно его, и узнаем на сколько он практичен и нужен ли вообще бывалому (или начинающему) ардуинщику. Поехали!

Сборка модуля

Сам GSM модуль поставляется в виде конструктора, который нам будет необходимо спаять. Новичкам не стоит этого боятся поскольку модуль очень простой и собирается за 5-10 минут.

Начнем…. Сборку модуля следует начать с запайки SMD компонентов так, как они очень маленькие и после запайки крупных компонентов мы попросту не подберемся к дорожкам. Я начну пожалуй с запайки SMD резисторов. А именно вот с этих черных малюток.

Вам необходимо аккуратно разрезать упаковку (рядом с резистором) и достать его. Внимание! Работайте за чистым столом, что бы не перепутать резистор с песчинкой (волос для демонстрации размера).

Просто кладем резистор на необходимую площадку и в два касания паяльником (придерживая резистор пинцетом) мы припаиваем его к площадке. Кстати говоря, поскольку это резистор, можно не волноваться по поводу полярности.

В итоге у вас должно получится нечто подобное (Необходимо запаять и второй резистор на указанную площадку)

Далее запаиваем светодиод. Он выглядит следующим образом. Светодиод изначально находится в черной упаковке из которой его необходимо достать.

Внимание! На светодиоде есть маленькая зеленая точка которая НЕ должна смотреть на резистор. Так же подключение светодиода вы можете проверить с помощью мультиметра (учитывайте что от ножки чипа-контроллера идет положительный сигнал, т.е +)

Теперь нам необходимо запаять танталовый конденсатор. Внимание! Полоска конденсатора должна смотреть в сторону контактов для гребенки.

Теперь осталось запаять чип-контроллер который будет управлять модулем. Запаиваем чип следующим образом (ориентируемся на выемку под антенну) Совет! При пайке многоножковых компонентов, советую запять сначала крайнюю верхнюю а затем крайнюю нижнюю ногу. Это необходимо для того, что бы чип не двигался во время пайки.

Итак. Мы запаяли все SMD компоненты дальше по мелочи. Диод, антенна и лоток под симкарту.

При запайке диода ориентируйтесь на шелкографию.

Аналогично диоду, запаиваем лоток для сим-карты ориентируясь на шелкографию.

Завершающим штрихом запаиваем антенну и грбенку. Думаю что здесь ничего не вызовет трудностей.

GSM модуль готов! Осталось собрать этот “Сендвич” из Arduino, адаптера и GSM модуля.

Подготовка к запуску

Для начала работы с модулем, нам обязательно нужно вставить sim-карту. Для этого просто отодвигаем верхнюю панельку в право, тогда она сможет откинуться. 

Для работы нам, так же понадобится блок питания. Я использовал обычный зарядник от планшета, к которому припаял нужный разъем питания. Автор рекомендует использовать 7-12ти вольтовый блок питания, поскольку  иначе реле не будет работать (собственно, что у меня и случилось), однако чистый модуль, без проблем работает на 5ти вольтах.

На счет подключения, провод питания нужно заводить не в ардуино, а в шилд, а usb в ардуино.

Теперь у нас все готово к запуску, можем переходить к программной части.

Запуск

Модуль работает по UART интерфейсу, и управляется с помощью AT комманд. AT команды, представляют из себя строку символов, которая фактически является некоторой командой для модуля, например: подключится к сети, отправить смс и прочее. Список AT команд можете просмотреть здесь. Теперь, что бы протестировать работу модуля, зальем в него следующий скетч

#include
SoftwareSerial gsm(2, 3);
String phone=”+7XXXXXXXXXX”; //Здесь укажите ваш номер телефона void setup() { Serial.begin(9600); gsm.begin(115200); Serial.print(“Prepearing”); gsm.println(“ATE0”); // выключаем эхо delay(100); gsm.println(“AT+CLIP=1”); // Включаем АОН delay(100); gsm.println(“AT+CMGF=1”); // Формат СМС = ASCII текст delay(100); gsm.println(“AT+CSCS=”GSM””); // Режим кодировки текста = GSM (только англ.) delay(100); gsm.println(“AT+CNMI=2,2″); // Текст смс выводится в com-порт delay(100); Serial.println(”
Ready!”); //Отправляем Sms
} void loop() { if(Serial.find(“SMS”)){ Serial.print(“Sending..”); gsm.println(“AT+CMGS=”” + phone + “””); delay(500); gsm.print(“Hello form arduino!”); delay(500); gsm.print((char)26); delay(500); Serial.println(“OK”); }
}

О том как работать с GPRS модулем, вы сможете прочитать так же в других статьях на этом сайте, но в прикрепленных материалах прикладываю скетч работы данного модуля с реле на шилде (Код с подробными комментариями).

Итоги

Кому может понадобится данный модуль? 

Вообще при работе с шилдом у меня сложилось следующее впечатление:

  •  он вряд-ли подойдет для малогабаритных устройств так, как имеет внушительные размеры.
  • Однако данная плата идеально подходит для новичков, которые не хотят возится с питанием модуля и прочим, что может отбить всякое желание заниматься радиоэлектроникой. Шилд помогает запустится модулю из коробки без лишних шаманств.
  • Так же, я бы порекомендовал модуль различным кружкам и сообществам, например, я был бы не против приобрести еще штук 9 подобных модулей на “Лаборатории интернета вещей Челябинска”, где являюсь одним из преподавателей. Во первых, избавляет нас от надобности готовить набор деталей для занятия, а так же помогает участникам сообщества быстрее и лучше разобраться в том как это работает. 
  • Модуль идеально подходит для макетирования, где главным фактором является стабильность, а не габариты.

Зачем может понадобится данный модуль?

  • GSM  модуль может послужить некоторой системой дистанционного управления вашим устройством по средствам SMS и телефонных звонков.
  •  Получение некоторой информации (например местоположение автомобиля) в тех местах, где нужна стабильность передачи, а интернет – роскошь

А что нам дает то, что модуль разработан в России?

  • Во первых, это 100% стабильность работы модуля так, как разработчики стараются поддерживать свой статус.
  • Для модуля активно разрабатываются скетчи-примеры, которые помогут новичкам разобраться в сложных технологиях
  • Модуль активно дорабатывается, и если вы нашли в нем недостатки, то всегда можете написать разработчикам.

Думаю, что все это делает покупку достаточно рациональной, тем более, что цена находится на том, же уровне, что и импортные аналоги.

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

Кстати, как идея для работы с модулем: попробуйте сделать систему оповещения “угона” велосипеда. Удачи вам в ваших начинаниях

Источник: http://cxem.net/arduino/arduino202.php

GSM модуль Neoway M590E

Источник: http://exersizze.ru/publ/ehlektronika/gsm_modul_neoway_m590e/4-1-0-13

Записки программиста

Сегодня поговорим о GSM-модуле Neoway M590. С его помощью можно делать и принимать звонки, посылать и принимать SMS, а также выходить в интернет по GPRS. Цена модуля на AliExpress составляет всего лишь 140 рублей с доставкой в Россию (~ 2.3$). Для сравнения, ближайшие аналоги в лице модулей SIM800C и SIM800L обойдутся вам в 290 и 460 рублей соответственно.<\p>

Пайка и подключение

Модуль продается в виде конструктора из платы и компонентов, которые нужно припаять к этой плате. Собрать модуль не сложно по картинкам, изображающим модуль в собранном виде.

Быть может, понадобится еще приложить щупы мультиметра, чтобы понять, какой стороной припаивать светодиод. Если ранее вам не доводилось паять SMD-компоненты, это не сложно.

Как это делается, можно посмотреть на YouTube, или прочитать в дополнении в конце заметки Как я спаял свою первую электронную схему.

Что нужно учитывать при подключении:

  1. Для активации модуля контакт K нужно подсоединить к земле, при помощи перемычки, или припаяв;
  2. Модуль питается от 5 В и может потреблять довольно большой ток (200 мА и выше). Поэтому, если запитать его, скажем, от Arduino, он может не работать. Лично я запитал его от лабораторного блока питания;
  3. Модуль использует 3.3-вольтовую логику. Я просто выставил соответствующую перемычку на адаптере с FT232. В общем случае либо вся логика в цепи должна быть 3.3-вольтовой (например, бывают такие модификации Arduino), или же следует использовать преобразователь логических уровней;
  4. Взаимодействие с модулем происходит по UART на скорости 115200 бод. Я использовал screen, и, соответственно, команду screen /dev/ttyUSB0 115200;
  5. Модулю нужна полноразмерная SIM-карта, которыми сейчас мало кто пользуется. В вашем телефоне, скорее всего, используется какая-нибудь Nano SIM, или вроде того. Соответственно, понадобится переходник и кусочек двухстороннего скотча. На AliExpress переходник стоит менее 30 рублей (0.5$), в российских интернет-магазинах он обойдется где-то в 250 рублей, в салонах связи — примерно в 500 рублей. В теории можно обойтись без адаптера, положившись на ловкость рук, но с адаптером намного удобнее;

Спаянный и подключенный к компьютеру модуль:

Это что касается подключения. Теперь поговорим об UART-интерфейсе.

Основные AT-команды, звонки и SMS

Будучи готовым, модуль присылает строчку:

Проверяем, что мы подключены к сети:

Ответ:

Теперь, допустим, мы хотим отправить SMS. Делается это так:

AT+CSCS=”GSM” OK AT+CMGF=1 OK AT+CMGS=”+79161234567″ > This is a test message.^Z +CMGS: 117

OK

Здесь ^Z означает нажатие Ctr+Z. Этому сочетанию соответствует символ с кодом 26 в десятичной системе счисления.

Чтение входящих SMS:

AT+CMGL=”ALL” +CMGL: 1,”REC READ”,”+79161112233″,””,”17/06/13,20:31:59+18″ This is a test message. +CMGL: 2,”REC READ”,”+79164445566″,””,”17/06/13,22:45:12+18″ Test SMS

OK

Удаление входящего SMS с заданным id:

Можно позвонить на заданный номер:

Если взяли трубку, придет:

Когда трубку положили, придет:

Такой же ответ придет в случае, если звонок был сброшен.

Положить трубку на своей стороне мы можем так:

Чтобы принимать звонки, для начала скажем:

Эта команда включает +CLIP нотификации. Помимо прочего, через них работает АОН (определитель номера). Теперь при входящем звонке где-то раз в 5 секунд нам будет приходить:

RING

+CLIP: “79161234567”,145,,,””,0

Ответить на звонок можно командой ATA. Сбросить входящий звонок можно уже рассмотренной выше командой ATH.

Выход в интернет через GPRS

Проверяем, есть ли подключение к GPRS:

Указываем параметры подключения:

AT+XISP=0 OK AT+CGDCONT=1,”IP”,”internet.mts.ru” OK AT+XGAUTH=1,1,”mts”,”mts” OK AT+XIIC=1

OK

Эти параметры я взял с сайта МТС. У вашего оператора они могут отличаться.

На сервере запускаем netcat:

Модулю говорим:

AT+TCPSETUP=1,46.101.123.45,31337 OK +TCPSETUP:1,OK AT+TCPSEND=1,5

>

Здесь нужно ввести пять символов, которые собираемся послать по TCP. Эхо тут отсутствует, поэтому вводимых символов мы не увидим. Далее:

OK +TCPRECV:1,7,Hello! AT+TCPCLOSE=1

+TCPCLOSE:1,OK

Как видите, передача данных в обе стороны превосходно работает. При желании не составляет труда написать свой HTTP-клиент (или сервер), или реализовать любой другой сетевой протокол.

Заключение

Как видите, модуль можно легко интегрировать с Arduino, Raspberry Pi, да и вообще, практически любой электроникой. Полный список AT-команд описан в документе M590 AT Commands Set [PDF].

С помощью GSM модуля можно делать офигительные штуки. Слать самому себе нотификации о различных событиях, сделать двухфакторную авторизацию, GPS-трекер (см заметку Работа с GPS-модулем на базе NEO-6M из Arduino) умный дом, управляемый при помощи звокнов и SMS, сообщающего погоду IRC/Slack/Gitter-бота, и так далее. Просто безграничный простор для творчества!

А какие идеи по использованию Neoway M590 есть у вас?

Источник: https://eax.me/m590-gsm-module/

Отправка СМС через Arduino и GSM модуль NEOWAY M590

Статья для тех, кто хочет заставить Arduino отправлять СМС  через данный GSM модуль. Модуль NEOWAY M590 на базе чипа SIM900 подойдет для создания самодельной сигнализации, умного дома. Существует также альтернативный GSM модуль подключаемый напрямую к Arduino через 5 Вольт: Sim800L EVB v2.0

Постановка задачи

  • Используя только Arduino и GSM модуль управлять светодиодом посредством звонка с телефона.
  • Отправлять СМС (пока через команду поступающую через монитор порта в Arduino IDE)

Подключение к Arduino

Соединяем GSM модуль с Arduino.5В модуля -> 5V ArduinoGND модуля -> GND ArduinoТХ модуля -> digital pin2 ArduinoRX модуля -> digital pin3 Arduino

Распиновку можно посмотреть на фото. Порядок контактов такой: 1 – +5В, 2 – GND, 7 – TX, 8 – RX.

Запитать модуль можно от 4В до 5В, я использовал 5 вольтовый выход.

Модуль требует отдельного питания, потому что потребляет в пике до 2А. Конденсатор скорей всего не спасет. Поэтому при запитке от Ардуино может не работать или глючить.

Землю Ардуино и модуля GSM при раздельном питании надо соединить, но сначала нужно мультиметром замерить напряжение между этими “землями”. Некоторые компьютерные блоки питания имеют перепад потенциала на корпусе и земле USB до 100В. Ток там мизерный и убить не может, но уничтожить Ардуино или модуль GSM или то и другое вместе – запросто.

Скетч

#include SoftwareSerial mySerial(2, 3); // RX, TX int ch = 0; int led = 13; String val = “”; void setup() {
delay(2000); //время на инициализацию модуля  pinMode(led, OUTPUT);  digitalWrite(led, LOW);  Serial.begin(9600);  //скорость порта  Serial.println(“GSM tester v1.0”);  mySerial.begin(9600);  mySerial.

println(“AT+CLIP=1”);  //включаем АОН  delay(100);  mySerial.println(“AT+CMGF=1”);  //режим кодировки СМС – обычный (для англ.)  delay(100);  mySerial.println(“AT+CSCS=”GSM””);  //режим кодировки текста  delay(100); } void loop() {  if (mySerial.available()) {  //если GSM модуль что-то послал нам, то    while (mySerial.

available()) {  //сохраняем входную строку в переменную val      ch = mySerial.read();      val += char(ch);      delay(10);    }    if (val.indexOf(“RING”) > -1) {  //если звонок обнаружен, то проверяем номер      if (val.indexOf(“71234567890”) > -1) {  //если номер звонящего наш. Укажите свой номер без “+”        Serial.

println(“— MASTER RING DETECTED —“);        mySerial.println(“ATH0”);  //разрываем связь        digitalWrite(led, HIGH);  //включаем светодиод на 3 сек        delay(3000);        digitalWrite(led, LOW);  //выключаем реле      }    } else      Serial.println(val);  //печатаем в монитор порта пришедшую строку    val = “”;  }  if (Serial.

available()) {  //если в мониторе порта ввели что-то    while (Serial.available()) {  //сохраняем строку в переменную val      ch = Serial.read();      val += char(ch);      delay(10);    }    //mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль    if (val.

indexOf(“sendsms”) > -1) {  //если увидели команду отправки СМС      sms(String(“hello world”), String(“+71234567890”));  //отправляем СМС на номер +71234567890    }    val = “”;  //очищаем  } } void sms(String text, String phone)  //процедура отправки СМС {  Serial.println(“SMS send started”);  mySerial.

println(“AT+CMGS=”” + phone + “””);  delay(500);  mySerial.print(text);  delay(500);  mySerial.print((char)26);  delay(500);  Serial.println(“SMS send complete”);  delay(2000); }

Проверка

  1. Подключаем Arduino (с подключенным к нему сотовым модулем) к компьютеру
  2. Заливаем скетч
  3. Открываем монитор порта и если все в порядке, то увидим следующую картину
  4. Пробуем сделать звонок с номера телефона, который прописали в скетче.

    На плате Ардуино включится светодиод на 3 секунды и в мониторе порта видим реакцию:

  5. Пробуем отправить СМС.

    Для этого набираем в мониторе порта текст sendsms и, если денег на счете достаточно и отправка оператором разрешена, то должно все получиться и увидим следующую картину:

    При успешной отправке выводится строка +CMGS: 13 (цифра 13 – порядковый номер исходящего сообщения, значит успешно ушло)

Дальше сами экспериментируйте. Можно подключить любой датчик (температуры, движения, влажности и т.д.) и при достижении отпределенного значения отправлять СМСку или делать звонок хозяину.

GPRS

В рассматриваемой версии модуля 1.30 поддержка GPRS урезанная. Мне не удалось подключиться к серверу по его DNS имени (например mysite.ru), получилось только по IP-адресу. В другом модуле SIM800L таких проблем не было.

Перечень некоторых AT команд:

   Попался мне на глаза набор для сборки с GSM модулем, и я бы прошел мимо так как уже вдоволь наигрался с SIM900D, но тут китайцам снова удалось меня заинтриговать, и в первую очередь – ценой.

Если сейчас SIM900 стóит от 800 рублей и выше в зависимости от версии, то китайцы предлагают свой модуль за 100 рублей, при этом в комплекте с набором идет вся необходимая обвязка, небольшая антенна и печатная плата. Правда этот модуль не поддерживает голосовые вызовы, т.е.

позвонить с него можно, но передачу звука он не поддерживает в принципе, только прием и передача текстовых сообщений и работу с TCP/IP посредством GPRS.  Но для всякого рода устройств автоматизации или оповещения этого более чем достаточно. Поэтому мне стало очень интересно его посчупать в живую.

 Судя по отзывам, этот модуль продается как бэушный, чем и объясняется такая низкая цена. То есть китайцы массово распаивают какие-то устройства с этим модулем, и чтобы добро не пропадало, распродают модули, комплектуя их минимально необходимыми детальками, практически по себестоимости.  Вот в таком виде модуль пришел ко мне:

 А вот что это были за устройства и почему эти модули так массово начали “ликвидировать”? Есть подозрения что с этим модулем не все так гладко, и где-то китайские инженеры напортачили, да так, что пришлось отзывать всю партию с этими модулями и как-то от них избавляться. Но это только мои подозрения и тесты покажут как обстоит дело на самом деле.

 Модуль предлагается питать пятью вольтами, для этого на плате предусмотрен диод, на котором падает напряжение до 4,3 вольт. Если питать предполагается литий-ионным акб, то заместо диода впаивается перемычка.

  Чтобы модуль запустился, необходимо подать на вывод Boot кратковременный (не менее 300мс) отрицательный импульс.

Или замкнуть этот вывод на землю через резистор 10-20 кОм, в таком случае, модуль будет запускаться при поступлении питания.

 Для общения с модулем используются стандартные AT-команды, сейчас пройдусь по самым основным из них, остальные можно посмотреть в документе, ссылку на который я привел в конце статьи.

  Для работы с модулем я использовал терминальную программу PuTTy, скачать ее можно здесь. А для подключения к компьютеру можно использовать любой подходящий модуль UART, с напряжением на линиях связи не выше 3,3 вольт.

Я же использовал модуль на микросхеме CP2102.

 Тестовая команда AT. Модуль, если он находится в рабочем состоянии, отвечает OK

 Настройка скорости обмена, по умолчанию модуль общается на частоте 115200 бод. Для изменения используется команда AT+IPR

 После включения модуля важно узнать, зарегистрировался ли он в сети оператора и готов ли передавать данные.

Для этого используется команда AT+CREG? Если модуль ответит +CREG: 0,1 тогда все в порядке, регистрация прошла успешно и можно продолжать работу.

Если он ответил  +CREG: 0,0 значит регистрация не прошла (например, в случае если модуль не нашел сеть оператора). Остальные параметры ответа можно посмотреть в документации на модуль.

 Далее полезно бывает узнать уровень сигнала, это можно сделать командой AT+CSQ. В ответе будет две цифры через запятую. Первая это уровень сигнала от 0 до 31, чем цифра выше, тем сигнал сильнее.

Вторая оценивает качество сигнала от 0 до 7, чем ниже, тем сигнал качественней. Если же в ответе будет содержаться цифра 99, значит сигнал отсутствует полностью.

На антеннку, идущую в комплекте, модуль, лежащий на столе рядом с окном, ловит стабильные 26 попугаев.

 Проверить уровень питающего напряжения можно командой AT+CBC, в ответе будет содержаться цифра показывающая заряд в процентах (цифра 38 после запятой).

 Теперь перейдем к командам отвечающим за работу с смс. Первым делом необходимо перевести модуль в работу с сообщениями в текстовом режиме (команда AT+CMGF=1) и отображение сообщений в кодировке ASCII (команда AT+CSCS=”GSM”).

Для чтения СМС используется команда AT+CMGR=n (где n это порядковый номер сообщения).

 Для отправки СМС используется команда AT+CMGS=”number” (где number номер телефона в международном формате). После ввода этой команды, модуль предложит следом ввести текст сообщения.

В конце сообщения необходимо вставить спецсимвол SUB (0x1A в таблице ASCII). Если используете Putty можно нажать CTRL+Z. Модуль ответит сообщением +CMGS: 5 и OK.

Цифра 5 показывает количество отправленных сообщений в памяти сим карты. 

 СМС удаляются командой AT+CMGD=1,4

 Ну и напоследок впечатления от работы с этим модулем. Как я и думал, без косяков не обошлось.

 Во-первых, я заказывал сразу два набора, и один из модулей оказался сразу не рабочим – коротили выводы питания. Видимо когда сдували феном перегрели. Отписался продавану, тот вернул деньги. Все норм. Поэтому советую первым делом проверять питание и внешний вид (на перегретом даже слетел разъем для подключения антенны).

 Во-вторых, на модуле есть индикация. Это светодиод на плате, который мигает постоянно с частотой 1 Гц. Причем частота мигания не зависит от режима работы, и не понятно, зарегистрировался ли модуль в сети оператора или еще продолжает поиск. Не знаю, возможно так и было задумано, но на модулях от SIMCOM частота при разных режимах разная.

И второй вывод индикации это RING, при событиях там появляются импульсы, должны появляться. Чтобы можно было отследить приход СМС или входящий звонок. На моем модуле этот вывод молчит как партизан.

И это уже засада, как управлять устройством в котором будет стоять этот модуль? Можно конечно принудительно читать сообщения в бесконечном цикле, но вариант так себе.

 И наконец третье. Самая большая проблема, которая выявилась на моем модуле, это то что он постоянно теряет сеть. При чем теряет ее при первой же возможности: входящий звонок? модуль сразу отрубается от сети и прикидывается шлангом, больше не желая подключаться к ней.

От входящих сообщений уходит в аут через раз. Ну и от простого лежания, может на ровном месте отключиться от сети и даже не пытаться подключиться снова. При всем при этом светодиод на плате продолжает мигать как обычно. В общем хрен поймешь.

Опять же, спасает перезагрузка по питанию.

 Куда-то серьезно применять ЭТО я бы не стал. Единственным вариантом, как при таком раскладе его можно использовать, так это давать питание модулю непосредственно перед необходимостью отправить сообщение.

Например, сработал датчик – подаем питание на модуль – проверяем, подключился ли модуль к сети – если да, отправляем сообщение – PROFIT.

  И учитывая низкую стоимость такого решения, его можно пихать куда угодно, особо не жалея.

 Если у кого-то все же появилось желание потестить этот модуль, покупался он здесь. И просите продавца сразу проверить линию питания на КЗ.

Документация по АТ-командам модуля Neoway M590E

Документация по подключению

AT+CMGF=1 Вкл. текстового режима (смс только латиницей)
AT+CSCS= “GSM” Вкл. режима
AT+CLIP=1 включение определения номера входящего звонкаЕсли отправить команду с 0, то определение номера отключится и модуль вместо номера вызывающего будет слать только сообщение “RING”.
AT+CMGS=”+79123456789″ Отправка СМС
ATI Получить информацию об устройстве
AT+IPR=19200 настройка скорости порта
AT+GSN вернет IMEI модуля
AT+CCLK? считываем время с модуля
AT+CCLK=«yy/mm/dd,hh:mm:ss+zz» где по порядку идут  «год/месяц/дата,час:минуты:секунды+часовой пояс»  Данные обязательно отправляются с ведущими нулями, то есть, к примеру, если месяц у нас “4”, то отправить должны “04”. Получить обратно текущие время и дату можно отправив ту же команду, только со знаком “?”:
AT+CMEE=0 уровень информации об ошибке. Может быть от 0 до 2. 0 – отключено. Будет просто писать ERROR. 1 –  код ошибки. Будет возвращать цифровой код ошибки. 2 –  описание ошибки. Напишет что именно ему не нравится в команде. Для работы с модулем через терминал удобней режимы ATV1, ATE1 AT+CMEE=2, для общения с микроконтроллером лучше использовать ATV0, ATE0 и AT+CMEE=0 – так проще будет обрабатывать полученные ответы. Данные настройки не сохраняются после перезагрузки модуля, поэтому необходимо включать эти команды в код программы. 
AT+CSQ информация о качестве сигнала. Модуль вернет два числа +CSQ: 17,0 17 – уровень сигнала. Может быть в диапазоне 0..31 или 99. Чем больше тем лучше, но 99 значит его отсутствие. 0 – коэффициент ошибок связи (т.н. RXQUAL). Может быть от 0 до 7, чем число меньше тем качество связи лучше.
AT+COPS? информация об операторе, в сети которого зарегистрирован модуль
ATD+79121234567; набор номера. (“;” обязательно) Модуль позвонит по указанному номеру и вернет один из вариантов BUSY – номер занят NO DIALTONE – нет сигнала на линии NO CARRIER – нет сети или другая проблема (например, нет денег на счету) NA ANSWER – нет ответа CONNECT – есть контакт!
AT+CMGR=3,0 (3-номер сообщения, которое хотим прочитать, 0-изменить статус сообщения на прочитанный)

Источник: http://www.2150692.ru/faq/36

HTTP запрос через GSM GPRS модуль NEOWAY M590

В этом проекте посмотрим на практический пример отправки http get запроса при помощи любительского GSM-модуля. Активация GPRS модуля и оправка запроса по TCP будет происходить по нажатию на кнопку.

Для чего нам нужны HTTP-запросы через GPRS?

Если вы не в курсе, то ваша жизнь в наше время не мыслима без http запросов. Вы их отсылаете каждый день по многу раз просто заходя на любой сайт со своего браузера и шарясь по разным страничкам.

Так вот, применительно к любительским микроконтроллерным проектам такие запросы тоже могут быть весьма полезными. Представьте, что у нас есть некий сайт в интернете. На этом сайте мы можем создать скрипт на языке PHP, который мы вставим в текстовый файл и назовем x.php. При обращении к этому файлу извне, наш скрипт будет выполнять операции, которые мы в него заложили.

Какие же это могут быть операции: отправка электронного письма (некоторые мобильные операторы позволяют через емейл отправлять sms); запись в текстовом файле на сервере сайта; запись в базе данных на сервере сайта; внесение изменений в запись базы данных; послать сообщение в скайп; принять и сохранить фото… 

Возможность отправки емейла может быть интересна для охранной сигнализации и для долгопериодических сообщений от контроллера, например “Полей меня, с любовью твой фикус”.

Запись в базе данных на сервере – это самая крутая возможность данной технологии. Таким образом мы можем собирать данные с разных, не привязанных к проводному или wifi интернету, контроллеров и сохранять их для дальнейшего отображения в виде всевозможных графиков и таблиц на сайте.

Сохранение снимков с фотокамеры полезно для охранной сигнализации и для удаленной визуальной оценки ситуации на объекте, вызывающем для нас интерес.

Как работает HTTP-запрос?

HTTP запрос работает очень просто – если отправим нашему серверу в интернете набор информации с предопределённым синтаксисом, то он пришлёт нам в ответ данные, которые мы от него запросили.

Например, говорим ему: “сервер с доменом geekmatic.in.ua, пришли нам пожалуйста содержимое веб-странички RF_radio_modul”. И он присылает нам гору текстовой информации, которую содержит эта страничка.

Но скачивание в контроллер какой либо веб-странички полностью нам будет интересно только разве что для парсинга данных с чужих сайтов. Таким образом мы можем например собирать данные о прогнозе погоды с погодного сайта и выводить себе на LCD-экранчик.

А самое интересное для нас в HTTP запросе кроется в возможности, при обращении к веб-страничке на нашем сервере, передать ей набор значений для переменных. Синтаксически это выглядит примерно так

Это так называемый запрос “GET”. Здесь страничке sensors мы передаем значение переменной sort равное “pd.name” и переменной order равное “ASC”. Таким же образом мы можем передать например значение переменной temperatura=32 или vlazhnost=60.

Максимальная длина текста такого запроса ограничена настроенной на сервере цифрой – порядка нескольких тысяч символов, но через GPRS лучше передавать GET-запросы по-короче. Данный модуль способен передать 2000 байт.

Для длинных запросов и для передачи файлов, в том числе и фотографий, используется POST запрос, который не сильно отличается синтаксисом. В этом проекте мы остановимся пока только на GET запросах через GPRS.

Синтаксис стандартного GET запроса выглядит так

или с передаваемыми данными

В этом проекте мы передадим HTTP GET запрос с обращением к страничке x.php на сервере geekmatic.in.ua. Моя страничка, при обращении к ней, отправит емейл на мой электронный ящик и смс на мобильный (у оператора киевстар можно активировать соответствующую платную возможность принимать емейлы на смс).

Файл x.php содержит следующий скрипт:

Запрос принят

При удачном запросе к этому файлу, сервер вернет нам фразу “Запрос принят” и отправит два электронных письма.

Что понадобится для проекта?

Для проекта нам понадобится GSM-модуль, на основе микросхемы NEOWAY M590

Плата контроллера Arduino UNO, а так же источник питания 5 В (я использовал 5 В преобразователя USB 2.0 в TTL UART) и мини кнопка. Если запитать GPRS-модуль от вывода 5 В Arduino UNO, ему не будет хватать мощности и он будет всё время перезагружаться.

Схема подключения GSM GPRS модуля M590 к контроллеру Arduino UNO

Схема подключения показана на следующей картинке. Ваш GPRS модуль может отличаться от используемого в проекте. Поэтому найдите в документации соответсвующие обозначения выводов и соедините их по схеме.

Кнопка подключается без каких либо резисторов, так как мы её дискретный вход подтянем внутренним резистором к плюсу программным способом. Arduino UNO можно питать и от USB-кабеля и тогда провод на вывод 5V не нужен.

Не забываем подключить антенну к модулю NEOWAY M590 и вставить в него симку GSM-оператора. При чем, если вы только-что ее купили, то она требует активации работы и возможно активации GPRS-интернета. Лучше всего её вставить в смартфон, поддерживающий GPRS, и настроить связь с интернетом для этой сим-карты. Теперь её смело можно вставлять в модуль M590 – всё должно работать.

Сам модуль мы не будем все время держать в рабочем состоянии. Для экономии энергии мы его будем включать только при необходимости перед отправкой запроса на сайт.

Как происходит процесс передачи команд модулю от контроллера для организации GET-запроса по GPRS?

Все команды в модуль контроллер будет передавать по программному UART. Для этого мы соединили выводы RX и TX платы Arduino UNO с противоположными выводами TX и RX модуля M590.

GSM модуль управляется предопределённым набором так называемых АТ-команд. Самые простые из них мы упустим здесь из рассмотрения и остановимся на командах, косающихся непосредственно TCP-протокола, который и позволит нам передавать и получать данные по GPRS, используя HTTP GET запросы.

Для начала необходимо подать команду подключения к оператору GPRS по его APN

AT+CGDCONT=1,”IP”,”www.ab.kyivstar.net” ответом должен быть OK

Дальше подадим команду установки соединения по протоколу PPP

AT+XIIC=1
ответом должен быть OK

Для проверки получения своего IP от оператора отправим

AT+XIIC? ответом должен быть не нулевой айпишник +XIIC: 1, 10.43.55.122

Дальше пишем IP сайта, который необходимо определить при помощи специальных веб-сервисов в интернете, и номер порта – 80.

AT+TCPSETUP=1,185.68.16.25,80

Устанавливаем соединение с сервером сайта и присваиваем этому соединению номер 1 (для данного модуля одновременных соединений может быть целых два, под номером 0 или 1). Ещё сюда необходимо ввести длину передаваемого запроса в байтах

AT+TCPSEND=1, 60 ответом будет >

Только теперь у нас появляется возможность передать тело самого запроса

GET /x.php HTTP/1.1
Host: geekmatic.in.ua

Сервер должен ответить +TCPRECV и текст “Запрос принят” с нашего PHP скрипта в файле x.php

Загрузка программы в контроллер

Наша программа должна, по нажатию нами на кнопку, активировать GSM модуль подачей кратковременного сигнала на вход BOOT, подождать инициализации модуля в сети оператора, подать АТ-команды по передаче HTTP-запроса на сайт, подождать ответа от сервера и деактивировать GPRS модуль подачей сигнала на вход BOOT.

Готовый текст программы для Arduino UNO выглядит следующим образом

#include SoftwareSerial mySerial(6, 5); // RX, TX номера пинов Arduino UNO для подключения к модулю GSM NEOWAY M590int buttonState = 0;int lastButtonState = 0;int knopka = 2; //номер пина для подключения кнопки, которая должна замыкать этот пин на ноль питанияint bootGSM = 3; // номер пина для включения модуля GSM void setup() { mySerial.begin(115200);  Serial.begin(9600);  pinMode(knopka, INPUT_PULLUP); //инициализация дискретного входа для кнопки и внутренняя подтяжка его на плюс питания  pinMode(bootGSM, OUTPUT); //выходной пин для включения/выключения GSM модуля    digitalWrite(bootGSM, HIGH); //высокий уровень на вход BOOT модуля GSM для его выключения}void loop() {  buttonState = digitalRead(knopka); //состояние кнопки в данный момент    if (buttonState < lastButtonState){ //если кнопка поменяла свое значение с единицы на ноль    digitalWrite(bootGSM, LOW); //включить GSM модуль    delay(500);    digitalWrite(bootGSM, HIGH);    delay(1000);    sendAtCmd("ATE0", "+PBREADY", "", 30); //ожидаем инициализацию модуля    sendAtCmd("AT+XISP=0", "OK", "ERROR", 1);     sendAtCmd("AT+CGDCONT=1,"IP","www.ab.kyivstar.net"", "OK", "", 2); //подключаемся к оператору GPRS по его APN    sendAtCmd("AT+XIIC=1", "OK", "", 1);    sendAtCmd("AT+XIIC?", "OK", "+XIIC:    0, 0.0.0.0", 1); //проверяем получение IP от оператора    sendAtCmd("AT+TCPSETUP=1,185.68.17.25,80", "OK", "Error", 5); //сюда пишем IP сайта (по имени домена не получится)    String q = "GET /x.php HTTP/1.1 Host: geekmatic.in.ua "; //тут вводим путь к необходимому файлу на web-сервере, а так же вводим имя домена сайта    sendAtCmd("AT+TCPSEND=1," + String(q.length(), DEC), ">“, “”, 5);    sendAtCmd(q + 0x0d, “+TCPRECV”, “”, 10); //отправка запроса и ожидание ответа от сервера    Serial.println(q);        sendAtCmd(“AT+TCPCLOSE=1”, “OK”, “Error”, 1); //закрываем TCP соединение номер 1        digitalWrite(bootGSM, LOW); //выключить GSM модуль    delay(500);    digitalWrite(bootGSM, HIGH);  }  lastButtonState = buttonState;  delay(50);} //функция отправки AT-команды в модем и диагностика ответаbool sendAtCmd(String at_send, String ok_answer, String err_answer, uint32_t wait_sec) {  Serial.print(“sendAtCmd(“);  Serial.print(at_send);   Serial.println(“)”);  uint32_t exit_ms = millis() + wait_sec * 1000;  String answer;  ok_answer.toUpperCase();  err_answer.toUpperCase();  if (at_send != “”) {    mySerial.println(at_send);  }  answer = “”;  while (millis() < exit_ms)   {    while (mySerial.available())      answer += (char)mySerial.read();  }    Serial.println(answer);    if (answer != "") {      if (err_answer != "" && (answer.indexOf(err_answer) > -1)) {        Serial.println(“AT_ERR”);        return false;      }      else if (answer.indexOf(ok_answer) > -1) {        Serial.println(“AT_OK”);        return true;      }    }  Serial.println(“AT_TIMEOUT”);  return false;

}

Загружаем данный скрипт в контроллер с поправкой на свой сайт и IP сервера.

Тестируем отправку GET запроса по GPRS

Подключаем все согласно схеме и нажимаем на кнопку. При этом наблюдаем как мигает светодиод на модеме M590 при его включении.

Если включить Монитор порта Arduino IDE, то можно наблюдать последовательность сообщений от контроллера и иметь представление о происходящем бурном общении между нашими чудо-платами.

При удачном выполнении всех директив контроллера модулем GSM, получим в Мониторе порта ответ от сервера. Если вы просто обратились к какой-нибудь веб-странице в интернете, то получите в ответ весь текст страницы в HTML-формате. Я же в результате получил ответ “Запрос принят” и тут же получил емейл со своего сайта и смс на мобилку. При повторном нажатии на кнопку запрос должен повториться.

Выводы

Я давно хотел научиться пользовать GPRS через GSM модем. Когда все наконец сложилось и получилось, я понял, что не так всё и сложно – просто никто не хочет делиться инфой и публиковать правильный синтаксис в интернете.

На практике HTTP запрос получился такой же надёжной и не менее полезной штукой чем SMS. Сразу в уме возникает множество задумок по применению этой фичи. Хотелось бы собрать GPRS GPS-трекер для автомобиля и собирать данные о его похождениях на веб-страничку.

GPRS при пересылке небольших объемов данных выходит на много дешевле чем SMS. UDP запросам и FTP я пока не вижу действенного применения. Хочется попробовать отослать фото с камеры, используя HTTP POST запрос, но возможно сразу лучше начинать играться с более продвинутыми GSM-модулями, такими как A6C.

Источник: http://geekmatic.in.ua/http_zapros_m590_module

Solr 7 beginner tutorial, part 2: delta-import, debugging tips

In English

Часть 1 ЗДЕСЬ.

Это продолжение моей серии постов о GSM / GPRS модуле Neoway M590: Ссылки на даташиты по используемому оборудованию:

Принципиальная схема и сборка

Схема трекера (ССЫЛКА НА PDF) довольно проста. Последовательный порт модуля GPS подключается к аппаратному UART меги из-за нужды библиотеки NeoGPS в быстром и надежном последовательном порту, что очевидно из документации к ней.

Модуль M590 подключен к второму по скорости последовательному порту: AltSoftSerial на пинах D8 и D9. Соотвествие пинов Arduino физическим ножкам микросхемы было определено из этого полезного рисунка:Как вы, возможно, заметили, на схеме появилась новая ножка на модуле Neoway M590 – DTR.

Эта нога используется для перевода GSM-модуля в спящий режим. Потребление тока в режиме сна сокращается в десять раз, так что это нам точно нужно. К сожалению, моя платка с модемом не выводит DTR на штыревой разъем.

Придется внести некоторые изменения:
Следующим логичным шагом будет включить паяльник и порыться по мастерской в поисках кусочка макетной платы.

Мой девайс выполнен в форм-факторе “сэндвич”. Такой стиль, как мне показалось,  приведет к самой компактной сборке.

Платы расположены как 3 слоя: верхний (нижний на самом деле, первое фото перевернуто) занят модулем Neoway M590 с его огромным фильтрующим конденсатором, середина – ATMega и всей самодельной схемой, и нижний (верхний, то есть) с GPS-модулем и обеими антеннами (поэтому этот слой я и считаю верхним, антенны располагаются в верхней части устройства).

Вот пара фото трекера в процессе сборки:

Вот и “сендвич”.
Рим не один день строился, начинаем с малого
Дорожки сделаны из сердцевины цельного провода – ни одна не порвется и не отвалится, как могут провода.
Зарядка добавлена как дополнительный слой между верхним и средним.
Готово! На этом фото явно видно, как З/У припаяно к плате. И то как я кривовато слепил все двусторонним скотчем.
Выключатель питания укромно спрятан между слоями, чтобы избежать случайного переключения.
Обе антенны сверху.
Послойный вид готового устройства сбоку
То же, спереди

После включения устройства ничего не должно нагреться и дымиться. Если что-то все же дымится или нагревается, еще раз проверьте все соединения и повторите попытку. Как только оборудование работает, можно перейти к кодингу…

Готовое устройство

Программирование

Выбор ATMega328 не был случайным, я специально выбрал ее для упрощения процесса программирования при помощи Arduino. Берем программатор и подключаем к 6-контактному разъему для программирования.

Вот такой программатор я использую (ссылки на переходник и программатор):

Программатор USBASP + переходник с 10 на 6 контактов.

Запустим Arduino IDE попробуем загрузить любой пример кода чтобы проверить соединения и чип: выбираем целевую платформу и программатор и щелкаем “Загрузить при помощи программатора” (в большинстве ОС это Ctrl+Shift+U).

Выбираем напряжение и тактовую частоту
Выбираем прогамматор

Так просто это лично у меня не получилось (ничего никогда не работает из коробки, блин!).

Вот так мы будет дебажить нашу загрузку кода. Лично у меня всегда стоит эта галочка.

Отмечаем в настройках Arduino IDE режим детального вывода информации при загрузки, и видим следующее: Показать/спрятать текст ошибки
После пары часов ковыряния Гугла я нашел основную причину ошибки. Очевидно, чипы ATMega328P на заводе прошиваются на использование внутреннего генератора 1 МГц. Это слишком медленно, чтобы запрограммировать их с помощью USBASP с настройками, с которыми IDE вызывает его. Первая мысль, которая пришла ко мне после выяснения этого была: «Ну отлично, почему оно не работает я знаю, но как теперь проверить, что чип не дохлый?»

Для этого нам понадобится avrdude. Выполним эту строку, чтобы проверить соединение с чипом без каких-либо изменений в прошивке (найдено на stackexchange):

Если это работает, то наша ATMega работает и программируется. Теперь вот что надо сделать чтобы обойти медленный внутренний тактовый генератор: во-первых, создадим новую «медленную» версию программатора USBASP для Arduino IDE. Современные версии IDE запихивают конфигурационные файлы далеко в  папку пользователя (Для Windows будет что-то вроде  C:UsersПользовательAppDataLocalArduino15packagesarduinohardwareavrВерсия)

Пришлось покопаться на жестком диске чтобы их найти…

Вот ссылка на полезный мануал по настройке Arduino IDE. Согласно этому документу, вставим эти строки в programmers.txt после секции с USBASP: Показать/спрятать programmers.txt

Перезапускаем Arduino IDE, выбираем программатор 'Slow USBASP' и пробуем загрузить снова… Работает! Скетч Blink.hex грузится, хотя частота мигания кажется… низковатой. В 8 раз медленне чем надо, если быть точным. Почему? Смотрим в лог загрузки… Ага! Фьюзы совершенно неправильные! Показать/спрятать лог прошивки
> avrdude: safemode: Fuses OK (E:FF, H:D9, L:62).

По-моему совсем не OK. Почему-то несмотря на то, что настройки фьюзов указаны для каждой платы в файле board.txt, IDE не прожигает правильные фьюзы даже если они неверные. Фьюзы прожигаются только при записи загрузчика, а мне он не нужен.

AVRDude просто нуждается в небольшом толчке в правильном направлении, чтобы прожечь правильные фьюз биты. Просто оставим Arduino IDE открытым (чтобы Blink.hex не удалился), скопируем команду, которая загружает Blink.hex и запустим ее в консоли с небольшим дополнением в конце: Показать/спрятать лог прошивки
Это должно решить проблему с аномальной скоростью чипа! Теперь можно переключиться на обычную конфигурацию USBASP в среде Arduino, поскольку теперь AVR работает на частоте 8 МГц.

Скетч Arduino

Вот финальный код для отправления GPS-координаты (а также опционально даты и времени GPS и баланса SIM-карты) в ответ на звонок (без энергосберегающих режимов). Вам нужно будет установить библиотеки AltSoftSerial и NeoGPS, чтобы все заработало:

Пришлось обойти один сильный недостаток библиотеки AltSoftSerial, а именно тот факт что все функции которые зависят от Timer0 перестают работать – delay() and millis(). Чтобы заново получить функцию задержки выполнения кода на определенное время, я использую функцию setTimeout() у объекта Serial, оттуда и взялась функция newDelay()

Источник: https://www.shortn0tes.com/2017/07/sms-gps-neoway-m590-and-ublox-neo-6-2.html

Энергоэффективная GSM-сигнализация на основе Arduino. Сборка. Прошивка. Тест

Вecнa, кaк извecтнo, coпрoвoждaeтcя вceвoзмoжными oбocтрeниями и вoт глaвнoe «oбocтрeниe» пoвылaзилo из cвoиx нoр нa улицу, дaбы приcвoить ceбe тo, чтo eму нe принaдлeжит. А знaчит тeмa зaщиты cвoeгo имущecтвa cтaнoвитcя, кaк никoгдa, aктуaльнoй.

Нa caйтe ужe ecть нecкoлькo oбзoрoв нa caмoдeльныe GSM—cигнaлизaции. Они кoнeчнo функциoнaльны, oднaкo у вcex имeeтcя oбщaя ocoбeннocть — зaвиcимocть oт рoзeтки.

Еcли c нeдвижимocтью, гдe ужe пoдвeдeнo элeктричecтвo, этo нe прoблeмa, тo кaк быть c имущecтвoм, гдe рoзeткa дaлeкo или oкрecтнocти вoвce oбecтoчeны? Я рeшил пoйти другим путeм — coбрaть дoлгoживущий, мaкcимaльнo прocтoй и нeзaвиcимый oт ceтeвoгo питaния дeвaйc, кoтoрый будeт вce врeмя oтcыпaтьcя, a при прoникнoвeнии грaбитeлeй, зaпуcкaтьcя и oтзвaнивaтьcя xoзяину нa тeлeфoн, cигнaлизируя прocтым звoнкoм o трeвoгe.

Прeдмeты oбзoрa

Пoкупныe:
1. Мaкeтнaя плaтa oднocтoрoнняя 5×7 cм: гeтинaкc — или cтeклoтeкcтoлит 3.53$/10шт. *- cтeклoтeкcтoлит нaмнoгo кaчecтвeннee гeтинaкca.

2. Мoдуль Neoway M590 — 1.55$, c aнтeннoй нa тeкcтoлитe — 2.25$

3. Arduino Pro Mini «RobotDyn» ATmega168PA 8MHz 3.3V — 2.45$
4. Плaтa кoнтрoля зaрядa-рaзрядa лития — 0.36$

Дoбытыe нa рaзвaлax цивилизaции:
1. Стoйки для плaты, выпилeнныe из кoрпуcoв прибoрoв — 6шт.
2. Аккумулятoр литиeвый плocкий 1300mAh
3. Скoбы, иcпoльзуeмыe для фикcaции кaбeля к cтeнe
4. Лacтик кaнцeлярcкий
5. Мeднaя прoвoлoкa тoлщинoй 1.5мм
6. Прибoрный кoрпуc c мecтнoгo рaдиoрынкa — 1.

5$
7. Пaрa cвeтoдиoдoв рaзнoгo цвeтa (взял c VHS-плeeрa)
8. Антeннa и кнoпкa c кoлпaчкoм (взял c Wi-Fi рoутeрa)
9. 4-x кoнтaктный клeммник (взял co c диммeрa)
10. Рaзъeм питaния (взял co cтaрoгo зaрядникa для 18650)
11. Рaзъeм 6-пинoвый (взял c DVD-привoдa)
12.

Жecтянaя бaнкa (из-пoд кoфe нaпримeр)

Arduino Pro Mini «RobotDyn» Atmega 168PA 3.3V 8MHz

Тexничecкиe xaрaктeриcтики:
Микрoкoнтрoллeр: ATmega168PA
Рaбoчee нaпряжeниe прямoe: .8 — 5.5 В
Рaбoчee нaпряжeниe чeрeз cтaбилизaтoр LE33: 3.3 В или 5 В (в зaвиcимocти oт мoдeли)
Рaбoчaя тeмпeрaтурa: -40°C… 105°C
Вxoднoe нaпряжeниe: 3.35-12 В (мoдeль 3.

3 В) или 5-12 В (мoдeль 5 В)
Цифрoвыe Вxoды/Выxoды: 14 (6 из кoтoрыx мoгут иcпoльзoвaтьcя кaк выxoды ШИМ: 3, 5, 6, 9, 10, и 11)
Анaлoгoвыe вxoды: 6
Тaймeры-cчeтчики: двa 8-битныx и oдин 16-битный
Рeжимы энeргocбeрeжeния: 6
Пocтoянный тoк чeрeз вxoд/выxoд: 40 мА
Флeш-пaмять: 16 Кб (2 иcпoльзуютcя для зaгрузчикa)
ОЗУ: 1 Кб
EEPROM: 512 бaйт
Рecурc зaпиcи/cтирaния пaмяти: 10,000 Flash/100,000 EEPROM
Тaктoвaя чacтoтa: 8 МГц (мoдeль 3.3 В) или 16 МГц (мoдeль 5 В)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) и A5 (SCL)
UART TTL: 0 (RX) и 1 (TX)
Дaтaшит: 48PA/88PA/168PA

Выбoр пaл нa дaнную aтмeгу coвeршeннo cлучaйнo. нa oднoм фoрумe, гдe oбcуждaлиcь энeргoэкoнoмичныe прoeкты, в кoммeнтaрияx пoпaлcя coвeт иcпoльзoвaть имeннo 168-ю aтмeгу. Однaкo пришлocь пoвoзитcя, чтoбы тaкую плaту oтыcкaть, пocкoльку cплoшь и рядoм вce лoты были зaвaлeны 328-ми aтмeгaми нa чacтoтe 16МГц, рaбoтaющими oт 5В.

Для мoeгo прoeктa тaкиe xaрaктeриcтики были избытoчны и нeудoбны ужe изнaчaльнo, пoиcки уcлoжнилиcь. В итoгe нaбрeл нa 3.3-вoльтoвую вeрcию Pro Mini нa Atmega 168PA нa eBay, причeм нe прocтую китaйcкую, a пoд брeндoм RobotDyn oт рoccийcкoгo рaзрaбoтчикa. Дa, у мeня тoжe cнaчaлa, кaк и у вac, вoзниклo зeрнo coмнeния. А зря.

Кoгдa прoeкт ужe был coбрaн, a AliExpress ввeл oбязaтeльную плaтную дocтaвку для дeшeвыx тoвaрoв (пocлe кoтoрoй пocылки cтaли тeрятьcя гoрaздo чaщe), тo пoзжe зaкaзaл oбычную Pro Mini Atmega168 (бeз PA) 3.3V 8MHz.

Я нeмнoгo экcпeримeнтирoвaл c рeжимaми энeргocбeрeжeния c oбeими плaтaми, прoшивaя в кaждую cпeциaльный cкeтч, пoгружaющий микрoкoнтрoллeр в мaкcимaльный рeжим энeргocбeрeжeния и вoт чтo вышлo:

1) Arduino Pro Mini «RobotDyn»: при пoдaчe питaния нa cтaбилизaтoр нaпряжeния (вывoд RAW) и выпaяннoм cвeтoдиoдe пoтрeбляeмый тoк cocтaвил ~250мкА

2) Arduino Pro Mini «NoName»: при пoдaчe питaния нa cтaбилизaтoр нaпряжeния (вывoд RAW) и выпaяннoм cвeтoдиoдe пoтрeбляeмый тoк cocтaвил ~3.92мА

— кaк вы пoняли, рaзницa в энeргoпoтрeблeнии пoчти в 16 рaз, вce пoтoму, чтo в NoName’мoвcкoй Pro Mini иcпoльзуeтcя cвязкa Atmega168+AMS1117, из кoтoрыx caм МК ecт вceгo 20мкА тoкa (этo я прoвeрил oтдeльнo), вce ocтaльнoe oбжoрcтвo приxoдитcя нa линeйный прeoбрaзoвaтeль нaпряжeния AMS1117 — дaтaшит этo тoлькo пoдтвeрждaeт:

В cлучae c плaтoй oт RobotDyn cвязкa ужe нecкoлькo инaя — этo Atmega168PA+LE33 — здecь примeнeн ужe другoй LDO-cтaбилизaтoр, чьи xaрaктeриcтики в плaнe энeргocбeрeжeния oкaзaлиcь бoлee приятными:

Выпaивaть я eгo нe cтaл, пoэтoму нe мoгу cкaзaть, cкoлькo Atmega168PA пoтрeбляeт тoкa в чиcтoм видe. В дaннoм cлучae мнe xвaтилo ~250мкА при питaнии oт нoкиeвcкoгo литиeвoгo aккумулятoрa. Однaкo ecли выпaять AMS1117 c NoName’мoвcкoй плaты, тo ATmega168-я oбычнaя, в чиcтoм видe, кaк я и cкaзaл вышe, пoтрeбляeт 20мкА.
Свeтoдиoды, cтoящиe пo питaнию мoжнo cкoвырнуть чeм-тo ocтрым. Этo нe прoблeмa. Стaбилизaтoр выпaивaл фeнoм. Однaкo нe у кaждoгo ecть фeн и нaвыки рaбoты c ним, пoэтoму oбa вышeпривeдeнныx вaриaнтa имeют прaвo нa cущecтвoвaниe.

2. Мoдуль Neoway M590E

Тexничecкиe xaрaктeриcтики:
Чacтoты: EGSM900/DCS1800 Dual-band, or GSM850/1900 or Quad-band
Чувcтвитeльнocть: -107dBm
Мaкcимaльнaя мoщнocть пeрeдaчи: EGSM900 Class4(2W), DCS1800 Class1(1W)
Пикoвый тoк:
Рaбoчий тoк: 210мА
Тoк в cпящeм рeжимe: 2.5мА
Рaбoчaя тeмпeрaтурa: -40°C… +85°C
Рaбoчee нaпряжeниe: 3.3V… 4.5V (рeкoмeндуeмoe 3.9V)
Прoтoкoлы: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP etc.
Интeрнeт: GPRS CLASS 10
Дaтaшит: M590

Сaмый дeшeвый GSM-мoдуль, чтo мoжнo нaйти нa рынкe, кaк прaвилo б/у, выпaянный нe вceгдa лoвкими китaйcкими рукaми c oбoрудoвaния. Пoчeму нe вceгдa лoвкими? Дa вce из-зa выпaйки фeнoм — нeрeдкo людям эти мoдули приxoдят c зaкoрoчeнным плюcoм и минуcoм, чтo являeтcя oднoй из причин иx нeрaбoтocпocoбнocти. Пoэтoму пeрвым дeлoм нeoбxoдимo прoзвaнивaть кoнтaкты питaния нa кoрoткoe зaмыкaниe.

Этoт мoдуль к тoму жe eщe и кaпризeн дo питaния, пocкoльку в пикe oн пoтрeбляeт дo 2А тoкa, a диoд, идущий в кoмплeктe, врoдe кaк зaдумaн для пoнижeния нaпряжeния c 5В (пoчeму и нaпиcaнo нa caмoй плaтe 5В) дo 4.

2В, нo cудя пo жaлoбaм нaрoдa, oн coздaeт бoльшe xлoпoт, чeм пoльзы.

Дoпуcтим этoт мoдуль у вac ужe coбрaн, a вмecтo диoдa впaянa пeрeмычкa, пocкoльку мы нe coбирaeмcя пoдaвaть нa нeгo нaпряжeниe 5В, a будeм питaть eгo нaпрямую oт литиeвoгo aккумулятoрa, чтo уклaдывaeтcя в прeдeлы дoпуcтимыx нaпряжeний 3.3-4.2В.

Нaдo будeт eгo кaк-тo eщe пoдключить к кoмпьютeру, и прoвeрить нa рaбoтocпocoбнocть. Для этoгo cлучaя лучшe зaрaнee прикупить ceбe USB-TTL-кoнвeртeр нa CP2102 — пocрeдcтвoм нeгo мы будeм oбщaтьcя c мoдулeм и плaтaми Arduino пo пocлeдoвaтeльнoму интeрфeйcу UART (USART).

Пoдключeниe пoкaзaнo нижe нa кaртинкe (нaриcoвaл, кaк умeю): TX мoдeмa >>> RX кoнвeртeрa RX мoдeмa

Источник: http://musku.ru/energoeffektivnaya-gsm-signalizatsiya-na-osnove-arduino-sborka-proshivka-test/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}