Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства

Тут можно читать онлайн Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство БХВ-Петербург, год 2015. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Джереми Блум - Изучаем Arduino: инструметы и методы технического волшебства краткое содержание

Изучаем Arduino: инструметы и методы технического волшебства - описание и краткое содержание, автор Джереми Блум, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Книга посвящена проектированию электронных устройств на основе микроконтроллерной платформы Arduino. Приведены основные сведения об аппаратном и программном обеспечении Arduino. Изложены принципы программирования в интегрированной среде Arduino IDE. Показано, как анализировать электрические схемы, читать технические описания, выбирать подходящие детали для собственных проектов. Приведены примеры использования и описание различных датчиков, электродвигателей, сервоприводов, индикаторов, проводных и беспроводных интерфейсов передачи данных. В каждой главе перечислены используемые комплектующие, приведены монтажные схемы, подробно описаны листинги программ. Имеются ссылки на сайт информационной поддержки книги. Материал ориентирован на применение несложных и недорогих комплектующих для экспериментов в домашних условиях.
Для радиолюбителей

Изучаем Arduino: инструметы и методы технического волшебства - читать онлайн бесплатно полную версию (весь текст целиком)

Изучаем Arduino: инструметы и методы технического волшебства - читать книгу онлайн бесплатно, автор Джереми Блум
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

14.2.3. Написание программы для Arduino-сервера

Теперь нам необходимо созданный HTML-код веб-страницы интегрировать в программу Arduino-сервера, который будет обрабатывать подключение к сети, выдавать на запросы клиентов страницу и обрабатывать переменные, получаемые методом GET.

Подключение к сети и получение IP-адреса через DHCP

Благодаря механизму DHCP подключить к сети плату Arduino с Ethemet-адаптером очень просто. Перед обсуждением кода программы давайте посмотрим, как это будет происходить. Вначале нужно подключить библиотеки SPI и Ethemet, определить MAC-адрес вашего Ethemet-адаптера (он указан на этикетке) и создать экземпляр объекта EthernetServer. В функции setup() вы начинаете сеанс Ethernet с MAC-адреса, который вы определили, и запускаете веб-сервер. При необходимости можно назначить статический IP-адрес при инициировании Ethernet, но если этот аргумент пуст, то Arduino будет получать IP-адрес через DCHP и выведет назначенный IP-адрес в последовательный терминал. Затем этот IP-адрес потребуется для подключения к Arduino и просмотра веб-страницы.

- 309 -

Ответ на клиентский запрос

В основном цикле loop() происходит несколько действий. Для обработки различных действий проверяются переменные состояния, чтобы отслеживать, что было выполнено и что еще должно произойти для успешной связи с клиентом. Плата Arduino постоянно будет ожидать клиентских подключений к серверу, например с вашего ноутбука. При подключении клиента ответ содержит две вещи: НТТРзаголовок ответа и тип форматирования веб-страницы, выдаваемой по запросу. Заголовок ответа, отправляемый в браузер, сообщает, какая информация будет отправлена на запрос. Когда вы пытаетесь посетить несуществующую страницу, получаете "страшный" ответ: "404 Responce". Заголовок 404 указывает браузеру, что сервер не может найти запрашиваемую страницу. Ответ "200 Response" указывает, что запрос был получен и что HTML-данные будут передаваться в браузер.

Если вы хотите послать сообщение "200 Response" в браузер, а затем передать HTML-данные, то заголовок будет выглядеть так:

НТТР/1.1 200 ОК

Content-Type: text/html

После заголовка должно следовать содержимое вашей HTML-страницы. Программа также обрабатывает GET-запросы. Чтобы определить GET-запрос, нужно искать символ ? в URL. Если найден символ ?, программа ждет, пока не получит имя переменной. Команда для управления светодиодом - это L, команда для регулировки частоты динамика - s. Программа анализирует значения переменных и управляет сигналами на выводах Arduino. После этого следует команда break для выхода из цикла подключенного клиента, и программа начинает ожидать новое подключение клиента, чтобы повторить весь процесс сначала.

Итоговая программа веб-сервера

Теперь, учитывая все сказанное ранее, мы можем написать код программы вебсервера Arduino. Программа довольно нетривиальная, потому что содержит несколько переменных состояния, которые позволяют отслеживать взаимодействие между клиентом и сервером. Код, приведенный в листинге 14.2, управляет RGB-светодиодом и динамиком. В программу легко добавить функции с большим числом GET-переменных. Места, куда вы можете вставить дополнительную функциональность, указаны в комментариях листинга.

Листинг 14.2. Код веб-сервера - control_led_speaker.ino

// Arduino веб-сервер

// Часть адаптированного кода под лицензией MIT License от

// http://bildr.org/2011/06/arduino-ethernet-pin-control/

#include

#include

const int BLUE =5;

const int GREEN =6;

- 310 -

const int RED =7;

const int SPEAKER =3;

// Для управления RGB-светодиодом и динамиком

// Если вы хотите использовать дополнительные устройства,

// добавляйте переменные сюда

int freq = 0;

int pin;

// MAC-адрес устройства

// Должен быть написан на этикетке вашего устройства

// или можете использовать этот

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4A, 0xE0 };

// Сервер на порту 80

EthernetServer server = EthernetServer(80); //Порт 80

boolean receiving = false; // Отслеживание данных GET

void setup()

{

Serial.begin(9600);

pinMode(RED, OUTPUT);

pinMode(GREEN, OUTPUT);

pinMode(BLUE, OUTPUT);

// Соединение с DHCP

if ( !Ethernet.begin (mac))

{

Serial.println("Could not Configure Ethernet with DHCP.");

return;

}

else

{

Serial.println("Ethernet Configured!");

}

// Запуск сервера

server.begin();

Serial.print("Server Started.\nLocal IP: ");

Serial.println(Ethernet.localIP());

}

void loop()

{

EthernetClient client

server.available();

if (client)

{

// Запрос НТТР заканчивается пустой строкой

boolean currentLineisBlank

true;

boolean sentHeader = false;

- 311 -

while (client.connected())

{

if (client.available())

{

char с = client.read(); // Чтение из буфера

if(receiving && с == ' ') receiving = false;

//Окончание передачи

if(c == '?') receiving = true; // Поиск символа?

// Ожидание данных GET

if(receiving)

// Данные управления светодиодом (переменная L)

if (с == 'L')

Serial.print ( "Toggling Pin ");

pin = client.parseInt();

Serial.println(pin);

digitalWrite(pin, !digitalRead(pin));

break;

}

// Команда управления динамиком (переменная S)

else if (с == 'S')

{

Serial.print("Setting Frequency to ");

freq = client.parseInt();

Serial.println(freq);

if (freq == 0)

noTone(SPEAKER);

else

tone(SPEAKER, freq);

break;

}

// Код для управления дополнительными устройствами

// добавляем сюда

}

// Отправка заголовка ответа

if ( ! sentHeader)

{

// Отправить стандартный заголовок НТТР ответа

client.println("HTTP/1.1 200 ОК");

client.println ( "Content-Type: text/html \n");

// Кнопка переключения красного для RGB

client.println ( "

");

client.println("");

client.println("");

client.println("

");

- 312 -

// кнопка переключения зеленого для RGB

client.println ( "

");

client.println("");

client.println("");

client.println("

");

// кнопка переключения синего для RGB

client.println ( "

");

client.println("");

client.println("");

client.println("

");

// Ползунок для выбора частоты динамика

client.println("

");

client.print("

"step = '100' value = '0'/>");

client.println("");

client.println("

");

// Добавить формы для управления

// дополнительными устройствами

sentHeader = true;

}

if (с=='\n' && currentLineisBlank) break;

if (с=='\n')

{

currentLineisBlank=true;

}

else if (с ! = '\r')

{

currentLineisBlank=false;

}

}

}

// Дать время веб-браузеру на получение данных

delay(5);

client.stop(); // Закрыть соединение

}

}

Приведенная программа выполняет все функции, описанные в предыдущих разделах. Измените MAC-адрес на значение, указанное на этикетке вашего Ethemet-адаптера. Если вы не найдете этот адрес, возьмите значение из листинга 14.2. Загрузите программу на плату Arduino и запустите монитор последовательного порта.

Убедитесь, что плата Arduino подключена к сети и в маршрутизаторе включен

DHCP. Через несколько секунд в мониторе последовательного порта появится сообщение о назначенном IP-адресе (рис. 14.4).

В случае, показанном на рис. 14.4, Arduino был назначен локальный IP-адрес 192.168.0.9. В вашей сети почти наверняка будет другой адрес. Зная IP-адрес, можно использовать его для доступа к веб-интерфейсу.

- 313 -

Рис 144 Вывод в последовательный порт полученного по DHCP IPадреса 143 - фото 153

Рис. 14.4. Вывод в последовательный порт полученного по DHCP IP-адреса

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Джереми Блум читать все книги автора по порядку

Джереми Блум - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Изучаем Arduino: инструметы и методы технического волшебства отзывы


Отзывы читателей о книге Изучаем Arduino: инструметы и методы технического волшебства, автор: Джереми Блум. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x