Поливалка на Raspberry + Arduino [IoT]

Тема в разделе "Raspberry Pi", создана пользователем Sobanim, 25 апр 2018.

  1. Sobanim

    Sobanim Нуб

    Доброго времени суток, уважаемые форумчане!
    Заканчиваю 4 курс и хочу сделать дипломный проект. Если вкратце, то нужно поливать растения, информацию с датчиков влажности, температуры можно было увидеть на сайте, и управлять самой системой автоматизации.

    Преподаватель посоветовал брать Raspberry к нему подключать Arduino. Как я понимаю, Raspberry нужен для сервера и сбора информации с Arduino, который, в свою очередь будет управлять именно самим процессом капельного полива.

    Видел в Интернете что это делается через PHP и MySQL. Но, хочу делать с помощью JS, по причине популярности и более актуальности, чем PHP.
    В данный момент, хочу просто с обычного датчика DS18B20 подключённого к Arduino вывести информацию на сайт через Raspberry. Raspberry и Arduino общаются по USB. Как получиться сделать это, буду двигаться дальше.

    Может что подскажите, что почитать и изучить? Как с веб-сервером работать, и как простейший дизайн его сделать?
     
  2. Igor68

    Igor68 Гуру

    Если на малине установлен WEB сервер + PHP, Вы умеете читать данные по IO с DS18B20... то самое простое это как пример это читать этот файл из страницы в браузере через PHP скрипт наподобие этого:
    Код (PHP):

    <?php
      $handle = fopen("../ramdisk/swcjson.txt", "rt");
      $contents = '';
      while (!feof($handle))
      $contents .= fread($handle, 4096);
      fclose($handle);
      echo $contents;
    ?>
     
    И делать запрос из страницы чем-то похожим на это:
    Код (Javascript):

    function catserverData() {

    var str;
    var xmlhttp = new XMLHttpRequest();
    //
    xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 ) {
    if(xmlhttp.status == 200){
    //
    uno_dat = xmlhttp.responseText;
    //document.getElementById("myDiv").innerHTML = uno_dat;
    dbs = eval('(' + uno_dat + ')');
    CatParse();
    }
    //
    setTimeout(carserverData, 4000); // Вызвать снова через 4 сек
    }
    }
    //}
    //
    xmlhttp.open("GET", "cat_dat.php?dtime=" + new Date().getTime, true);
    //
    xmlhttp.send();
    }
     
    Если Вам жаль SD карту на малине, то будете применять RAM-диск. Тут на форуме уйма данных по этой теме.
    Удачи!
     
  3. Igor68

    Igor68 Гуру

    Простите... не посмотрел, что надо IoT
     
  4. parovoZZ

    parovoZZ Гуру

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

    Igor68 Гуру

    Прощать не надо - я извинился!
    А себе отрубите пальцы... указательный и мизинец. Чтоб не производить распальцовку!:D И желательно на обеих руках!
    И не хамите более! Тоже мне хвост отыскался!