Arduino Mega Server

Модератор: Alex

Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вс мар 06, 2016 2:55 am

Можно и на DUE, но у меня нет платы DUE. Я бы вообще начал с OpenWrt. Там ресурсов ещё больше. Можно перенести всё на любой роутер с OpenWrt, разделив проект на 2 части: сервер и сеть периферии (ПЛК и модули ввода-вывода). Всю периферию можно подключить к роутеру по usb через преобразователь интерфейса.

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

У меня план такой. Довожу до ума исходники и делю их на две части. Одна часть будет заниматься только серверными делами (отдельная плата: роутер, Mega, DUE, ПК ...), а вторая плата работает как посредник для любой периферии и освобождена от серверных функций. Плат второго типа может быть много. Если применять протокол Modbus-RTU, то до 250 штук. Каждая может являться модулем ввода-вывода.

Так, мне кажется, будет куда гибче, чем впихивать всё в один мк и плодить прошивки для каждого отдельного уникального набора периферии.
За это сообщение автора uni поблагодарил:
relict (Вс мар 06, 2016 9:24 am)
Рейтинг: 1.16%
Россия навсегда!
CamCam
Сообщения: 1
Зарегистрирован: Чт фев 18, 2016 1:30 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение CamCam » Пн мар 07, 2016 10:40 am

Alex писал(а):
Это не требования каких то прихотей, это просто необходимость, для нормального развития проекта.
Как самый простой вариант - попросить Сергея создать подфорум Мега сервера, переместить и прикрепить туда эту тему, и что бы пользователи могли создавать там свои темы с конкретными решениями. В этих темах можно будет нормально обсуждать вопросы по конкретной проблеме.
Да и вам самим будет проще..
Так может пришло время вынести AMS в от дельный раздел форума ?
Пуст там наработки людей /решение проблем/ идут отдельными темами
Ну, это вопрос к Сергею, я не имею ничего против.
Проблема в том, что не только не видите, но и, кмк, не хотите видеть. Почитайте комментарии к Вашим статьям на Гиктаймс. В самых популярных из них говорят о том же.
Вы продолжаете указывать что и как делать другим, вместо того, чтобы делать самому.
Не хочу, чтобы Вы считали мои высказывания здесь обвинениями. Считайте их попыткой внести вклад в развитие проекта
Проект для того и сделан открытым, чтобы любой мог свободно создать свой дистрибутив и формировать его как угодно. Почему бы всем приверженцам гитхаба не собраться вместе и не начать разработку, а не продолжать уповать на одного Алекса?
Вот потому в теме постояльцев человек десять, остальные пробуют и бросают, не у всех же необходимые знания или куча свободного времени для получения оных. Проект в данном виде ну никак не "народный", скорее "гик-проект". Никакой критики, просто мнение.
Совершенно верно и у народа есть все возможности сделать его народным. Только для этого нужно перестать требовать и начать работать. Гитхаб открыт для всех.
Подскажите, дата и время без модуля RTC - должны обновляться через Интернет?
Должны, но иногда обновление происходит не с первого раза (по каким-то причинам).
tto4ka
Сообщения: 5
Зарегистрирован: Пн янв 11, 2016 3:32 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение tto4ka » Пн мар 07, 2016 9:13 pm

uni писал(а): Плат второго типа может быть много. Если применять протокол Modbus-RTU, то до 250 штук. Каждая может являться модулем ввода-вывода.

Так, мне кажется, будет куда гибче, чем впихивать всё в один мк и плодить прошивки для каждого отдельного уникального набора периферии.
А на CAN не проще? Modbus-RTU это мастер слейв, CAN же бродкаст с приотеризацией, и мастеру ничего опрашивать не надо, произошло событие, слейв сразу кинул мессагу...
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Вт мар 08, 2016 12:13 am

Одна часть будет заниматься только серверными делами , а вторая плата работает как посредник для любой периферии

Так, мне кажется, будет куда гибче, чем впихивать всё в один мк и плодить прошивки для каждого отдельного уникального набора периферии.
Поддерживаю такой подход.Я открыл все 13 каналов РМ ,расширил вывод всех каналов на монитор(с выводом графиков пока не получается-только учусь)и замечаю существенные тормоза с отработкой быстро меняющейся нагрузки(при работе паяльника 30 Вт с автоматической регулировкой температуры при цикле 10 секунд ON 20 секунд OFF AMC еле-еле успевает за нагрузкой,хотя процессор не нагружен).Если за АМС оставить только интерфейс-я думаю ситуация изменится к лучшему.К тому же одного контроллера катастрофически не хватает даже в маленьком доме.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ledmax
Сообщения: 88
Зарегистрирован: Сб окт 24, 2015 9:56 pm
Благодарил (а): 11 раз
Поблагодарили: 8 раз

Re: Arduino Mega Server

Сообщение ledmax » Вт мар 08, 2016 5:16 am

uni писал(а):Можно и на DUE, но у меня нет платы DUE. Я бы вообще начал с OpenWrt. Там ресурсов ещё больше. Можно перенести всё на любой роутер с OpenWrt, разделив проект на 2 части: сервер и сеть периферии (ПЛК и модули ввода-вывода). Всю периферию можно подключить к роутеру по usb через преобразователь интерфейса.

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

У меня план такой. Довожу до ума исходники и делю их на две части. Одна часть будет заниматься только серверными делами (отдельная плата: роутер, Mega, DUE, ПК ...), а вторая плата работает как посредник для любой периферии и освобождена от серверных функций. Плат второго типа может быть много. Если применять протокол Modbus-RTU, то до 250 штук. Каждая может являться модулем ввода-вывода.

Так, мне кажется, будет куда гибче, чем впихивать всё в один мк и плодить прошивки для каждого отдельного уникального набора периферии.
Тут я не соглашусь - главная идея этого проекта универсальность и гибкость, а вы предлагаете создать систему заточенную под определённые нужды.
Например нужно сделать контроллер управления к примеру.. каким нибудь котлом. Берём АМС, подключаем к периферии и всё, готово - не надо городить экран, кнопки, сложный корпус итд.. всё управляем через веб.
Modbus-RTU - протокол промышленной связи, он надёжный, быстрый, но и сложный и не удобный. К примеру в автоматизации дома нам не нужны такие скорости обмена. Куда более важны наглядность и простата интеграции. моё мнение, что платы лучше соединять через Ethernet. Базовые прошивки могут быть на всех платах одинаковые - вам никто не мешает отключить ненужные модули и дописать свои под конкретные нужды. Один контроллер главный, на нём веб морда, с которой можно всем управлять ну а локальная логика уже на локальных контроллерах.
Зачем например главному контроллеру знать, каким обзором и от каких датчиков включается свет в сортире - он просто должен получать запрос об обновлении статуса. Ну и это более надёжно - при выходе из строя одного контроллера, не придётся пысать со свечкой..
Нужно разобраться со всеми косяками Ethernet библиотеки и в принципе всё - остальные вещи каждый может делать как хочет, вся необходимая база существует.
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вт мар 08, 2016 10:25 am

Я работаю в фирме, которая занимается автоматизацией котельных. Наши системы построены по указанному выше принципу с Modbus-rtu протоколом. На нашем головном контроллере есть CAN, но им никто не пользуется. Введение его поддержки оказалось бесполезным пока.

Головной контроллер может быть как просто шлюзом, так и иметь клавиатуру, индикатор и прочее. На самом деле такая система гибкость и универсальность и предлагает, а не всё в одном. Головной контроллер может считывать данные не только по последовательной линии, я хочу сделать поддержку modbus tcp, тогда можно обращаться к другим контроллерам по tcp.

Да, это централизованная система, но плюсы и минусы есть у всего, в том числе и у распределённой системы. Любое инженерное решение это компромис.

Если вы захотите отключить неиспользуемые программные модули в текущей прошивке, то вам придётся компилировать его заново - это будет плодить прошивки. Я хочу минимизировать их количество вплоть до одной. Может быть даже добавлю поддержу скриптового языка в головной контроллер, тогда это будет уже ПЛК. В этом случае пользователю нужно будет лишь написать набор алгоритмов, описывающих поведение системы, и не нужно будет заниматься компиляцией и драйверами.

Вообще, текущие исходники слишком запутанные. Условную компиляцию модулей я уберу, выглядит она некрасиво. Ещё есть идея добавить операционную систему, у меня есть одна на примете и она работает. С ней проще разделять процессорное время.

Ну и весь код нужно перелопачивать, убирая константные строки из ОЗУ. Я уже их на килобайт насобирал. Нужно писать сразу так, чтобы большинство текстовых строк было во флеш.
За это сообщение автора uni поблагодарил:
cg_shura (Ср мар 09, 2016 5:14 pm)
Рейтинг: 1.16%
Россия навсегда!
Аватара пользователя
uni
Сообщения: 191
Зарегистрирован: Вс июл 26, 2015 9:21 pm
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение uni » Вт мар 08, 2016 6:39 pm

Добавил ссылку на svn к себе в подпись второй ссылкой. Исходники будут существенно перерабатываться. Для сборки используется метод из указанной ранее статьи.
Россия навсегда!
allexmak1
Сообщения: 12
Зарегистрирован: Пт дек 18, 2015 8:28 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение allexmak1 » Пт мар 18, 2016 2:29 pm

Подскажите, добрался до RGB ленты, смотрю по части ардуино вроде готово, а вот где ковырять HTML чтобы добратся до изменения цвета с вэба?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс мар 20, 2016 8:42 am

В текущей версии интерфейс управления светодиодными лентами находится в разработке, но цвет свечения ленты можно менять при помощи плиток «Управление светом»

http://hi-lab.ru/arduino-mega-server/do ... es/control
http://hi-lab.ru/arduino-mega-server/do ... ed-control

В 0.15 версии появится беспроводное управление лентой при помощи оборудования nooLite.

http://hi-lab.ru/arduino-mega-server/do ... oolite-led

Поменять названия кнопок можно в файле

control.htm

Изменить цвета можно в скетче, в модуле server_ajax

Код: Выделить всё

void setControl() {
  if (StrContains(HTTP_req, "light1=1")) {
    light1 = 1;
    red(led1, 127); // <------------------------------------------------------------------
  } 
  else if (StrContains(HTTP_req, "light1=0")) {
    light1 = 0;
    black(led1);
  }

  if (StrContains(HTTP_req, "light2=1")) {
    light2 = 1;
    blue(led1, 127); // <------------------------------------------------------------------
  } 
  else if (StrContains(HTTP_req, "light2=0")) {
    light2 = 0;
    black(led1);
  }

  if (StrContains(HTTP_req, "light3=1")) {
    light3 = 1;
    green(led1, 127); // <------------------------------------------------------------------
  } 
  else if (StrContains(HTTP_req, "light3=0")) {
    light3 = 0;
    black(led1);
  }

  if (StrContains(HTTP_req, "light4=1")) {
    light4 = 1;
    magenta(led1, 127); // <------------------------------------------------------------------
  } 
  else if (StrContains(HTTP_req, "light4=0")) {
    light4 = 0;
    black(led1);
  }

  if (StrContains(HTTP_req, "light5=1")) {
    light5 = 1;
    yellow(led1, 127); // <------------------------------------------------------------------
  } 
  else if (StrContains(HTTP_req, "light5=0")) {
    light5 = 0;
    black(led1);
  }     
} // setControl()  
Функции цветов свечения ленты (находятся в модуле leds)

Код: Выделить всё

// set color LED
void black  (byte pins[])         {analogWrite(pins[R], 0); analogWrite(pins[G], 0); analogWrite(pins[B], 0);}
void white  (byte pins[], byte v) {analogWrite(pins[R], v); analogWrite(pins[G], v); analogWrite(pins[B], v);}
void red    (byte pins[], byte v) {analogWrite(pins[R], v); analogWrite(pins[G], 0); analogWrite(pins[B], 0);}
void green  (byte pins[], byte v) {analogWrite(pins[R], 0); analogWrite(pins[G], v); analogWrite(pins[B], 0);}
void blue   (byte pins[], byte v) {analogWrite(pins[R], 0); analogWrite(pins[G], 0); analogWrite(pins[B], v);}
void yellow (byte pins[], byte v) {analogWrite(pins[R], v); analogWrite(pins[G], v); analogWrite(pins[B], 0);}
void magenta(byte pins[], byte v) {analogWrite(pins[R], v); analogWrite(pins[G], 0); analogWrite(pins[B], v);}
void cyan   (byte pins[], byte v) {analogWrite(pins[R], 0); analogWrite(pins[G], v); analogWrite(pins[B], v);}
void color  (byte pins[], byte r, byte g, byte b) {analogWrite(pins[R], r); analogWrite(pins[G], g); analogWrite(pins[B], b);}
За это сообщение автора Alex поблагодарил:
allexmak1 (Вс мар 20, 2016 12:07 pm)
Рейтинг: 1.16%
allexmak1
Сообщения: 12
Зарегистрирован: Пт дек 18, 2015 8:28 pm
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение allexmak1 » Вс мар 20, 2016 12:06 pm

Спасибо, еще столкнулся с таким моментом, возможно вы знали, что автоматизацию какого либо процесса нужно писать в Ардуино скетче, а не на JS. Так как JS требует постоянно открытой страничке на ПК.
Я использую планшет и после выключения подсветки стопорится страничка, скрипты в JS не работают.
Ответить