Подключение SIM800L к Arduino: работа с AT-командами через Serial
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino UNO | 1 | |
| Модуль SIM800L (GPRS/GSM) | 1 | Требует 3.4–4.4V, пиковый ток до 2А |
| Диод 1N4007 (или 1N4001) | 1 | Падение напряжения с 5V Arduino до ~4.3V для питания SIM800L |
Инструменты
- Мультиметр (проверка напряжений)
- Макетная плата 170 точек
- Перемычки (Male-Male)
О проекте
SIM800L — компактный и дешёвый модуль для GSM/GPRS связи. В отличие от старых телефонов, он полностью программируется AT-командами с Arduino. Главная сложность — питание: модуль чувствителен к перепадам и требует до 2А тока при передаче. Питание от 5V Arduino через стабилизатор 3.3V Uno **не подходит** (слабый ток). Лучшие варианты: Li-Ion аккумулятор 3.7V прямо на VCC, или DC-DC понижающий преобразователь (buck) на 4.2V 2А+. В данном проекте показан простой вариант с диодом 1N4007 от 5V Arduino — работает для тестов AT-команд, но **не гарантирует стабильную работу при звонках/ГПРС**.
Схема подключения
- Питание SIM800L: Arduino 5V -> анод диода 1N4007 -> катод -> VCC SIM800L. GND Arduino -> GND SIM800L (обязательно общая земля!).
- UART (Serial): Arduino D10 (SoftwareSerial RX) -> TX SIM800L (через делитель 1к/2к на 3.3V). Arduino D11 (SoftwareSerial TX) -> RX SIM800L (можно напрямую, модуль 5V-толерантен на входах, но лучше делитель).
- Сим-карта: вставьте в слот (направление указано на корпусе). Контакты вверх/вниз — см. фото.
Фото схемы и сборки в разделе Schematics / Custom parts.
Проверка работы
- Соберите схему, вставьте сим-карту, подключите Arduino к USB.
- Позвоните на номер сим-карты с другого телефона. Если слышен гудок — модуль зарегистрирован в сети.
- Загрузите скетч (ниже). Откройте **Serial Monitor**, скорость **9600**, режим **Both NL & CR** (или только NL).
- Введите `AT` и нажмите Enter. Ответ должен быть `OK`.
- Теперь можно вводить любые AT-команды: `AT+CSQ` (уровень сигнала), `AT+CCID` (ID сим), `AT+CMGF=1` (текстовый режим SMS), `AT+CMGS="номер"` > текст > Ctrl+Z (отправка SMS) и т.д.
Скетч (прозрачный мост Serial <-> SoftwareSerial)
/*
* Проверка AT-команд для SIM800L
* Автор: iakbasnayaka (setnfix.com)
*/
#include
SoftwareSerial Sim800l(10, 11); // RX, TX Arduino
void setup() {
Serial.begin(9600); // USB Serial Monitor
Sim800l.begin(9600); // UART SIM800L (по умолчанию 9600 или 115200)
delay(1000);
// Можно отправить инициализацию:
// Sim800l.println("AT");
}
void loop() {
// Пересылка данных SIM800L -> Serial Monitor
while (Sim800l.available()) {
Serial.write(Sim800l.read());
}
// Пересылка команд Serial Monitor -> SIM800L
while (Serial.available()) {
Sim800l.write(Serial.read());
}
}
Полезные AT-команды (шпаргалка)
| Команда | Описание |
|---|---|
AT |
Проверка связи (ответ OK) |
AT+CSQ |
Уровень сигнала (0-31, 99=нет) |
AT+CREG? |
Статус регистрации в сети |
AT+CMGF=1 |
Текстовый режим SMS |
AT+CMGS="+7XXXXXXXXXX" |
Отправка SMS (после > вводить текст, завершить Ctrl+Z / 0x1A) |
AT+CMGR=1 |
Чтение SMS из ячейки 1 |
AT+CMGD=1 |
Удаление SMS |
ATD+7XXXXXXXXXX; |
Исходящий звонок (точка с запятой обязательна) |
ATH |
Сброс вызова |
AT+CGATT=1 |
Присоединение к GPRS |
AT+SAPBR=3,1,"APN","internet" |
Настройка APN для GPRS |
Типичные проблемы и решения
- Модуль перезагружается при отправке SMS/звонке: недостаток тока. Решение: Li-Ion 3.7V аккумулятор прямо на VCC (с защитой) или DC-DC 4.2V 2А+ с керамическими конденсаторами 100мкФ+100нФ близко к питанию модуля.
- Не отвечает на AT: проверьте baud rate (по умолчанию 9600 или 115200), перемычки RX/TX, землю, питание.
- Горячий диод 1N4007: ток модуля превышает 1А (диод рассчитан на 1А). Используйте шоттки (1N5819) или, лучше, нормальный источник питания.
- Сим-карта не определяется: проверьте ориентацию, чистота контактов, поддержку 2G (SIM800L только 2G!).
Дальнейшее развитие
- Написать парсер ответов SIM800L в Arduino для автоматической логики (SMS-управление, звонки, HTTP/GPRS).
- Использовать библиотеку
TinyGSMилиSim800Lдля удобной работы. - Добавить спящий режим (AT+CSCLK=1) для экономии энергии.
- Разместить на отдельной плате с нормальным питанием и антенной.
Производственный процесс
- Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3
- Высокоскоростная фотография капель воды на Arduino Nano — DIY-триггер для вспышки
- Умная копилка: управление монетоприёмником на Arduino Nano
- JX Wave Generator — Генератор сигналов на Arduino с DDS AD9833 и OLED-дисплеем
- Подключение Arduino Mega к GPS-модулю NEO‑6M: пошаговое руководство
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
- Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
- Голосовое управление бытовыми приборами: Bluetooth-управление через Google Assistant
- Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python