Содержимое курса
Введение
Знакомство с Умным домом и средой разработки
0/3
УМНЫЙ ДОМ на Марсе \ МАРС-1

Когда вы с доктором Луми возвращаетесь домой с пляжа, вы устали.

Вы сидите вместе в гостиной и наслаждаетесь теплой, уютной атмосферой. Послевкусие морского бриза все еще пульсирует в вашем сердце, и ваши мысли начинают дрейфовать.

Вы молча смотрите на дверь дома Луми, ваши глаза полны размышлений и ожиданий. Вас осеняет новая идея, и вы медленно произносите: «Доктор Луми, я подумал, нельзя ли сделать так, чтобы ключ автоматически открывал дверь после идентификации карты».

Доктор Луми на мгновение задумалась, а затем тихо ответила: «Конечно, мы можем. Сначала нам нужно изменить структуру двери и написать программу, которая будет открывать ее автоматически».

Вы улыбаетесь, киваете и решаете вместе опробовать эту новую идею. Вы начинаете изменять структуру ворот Дома Луми, настраивая движение двери с помощью простой механической конструкции под названием «рейка и шестерня».
Рисунок27

Доктор Луми сообщает вам, что на этот раз используется сервомодуль

SG90.

«Что это такое?» — спрашиваете вы, недоумевая.

Доктор Луми открыл голограмму и указал на изображение. «Вы можете обратиться к нему для ознакомления с сервомодулем SG90 модулем».

Серводвигатель SG90

Основная структура сервомотора показана на следующем рисунке. В основном он состоит из нескольких частей: корпуса, вариатора, двигателя, регулируемого потенциометра, платы управления и рулевого колеса.

Принцип работы заключается в том, что плата управления получает управляющий сигнал от источника сигнала и приводит двигатель во вращение; набор шестерен уменьшает скорость двигателя во много раз и увеличивает выходной крутящий момент двигателя в соответствующее время, а затем выводит; потенциометр и последняя ступень группы шестерен вращаются вместе, чтобы измерить угол поворота вала сервопривода; печатная плата обнаруживает и оценивает угол поворота рулевой передачи в соответствии с потенциометром, а затем управляет рулевой передачей, чтобы повернуть на заданный угол или остаться на заданном угле.

Снимок экрана 2025 08 04 163429

Процесс работы выглядит следующим образом: управляющий сигнал → плата управления → вращение двигателя → замедление вращения зубчатой передачи → вращение рулевого колеса → потенциометр обратной связи по положению → обратная связь с платой управления

«Обратите внимание, что перед использованием сервомодуль SG90 необходимо откалибровать, иначе можно легко повредить сервопривод», — говорит доктор Луми.

Вы спросите: «Как откалибровать сервомодуль?»

«Не волнуйтесь», — объясняет доктор Луми. «Я упростил процесс, и он будет автоматически откалиброван после загрузки программы».

Вы киваете головой в знак понимания, а затем спрашиваете: «Как запрограммировать карту на открытие двери?»

«Вы можете обратиться к этому коду, — терпеливо сказал доктор Луми.

#include <MFRC522_I2C.h> //вызов библиотеки RFID #include <ESP32Servo.h> //вызов библиотеки сервопривода MFRC522              mfrc522(0x28);

//конфигурируем адрес RFID

String rfid_str= «»; //определяем переменную типа string для чтения номера карты Servo servo_18; //конфигурируем контакты сервопривода

const int door_close = 5; //определите угол поворота сервопривода двери для закрытия двери, который может быть изменен в зависимости от реальной ситуации

const int door_open= 100; //определите угол наклона сервопривода двери для открытия двери, он может быть изменен в зависимости от реальной ситуации

void setup() {

Serial.begin(115200); //инициализируем последовательный порт, смотрим номер карты, используемой для Wire.begin(); //инициализируем последовательный порт i2c mfrc522.PCD_Init(); //инициализация RFID модуля

servo_18.attach(18, 500, 2500); //инициализация сервоприводов

servo_18.write(door_close); //дайте сервоприводу повернуться в исходное положение delay(500); //дождитесь окончания поворота сервопривода

}

void loop() {

if (!mfrc522.PICC_IsNewCardPresent()|| !mfrc522.PICC_ReadCardSerial()) {

//если новая карта не присутствует или если не удалось считать серийный номер карты delay(50);

return; //возвращаемся в основную программу и начинаем сначала

}

rfid_str= «»; //сначала очистите переменную номера считанной карты for (byte i = 0; i < mfrc522.uid.size; i++) {

rfid_str= rfid_str+ String(mfrc522.uid.uidByte[i], HEX);

} // сохраняем номер карты дословно в строковой переменной rfid_str Serial.print(«UID: «);

Serial.println(rfid_str); servo_18.write(door_open);

//открываем дверь delay(2000); //выжидаем две секунды, можно изменить

servo_18.write(door_close); //закрыть дверь

}

Вы можете нажать на гиперссылку, чтобы открыть программу: нажмите, чтобы получить программу открытия двери RFID.

После завершения загрузки программы сервопривод будет сначала откалиброван. После калибровки сервопривод будет находиться в статическом состоянии. В это время необходимо закрыть акриловую дверь, а затем вручную установить акриловую шестеренку на сервопривод.

Рисунок28

Наконец, когда все готово, можно провести первый долгожданный тест. Вы берете ключ-карту и осторожно подносите к RFID-модулю на двери.

RFID-модуль сразу же почувствовал сигнал от карты-ключа, быстро запустил программу, и дверь открылась.
Рисунок29

Вы и доктор Луми в восторге от этого момента.