RSS блога
Подписка
GSM модем SIM800L V2.0 Первый взгляд
- Цена: 8.4$
- Перейти в магазин
«Мне надо дистанционно открывать дверь. Вернее, отключать магнит, который держит дверь...» Вот такая неожиданная просьба, причем речь изначально шла о gsm модеме, не то чтобы я знал все подробности, но на вопрос как сделать простейший выключатель решил ответить обзором. Буквально 5-7 строчек кода и все дела.
Как и где модуль покупался я уже не помню, но специально нашел самую низкую цену при высоком рейтинге продавца.
Чем примечательна именно данная версия модема:
1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений.
2. Отличная внешняя антенна
3. Маленькие размеры 40х28 мм
4. Отверстия под крепление!!! Не всегда и не везде их делают
5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем.
По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел.
Подключение:
5В модуля на 5В ардуино
GND на GND
TXD на 2 вывод ардуино
RXD на 3 вывод ардуино
VDD не задействован
RST не задействован
После подключения библиотеки открыл пример:
Собрал все воедино и прошил
Вот пара моментов, на которые можно обратить внимание:
gsm.readSMS(smsbuffer, 160, n, 20)
smsbuffer — массив символов формата char с смс сообщением
n — номер телефона
соответственно, чтобы не выводить свой номер телефона в терминал я закомментировал строку // Serial.println(n);
Если модем поймал сеть, то светодиодный индикатор на модеме мигает примерно раз в 3 секунды, на после прошивки в терминале вы увидите надпись status=READY
Далее я отправил на номер сим карты в модеме (кстати не забудьте ее поставить!) смс с текстом «Hello»
Попробовал раскомментировать следующие строки, вбил свой номер и отправил смс уже себе на телефон
Одним словом все работает замечательно, теперь к открытию двери путем отправки смс. Собственно ничего сложного, для проверки будем использовать светодиод на 13 контакте ардуино (будем им мигать через смс) и добавляем пару строчек кода.
Попробовал — все отлично работает, позже подключил реле на 13 вывод ардуино — все отлично переключается
Но для обзора это как-то хреновенько, да и сомневаюсь я, что человек будет рад отправлять по одной букве, а вот сообщения типа on-off подошли бы как нельзя лучше
Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет.
В зависимости от того что спросившему человеку нужно, можно сделать список команд, например отключить на 10 секунд замок, отключить до следующей команды и т.д… Ну и можно сделать на 3d принтере корпус для всего этого, а питать лучше от сети к которой подключен электрический замок.
P.S. Модем мне понравился, все его плюсы относительно его собратьев я перечислил выше. + я надеюсь мой опыт вам пригодится.
Как и где модуль покупался я уже не помню, но специально нашел самую низкую цену при высоком рейтинге продавца.
Внешний вид
Чем примечательна именно данная версия модема:
1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений.
2. Отличная внешняя антенна
3. Маленькие размеры 40х28 мм
4. Отверстия под крепление!!! Не всегда и не везде их делают
5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем.
По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел.
Подключение:
5В модуля на 5В ардуино
GND на GND
TXD на 2 вывод ардуино
RXD на 3 вывод ардуино
VDD не задействован
RST не задействован
После подключения библиотеки открыл пример:
Собрал все воедино и прошил
Вот пара моментов, на которые можно обратить внимание:
gsm.readSMS(smsbuffer, 160, n, 20)
smsbuffer — массив символов формата char с смс сообщением
n — номер телефона
соответственно, чтобы не выводить свой номер телефона в терминал я закомментировал строку // Serial.println(n);
Если модем поймал сеть, то светодиодный индикатор на модеме мигает примерно раз в 3 секунды, на после прошивки в терминале вы увидите надпись status=READY
Далее я отправил на номер сим карты в модеме (кстати не забудьте ее поставить!) смс с текстом «Hello»
Попробовал раскомментировать следующие строки, вбил свой номер и отправил смс уже себе на телефон
Одним словом все работает замечательно, теперь к открытию двери путем отправки смс. Собственно ничего сложного, для проверки будем использовать светодиод на 13 контакте ардуино (будем им мигать через смс) и добавляем пару строчек кода.
Что добавится к примеру:
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
void setup()
{
pinMode(13, OUTPUT);//Вывод, на котором установлен диод
digitalWrite(13, LOW); //Выключаем диод
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
//Enable this two lines if you want to send an SMS.
//if (sms.SendSMS("3471234567", "Arduino SMS"))
//Serial.println("\nSMS sent OK");
}
};
void loop()
{
if(started){
//Read if there are messages on SIM card and print them.
if(gsm.readSMS(smsbuffer, 160, n, 20))
{
//Serial.println(n);
Serial.println(smsbuffer);
if (smsbuffer[0]=='f') //если первая буква смс f
{digitalWrite(13, LOW);} //выключаем диод
if (smsbuffer[0]=='o') //если первая буква смс o
{digitalWrite(13, HIGH);}//включаем диод
//туда можно написать любой симфол на латиннице, с русским шрифтом не дружит
}
delay(1000);
}
};
Попробовал — все отлично работает, позже подключил реле на 13 вывод ардуино — все отлично переключается
Но для обзора это как-то хреновенько, да и сомневаюсь я, что человек будет рад отправлять по одной букве, а вот сообщения типа on-off подошли бы как нельзя лучше
Код примитивный, но рабочий
Не спешите кидать тапки, потом я спросил у программиста КАК?! сделать лучше.
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char mes1[2]={'O','n'}; //сообщения, которые ждем
char mes2[3]={'O','f','f'};
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
}
};
void loop()
{
if(started){
//Read if there are messages on SIM card and print them.
if(gsm.readSMS(smsbuffer, 160, n, 20))
{
Serial.println(smsbuffer);
int b=0;
int c=0;
for (int i=0;i<2;i++)
{
if (smsbuffer[i]==mes1[i])
{b++;}
if(b==2){digitalWrite(13, HIGH);}
}
for (int i=0;i<3;i++)
{
if (smsbuffer[i]==mes2[i])
{c++;}
if(c==3){digitalWrite(13, LOW);}
}
}
delay(1000);
}
};
Код как он должен быть
Это последняя эволюция кода с подключением библиотеки string.h
#include <string.h>
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char mes1[]="On\r"; //сообщения, которые ждем
char mes2[]="Off\r";
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
}
};
void loop()
{
if(started){
//Read if there are messages on SIM card and print them.
if(gsm.readSMS(smsbuffer, 160, n, 20))
{
Serial.println(smsbuffer);
if(strcmp(smsbuffer, mes1) == 0){
digitalWrite(13, HIGH);
}
if(strcmp(smsbuffer, mes2) == 0){
digitalWrite(13, LOW);
}
}
delay(1000);
}
};
Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет.
В зависимости от того что спросившему человеку нужно, можно сделать список команд, например отключить на 10 секунд замок, отключить до следующей команды и т.д… Ну и можно сделать на 3d принтере корпус для всего этого, а питать лучше от сети к которой подключен электрический замок.
P.S. Модем мне понравился, все его плюсы относительно его собратьев я перечислил выше. + я надеюсь мой опыт вам пригодится.
Самые обсуждаемые обзоры
+69 |
3287
133
|
+50 |
3523
66
|
+28 |
2487
47
|
+37 |
2797
40
|
+55 |
2022
37
|
Но у вас на фото не видно маркировки именно этой микросхемки. И с обратной стороны как раз в этом месте кондеров собрано несколько, включая тантал, что тоже похоже на схемы питания.
На A2SHB между GSM-модулем и гребенкой контактов — наверное, согласователь уровней.
А больше там ничего интересного :) Конденсаторы, резисторы, пара диодов да светодиоды.
Так что если маркировку на 6-ногой микре рассмотрите — то будет ясно.
А потребление мультиметром можно померить в режиме измерения тока в разрыв цепи питания модуля.
В общем-то, был неправ. R5 — это «Диодная сборка из пяти защитных диодов» и относится к сим-карте.
А питание устроено на паре диодов последовательно, которые и обеспечивают падение напряжения.
Как-то так…
Очень удобно.
Как-то так, где-то 4-й пункт инструкции:
http://static.mts.ru/uploadmsk/contents/1682/instruction_black_list_for_users_042015.pdf
И не со двора — с садовых участков.
Но в любом случае, зимой там десять с половиной человек из трехсот.
Единственное, что может доконать простую Nokia 3310 — это глубокая заморозка АКБ. Если аппарат будет воткнут в сеть в помещении с плюсовой температурой — проработает год без вмешательства.
m.youtube.com/watch?v=wjv-9t7TO3U
Сейчас не могу это видео сам посмотреть.
Что можно сделать, может команду какую дать, на другого оператора он не может перейти оч дорого получается.
Если же решение «для дома, для семьи» (или для небольшого отдела на работе), то список номеров меняется редко, можно и перепрошивать девайс.
P.S. В flash памяти тоже ничего если readonly и поправляется только прошивкой.
а в том листинге что был представляет (версия ПО данного изделия) никакого интерфейса не предусмотрено. например можно сделать команду add_t xxxxxxxxxxx, добавить в список разрешенных номер, или del_t xxxxxxx. удалить номер. в такой версии можно было бы написать инструкцию, а где там что хранить, решает программист.
Спасибо за обзор! Плюс.
А проще всего его разглядеть при входе в подъезд, если подъезд оборудован домофоном.
на подъезд такое не ставят. Но на офисные двери очень даже)
А если серьезно, то в важных местах (на входной двери, например) я бы использовал замок электромеханический (то есть, считайте, обычный замок с личинкой под ключ, но с электроприводом внутри, который как раз может открыть замок по команде с микроконтроллера). Это, как мне кажется, безопаснее и надежнее электромагнитного замка. И в случае отсутствия электроэнергии замок не теряет своих основных свойств.
Электромагнитные у нас на подъезде народ рывком открывает, увы (да, не перевелись еще богатыри на земле русской… правда непонятно, зачем они силушку на такое расходуют...).
Но все зависит от задачи.
При потере — всё равно новый телефон покупать и симку (номер) восстанавливать, хоть на изготовлении дубликата ключа можно 100р сэкономить.
Три часа ночи, целый час кого-то ищешь с телефоном, а затем ему типа «Слышь мужик, позвони мне домой, чтобы мне дверь открыли!..» )))))
Телефон иногда забываю дома, особенно летом.
А вот ключи не забываю, потому что если даже в кармане не оказалось вязки, то возращаешься домой, чтобы ключом закрыть дверь. И да, у меня на входной двери (калитка) установлен електромеханический. Почему интересует открытие замка телефоном — часто бывает, что руки заняты когда подходишь к двери, а так набрал команду, вышел с машины с пакетами, пнул дверь и готово!..
И если всё же телефон где-то забыли — это лучше чем забыть ключ (с точки зрения открывания двери), т.к. за ключом вам только возвращаться. а с телефоном — всё же есть шанс кого-то попросить позвонить.
Заказал за 4,40$ тут: https://aliexpress.com/item/item/Smallest-SIM800L-GPRS-GSM-Module-MicroSIM-Card-Core-BOard-Quad-band-TTL-Serial-Port/32286088224.html
+ первая версия платки немного устарела, эта намного удобнее для новичков вроде меня, да и стаб на ардуине амперный, этого для смс выше крыши.
> а значит около 10% емкости аккумулятора вы вообще никогда не увидите
Ну, это ужас-ужас, конечно…
«не гонялся бы ты поп за дешевизной»
Как можно реализовать питание моего модуля от Arduino uno?
Питать требуется в «поле» от акб и солнечных батарей.
Отправлять по gprs минимальные пакеты по 1кб вкл/выкл, или уводить в сон для экономии.
https://aliexpress.com/item/item/Smallest-SIM800L-GPRS-GSM-Module-MicroSIM-Card-Core-BOard-Quad-band-TTL-Serial-Port/32284560394.html
(Ebay отпадает, т.к. я из Казахстана а виртуальная QIWI карта регистрируется в России… — короче с ebay не предлагать)
*Самая дешевая цена, которую удалось найти на али $24.48 (с бесплатной доставкой в Казахстан)
Вторая проблема — модуль очень легко может зависнуть. Особенно если у вас там близко мощный электромагнит коммутируется. Еще плохо, что у всех этих модулей RESET не выведен наружу. Так что я бы рекомендовал, все же, использовать внешний DC-DC со входом SHUTDOWN, через который можно было его отключать при помощи ардуины.
1А — это маловато. Видимо, у вас GSM1800 и хороший уровень сигнала в доме.
Производитель все же настаивает на 2А:
4.1. Power Supply
The power supply range of SIM800 is from 3.4V to 4.4V. Recommended voltage is 4.0V. The transmitting burst
will cause voltage drop and the power supply must be able to provide sufficient current up to 2A.
Наверное что то написал и сам не понял, что… (натыкался на информацию, что по gprs если отправлять неким образом, без подтверждения о получении расход трафика значительно уменьшается)
Вся задача заключается в следующем, есть оператор с бесплатным трафиком 2Мб\сутки и округлением тарификации 1Кб. Хочу наладить удаленный мониторинг.
Заранее спасибо.
So total size of empty TCP datagram — 24 + 20 + 20 = 64 bytes
Size of UDP header — 8 bytes
So total size of empty UDP datagram — 24 + 20 + 8 = 52 bytes
Если без подтверждения — то UDP
т.е. пакет будет 102 байта. Насчет округления — это касается вопросов выключения/включения gprs. Если не отключать — то так и будет. Если каждый раз включать интеренет, отправлять 50байт и отключать — будет 1кб на посылку
Искал именно этот ответ, т.е. получается если вкл\выкл интернет, то особо экономить на методе UDP не стоит? И 2 Мб грубо должно хватить на 2048 пакетов?
P\S как мне не хватает таких людей как Вы в Казахстане, с кем можно было бы просто сесть и в захватывающей беседе поговорить о идеях…
Если да, то как это выглядит в терминале? Другими словами есть в библиотеке функции работы со звонками?
Может ли определять номер звонящего?
Ах да, пробовал уже и gsm.h родной, и AT-командами через softwareserial — один хрен.
Похорошему, надо читать мануал по АТ командам и проверять библиотеки. Возможно, конкретная версия модуля слегка отличается (сравнил с фотками в обзоре, компоновка чуть другая, пишет что версия 14.8). Но если честно, уже жаль потраченного времени на этот кусок г… Проще и дешевле купить готовое устройство.
AT+CMGF=1
OK
AT+IFC=1, 1
OK
AT+CB
На этом процесс установочных комманд закончен. В чем кроется ответ ума не приложу. Менял преобразователь не помогло. Может кто сталкивался?
VDD — если управляющие сигналы 3.3 вольта — подключается к 3.3V, если 5 вольт — подключается к 5V питания.
Отличный модуль, подключен и питается непосредственно от UNO, принимает, отправляет, звонит без проблем. Ваши скетчи очень помогли, спасибо!
А теперь вопрос:
у этой модификации SIM800L совершенно точно есть голосовые функции — телефон и микрофон: но как к ним получить доступ? Куда и как подключаться? Может быть, Вы и/или Ваши товарищи смогут подсказать — было бы здорово…
если у кого светодиода под рукой не нашлось то можно светить с платы:
//pinMode(13, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
// digitalWrite(13, HIGH);
digitalWrite(LED_BUILTIN, HIGH);
//digitalWrite(13, LOW);
digitalWrite(LED_BUILTIN, LOW);