GSM контроллер замка на Arduino Uno

Для создания GSM контроллера замка на Arduino Uno вам понадобятся следующие компоненты:

Необходимые компоненты:

  1. Arduino Uno
  2. GSM модуль (например, SIM800L или SIM900)
  3. Реле (для управления замком)
  4. Блок питания (для GSM модуля, если требуется)
  5. Провода для соединений
  6. Замок (электронный или электромагнитный)

Схема подключения:

  1. Подключите GSM модуль к Arduino:

    • TX модуля к RX Arduino
    • RX модуля к TX Arduino
    • GND к GND
    • VCC к 5V (или 3.3V в зависимости от модуля)
  2. Подключите реле к Arduino:

    • Один из выводов реле к цифровому пину Arduino (например, D7)
    • Другой вывод к замку
    • Подключите питание замка к реле.

Arduino Uno
+-------------------+
| |
| +-----------+ |
| | GSM | |
| | Module | |
| | | |
| | VCC ----|---|----> 5V
| | GND ----|---|----> GND
| | TX ----|---|----> RX (Pin 8)
| | RX ----|---|----> TX (Pin 7)
| +-----------+ |
| |
| +-----------+ |
| | Relay | |
| | | |
| | IN ----|---|----> Pin 9
| | GND ----|---|----> GND
| | VCC ----|---|----> 5V
| +-----------+ |
| |
| +-----------+ |
| | Lock | |
| | | |
| | NO ----|---|----> Lock
| | COM ----|---|----> Power Source
| +-----------+ |
| |
+-------------------+

Пример кода:

Вот пример кода для управления звонками:

 

#include

SoftwareSerial gsm(7, 8); // RX, TX для GSM модуля
int relayPin = 9; // Пин для реле

void setup() {
pinMode(relayPin, OUTPUT);
gsm.begin(9600);
Serial.begin(9600);
delay(100);
gsm.println("AT"); // Проверка связи с GSM модулем
delay(100);
gsm.println("AT+CLIP=1"); // Включение идентификации номера
delay(100);
}

void loop() {
if (gsm.available()) {
String message = gsm.readString();
Serial.println(message);

// Проверка на входящий звонок
if (message.indexOf("RING") != -1) {
// Получаем номер звонящего
String callerNumber = getCallerNumber();
Serial.println("Incoming call from: " + callerNumber);

// Проверка номера (например, только разрешенные номера)
if (callerNumber == "+380XXXXXXXXX") { // Замените на разрешенный номер
digitalWrite(relayPin, HIGH); // Открыть замок
delay(5000); // Держать замок открытым 5 секунд
digitalWrite(relayPin, LOW); // Закрыть замок
}

// Отклоняем звонок
gsm.println("ATH"); // Отклонить звонок
delay(100);
}
}
}

String getCallerNumber() {
String number = "";
while (gsm.available()) {
char c = gsm.read();
if (c == '\n') {
break;
}
number += c;
}
int startIndex = number.indexOf('"') + 1;
int endIndex = number.indexOf('"', startIndex);
return number.substring(startIndex, endIndex);
}

Описание кода:

  • AT+CLIP=1: Включает идентификацию номера звонящего.
  • При получении звонка (обнаружение "RING") программа получает номер звонящего.
  • Если номер совпадает с разрешенным, замок открывается на 5 секунд.
  • После этого звонок отклоняется с помощью команды ATH.

Примечания:

  • Замените "+380XXXXXXXXX" на номер, который вы хотите разрешить для управления замком.
  • Убедитесь, что GSM-модуль правильно подключен и имеет активную SIM-карту.
  • Для улучшения безопасности можно добавить дополнительные проверки или использовать более сложные команды.

Додати коментар


Захисний код
Оновити

EcoMonitoring

ЛІЧІЛЬНИК ВІДВІДУВАННЬ

Сьогодні 372
Вчора301
Цього тижня 932
Цей місяць 932
Минулий місяць 9313
За весь час 174274
Ваш IP: 18.220.9.180
Сегодня: 2025-05-03
Пользователей на сайте: 0
Гостей на сайте: 36