Кхм. Так вот. Тут вообще зарегистрировался год назад для поиска решения одного вопроса (Вроде бы решение проблемы с питанием чего-то там но не важно) Недавно решил начать новый проект и тут преподаватель подсказал начать типа свой "блог" как на ютубе ваши АлексГайверы и так далее. Но так как тут новичок то немного познакомлюсь с вами.
Меня звать Николай, 14 лет. Живу на Сахалине, Корсаков, разглашать подробности, тобишь улица, квартира не буду
Вообще, проектами ардуино познакомился от того же АлексГайвера, и досих пор заел на его канале. Тогда лет мне было 12. В школе начали преподавание "робототехники" с помощью конструктора ЛЕГО. Тут начались мои азы в робототехники. Узнал, что такое блочное программирование...
Далее в нашей залу... в нашем городе появился центр по робототехнике, лодостроению, автостроению, аэростроению и робототехнике как Техносфера. Туда я и пошёл, где обитаю по сей день.
Теперь ближе к тематике моего проекта. Мой умный дом реализован на одной пока что ардуино нано. (Есть идея подключить ардуино уно как вспомогательную ну или вторую в выполнении каких-либо целей, например освещение или ещё что либо что скорее всего будет реализовано из-за малого кол-ва портов на нано если не найду шилд, увеличивающий кол-во портов)
Система умного дома будет состоять из:
Сигнализация:
-Ключ доступа
-Лог файл каждого кто заходил через карту доступа
-Открытие двери и окон
-Датчик движения
-Сигналирование светом(Красный) и Звуковой (Зуммер)
-Полное отключение срабатывании других систем(Кроме пожарки), когда сигнализация заблокирована, включение когда сигнализация дала "Добро"
-Освещение
-Освещение в коридоре при срабатывании датчика движения, но при одобрении сигнализацией
-Освещение при посылании сигнала от кнопки
-Освещение туалета при срабатывании датчика движения
-Датчики Углекислого газа, температуры.
-Опрос датчиков каждые 2 минуты
-Срабатывание сигнализационной системы при критических отметках температуры или углекислого газа.
-Уведомление пользователя о критических отметках с датчиков.
-Аварийное отключение всех систем, кроме сигнализации, всё освещение сразу включать.
-Пожарная сигнализация
-Срабатывание системы сигнализировании о пожаре
-Уведомление пользователя о пожареe
-Аварийное отключение света, датчики на постоянный опрос (Каждую секунду)
-Посылка сообщений (Скорее всего через интернет, т.к. GSM модуля на руках нема)
Примерно вот такой план дальнейшей работы. Занятия у меня почти все рабочие дни кроме среды, субботы и воскресенья.
P.S. Надеюсь вы примите меня так сказать в свою "семью", и укажите на мои ошибки (Как и в блоге так и в проекте) которые я обязательно приму и буду исправлять.
День 1-8
Первые два дня заняли на подбор материалов и остальной макулатуры.
Третий день ушёл на изучение модуля RFID RF-522, который будет выполнять роль считывателя карт, и его библиотеки MRFC522.
Четвёртый день ушёл на написание логики и первой версии программы. По логики, первая версия программы будет мигать Зелёным светодиодом при правильной поднесённой карте, а красным когда карты в памяти нет.
Код:
Продолжение будет в следующем сообщении, так как работа всё ещё идёт, а фоток мало. Всем спасибо, пишите свои предложения по улучшению проекта и блога) Всем Добра)
Продолжение:
Часть 2
Меня звать Николай, 14 лет. Живу на Сахалине, Корсаков, разглашать подробности, тобишь улица, квартира не буду
Вообще, проектами ардуино познакомился от того же АлексГайвера, и досих пор заел на его канале. Тогда лет мне было 12. В школе начали преподавание "робототехники" с помощью конструктора ЛЕГО. Тут начались мои азы в робототехники. Узнал, что такое блочное программирование...
Далее в нашей залу... в нашем городе появился центр по робототехнике, лодостроению, автостроению, аэростроению и робототехнике как Техносфера. Туда я и пошёл, где обитаю по сей день.
Теперь ближе к тематике моего проекта. Мой умный дом реализован на одной пока что ардуино нано. (Есть идея подключить ардуино уно как вспомогательную ну или вторую в выполнении каких-либо целей, например освещение или ещё что либо что скорее всего будет реализовано из-за малого кол-ва портов на нано если не найду шилд, увеличивающий кол-во портов)
Система умного дома будет состоять из:
Сигнализация:
-Ключ доступа
-Лог файл каждого кто заходил через карту доступа
-Открытие двери и окон
-Датчик движения
-Сигналирование светом(Красный) и Звуковой (Зуммер)
-Полное отключение срабатывании других систем(Кроме пожарки), когда сигнализация заблокирована, включение когда сигнализация дала "Добро"
-Освещение
-Освещение в коридоре при срабатывании датчика движения, но при одобрении сигнализацией
-Освещение при посылании сигнала от кнопки
-Освещение туалета при срабатывании датчика движения
-Датчики Углекислого газа, температуры.
-Опрос датчиков каждые 2 минуты
-Срабатывание сигнализационной системы при критических отметках температуры или углекислого газа.
-Уведомление пользователя о критических отметках с датчиков.
-Аварийное отключение всех систем, кроме сигнализации, всё освещение сразу включать.
-Пожарная сигнализация
-Срабатывание системы сигнализировании о пожаре
-Уведомление пользователя о пожареe
-Аварийное отключение света, датчики на постоянный опрос (Каждую секунду)
-Посылка сообщений (Скорее всего через интернет, т.к. GSM модуля на руках нема)
Примерно вот такой план дальнейшей работы. Занятия у меня почти все рабочие дни кроме среды, субботы и воскресенья.
P.S. Надеюсь вы примите меня так сказать в свою "семью", и укажите на мои ошибки (Как и в блоге так и в проекте) которые я обязательно приму и буду исправлять.
День 1-8
Первые два дня заняли на подбор материалов и остальной макулатуры.
Третий день ушёл на изучение модуля RFID RF-522, который будет выполнять роль считывателя карт, и его библиотеки MRFC522.
Четвёртый день ушёл на написание логики и первой версии программы. По логики, первая версия программы будет мигать Зелёным светодиодом при правильной поднесённой карте, а красным когда карты в памяти нет.
Код:
C++:
#include <SPI.h>
#include <MFRC522.h>
const int SS_PIN = 10; // SS вывод модуля RC522
const int RST_PIN = 9; // RST вывод модуля RC522
const int SVET_RED = 5;
const int SVET_GREEN = 7;
const int BUZZER = 6;
char* keys[]={"146 122 32 55"}; // ,
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(SVET_RED, OUTPUT);
pinMode(SVET_GREEN, OUTPUT);
pinMode(BUZZER, OUTPUT);
for(int b=0; b < 20; b++) {
digitalWrite(SVET_RED, HIGH);
digitalWrite(SVET_GREEN, HIGH);
delay(100);
digitalWrite(SVET_GREEN, LOW);
digitalWrite(SVET_RED, LOW);
Serial.println("LOADING...");
delay(100);
}
delay(1000);
digitalWrite(BUZZER, HIGH);
Serial.println("LOADING COMPLETED");
delay(550);
digitalWrite(SVET_RED, HIGH);
digitalWrite(BUZZER, LOW);
Serial.println("Поднесите карту к считывателю");
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()){
return;
}
Serial.print("UID:");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], DEC);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], DEC));
}
Serial.println();
content.toUpperCase();
int x=1;
for (int i = 0; i < sizeof(keys) / sizeof(char *); i++){
if (content.substring(1) == keys[i]){
Serial.println("ACCESS IS ALLOWED");
for(int b=0; b < 20; b++) {
digitalWrite(SVET_RED, LOW);
digitalWrite(SVET_GREEN, HIGH);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(SVET_GREEN, LOW);
digitalWrite(BUZZER, LOW);
delay(100);
}
digitalWrite(SVET_RED, HIGH);
delay(5000);
Serial.println("Поднесите карту к считывателю");
digitalWrite(SVET_GREEN, HIGH);
delay(100);
digitalWrite(SVET_GREEN, LOW);
for(int j=0; j < 10; j++) {
digitalWrite(SVET_GREEN, HIGH);
delay(100);
digitalWrite(SVET_GREEN, LOW);
delay(100);
}
return;
}
else x=0;
}
if(x==0){
Serial.println("ACCESS DENIED");
digitalWrite(BUZZER, HIGH);
delay(5000);
digitalWrite(BUZZER, LOW);
for(int b=0; b < 20; b++) {
digitalWrite(SVET_GREEN, LOW);
digitalWrite(SVET_RED, HIGH);
delay(100);
digitalWrite(SVET_RED, LOW);
delay(100);
}
digitalWrite(SVET_RED, HIGH);
delay(5000);
Serial.println("Поднесите карту к считывателю");
for(int j=0; j < 10; j++) {
digitalWrite(SVET_GREEN, HIGH);
delay(100);
digitalWrite(SVET_GREEN, LOW);
delay(100);
}
}
}
Продолжение:
Часть 2
Изменено: