Краудфаундинг проект «Noorik» — Open source GSM модуль для автоматических ворот

Осторожно: Made in Podolsk


Меня зовут Вячеслав Голицын. Я хочу доработать GSM-модуль для автоматических ворот и ищу единомышленников. Это краткая история разработки модуля и дальнейшие планы развития. Open source проект в котором Вы можете принять участие. После газонокосилки, снегоуборщика и подводной лодки настала пора нового проекта. Прошу под cut →
4c5827fc2a714b56bb64c18700b69382.jpg
Меня зовут Вячеслав Голицын. Я хочу разработать GSM-модуль для автоматических ворот и ищу единомышленников.

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

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

Действующие лица: Я, мой друг, охранник Нурик, автоматические ворота.

Мой друг:  — Привет, Слав! Мы приехали к воротам СНТ.
Я:  — Привет, {имя друга}! Вызови охранника и скажи на охране, что тебе нужно на участок №100.
… минута ожидания…
Мой друг:  — Мне на участок №100.
Нурик:  — Это к Вьячиславу?
Мой друг:  — Да, к Вячеславу.
Нурик:  — Можьна мне трубку. Алльё, ето Нурик! Вьячеслав это к Вам?
Я:  — Да, это ко мне, пропусти, пожалуйста.
Автоматические ворота:  — Вжжжжж… жжжжж… кланц.

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

Я решил поискать среди opensource решений, но быстрый поиск не принес результатов. Это очень странно, потому что, например, при установке автоматических ворот в гаражном кооперативе каждому нужно купить пульт, а при 500 боксах это 500.000 руб. Логичнее вместо пультов использовать телефон и GSM-блок для управления воротами. Следствием всех раздумий стало воплощение подобного решения из минимального возможного количества доступных элементов. С общими затратами до 1.000 руб.

Итогом работы стал прототип на основе Arduino, но вариантов решения было много. При поступлении входящего вызова система определяет наличие абонента в базе. В случае наличия в базе номера телефона, с которого идет взодящий вызов — открывает ворота, которые автоматически закроются через N секунд, при отсутствии препятствий в зоне фотоэлементов. В случае отсутствия такого номера в базе отправляет администратору оповещение. Администратором назначается первый позвонивший абонент после прошивки. Система принимает от администратора команды на добавление и удаление номеров из базы.

d04c26067a894eef990abcc3b661f244.jpg

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

5f38e240c82f4e4692737b0f5e600041.jpg
Наши автоматические откатные ворота снабжены модулем на базе платы ZBX6. Нам нужно соединить к реле контакты 2 и 7 с фото.

Android решение


Первой идей было использовать в качестве блока смартфон, отслуживший свое. В ход пошел мой Samsung galaxy S3. Python для Android, немного магии и получаем решение, которое может общаться с arduino через bluetooth и даже читать SMS. C приемом звонков проблема, а заставлять людей отправлять SMS, т.е. фактически, платить за вход через ворота — это никуда не годится.
Второй идеей с Android было использовать готовое решение в виде Blynk и Arduino SMS, но до рабочего решения было далеко.

Raspberry pi решение


Вторым вариантом была малина. Фишкой Raspberry я вижу возможность поднятия веб-сервера и возможность постить фотки каждой проезжающей машины в твиттер-аккаунт. Да простит меня закон о персональных данных.
b4f18128daa84095909cbda471631e97.jpg
Через веб-интерфейс пользователь нажимает кнопку, которая изменяет значение в определенной ячейки. Скрипт получает данные из mysql запроса. В случае обнаружения в в переменной значения »1» Raspberry включает реле через GPIO. Через модуль pytwitter осуществляется размещение в twitter аккаунт фото с вебкамеры, решение прямо целыми кусками из моей газонокосилки.
Идея оказалась не живучей. У каждого должен быть именно смартфон, интернет на смартфоне и желание всем этим учиться пользоваться.

Решение с Arduino и GSM-модулем


Стоимость большинства GSM-модулей начинается от 1000 руб., но на удивление на просторах чайнета были найдены наборы для сборки за 160 руб. На фото ниже.
65dc3a6b7b224929b705bae805298c2d.jpg

Поверхностный монтаж нескольких элементов и сборка заняли не более 5 мин.
648d4067fcda4d00b65e5594423925e2.jpg

Схема


659172e2aec7420f9073f112b2a2cdbe.jpg

Плата


Сейчас это несколько проводов, Ардуино, реле, блок питания и GSM модуль. Сейчас я просто упаковал этот кусок прототипа в общий корпус привода, но это очень некрасиво, хотя и работает.

Дальнейшей целью является создание платы, на которой уже будет будет:

  • импульсный блок питания;
  • реле с обвязкой;
  • место для установки Arduino и/или ESP-8266;
  • место для установки GSM-модуля;
  • Светодиоды для индикации режима работы;
Скетч arduino
Скетч нужно дорабатывать, грамотная работа с EEPROM для минимизации записи/стирания требует оптимизации скетча, поэтому пока выкладываю первую версию.
#include 
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;
int led = 13;
String val = "";

void setup() {
  delay(2000);  //время на инициализацию модуля
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(9600);  //скорость порта
  Serial.println("GSM tester v1.0");
  mySerial.begin(9600);
  mySerial.println("AT+CLIP=1");  //включаем АОН
  delay(100);
  mySerial.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
  delay(100);
  mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
  delay(100);
}

void loop() {
  if (mySerial.available()) {  //если GSM модуль что-то послал нам, то
    while (mySerial.available()) {  //сохраняем входную строку в переменную val
      ch = mySerial.read();
      val += char(ch);
      delay(10);
    }
    if (val.indexOf("RING") > -1) {  //если звонок обнаружен, то проверяем номер
      if (val.indexOf("71234567890") > -1) {  //если номер звонящего наш. Укажите свой номер без "+"
        Serial.println("--- MASTER RING DETECTED ---");
        mySerial.println("ATH0");  //разрываем связь
        digitalWrite(led, HIGH);  //включаем реле на 3 сек
        delay(3000);
        digitalWrite(led, LOW);  //выключаем реле
      }
    } else
      Serial.println(val);  //печатаем в монитор порта пришедшую строку
    val = "";
  }
  if (Serial.available()) {  //если в мониторе порта ввели что-то
    while (Serial.available()) {  //сохраняем строку в переменную val
      ch = Serial.read();
      val += char(ch);
      delay(10);
    }
    //mySerial.println(val);  //передача всех команд, набранных в мониторе порта в GSM модуль
    if (val.indexOf("sendsms") > -1) {  //если увидели команду отправки СМС
      sms(String("hello world"), String("+71234567890"));  //отправляем СМС на номер +71234567890
    }
    val = "";  //очищаем
  }
}

void sms(String text, String phone)  //процедура отправки СМС
{
  Serial.println("SMS send started");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(500);
  mySerial.print(text);
  delay(500);
  mySerial.print((char)26);
  delay(500);
  Serial.println("SMS send complete");
  delay(2000);
}


Системные коды


  • ADD 79267777777 — добавление номера в базу;
  • DEL 79267777777 — удаление номера из базы;

Видео


Планы

Планы для версии 1.0


  • Разработка платы для подключения готовых модулей;
  • Подключение к плате Bluetooth;
  • Разработка приложения для Andoid и IOS;
  • Разработка версии на ESP-8266;

Планы для версии 2.0


  • Версия-шильд для OrangePi;
  • Поднятие веб-сервера и подключение к интернету;
  • Реализация клиент-серверной модели для удаленного управления через интернет;
  • Добавить возможность подключения камер для информировании;
  • Распознавание номерных знаков автомобилей.

Не краудфандингом единым


Как и многие из Вас мысли о краудфандинге не дают покоя моей буйной душе. Очень хочется попробовать сделать что-то вместе, силой сообщества. Данный проект я делаю во-первых для себя, потому что я ощущаю в этом необходимости. Так же я планирую сделать продукт, который поможет сделать жизнь удобнее без больших финансовых затрат.

Цель этого поста — получение обратной реакции и привлечение сообщества к проекту. Я запустил на Planeta.ru краудфаундиговый проект Noorik, чтобы оценить необходимость такой разработки. Если Вы готовы принять участие в проект — я всегда на связи в VK.

Проект ощущает острую потребность:

  • Разработка приложения для Android и IOS;
  • Проектирование платы;
  • Доработка Android скетча;

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

Noorik


Основную информацию буду публиковать на GT по мере накопления, если будет интерес с Вашей стороны.

Оффтоп: Есть одна китайская сказка. Жил на свете мясник, и у него был нож, который год за годом оставался идеально острым. Когда мясника спрашивали, как ему удается сохранять лезвие в таком состоянии, он отвечал: «Я следую линиям кости. Я не пытаюсь разрезать ее, сломать и вообще хоть как-то ей сопротивляться. Это только испортит нож». В жизни нужно идти вдоль препятствий. Если пытаться их побороть — это только навредит.

К чему я это? Лето продолжается, но теперь я спокойно могу позвонить и ворота откроются для моих друзей.
Спасибо за внимание! Я пошел резать барашка и готовится к шашлыкам.

А у Вас есть выбор: закрыть эту страницу и посмотреть свежие видео про котиков или сделать мир более открытым…

Всех благ!

© Geektimes