Форум

Новые сообщения · Участники · Правила форума
Arduino и Ethernet Shield W5100
Администратор
Администратор
иконка админ
2015-12-08 16:13 #1
Arduino и Ethernet Shield W5100 обсуждение цикла статей.

Часть 1 - Начало проекта.
Часть 2 - Добавлено динамическое обновление данных и работа с SD картой.
Часть 3 - Добавлено оформление страницы.
Часть 4 - Добавлено управление реле.
Часть 5 - Добавлен регулятор мощности нагрузки в виде ползунка.
NEW!!! Часть 6 - Реализация включения реле по таймеру

Профиль

Администратор
TehnopageTeam
щит админа


dronsoft
dronsoft
2016-01-11 20:27 #46
Народ а никто не думал основу замутить на отдельном пк например а арду оставить как исполнительное устройство? на сд карту например писать логи событий а остальное пусть нормальный сервер делает там и решить вопрос с паролями просче и визуаляцию можно по интереснее забабахать и сильно не заморациваться по поводу  места в памяти.

Профиль
toto123
toto123
2016-01-11 20:36 #47
Цитата dronsoft ()
Народ а никто не думал основу замутить на отдельном пк например а арду оставить как исполнительное устройство? на сд карту например писать логи событий а остальное пусть нормальный сервер делает там и решить вопрос с паролями просче и визуаляцию можно по интереснее забабахать и сильно не заморациваться по поводу  места в памяти.
 В том то всё и дело смысл  ардуины,  чтобы замутить все это компактно, бюджетно, автономно... Ну не могу себе представить чтобы весной в теплице измерять пару температур ( почвы, воздуха ) + влажность и для этого мне еще там сервак что ли реальный ставить ? Думаю всему своё место.

Профиль
Администратор
Администратор
иконка админ
2016-01-11 22:19 #48
Если кого-то не устраивает дизайн страницы, он легко и просто меняется. Нами быо сделано то что можем и знаем как. Хотя уверен, что знающий в веб-дизайне человек и такую страницу сделал бы иначе.

Профиль
ATT
ATT
2016-01-12 15:06 #49
Цитата Администратор ()
Как по мне, так библиотека dht.11 отсутствует.

Прикрепления: 2486783.jpg (168.6 Kb)

Профиль

ATT
TehnopageTeam
щит админа

Администратор
Администратор
иконка админ
2016-01-12 18:37 #50
ATT, А было очень похоже.

Профиль
dronsoft
dronsoft
2016-01-12 23:31 #51
Цитата Администратор ()
Если кого-то не устраивает дизайн страницы, он легко и просто меняется. Нами быо сделано то что можем и знаем как. Хотя уверен, что знающий в веб-дизайне человек и такую страницу сделал бы иначе.
Дак я не против вашей страницы даже наоборот понравилась, просто если мало места может то что его жрет убрать на пк к примеру, я просто к тому что чем меньше всего будет то больше для функционала останется.

Профиль
dronsoft
dronsoft
2016-01-12 23:41 #52
Вот минимальный мой вариант с фунционалом термостата. Если кому надо.

Прикрепления: Kotel_1.ino (4.4 Kb)

Профиль
ilnar
ilnar
2016-01-13 11:27 #53
У меня подключен только bmp185 однако на веб морде показывает еще и датчик дыма,откуда идут данные не пойму. и я похоже немного испортил исходник вместо реле 1 зеленеет реле3.

Код
#include
#include
#include
#include
#include
#include

#define REQ_BUF_SZ 20
#define DHTPIN 7
#define DHTTYPE DHT22
File webFile;
DHT dht(DHTPIN, DHTTYPE);

char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
char req_index = 0; // index into HTTP_req buffer
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 0, 110);
EthernetServer server(80);
Adafruit_BMP085 bmp;
bool pin1;
bool pin2;
bool pin3;
bool pin4;

void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
bmp.begin();
SD.begin(4);
pin1 = pin2 = pin3 = pin4 = 0;
}

void loop() {
float h = dht.readHumidity();
float ts = dht.readTemperature();
float t = bmp.readTemperature();
float pa = bmp.readPressure()/133.322;
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c; // save HTTP request character
req_index++;
}
if (c == '\n' && currentLineIsBlank) {
if (StrContains(HTTP_req, "GET / ") || StrContains(HTTP_req, "GET /index.htm")) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
webFile = SD.open("index.htm");
} else if (StrContains(HTTP_req, "GET /favicon.ico")) {
webFile = SD.open("favicon.ico");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
} else if (StrContains(HTTP_req, "GET /temp.png")) {
webFile = SD.open("temp.png");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
} else if (StrContains(HTTP_req, "GET /humid.png")) {
webFile = SD.open("humid.png");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
} else if (StrContains(HTTP_req, "GET /flame.png")) {
webFile = SD.open("flame.png");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
}else if (StrContains(HTTP_req, "GET /press.png")) {
webFile = SD.open("press.png");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
} else if (StrContains(HTTP_req, "GET /my.css")) {
webFile = SD.open("my.css");
if (webFile) {
client.println("HTTP/1.1 200 OK");
client.println();
}
} else if (StrContains(HTTP_req, "ajax_flame")) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
int smoke_gas = 0; //пин на котором подключен MQ-2
int sensorReading = analogRead(smoke_gas);
client.print(sensorReading);
client.println(":");
client.print(t);
client.print(":");
client.print(ts);
client.print(":");
client.print(h);
client.print(" :");
client.print(pa);
client.print(" :");
client.print((digitalRead(2)) ? "1" : "0");
client.print(":");
client.print((digitalRead(3)) ? "1" : "0");
client.print(":");
client.print((digitalRead(5)) ? "1" : "0");
client.print(":");
client.print((digitalRead(6)) ? "1" : "0");

} else if (StrContains(HTTP_req, "setpin?pin=1")) {
pin1 = !pin1;
digitalWrite(2, pin1);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
} else if (StrContains(HTTP_req, "setpin?pin=2")) {
pin2 = !pin2;
digitalWrite(3, pin2);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
} else if (StrContains(HTTP_req, "setpin?pin=3")) {
pin3 = !pin3;
digitalWrite(5, pin3);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
} else if (StrContains(HTTP_req, "setpin?pin=4")) {
pin4 = !pin4;
digitalWrite(6, pin4);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
}

if (webFile) {
while (webFile.available()) {
client.write(webFile.read()); // send web page to client
}
webFile.close();
}
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
} else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}

void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str = 0;
}
}

char StrContains(char *str, char *sfind)
{
char found = 0;
char index = 0;
char len;
len = strlen(str);
if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str [index]== sfind[found]
) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}
else {
found = 0;
}
index++;
}
return 0;
}

удаленный контроль ethernet w5100

Прикрепления: 2340200.png (19.0 Kb)

Профиль
ilnar
ilnar
2016-01-13 11:33 #54
Ранее написанное не редактируется ?хотел скетч выложить , что то не то получился...

Прикрепления: meteostansia2.ino (6.3 Kb)

Профиль

ilnar
TehnopageTeam
щит админа


Администратор
Администратор
иконка админ
2016-01-13 15:10 #55
ilnar, Выложи пожалуйста и картинки с кодом страницы

Профиль
AspiD
AspiD
2016-01-13 15:46 #56
по поводу
Цитата dronsoft ()
Народ а никто не думал основу замутить на отдельном пк например а арду оставить как исполнительное устройство? на сд карту например писать логи событий а остальное пусть нормальный сервер делает там и решить вопрос с паролями просче и визуаляцию можно по интереснее забабахать и сильно не заморациваться по поводу места в памяти.
компактно с блекджеком и шлюхами - Raspberry Pi. Справится и с авторизацией и с работой реле и датчиков напрямую.
Цитата toto123 ()
Ну не могу себе представить чтобы весной в теплице измерять пару температур ( почвы, воздуха ) + влажность и для этого мне еще там сервак что ли реальный ставить ? Думаю всему своё место.
советую глянуть в сторону nrf24. витуху в теплицу тянуть тоже не всегда оправданно, особенно без PoE.

простенькую авторизацию, кстати, сделать не проблема. и она влезет без особых проблем. Мониторинг портов - проще простого. поскольку данная прошивка, по сути, этим и занимается =))

Профиль
AspiD
AspiD
2016-01-13 15:48 #57
Цитата stepan_zh ()
а можно создать приложение на андроид
разрешаю =)

Профиль
ilnar
ilnar
2016-01-13 16:17 #58
admin, я ранее выкладывал код и картинку, можно еще раз


Прикрепления: 3694954.ino (6.3 Kb) · 0656307.png (19.0 Kb)

Профиль

ilnar
TehnopageTeam
щит админа


toto123
toto123
2016-01-13 16:23 #59
Цитата ilnar ()
У меня подключен только bmp185 однако на веб морде показывает еще и датчик дыма,откуда идут данные не пойму. и я похоже немного испортил исходник вместо реле 1 зеленеет реле3.
А там ещё над файликом index.htm поработать надо... как только лишнее "выкините из него" так сразу и цвета кнопочек на своё место встанут и дым пропадёт.  Скиньте этот фйл посмотреть.

Профиль
ilnar
ilnar
2016-01-13 16:30 #60
admin, у меня в планах собрать в ардуино датчики газа (пропан т.п.), угарного газа,температуры помещения, температура снаружи, атм. давления релейный модуль и пищалку.И все это поставить родителям в частный дом в помещение газового отопления.При появлении какого либо газа пищал и включался вытяжной вентилятор.А остальное датчики для общей информации:)

Добавлено (2016-01-13, 16:28)
---------------------------------------------
toto123

Добавлено (2016-01-13, 16:30)
---------------------------------------------
Цитата toto123 ()
А там ещё над файликом index.htm поработать надо... как только лишнее "выкините из него" так сразу и цвета кнопочек на своё место встанут и дым пропадёт.  Скиньте этот фйл посмотреть.

Профиль
Поиск: