Снова вопросы
- Войдите на сайт для отправки комментариев
Втр, 06/10/2020 - 20:19
И снова здравствуйте. Я тут наплодил тем уже, их можно удалить, толка в них никакого.
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/vopros-novichka
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/kak-realizovat
А теперь по делу. В общем начал я с малого, а именно с китайской дешевки Nano v3.0. Светодиодом на плате помигал, а вот при попытке загрузить скетч с библиотекой не хватает каких-то файлов и где их брать нагуглить не получается. В библиотеке Ethernet2 есть папки со скетчами, я так понял это какие-то примеры.
Беру скетч WebServer и пытаюсь его загрузить:
In file included from C:\Users\Vlad\Documents\Arduino\libraries\Ethernet2\src\Dns.cpp:7:0: C:\Users\Vlad\Documents\Arduino\libraries\Ethernet2\src\Dns.cpp: In member function 'uint16_t DNSClient::BuildRequest(const char*)': C:\Users\Vlad\Documents\Arduino\libraries\Ethernet2\src\utility/util.h:4:24: warning: result of '(256 << 8)' requires 18 bits to represent, but 'int' only has 16 bits [-Wshift-overflow=] #define htons(x) ( ((x)<< 8 & 0xFF00) | \ ~~~^~~~ C:\Users\Vlad\Documents\Arduino\libraries\Ethernet2\src\Dns.cpp:202:21: note: in expansion of macro 'htons' twoByteBuffer = htons(QUERY_FLAG | OPCODE_STANDARD_QUERY | RECURSION_DESIRED_FLAG); ^~~~~ Скетч использует 9766 байт (31%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 555 байт (27%) динамической памяти, оставляя 1493 байт для локальных переменных. Максимум: 2048 байт.
Вроде как загрузилось, но чего-та все таки не хватает.
Где Вы увидели, что файлов не хватает? Вас предупреждают о возможном косяке в библиотеке, но с нехваткой файлов это никак не связано.
Тогда как исправить эти косяки?
Ну, откуда мне знать, какую именно библиотеку Вы используете (ссылки-то нет), какой именно у Вас код (Вы его не выложили). А без всего этого ... ну, как исправить ... сесть, почесать репу и исправить. А ещё лучше - сообщить авторам библиотеки, пусть сами исправляют. Судя по Вашим вопросам, сами Вы её всё равно не исправите.
Ethernet 2 выпилена в новых IDE... Уже года полтора как, вроде. Это так, к сведению.
когда ты всё успеваешь )))
PS у меня в 1.8.13 такой библиотеки нет (не инсталлируемая)
http://arduino.ru/forum/obshchii/ethernet-library-20
Например вот код из ютуба - https://www.youtube.com/watch?v=8vC4VJLzghs&t=23s&ab_channel=LabRazum
И здесь те же ругательства:
Аннотации не мешают как я понимаю.
вам уже обьяснили, что это не ошибки, а предупреждения. Они не мешают компиляции и загрузке кода.
Что вы от форума-то хотите? Уже третья тема сваливается в "толку никакого"...
Но я уже объяснил ТС что от него требуется, но он не понял. Значит, не судьба.
По поводу не устанавливается.
вам уже обьяснили, что это не ошибки, а предупреждения. Они не мешают компиляции и загрузке кода.
Что вы от форума-то хотите? Уже третья тема сваливается в "толку никакого"...
Записал на лбу.
По поводу не устанавливается.
и зачем нам это знать?
По поводу не устанавливается.
и зачем нам это знать?
А они не будут мешать друг другу? Или эти строки дают понять откуда, что нужно брать?
#include <SPI.h>
#include <Ethernet.h>
У меня уже есть своя веб страница работающая в локальной сети на опенсервере.
Строка 13 зажигает указанные огоньки по кнопке "пуск", это пока сделано для красоты и функционал туда задумывается другой. Дальше в коде идут стили и сюда их копировать не буду. Знакомая которая вносила правки в написание этого кода сказала - в строку 33 нужно подставлять данные для твоего управления вместе с id кнопки, а как именно это выразить она не знает.
Что сказано в скетче:
При минимальной нагрузке, по мне лучше сделать это на сервере?
Если Садман подойдёт, он точно знает, у него в этом опыт колоссальный
У меня уже есть своя веб страница работающая в локальной сети на опенсервере.
А у Вас, простите - я не понял, вот эта самая красивая картина (html/css код) на одном устройстве, а скетч в другое устройство заливается?
У меня уже есть своя веб страница работающая в локальной сети на опенсервере.
А у Вас, простите - я не понял, вот эта самая красивая картина (html/css код) на одном устройстве, а скетч в другое устройство заливается?
Ну конечно да. ПК и ардуина разные устройства. Мне нужно с третьего ПК входящего в эту подсеть, переходить по адресу вебсервера и оттуда осуществлять управление 7ю ардуинами.
Мне нужно с третьего ПК входящего в эту подсеть, переходить по адресу вебсервера и оттуда осуществлять управление 7ю ардуинами.
попытвайтесь сформулировать, в чем у вас проблема? Примеров к webserver-у, в которых показано как включать и выключать диод на ардуине - просто тонны в инете. Что не получается-то?
Что-то которое сообщение толчем воду в ступе, а толку...
Да полно. Но вы наверное не поняли. Как выразить это в коде? Как подцепить под нужную кнопку функционал?
Вот кнопка
<a onclick=
"$('.lamp').css('background', '#ddd');"
class
=
"button2"
id=
"stop"
>СТОП</a>
, у нее id stop. А запрос на выключение светодиода http://192.168.0.10/$2. Как вот сюда все сложить, чтобы работало?что вам нужно выразить в коде, если у вас готовый пример есть?
вот, например, прочитайте внимательно и скажите четко. что вам непонятно
http://helpduino.ru/podklychenie_Ethernet_Shield_k_arduino.html
добавка - туплю - у вас уже в #7 приведен почти такой же код.
но вопрос остается - что там непонятно?
Вебсервер на ардуине это 1 устройство, вебсервер на ПК это 2 устройство, пользователь с ПК 3 устройство. Все они находятся в одной подсети. Как пользователю управлять 7ю устройствами при нажатии 1 кнопки?
Отредактировал сообщение выше, пожалуйста прочтите внимательно.
Вот кнопка
<a onclick=
"$('.lamp').css('background', '#ddd');"
class
=
"button2"
id=
"stop"
>СТОП</a>
, у нее id stop. А запрос на выключение светодиода http://192.168.0.10/$2. Как вот сюда все сложить, чтобы работало?так это вопрос у вас не по ардуино, а по HTML. Кнопка - это либо самостоятельный линк (
http://192.168.0.10/$2)
либо часть формы или скрипта. Скрипты ваша библиотека обрабатывать не умеет, формы не знаю. Лучше делать по простому, в виде линков Вот у вас в коде сообщения #7 кнопки описаны в строке 97 и 98. Вот так и делайте, и для начала я бы советовал выкинуть все стили и прочие выкрутасы. добейтесь. чтоб работала простейшая страничка с парой кнопок. потом будете украшатьВебсервер на ардуине это 1 устройство, вебсервер на ПК это 2 устройство
вы точно понимаете, что делаете? зачем вам два вебсеревера? Если у вас есть вебсервер на ПК - вебсервер на ардуине не нужен. и наоборот.
Пользователь не должен заходить на ардуину или знать о ее существовании, пользователь должен зайти на веб страничку в своей подсети и нажать 2 кнопки, пуск или стоп. Все. Вы меня понимаете? Вебстраничка написана, в работу на сервере запущена, ардуина работает, а как все связать во едино не понятно.
Вебсервер на ардуине это 1 устройство, вебсервер на ПК это 2 устройство
вы точно понимаете, что делаете? зачем вам два вебсеревера? Если у вас есть вебсервер на ПК - вебсервер на ардуине не нужен. и наоборот.
По итогу если все получится будет 7 ардуин, 7 штук! Пользователю не нужно заходить на каждую и тыкать пуск и стоп. Пользователь должен зайти на 1 веб страницу и нажать 1 кнопку.
Пользователь не должен заходить на ардуину или знать о ее существовании, пользователь должен зайти на веб страничку в своей подсети
это вы не понимаете. У вас каша в голове. Вебсервер на ардуине ничем не отличается от сервера на ПК. Юзер который зайдет на ардуину - никак не сможет догадаться. что это ардуина, если вы ему сами не скажете. Вебсервер он и есть вебсервер, какой запрограммируете - такой и будет.
По итогу если все получится будет 7 ардуин, 7 штук! Пользователю не нужно заходить на каждую и тыкать пуск и стоп. Пользователь должен зайти на 1 веб страницу и нажать 1 кнопку.
ОК. Нафига тогда семь вебсерверов? Не проще ли сигналы с вебсервера на ардуину передавать не по HTTP, а как-нить попроще - по Сериалу например?
Вот кнопка
<a onclick=
"$('.lamp').css('background', '#ddd');"
class
=
"button2"
id=
"stop"
>СТОП</a>
, у нее id stop. А запрос на выключение светодиода http://192.168.0.10/$2. Как вот сюда все сложить, чтобы работало?так это вопрос у вас не по ардуино, а по HTML. Кнопка - это либо самостоятельный линк (
http://192.168.0.10/$2)
либо часть формы или скрипта. Скрипты ваша библиотека обрабатывать не умеет, формы не знаю. Лучше делать по простому, в виде линков Вот у вас в коде сообщения #7 кнопки описаны в строке 97 и 98. Вот так и делайте, и для начала я бы советовал выкинуть все стили и прочие выкрутасы. добейтесь. чтоб работала простейшая страничка с парой кнопок. потом будете украшатьНаконец таки вы меня услышали.
По итогу если все получится будет 7 ардуин, 7 штук! Пользователю не нужно заходить на каждую и тыкать пуск и стоп. Пользователь должен зайти на 1 веб страницу и нажать 1 кнопку.
ОК. Нафига тогда семь вебсерверов? Не проще ли сигналы с вебсервера на ардуину передавать не по HTTP, а как-нить попроще - по Сериалу например?
А я не знал другого способа. Как нагуглил, от того и отталкиваюсь. Используется шильд 5500 так как в организации уже существует работающая локальная сеть. Чтобы не тянуть провода под RS485, а использовать уже существующую инфраструктуру. Устройства от пользователя разбросаны на расстоянии до 1 км, а последнее находится на удалении 12 км и до этого здания лежит оптика. Намного проще и дешевле от ближайшей циски кинуть витую пару 10-20 метров, чем тянуть километры проводов с нуля.
А я не знал другого способа. Как нагуглил, от того и отталкиваюсь. Используется шильд 5500 так как в организации уже существует работающая локальная сеть. Чтобы не тянуть провода под RS485, а использовать уже существующую инфраструктуру. Устройства от пользователя разбросаны на расстоянии до 1 км, а последнее находится на удалении 12 км и до этого здания лежит оптика.
вы неправильно подощли к задаче. Если все 7 ардуин находятся рядом - проще будет связать их каким-то проводным или беспроводным протоколом, типа NRF24 или rs485. Если они далеко друг от друга - то локальная сеть это вариант, но ставить на каждую ардуину вебсервер - это бред. Такая задача решается по принципиу протокола MQTT - сервер один, все ардуины - клиенты.
Вебсервер на ардуине это 1 устройство, вебсервер на ПК это 2 устройство
вы точно понимаете, что делаете? зачем вам два вебсеревера? Если у вас есть вебсервер на ПК - вебсервер на ардуине не нужен. и наоборот.
Это уже от незнания. То есть можно или даже нужно из кода ардуины убрать вывод в HTML? Так даже лечше, исключает возможность захода на ардуину левых людей и несанкционированного запуска. Ну а вебсервер на ПК у меня под HTTP basic авторизацией.
Надо спросить - товарищ из АСУТП или нет.
нее id stop. А запрос на выключение светодиода http://192.168.0.10/$2. Как вот сюда все сложить, чтобы работало?
При нажатии на кнопку формировать GET запрос вот такой, как ты написал. Что тут непонятного? Да хоть 7 запросов, хоть 77. А в ответе ардуинка пусть отдает состояния пинов или что-там-тебе-от-нее-нужно.
Надо спросить - товарищ из АСУТП или нет.
Товарищ рядовой электрик в организации. Годами это делалось вручную, раньше была ламповорелейная система, но она не работает и последний специалист 10 лет как на том свете, а медную трассу давно вырезали.
Б707! Тут как раз разумно сделать нормального размера сервер где-то и на JS накидать управление всеми ардуинками, в которых расположить самые простые вебсервера, с выключателями и отдачей данных. Вот только что ТС-у непонятно, - мне непонятно ;)))).
--------------------
ТС! Смотри: пользователь загрузил страничку с твоего третьего сервера. Дальше про сервер забыли. У пользователя в браузере страничка с программкой на JS. Она там кнопочки рисует, картинки, шкалы, приборы и казино с бэкджеком и библиотекаршами. При некоторых действиях пользователя или просто по таймеру эта программка запрашивает простыми GET запросами ардуинки по списку. Получает от них данные, при необходимости кодирует в GET запросе "нажатие кнопок". Что-то непонятно? Это совсем простая страничка. Если у тебя знакомый веб-программист есть - он накидает за полдня.
Б707! Тут как раз разумно сделать нормального размера сервер где-то и на JS накидать управление всеми ардуинками, в которых расположить самые простые вебсервера, с выключателями и отдачей данных. Вот только что ТС-у непонятно, - мне непонятно ;)))).
ну не знаю... ради того, чтоб просто передать по сети 0 или 1 - целый вебсервер поднимать?
А если все же веб - в разы проще это делается на ЕСП :)
Надо спросить - товарищ из АСУТП или нет.
Товарищ рядовой электрик в организации. Годами это делалось вручную, раньше была ламповорелейная система, но она не работает и последний специалист 10 лет как на том свете, а медную трассу давно вырезали.
Товарищ, рядовой электрик, забудьте о том, что ардуина - это волшебная плата, заменяющая абсолютно любое сложное и дорогое оборудование, для чего достаточно на неё нацепить дешевый шилд и спросить у кого-нить про то, как "дописать пару строк". Такое не канает.
ТСу по сути нужен шлюз
ТС-у, по сути, надо подумать как бы он ответил на такое: "Я программист 1С, последний электрик на заводе помер, начальник требует собрать в цеху распределительный щит на 8 фаз по 1000в каждая. Слышал про какое-то ПУЭ, но не читал - времени нет. Нашел в кладовке провода и рубильник черный. Индикаторную отвёртку купил! Где и что надо ей покрутить?"
как бы так извернуться, что бы выло наоборот, что бы новая ардуино ,знала адресс сервера и регестрировалась там автоамтом и шлюз уже автоматом послылал ей сигнал на вкл/выкл .
MQTT
sadman41, бородатый дядя с ютуба объяснил почему нельзя использовать ардуино, что подключаемые библиотеки спрятаны и что в них творится неизвестно. Я понимаю вашу обеспокоенность, но мне нужно показать рабочий прототип и тогда у меня будет время на изучение stm32 и разводку собственной платы.
Сколько лет?
не верьте этому дядьке, он понимает в этом немногим больше вашего.
Зы Может это Гайвер бороду отрастил? :)
Дядя, наверное, ковид подцепил и у него бред начался. Библиотеки в ардуино даже технически нельзя спрятать (если глубоко под юбку ИДЕ не лезть) - они всегда в исходниках и не знает что в них творится только тот, кому лень посмотреть.
Он, наверное, ардуино с виндовсом перепутал. Вот там действительно всё спрятано.
у нас тут есть коммерческий раздел - тыщ за 8-10, думаю, вы с кем-нить договоритесь - напишут код для прототипа...
А самому собрать - слишком много читать надо. думаю раньше полгода не осилите
"Прототип"-то осилит. Ненадежный, но когда для себя - можно поторговаться с убеждениями. Только что будет после "прототипа" - вопрос на мильен.
Судя по тому, что ему тут насоветовали согласен полностью