Помогите с релейным модулем
- Войдите на сайт для отправки комментариев
Ср, 11/10/2017 - 16:46
Здравствуйте. Имеется модуль ардуино, интернет шилд и релейный модуль.
В общем принцып работы такой: Я перехожу по нужному адресу в ардуино, с помощью Enthernet шилда и зажигается реле, перехожу еще раз, реле выключается. Все работает, все прекрасно.
Но вот в чем дело, может ли ардуино, ответить, включил ли он реле, то есть отправить мне, 1 или 0? И если может, как примерно такое организовать?
Сам скетч:
#include <Ethernet.h>
#include <SPI.h>
#define PIN5 5
#define PIN6 6
#define PIN7 7
#define PIN8 8
#define PIN9 9
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 10, 1, 55);
EthernetServer arduino(81);
String readString;
void setup() {
pinMode(PIN5, OUTPUT);
digitalWrite(PIN5, LOW);
pinMode(PIN6, OUTPUT);
digitalWrite(PIN6, LOW);
pinMode(PIN7, OUTPUT);
digitalWrite(PIN7, LOW);
pinMode(PIN8, OUTPUT);
digitalWrite(PIN8, LOW);
pinMode(PIN9, OUTPUT);
digitalWrite(PIN9, LOW);
Ethernet.begin(mac, ip);
arduino.begin();
Serial.begin(9600);
}
void loop() {
EthernetClient client = arduino.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
Serial.print(c);
}
if (c == '\n') {
Serial.println(readString);
if(readString.indexOf('?') >=0) {
client.println("HTTP/1.1 204");
client.println();
client.println();
}
else {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Arduino</title>");
client.println("</head>");
client.println("<body>");
client.println("<h1>Hi, I'm an Arduino server.</h1>");
client.println("<a href=\"/?Relay_1\">Relay #1</a>");
client.println("<a href=\"/?Relay_2\">Relay #2</a>");
client.println("<a href=\"/?Relay_3\">Relay #3</a>");
client.println("<a href=\"/?Relay_4\">Relay #4</a>");
client.println("<a href=\"/?Relay_5\">Relay #5</a>");
client.println("</body>");
client.println("</html>");
}
delay(1);
client.stop();
if(readString.indexOf("Relay_1") >0)
{
digitalWrite(PIN5, ! digitalRead(PIN5));
}
if(readString.indexOf("Relay_2") >0)
{
digitalWrite(PIN6, ! digitalRead(PIN6));
}
if(readString.indexOf("Relay_3") >0)
{
digitalWrite(PIN7, ! digitalRead(PIN7));
}
if(readString.indexOf("Relay_4") >0)
{
digitalWrite(PIN8, ! digitalRead(PIN8));
}
if(readString.indexOf("Relay_5") >0)
{
digitalWrite(PIN9, ! digitalRead(PIN9));
}
readString="";
}
}
}
}
}
Седня все сговорились. Один резисторы зажигает, другой - реле.
Седня все сговорились. Один резисторы зажигает, другой - реле.
Вы бы знали что в конечном итоге будет запускаться:)
Здравствуйте. Имеется модуль ардуино, интернет шилд и релейный модуль.
В общем принцып работы такой: Я перехожу по нужному адресу в ардуино, с помощью Enthernet шилда и зажигается реле, перехожу еще раз, реле выключается. Все работает, все прекрасно.
Но вот в чем дело, может ли ардуино, ответить, включил ли он реле, то есть отправить мне, 1 или 0? И если может, как примерно такое организовать?
А как ардуина узнает, включилось ли реле? Ну то есть уровень на реле подан. а вот сработало ли оно? И даже если сработало - то это еще не гарантия, что реле включило то, что нужно. Может контакты замкнулись. а на нагрузке просто тока нет.
Это я к тому. что задачка-то не простая. Надо знать, о чем речь. Контролировать лучше не включение реле, а целевой парметр, например если это освещение - ставить фотодатчик. если реле включает компрессор, то контролировать не напряжение компрессора, а давление в системе...
Здравствуйте. Имеется модуль ардуино, интернет шилд и релейный модуль.
В общем принцып работы такой: Я перехожу по нужному адресу в ардуино, с помощью Enthernet шилда и зажигается реле, перехожу еще раз, реле выключается. Все работает, все прекрасно.
Но вот в чем дело, может ли ардуино, ответить, включил ли он реле, то есть отправить мне, 1 или 0? И если может, как примерно такое организовать?
А как ардуина узнает, включилось ли реле? Ну то есть уровень на реле подан. а вот сработало ли оно? И даже если сработало - то это еще не гарантия, что реле включило то, что нужно. Может контакты замкнулись. а на нагрузке просто тока нет.
Это я к тому. что задачка-то не простая. Надо знать, о чем речь. Контролировать лучше не включение реле, а целевой парметр, например если это освещение - ставить фотодатчик. если реле включает компрессор, то контролировать не напряжение компрессора, а давление в системе...
Моё дело включить только реле, чтобы оно сработало и дало ответ. Больше мне не нужно. Всё остальное будет сделано на PHP + MySQLi.
[
Вы бы знали что в конечном итоге будет запускаться:)
Не надо интриги, меня и так всегда пугает мысль о том. кому мы тут помогаем и для каких целей будет использовано радиуправление или реле, включаемое по мобильнику...
Моё дело включить только реле, чтобы оно сработало и дало ответ. Больше мне не нужно. Всё остальное будет сделано на PHP + MySQLi.
если вас не интересует обратная связь, просто считайте. что ваша команда выполнена. Послали сигнал на реле - смело пишите в Маускуэль. что реле включено.
[
Вы бы знали что в конечном итоге будет запускаться:)
Не надо интриги, меня и так всегда пугает мысль о том. кому мы тут помогаем и для каких целей будет использовано радиуправление или реле, включаемое по мобильнику...
Включить я могу реле.
Как мне узнать, включилось ли оно? Как организовать обратную связь?
Моё дело включить только реле, чтобы оно сработало и дало ответ. Больше мне не нужно. Всё остальное будет сделано на PHP + MySQLi.
если вас не интересует обратная связь, просто считайте. что ваша команда выполнена. Послали сигнал на реле - смело пишите в Маускуэль. что реле включено.
Наоборот, обратная связь нужна. Нужно после включения реле, сказать мне, 1 или 0. А включилось ли что то там дальше, меня не интересует.
Наоборот, обратная связь нужна. Нужно после включения реле, сказать мне, 1 или 0. А включилось ли что то там дальше, меня не интересует.
ну блин, у вас же скетч сервера. Там где у вас ссылки на включение реле (строки 60-66) - добавьте отображение ON или OFF в зависмости от текущего состояния
Наоборот, обратная связь нужна. Нужно после включения реле, сказать мне, 1 или 0. А включилось ли что то там дальше, меня не интересует.
ну блин, у вас же скетч сервера. Там где у вас ссылки на включение реле (строки 60-66) - добавьте отображение ON или OFF в зависмости от текущего состояния
Это понятно.
Как записать на сервер, текущее состояние реле (1 или 0).
У меня имеется база MySQL, в неё и нужно передать это значение, в зависимости от состояния реле.
Это я к тому. что задачка-то не простая. Надо знать, о чем речь. Контролировать лучше не включение реле, а целевой парметр, например если это освещение - ставить фотодатчик. если реле включает компрессор, то контролировать не напряжение компрессора, а давление в системе...
Если по-простому - можно поставить сдвоенное и смотреть на дублирующую группу контактов. Или на перекидном - доп.контакт.
Это понятно.
Как записать на сервер, текущее состояние реле (1 или 0).
У меня имеется база MySQL, в неё и нужно передать это значение, в зависимости от состояния реле.
ну если понятно, так сделайте. Как вывести в сериал значение переменной - знаете? Ну так точно так же выведите ее в строчку,, например, 62, которую выдает HTML-сервер.
А чтобы это значение попало в MySQl, вам надо будет написать простенький клиент на десктопе, который опрашивал бы ваш ардуино-сервер раз в 3-5 минут и парсил из HTML переменные реле.
Если по-простому - можно поставить сдвоенное и смотреть на дублирующую группу контактов. Или на перекидном - доп.контакт.
да ему это, как оказалось - нафик не надо, ему надо данные с сервера в MySQl парсить. Непонятно, почему он с этим вопросом в форум Ардуино пришел.
да ему это, как оказалось - нафик не надо, ему надо данные с сервера в MySQl парсить. Непонятно, почему он с этим вопросом в форум Ардуино пришел.
Тут люди добрые.
да ему это, как оказалось - нафик не надо, ему надо данные с сервера в MySQl парсить. Непонятно, почему он с этим вопросом в форум Ардуино пришел.
Тут люди добрые.
ИМХО, тех умных слов, которые ему уже назвали в этой ветке, должно быть достаточно, чтоб теперь идти и разбираться самому :) Пинок в нужном направлении дан :)
Это понятно.
Как записать на сервер, текущее состояние реле (1 или 0).
У меня имеется база MySQL, в неё и нужно передать это значение, в зависимости от состояния реле.
Подгружайте скрытый FRAME и передавайте через GET состояние пинов своему PHP скрипту.
да ему это, как оказалось - нафик не надо, ему надо данные с сервера в MySQl парсить. Непонятно, почему он с этим вопросом в форум Ардуино пришел.
Тут люди добрые.
Люди добрые! Мне нужно организовать алгоритм..
Смотрите, как работает моя система:
Имеется файлик (обработчик) на сервере, раз в несколько минут, его запускает cron.
Что делает мой файлик (обработчик):
1) Проверяет состояние Arduino с помощью CURL, если Arduino доступна, он записывает (1) в таблицу MySQL, если не доступна, записывает 0.
Далее идет проверка, прошло ли 10 минут, с последнего 0, то есть с последнего отключения ардуино, если не прошло, останавливает выполнение и после следующего перезапуска cron, повторяет процесс еще раз.
Если при следующем запуске cron, проверка пройдена, то есть прошло 10 минут с последнего 0, скрипт идет в MySQL, в таблицу с датами и временем запуска, смотрит время запуска и сравнивает с текущим, если оно подходит, он зажигает реле, если нет, повторяет процесс еще раз.
Вот сам обработчик:
<?php ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); include 'system/connection.php'; $globaltime = strtotime("Now"); $globaltimedata = date('Y-m-d H:i:s'); $ch = curl_init('http://10.10.1.55:81'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); if(curl_errno($ch)) { $query = "INSERT INTO `logs` SET `status_arduino` = 0, `time` = '".date('Y-m-d H:i:s',$globaltime)."'"; $db->query($query); exit(); } else { $query = "INSERT INTO `logs` SET `status_arduino` = 1, `time` = '".date('Y-m-d H:i:s',$globaltime)."'"; $db->query($query); } $query_off = "SELECT `time`, `status_arduino` FROM `logs` WHERE `status_arduino` = '0' ORDER BY `id` DESC LIMIT 1"; if ($result = $db->query($query_off)) { while ($row = $result->fetch_assoc()); $result->free(); } $SpecifiedTime = strtotime($row['time']); echo $Difference = round((($globaltime - $SpecifiedTime) / 60),0); if($Difference < 10) { exit(); } else { $query = "SELECT * FROM `catalog` WHERE ((`task_start` < '$globaltimedata') AND (`task_end` > '$globaltimedata'))"; if($result = $db->query($query)) { while ($row = $result->fetch_assoc()) { $ch = curl_init('http://10.10.1.55:81/Relay_1'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); curl_close($ch); } $result->free(); } $db->close(); } ?>Что я хочу?
Мне нужно, узнать текущее состояние реле, то есть 0 или 1, записать временно его в переменную и отдать на сервер GET запросом, все.
Что для этого нужно?
Все же сами написали, что нужно: "узнать текущее состояние реле, записать временно его в переменную и отдать на сервер GET запросом".
Вы что, каждый шаг, расписанный в деталях ждете или готовый скетч ? Тогда вам в раздел "Ищу исполнителя".
Все же сами написали, что нужно: "узнать текущее состояние реле, записать временно его в переменную и отдать на сервер GET запросом".
Вы что, каждый шаг, расписанный в деталях ждете или готовый скетч ? Тогда вам в раздел "Ищу исполнителя".
Я не знаю как в ардуино передать байт, со стороннего сервера, то есть мой сайт говорит ардуине, установить значение 5 пина на LOW, вот что мне нужно.
Я не знаю как в ардуино передать байт, со стороннего сервера, то есть мой сайт говорит ардуине, установить значение 5 пина на LOW, вот что мне нужно.
Это же примитивно, если вы веб программист. Вам нужна помощь в составлении GET запроса?
Я не знаю как в ардуино передать байт, со стороннего сервера, то есть мой сайт говорит ардуине, установить значение 5 пина на LOW, вот что мне нужно.
Это же примитивно, если вы веб программист. Вам нужна помощь в составлении GET запроса?
Я знаю как составить GET запрос в PHP, обьясните, как заставить ардуино его принять и дать ответ обратно?
Я не знаю как в ардуино передать байт, со стороннего сервера, то есть мой сайт говорит ардуине, установить значение 5 пина на LOW, вот что мне нужно.
Это же примитивно, если вы веб программист. Вам нужна помощь в составлении GET запроса?
Я знаю как составить GET запрос в PHP, обьясните, как заставить ардуино его принять и дать ответ обратно?
Так ардуина у вас уже обрабатывает GET запросы в 71-90 строчках. И печатает HTML в котором вы можете выводить что надо и который можно парсить PHP скриптом.