Ethernet shield w5100 регулятор мощности на веб странице
2015-12-13 в 22:42
Постепенно наша страничка из простой Arduino метеостанции превращается в полноценную систему удаленного управления различными устройствами а так же сбор и вывод информации с датчиков по веб интерфейсу Arduino Web Control. Поможет нам в этом Ethernet Shield W5100 а так же Arduino UNO.
Данная статья является логическим продолжением предыдущего материала где мы установили кнопки управления реле. Думаю у вас не возникло сложностей с повторением, поэтому предлагаю продолжить.
Давайте по кусочкам разберемся.
Html код вызова "ползунка"выглядит так:
Скрипт, который отвечает за работу ползунка и отправку значения исходя из его положения будет следующим:
Код
function PWM(){
value = document.getElementById("led_PWM").value;
var request = new XMLHttpRequest();
request.open("GET", "\setpin?pin=5?value=" + value, false);
request.send(null);
}
Нагрузку подключаем на 9 цифровой выход. На плате даже есть подсказка в виде "~" что означает что вывод поддерживает широтно-импульсную модуляцию.
В прошивке указываем 9 пин как цифровой выход.
Код
pinMode(9, OUTPUT);
Эти строки в прошивке отвечают за управление регулятором мощности (в моем случае) яркостью светодиода. Работает благодаря ШИМ.
Код
else if (StrContains(HTTP_req,"setpin?pin=5")) {
String input = HTTP_req;
int posStart = input.indexOf("value=");
int posEnd = input.indexOf(' ',posStart);
String param = input.substring(posStart+6,posEnd+1);
pin5 = param.toInt();
analogWrite(9,pin5);
sendBaseAnswer(client);
}
Так же решил изменить немного оформление странички. Теперь ведь это уже не совсем метеостанция как определили в начале.
Добавили стиль для тега "<h2>". Он будет применяться для названий строк функций.
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 sendBaseAnswer(EthernetClient client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
}
void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 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;
}
Файлы "index.htm" и "my.css" загружаем в корень карты памяти. Index.htm сохраняем в кодировке utf-8! Так же и файлами картинок. Они в архиве. Его распаковываем и так же в корень карты.
В качестве удаленно управляемых устройств вы можете использовать различные светильники, вентиляторы и прочее. Только нужно будет устанавливать модуль реле. В случае с регулятором мощности, можно использовать как полевые транзисторы так и симисторы. Все зависит от регулируемого напряжения. Можно регулировать яркость свечения к примеру светильника, люстры в комнате, вентилятора или светодиодной ленты. Ну вам виднее где вы его сможете применить.
Все названия кнопок и остального вы легко можете поменять на свои. Так же и с регулятором мощности. Изменяйте названия в файле "index.htm".
UPD.15.01.2016
Был произведен рефакторинг, что позволило сэкономить 6% объема памяти Ардуино.
Рефакторинг — это процесс улучшения написанного ранее кода путем такого изменения его внутренней структуры, которое не влияет на внешнее поведение.
Вот собственно и измененный код. Никаких доп функций здесь нет, только лишь код стал короче.
Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!
Mq 2 Датчик очень хорошо реагирует на газ из зажигалки, на задымленность но на газовую печку не реагирует вообще. Чувствительность датчика можно отрегулировать переменным резистором. Лучше ставить mq 9 и попробовать что то типа
Добрый день! Помогите с датчиком. Дело в том что у меня 11-го датчика нет, а есть DHT22. Как его сюда прикрутить?Наверное просто библиотеку подкинуть не получиться? В скетче тоже правки нужны. И ещё - возможно вместо (или С) датчика дыма что-нибудь 1-WIRE? Например DS18B20?
Иван2016-04-21 08:47
Доброго времени суток! Пожалуйста, помогите прикрутить DHT22!
Тема отличная, спасибо разработчикам!!! Разобрался практически без проблем, подвела mSD карта. На стандартных примерах работала (CardInfo, Datalogger). Карту брал из китая 128мб microSD HC, специально для шилда, с данной метеостанцией не работает. Форматировал fat16 и 32 не загружается ничего Заработала на 4Гб microSD HC 4класс KINGMAX, подскажите может что то с картой делаю не так? Очень хочется, чтобы на 128мб работала.
Спасибо за объёмную работу! Взял проект для применения в моём доме. Немного переделал шаблоны HTML и CSS? получается интересно. Стал перед проблемой с отображением времени, был бы признателен еслиб подсказали как подключить часы. Могу в замен поделиться шаблонами дизайна. Шаблон полностью адаптивный, под любое устройство.
Timofei Думаю проблема не в карте, попробуйте нормально отформатировать. При форматировании Выбирите Fat32, стандартный размер клястера и снимите галочку быстрое форматирование. Должно получится.
Прописываю к ним команды и все пины работают кроме pin10 и pin11. При нажатии на кнопку pin10 или pin11 почему то срабатывает реле pin1. Я так понимаю что программа воспринимает только первое значение 1. Каким образом объяснить программе что это разные пины? Каким образом увеличить количество пинов в скетче?
Ответ Автора: Сейчас не вспомню, но ethernet shield w5100 использует какието дополнительно пины для своей работы, убедитесь что вы их не используете.
ethernet shield w5100 microSD - не видет index.htm2016-12-30 05:13
SD - Более 4 гиг не видит. 2 гиг SD про инициализировала но писать не может и не видит index.htm , хотя при чтении показывает существование файлов. Ищю решение с SdFat, эта библиотека видит все , работает с 32 гига.