Защита канала связи

Тема в разделе "Закажу проект", создана пользователем дмитрий333, 8 фев 2017.

  1. Железо:
    GSM модуль SIM900
    Микрофонный модуль Max4466
    Термодатчик DS18B20 TO-92
    Релейный модуль 4х канальный
    инфракрасный модуль HC-SR501
    Геркон
    Ethernet модуль W5500 или ENC28J60
    Датчик дождя

    Вот эти вещи прикрутить (может быть что то ещё добавиться) на
    Uno R3 atmega 328P
    или
    MEGA 2560 R3 REV3 ATMEGA 16U2.

    Тех. задание:
    1. Связь с внешним сервером (или сервером на Ардуино), через Мобильное приложение под Андроид (самое простенькое) + через браузер.

    2. На Ардуино нужно сделать опрос датчиков, а также управление внешними устройствами (реле, лампочки, и т.д.)

    3. Связь с Ардуино, через Ethernet и GSM модуль (резервный канал).
    3.1 Интернет по LAN будет приходить с роутера.
    3.2 На GSM модуле нужно будет запустить GPRS, + SMS оповещение, (о срабатывании события).

    4. Поднять защиту соединения, по средствам того же VPN, либо с помощью чего то другого.

    Железо я купил, от разработчика программа, проверку и отладку можно сделать в виртуальной среде в том же Протеусе, проект могу сам скинуть, можете собрать сами.
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Uno R3 - не хватит памяти и пинов.
     
  3. Я для этого и взял 2560, если и её не хватит то Uno R3 будет в помощь. Придётся 2е связывать.
     
  4. Mestniy

    Mestniy Гуру

  5. Что не так?
     
  6. ИгорьК

    ИгорьК Оракул Модератор

    1. Элементная база.
    2. Техзадание (очень абстрактное).

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

    2. Задание нужно описывать подробно и до конца. "управление внешними устройствами (реле, лампочки, и т.д.)" - к этому возникает слишком много впросов, как и ко многим другим вещам в Вашем сообщении.
     
    ostrov нравится это.
  7. ostrov

    ostrov Гуру

    Сразу полно и правильно описать хотелки могут 10% заказчиков, из остальных приходится тянуть информацию клещами. Что зачастую ставит их в ступор. Думаю вводить наценку за дополнительные расходы времени и сил на извлечение и угадывание желаний.
     
  8. 1. Я не понимаю что из них нужно выжимать.

    2. Алгоритм и принцип работы в ключе "Умного дома" думаю эта тема достаточно распространена.

    Повторить или допилить как проект ниже возможно?
    /*


    ###############################################################
    Smart home

    C by Nikodem Bartnik October 2014

    ###############################################################


    */


    //libraries
    #include "etherShield.h"
    #include "ETHER_28J60.h"
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 2
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);


    static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x01, 0x24}; // this just needs to be unique for your network,
    // so unless you have more than one of these boards
    // connected, you should be fine with this value.

    static uint8_t ip[4] = {192, 168, 0, 101}; // the IP address for your board. Check your home hub
    // to find an IP address not in use and pick that
    // this or 10.0.0.15 are likely formats for an address
    // that will work.

    static uint16_t port = 80; // Use port 80 - the standard for HTTP

    ETHER_28J60 ethernet;
    double tempin;
    double tempout;
    boolean light;
    boolean light2;
    boolean PIR;
    boolean rain;
    int alarm;
    boolean check;







    void setup() {


    delay(200);
    ethernet.setup(mac, ip, port);

    //temperature sensor
    sensors.begin();
    sensors.setWaitForConversion(false);
    sensors.setResolution(12);
    sensors.requestTemperatures();

    // define pins
    pinMode(A0, INPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(3, INPUT);
    pinMode(4, INPUT);
    pinMode(7, INPUT);
    }




    void loop() {

    char* params;
    if (params = ethernet.serviceRequest()) {


    //when you type in browser http://192.168.0.101/all
    if (strcmp(params, "all") == 0){

    sensors.requestTemperatures();
    tempin = sensors.getTempCByIndex(0);
    sensors.requestTemperatures();
    tempout = sensors.getTempCByIndex(1);


    ethernet.print("<center>");
    ethernet.print("<font color='teal'>");
    ethernet.print("<h1>Smart Home</h1>");
    ethernet.print("</font>");
    ethernet.print("<br>");

    ethernet.print("<h2>Temp in: ");
    ethernet.print(tempin);
    ethernet.print("</h2>");

    ethernet.print("<h2>Temp out: ");
    ethernet.print(tempout);
    ethernet.print("</h2>");

    check = true;
    ethernet.print("<h2>Alarm: ");
    ethernet.print(alarm);
    ethernet.print("</h2>");

    ethernet.print("<h2>Rain: ");
    rain = digitalRead(4);
    if(rain==true){
    ethernet.print("NO");
    }
    if(rain==false){
    ethernet.print("YES");
    }
    ethernet.print("</h2>");


    ethernet.print("<h2>Window: ");
    if(digitalRead(7)==HIGH){
    ethernet.print("CLOSE");
    }
    else{
    ethernet.print("OPEN");
    }
    ethernet.print("</h2>");


    ethernet.print("Lamp: ");
    ethernet.print("<a href='light'><button>Lamp</button></a>");


    ethernet.print("<br>");
    ethernet.print("<br>");

    ethernet.print("Instruction how make your smart home: <a href='http://www.instructables.com/member/Nikus/'>link</a>");
    ethernet.print("<br>");
    ethernet.print("C by Nikodem Bartnik");

    ethernet.print("</center>");





    }



    // TEMP IN ********************
    if (strcmp(params, "tempin") == 0){
    sensors.requestTemperatures();
    tempin = sensors.getTempCByIndex(0)*100;
    ethernet.print(tempin); // print temperature in on ethernet
    }


    // TEMP OUT *******************
    if (strcmp(params, "tempout") == 0){
    sensors.requestTemperatures();
    tempout = sensors.getTempCByIndex(1)*100;
    ethernet.print(tempout); // print temperature out on ethernet
    }



    // ALARM **********************
    if (strcmp(params, "alarm") == 0){

    check = true;

    ethernet.print(alarm);


    }



    // RAIN ***********************
    if (strcmp(params, "rain") == 0){
    rain = digitalRead(4);
    if(rain==true){
    ethernet.print("NO");
    }
    if(rain==false){
    ethernet.print("YES");
    }
    }


    // WINDOW **********************
    if (strcmp(params, "window") == 0){
    if(digitalRead(7)==HIGH){
    ethernet.print("close");
    }
    else{
    ethernet.print("open");
    }
    }

    //LIGHT INTERNET****************
    if(strcmp(params, "light") == 0){
    ethernet.print("Lamp: ");
    ethernet.print(!light2);
    ethernet.print("<br>");
    ethernet.print("change: ");
    ethernet.print("<a href='light'><button>Lamp</button></a>");
    light2=!light2;
    digitalWrite(6, light2);


    }





    // ETHERNET RESPOND ************
    ethernet.respond();
    delay(20);
    }



    // LIGHT ON CLAP ****************
    if(analogRead(A0)>350){
    light=!light;
    digitalWrite(5, light);
    delay(1000);
    }


    //MOVE SENSOR*******************
    PIR = digitalRead(3);
    if(check==true){
    if(PIR==true){
    alarm = 1;
    check = false;

    }
    if(PIR==false){
    alarm = 0;
    }
    }

    }

    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Меня больше интересует, кто нибудь занимался защитой соединения под МК, можно посмотреть готовые проекты?
     
  9. Vad33

    Vad33 Капитан-оригинал

    Повторить и допилить возможно, но если
    "(может быть что то ещё добавиться)" или "(реле, лампочки, и т.д.)",
    то это первые признаки "безнадежного проекта".
    И что такое "защита соединения под МК" ?
    Вы управление хотите в браузер выводить ?
     
    Последнее редактирование: 9 фев 2017
  10. В чём сложность добавление железа с готовой библиотекой к текущему проекту? Не говоря, у же про те же лампочки, реле, кнопки?

    Под защитой подразумевается хотя бы VPN http://ypn.ru/342/vpn-solutions-for-secured-networking/
    Если есть другие способы организовать защищённое соединение, я не против.

    А в чём может быть сложность через браузер?
    #include "etherShield.h"
    #include "ETHER_28J60.h"

    staticuint8_tmac[6]={0x54,0x55,0x58,0x10,0x00,0x24};
    staticuint8_tip[4]={192,168,0,9};
    staticuint16_tport=80;

    ETHER_28J60ethernet;
    intoutputPin3=13;
    intoutputPin=11;
    intoutputPin2=12;

    voidsetup()
    {
    ethernet.setup(mac,ip,port);
    pinMode(outputPin,OUTPUT);
    pinMode(outputPin2,OUTPUT);
    pinMode(outputPin3,OUTPUT);
    }

    voidloop()
    {
    char*params;
    if(params=ethernet.serviceRequest())
    {
    ethernet.print("<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
    ethernet.print("<img src='http://arduino-project.net/wp-content/uploads/2014/02/APL.png'><p></p>");
    ethernet.print("<a href='?cmd=on1' >Включить L1</a><p></p>");
    ethernet.print("<a href='?cmd=off1' >Отключить L1</a><p></p>");
    ethernet.print("<a href='?cmd=on2' >Включить L2</a><p></p>");
    ethernet.print("<a href='?cmd=off2' >Отключить L2</a><p></p>");
    ethernet.print("<a href='?cmd=on3' >Включить L3</a><p></p>");
    ethernet.print("<a href='?cmd=off3' >Отключить L3</a><p></p>");
    ethernet.print("<a href='?cmd=on' >Включить все</a><p></p>");
    ethernet.print("<a href='?cmd=off' >Отключить все</a><p></p>");
    ethernet.respond();
    if(strcmp(params,"?cmd=on1")==0){digitalWrite(outputPin,HIGH);}
    if(strcmp(params,"?cmd=off1")==0){digitalWrite(outputPin,LOW);}
    if(strcmp(params,"?cmd=on2")==0){digitalWrite(outputPin2,HIGH);}
    if(strcmp(params,"?cmd=off2")==0){digitalWrite(outputPin2,LOW);}
    if(strcmp(params,"?cmd=on3")==0){digitalWrite(outputPin3,HIGH);}
    if(strcmp(params,"?cmd=off3")==0){digitalWrite(outputPin3,LOW);}
    if(strcmp(params,"?cmd=on")==0){digitalWrite(outputPin,HIGH);digitalWrite(outputPin2,HIGH);digitalWrite(outputPin3,HIGH);}
    if(strcmp(params,"?cmd=off")==0){digitalWrite(outputPin,LOW);digitalWrite(outputPin2,LOW);digitalWrite(outputPin3,LOW);}
    }
    delay(100);
    }

    [​IMG]
     
  11. Имхо, как то делали (в 3и человека) проект, модель Сигвеэй, прикручивали Гироскоп MPU-6050 к Атмега, не говоря про драйверы с шаговиками, пульт управления, итп...

    Мне кажется тогда было сложнее с программой. Я больше по железу ориентирован (спаять, вытравить, подключить) чем по программированию.

    Извините если я чего то не знаю в Ардуино, и мне кажется что из запрошенного мною, только защиту соединения будет трудно привязать.
     
  12. Vad33

    Vad33 Капитан-оригинал

    А сигвей то хоть ездил?
    Думаю, проект нужно начинать с поиска библиотеки VPN для ардуино.
     
  13. Не успели полностью реализовать, задуманное. От джостика да.

    Так я как бы об этом же, но здесь внимание заострили на другом. Сам не искал в этом направлении, подсказали, что возможно.
     
  14. ZAZ-965

    ZAZ-965 Гуру

    VPN проще и дешевле на роутере установить (или купить роутер с поддержкой VPN, или перепрошить поддерживаемую модель в OpenWrt).
    Схема и скетч из сообщения №8 в оригинале на польском http://www.arduinopolska.cba.pl/projects/smart_home/smart_home.html
     
  15. По Лану да, интерес через GSM шилд.

    Схему и скетч я привёл для примера.

    Так всё таки, возьмётся кто нибудь реализовать защита соединения, через VPN в Ардуино, либо другими средствами защиты?
    На малине?
     
  16. Суть защиты, если будет произведён перехват через "Виртуальную Соту", с полной подменой номера и imei, доступ к устройству не получит, т.к нужна будет авторизация.

    Возможно каким то образом реализовать защищённое соединение?
     
  17. Developer-RU

    Developer-RU Гик

    +100
    Самое худшее, что человек потом может еще и отказаться. А иначе никак не обьяснишь ему цену которую называем. Но и при этом варианте - как заказчик узнает о исполнителе и его способностях и правильной оценки работ(не завышенной), что в последствии наводит и тех и других в круговое недоверие и неохоту тратить личное время.
    Но те решения что были предложены на форуме амперки и ардуино были проигнорированы - "рейтинги исполнителей, рейтинги заказчиков, отзывы о тех и других".
     
  18. rkit

    rkit Гуру

    Вот в этом главная проблема. на мой взгляд. Все думают, что "умный дом" это что-то стандартное и устоявшееся, когда в реальности у всех разные хотелки. Кому-то охранную систему надо, кому-то реле в каждой розетке. а кому-то чтобы унитаз с утра человеческим голосом прогноз погоды рассказывал. И пойди угадай.
     
    vvr нравится это.
  19. Проблема только в не правильно сформулированном тех. задании, т.е в другом проблемы нет, и защиту возможно сделать?
     
  20. rkit

    rkit Гуру

    Проблема в том, что задания вообще никакого нет.
    А защита от "виртуальной соты" - это блажь. Никому с такими ресурсами ваши герконы и датчики дождя не нужны.