SIM800L и Arduino: подключение GSM-модуля, питание 4 В, отправка СМС AT-командами
SIM800L — модуль сотовой связи размером с монету: сим-карта, антенна, и Arduino умеет звонить, отправлять СМС и ходить в интернет по GPRS там, где ловит обычный телефон. Сигнализация с СМС на телефон, датчик на даче без Wi-Fi, управление котлом по сообщению — всё это он.
Половина вопросов про SIM800L — про питание, и они заслужены. Модулю нужно от 3,7 до 4,2 В и до двух ампер в момент регистрации в сети. Вывод 5V Arduino не подходит ни по напряжению, ни по току. Нужен отдельный источник: литиевый аккумулятор или понижающий модуль на 4 В с конденсатором.
Схема подключения
Распиновка
| Провод | Куда и зачем |
|---|---|
| VCC | 3,7–4,2 В, до 2 А в пиках. Не от Arduino. |
| GND | Земля, общая с платой. |
| RXD | Приём команд от платы. |
| TXD | Ответы модуля. |
| RST | Сброс, активный ноль. Обычно не подключают. |
| NET | Выход на светодиод сети: есть на плате. |
| RING | Низкий уровень при входящем звонке или СМС. |
| DTR | Пробуждение из спящего режима. |
| MIC±, SPK± | Микрофон и динамик для голосовых звонков. |
Характеристики
- Сети
- GSM 850/900/1800/1900, 2G
- Питание
- 3,4–4,4 В, оптимально 4,0
- Ток
- до 2 А в пиках, 20 мА в покое
- Логика
- 2,8 В, терпит 5 В на входе
- Интерфейс
- UART, 9600 или автоопределение
- Сим-карта
- micro-SIM, только 2G
Светодиод и регистрация в сети
Красный светодиод рядом с антенной мигает по-разному, и это единственная диагностика без монитора порта. Раз в секунду — ищет сеть. Раз в три секунды — зарегистрировался, можно работать. Часто, дважды в секунду — есть GPRS-соединение. Не мигает вообще — нет питания или модуль в сбросе.
Если мигает раз в секунду минуту и дольше — не хватает питания в момент регистрации либо сим-карта не 2G. Операторы отключают 2G постепенно; убедитесь, что у вашего он ещё есть.
Библиотека
не нужна— Модуль управляется AT-командами через SoftwareSerial. Библиотеки TinyGSM и Sim800L упрощают, но для СМС хватает трёх команд.
Готовый скетч
#include <SoftwareSerial.h>
SoftwareSerial gsm(2, 3); // RX платы ← TXD модуля, TX платы → RXD модуля
const char* PHONE = "+79001234567"; // ваш номер
void sendCommand(const char* cmd, unsigned long waitMs) {
gsm.println(cmd);
unsigned long start = millis();
while (millis() - start < waitMs) {
while (gsm.available()) Serial.write(gsm.read()); // ответ модуля в монитор
}
}
void setup() {
Serial.begin(9600);
gsm.begin(9600);
delay(3000); // модулю нужно время после подачи питания
sendCommand("AT", 500); // отвечает OK — связь есть
sendCommand("AT+CMGF=1", 500); // текстовый режим СМС
gsm.print("AT+CMGS=\"");
gsm.print(PHONE);
gsm.println("\"");
delay(500);
gsm.print("Privet ot Arduino"); // текст; кириллица требует UCS2-кодировки
gsm.write(26); // Ctrl+Z — отправить
sendCommand("", 5000);
}
void loop() {
// пробрасываем монитор порта в модуль: можно набирать AT-команды руками
if (Serial.available()) gsm.write(Serial.read());
if (gsm.available()) Serial.write(gsm.read());
}Скетч собирается arduino-cli под Arduino UNO
После setup скетч превращается в терминал: наберите AT+CSQ в мониторе порта — модуль ответит уровнем сигнала.
Частые ошибки
Модуль перезагружается при попытке отправить
Питание. Два ампера в пике — это аккумулятор 18650 или понижающий модуль на 4 В с электролитом 1000 мкФ и выше на выводах VCC и GND. От 5V Arduino не работает и не заработает.
Подключил к 5 В — умер
Предел 4,4 В. Модуль без стабилизатора; версия на плате с красным стабилизатором терпит 5 В, эта — нет.
На AT не отвечает
Перепутаны RX и TX — самая частая причина. Или скорость: некоторые прошивки стартуют на 115200, попробуйте её.
Мигает раз в секунду и не регистрируется
Сим-карта без 2G, заблокирован PIN-код, плохой сигнал или проседает питание в момент регистрации. По порядку: снять PIN в телефоне, вынести антенну к окну, добавить конденсатор.
СМС отправляется, но приходит абракадабра
Кириллица. В текстовом режиме модуль шлёт латиницу; для русского переключают кодировку AT+CSCS="UCS2" и кодируют текст в hex.
Что понадобится
- Модуль SIM800L с антенной
- Понижающий модуль на 4 В или аккумулятор 18650 с держателем
- Электролитический конденсатор 1000 мкФ
- Сим-карта с поддержкой 2G
- Arduino UNO
- Провода «папа-мама»