Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Модератор: immortal
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Похоже нет библиотеки BSeries.h . И одну OneWire.h убрать надо.
- Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 72
- Зарегистрирован: Вс апр 23, 2017 5:27 pm
- Благодарил (а): 25 раз
- Поблагодарили: 2 раза
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Я так и предположил, но где взять эту библиотеку? Google ни чего не выдаёт, кроме ссылок на форумы, где мельком проскакивает эта ошибка, но ответа нет.serghei писал(а):Похоже нет библиотеки BSeries.h . И одну OneWire.h убрать надо.
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Я не много не в Вашей теме )). Скорее всего это обращение находится внутри другой библиотеки , или она стоит не на своем месте. Как вариант попробуй скомпилить в другой версии IDE.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
- Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Хочу вместо W5100 использовать ESP8266. То есть, просто изменить способ подключения.woow писал(а):смотря что вам нужно. В место Arduino+W5100, ствите ESP8266 и все проблемы решается, тем более, что ESP гораздо мощнее, но это по Wi-Fi, а в этой ветке речь, о проводной системе.Amarok писал(а):А можно вместо W5100 использовать ESP8266? Если это кто-то уже сделал, то как? Хочется пример глянуть.
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
-
- Сообщения: 72
- Зарегистрирован: Вс апр 23, 2017 5:27 pm
- Благодарил (а): 25 раз
- Поблагодарили: 2 раза
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Решение проблемы с библиотеками и ошибками компиляции (не хватает BSeries.h и т.п.):
1. Сначала пробовал залить скетч в Ардуино через IDE 1.6.xx. Библиотеки подключал обычным zip файлом через меню IDE. Скетч НЕ компилировался;
2. Установил Arduino IDE 1.0.1. Скетч НЕ компилируется;
3. Переименовал все папки библиотек, в те же имена, что имена файлов *.h и *.cpp ИМЕННО ПОСЛЕ ЭТОГО ВСЁ ЗАРАБОТАЛО!
4. Все скетчи должны лежать в той же папке, что и библиотеки.
5. Думаю если переименовать папки библиотек, как в пункте 3, при установленном IDE версии 1.6.хх, то тоже всё заработает, но я не пробовал.
1. Сначала пробовал залить скетч в Ардуино через IDE 1.6.xx. Библиотеки подключал обычным zip файлом через меню IDE. Скетч НЕ компилировался;
2. Установил Arduino IDE 1.0.1. Скетч НЕ компилируется;
3. Переименовал все папки библиотек, в те же имена, что имена файлов *.h и *.cpp ИМЕННО ПОСЛЕ ЭТОГО ВСЁ ЗАРАБОТАЛО!
4. Все скетчи должны лежать в той же папке, что и библиотеки.
5. Думаю если переименовать папки библиотек, как в пункте 3, при установленном IDE версии 1.6.хх, то тоже всё заработает, но я не пробовал.
-
- Сообщения: 111
- Зарегистрирован: Ср фев 22, 2017 12:08 pm
- Благодарил (а): 55 раз
- Поблагодарили: 13 раз
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
добрый день подскажите почему у меня четыре строки отправки данных в МД грузят процессор сервера на 100%
в этом же скетче отправка в MQTT данных с трех датчиков DHT-22 (шесть строк) идет без тормозов.
Если закоментировать эти четыре строчки загрузка процессора всего 2-10%
(код из POWER MONITORа)
sprintf(buf, "GET /objects/?object=sensorVolt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Vrms, abs(Vrms));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorAmper&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Irms, abs(Irms));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorVatt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)apparentPower1, abs(apparentPower1));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorKwt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)total, abs(total));
sendHTTPRequest();
Функция отправки HTTP-запроса на сервер
void sendHTTPRequest()
{
//Serial.println(buf);
if (ethClient.connect(server, 80))
{
//Serial.println("OK");
ethClient.println(buf);
ethClient.println("Host: 192.168.2.99"); // IP компьютера на котором установлен сервер majordomo
ethClient.println();
delay(2000);
ethClient.stop();
}
}
arduino UNO + W5100
сервер на Win7 32bit, MQTT там же.
в этом же скетче отправка в MQTT данных с трех датчиков DHT-22 (шесть строк) идет без тормозов.
Если закоментировать эти четыре строчки загрузка процессора всего 2-10%
(код из POWER MONITORа)
sprintf(buf, "GET /objects/?object=sensorVolt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Vrms, abs(Vrms));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorAmper&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Irms, abs(Irms));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorVatt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)apparentPower1, abs(apparentPower1));
sendHTTPRequest();
sprintf(buf, "GET /objects/?object=sensorKwt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)total, abs(total));
sendHTTPRequest();
Функция отправки HTTP-запроса на сервер
void sendHTTPRequest()
{
//Serial.println(buf);
if (ethClient.connect(server, 80))
{
//Serial.println("OK");
ethClient.println(buf);
ethClient.println("Host: 192.168.2.99"); // IP компьютера на котором установлен сервер majordomo
ethClient.println();
delay(2000);
ethClient.stop();
}
}
arduino UNO + W5100
сервер на Win7 32bit, MQTT там же.
-
- Сообщения: 34
- Зарегистрирован: Пн янв 23, 2017 8:03 pm
- Благодарил (а): 5 раз
- Поблагодарили: 1 раз
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Ребята подскажите пож-та.
При компиляции выдается такая ошибка:
ArduinoControllerWebServer:86: error: 'commandsHelp' was not declared in this scope
{"HELP", commandsHelp, }, // Выводит список комманд (вызов http://xx.xx.xx.xx/command?8=HELP )
^
ArduinoControllerWebServer:87: error: 'commandsOn' was not declared in this scope
{"ON", commandsOn, }, // Устанавливает "1" на заданном цифровом порту (вызов http://xx.xx.xx.xx/command?8=ON )
^
exit status 1
'commandsHelp' was not declared in this scope
и т.д. на каждую строчку с командами. Если их закоментировать, то скетч компилируется, но команды, естественно не выполняются. Код взят с сайта. Пробовал другие, выложенные в этой теме - результат тот же.
Версия IDE - 185 - последняя , arduino UNO
При компиляции выдается такая ошибка:
ArduinoControllerWebServer:86: error: 'commandsHelp' was not declared in this scope
{"HELP", commandsHelp, }, // Выводит список комманд (вызов http://xx.xx.xx.xx/command?8=HELP )
^
ArduinoControllerWebServer:87: error: 'commandsOn' was not declared in this scope
{"ON", commandsOn, }, // Устанавливает "1" на заданном цифровом порту (вызов http://xx.xx.xx.xx/command?8=ON )
^
exit status 1
'commandsHelp' was not declared in this scope
и т.д. на каждую строчку с командами. Если их закоментировать, то скетч компилируется, но команды, естественно не выполняются. Код взят с сайта. Пробовал другие, выложенные в этой теме - результат тот же.
Версия IDE - 185 - последняя , arduino UNO
-
- Сообщения: 34
- Зарегистрирован: Пн янв 23, 2017 8:03 pm
- Благодарил (а): 5 раз
- Поблагодарили: 1 раз
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Кажется разобрался: на IDE 1.8.5 скетч не компилировался, но заработал без ошибок на 1.0.1 .... на других версиях не проверял.
Спасибо Neocivic - натолкнул на мысль
Спасибо Neocivic - натолкнул на мысль
Neocivic писал(а):Решение проблемы с библиотеками и ошибками компиляции
2. Установил Arduino IDE 1.0.1.;
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Всем привет, а кто-нибудь измерял длину шины для датчиков DS18b20, которую может эмулировать Мега?
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: Скетч Arduino + W5100 обсуждаем, пишем, тестируем
Для управления блоком из 8 реле при помощи Arduino (Uno, Nano, Mega... +W5100 (можно и любой другой сетевой модуль).
В найденном интернете скече убрал всё для меня не нужное и добавил то что нужно и подстроил для себя, что-бы можно было управлять 8-ю реле по mqtt протоколу.
Всё работает, команды посылаются ответы состояния приходят (между прочем хорошая и дешёвая альтернатива реле управляемым по LAN).
1. Вопрос возник, когда захотелось иметь команду включения/отключения всех реле одной командой.
Конечно можно сделать послание команд со стороны умного дома по mqtt, но это в крайнем случае.
2. Вопрос. Неплохо было бы всё записывать в память EEPROM состояние пинов, если при сбое питания всё восстанавливалось в последнее состояние.
Выкладываю скеч. Знаками //*// обозначены безуспешные попытки решения данного вопроса
В найденном интернете скече убрал всё для меня не нужное и добавил то что нужно и подстроил для себя, что-бы можно было управлять 8-ю реле по mqtt протоколу.
Всё работает, команды посылаются ответы состояния приходят (между прочем хорошая и дешёвая альтернатива реле управляемым по LAN).
1. Вопрос возник, когда захотелось иметь команду включения/отключения всех реле одной командой.
Конечно можно сделать послание команд со стороны умного дома по mqtt, но это в крайнем случае.
2. Вопрос. Неплохо было бы всё записывать в память EEPROM состояние пинов, если при сбое питания всё восстанавливалось в последнее состояние.
Выкладываю скеч. Знаками //*// обозначены безуспешные попытки решения данного вопроса
СпойлерПоказать
Код: Выделить всё
/*
connect to mqtt server, send and recive
Arduino Nano
W5100
*/
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>
//#include <EEPROM.h>
const int relay1 = 2;
const int relay2 = 3;
const int relay3 = 4;
const int relay4 = 5;
const int relay5 = 6;
const int relay6 = 7;
const int relay7 = 8;
const int relay8 = 9;
//*// const int relayAll[] = { 2, 3, 4, 5, 6, 7, 8, 9 };
//*// int pinCount = 8;
// Update these with values suitable for your network.
byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte server[] = { 192, 168, 1, 140 };
byte ip[] = { 192, 168, 1, 132 };
void callback(char* topic, byte* payload, unsigned int length)
{
int r,hl;
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
////****///
char receivedChar = (char)payload[0];
Serial.print(receivedChar);
if(receivedChar=='1')
hl = LOW;
else
hl = HIGH;
if(String(topic)=="PowerPanel/relay1")
r = relay1;
else if(String(topic)=="PowerPanel/relay2")
r = relay2;
else if(String(topic)=="PowerPanel/relay3")
r = relay3;
else if(String(topic)=="PowerPanel/relay4")
r = relay4;
else if(String(topic)=="PowerPanel/relay5")
r = relay5;
else if(String(topic)=="PowerPanel/relay6")
r = relay6;
else if(String(topic)=="PowerPanel/relay7")
r = relay7;
else if(String(topic)=="PowerPanel/relay8")
r = relay8;
//*// else if(String(topic)=="PowerPanel/relayAll")
//*// r = relayAll;
else
r = relay1;
//back;
digitalWrite(r, hl);
Serial.println();
}
EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);
void reconnect()
{
// Loop until we're reconnected
while (!client.connected())
{
Serial.println("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("arduinoPowerPanel"))
{
Serial.println("connected");
}
else
{
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
//*// for (int thisPin = 0; thisPin < pinCount; thisPin++) {pinMode(relayAll[thisPin], OUTPUT);}
//*// for (int thisPin;) {pinMode(relayAll[thisPin], OUTPUT);}
if (client.connect("arduinoPowerPanel"))
{
Serial.print("online");
client.publish("PowerPanel/relay1", "1");
client.subscribe("PowerPanel/relay1");
client.publish("PowerPanel/relay2", "1");
client.subscribe("PowerPanel/relay2");
client.publish("PowerPanel/relay3", "1");
client.subscribe("PowerPanel/relay3");
client.publish("PowerPanel/relay4", "1");
client.subscribe("PowerPanel/relay4");
client.publish("PowerPanel/relay5", "1");
client.subscribe("PowerPanel/relay5");
client.publish("PowerPanel/relay6", "1");
client.subscribe("PowerPanel/relay6");
client.publish("PowerPanel/relay7", "1");
client.subscribe("PowerPanel/relay7");
client.publish("PowerPanel/relay8", "1");
client.subscribe("PowerPanel/relay8");
//*// client.publish("PowerPanel/relayAll", "1");
//*// client.subscribe("PowerPanel/relayAll");
}
}
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();
}
Raspberry Pi 3B+