Для создания GSM контроллера замка на Arduino Uno вам понадобятся следующие компоненты:
Необходимые компоненты:
- Arduino Uno
- GSM модуль (например, SIM800L или SIM900)
- Реле (для управления замком)
- Блок питания (для GSM модуля, если требуется)
- Провода для соединений
- Замок (электронный или электромагнитный)
Схема подключения:
-
Подключите GSM модуль к Arduino:
- TX модуля к RX Arduino
- RX модуля к TX Arduino
- GND к GND
- VCC к 5V (или 3.3V в зависимости от модуля)
-
Подключите реле к 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-карту.
- Для улучшения безопасности можно добавить дополнительные проверки или использовать более сложные команды.