Как отправить информацию с сайта на ардуино?
В настоящее время у меня есть Arduino Mega + Arduino Ethernet shield, я хотел бы знать, возможно ли отправлять данные на arduino с веб-сайта, размещенного на самом shield. Так что, когда кто-то нажимает кнопку на веб-сайте, он посылает сигнал на arduino для запуска действия. Не мог бы кто-нибудь любезно мне помочь?
1 ответ
Лучший ответ:
Да, конечно!
Перво-наперво - Да, это возможно сделать так, как вы думаете.
Идея состоит в том, чтобы создать сервер на Ethernet Shield и открыть веб-страницу, размещенную на нем, на любом устройстве, и на основе параметров, выбранных на веб-странице, мы можем запускать нужные действия на Arduino.
Я изменил код веб-сервера встроенных примеров Arduino в соответствии с вашими требованиями, просто загрузите его и внесите необходимые изменения по мере необходимости, вот оно-
#include<SPI.h>
#include<Ethernet.h>
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
IPAddress ip(192,168,1,199); // Любой IP-адрес, не входящий в вашу сеть.
EthernetServer server(80); // Порт 80 используется по умолчанию для http.
int led=2;
String request;
void setup(){
Ethernet.begin(mac,ip);
pinMode(led,OUTPUT);
Serial.begin(9600);
}
void loop(){
EthernetClient client = server.available();
if(client)
{
Serial.println("Client is trying to connect......");
while(client.connected())
{
if(client.available())
{
char c = client.read();
request.concat(c);
if(c=='\n'){
Serial.print(request);
if(request.indexOf("ON")>0){
digitalWrite(led,HIGH);
Serial.println("ON");
}
else if(request.indexOf("OFF")>0){
digitalWrite(led,LOW);
Serial.println("OFF");
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
//client.println("Обновить: 5"); // обновляйте страницу автоматически каждые 5 секунд
client.println();
client.println("<!doctype html>");
client.println("<html>");
client.println("<head><title>LED</title></head>");
client.print("<!DOCTYPE HTML><html><body ><a href ='/?LED_ON'><p style = ' text-align:center'>LED ON</p></a><br><a href ='/?LED_OFF'><p style = ' text-align:center'>LED OFF</P></a><br></body></html>" );
client.println("</html>");
client.stop();
request="";
}
}
}
}
}
Этот скетч включит или выключит светодиод, подключенный к цифровому контакту 2.
Вы должны перейти на IP-адрес, который вы предоставляете щиту (192.168.1.199 в моем случае). Вы увидите 2 гиперссылки для включения или выключения светодиода, и это передаст запрос, который Arduino снова и снова ищет в цикле и выполняет соответствующие действия.
Надеюсь, это поможет, попробуйте это и дайте мне знать о результате.
ПРИМЕЧАНИЕ
Убедитесь, что вы получаете доступ к Ethernet Shield только с устройства в вашей локальной сети, в противном случае вам придется использовать переадресацию портов.
Все работает нормально, но я не знаю, возможно ли иметь другой файл на SD-карте в HTML и CSS, чтобы делать то же самое. Вместо того, чтобы иметь целую веб-страницу в самом скетче., @The Little Cousin
Очевидно, что это возможно! Дай мне день или два, я помогу тебе, @Manav
Единственным ограничением для приложений Arduino является воображение пользователя! :), @Manav
Я полностью согласен :D Я всегда так говорю :D 8, @The Little Cousin
На самом деле я понял, что вы здесь делаете, вы используете URL-адрес, чтобы определить, включен ли светодиод, но мне нужен способ, с помощью которого я могу общаться с arduino через интерфейс веб-сайта, отправляя и получая информацию., @The Little Cousin
Вот что это такое. Процесс анализа URL-адреса включает в себя оператор запроса ('?'), этот оператор возьмет нашу ссылку и поместит ее в URL-адрес в том же домене (IP в нашем случае) и когда сервер (Arduino) получает запрос, он соответствующим образом переключает светодиод., @Manav
Хум, нет другого способа, такого как Serial, для связи с arduino из веб-интерфейса., @The Little Cousin
Давайте [продолжим это обсуждение в чате](http://chat.stackexchange.com/rooms/51114/discussion-between-the-little-cousin-and-manav)., @The Little Cousin
https://startingelectronics.org/tutorials/arduino/arduino-MEGA-24-output-web-server/ Я нашел эту статью. Они сделали почти то же самое, используя Ajax., @The Little Cousin
- Разница между массивом char и массивом unsigned char
- Печать содержимого файла SD - карты на ЖК-дисплее
- Использовать светодиод или подтягивающий резистор для предотвращения «плавания» или «фантомного изображения» матричной клавиатуры?
- GPS автономный робот
- Проблема с переменной char* malloc/free. Пустое содержимое в переменной получателя после использования free
- Как использовать SPI на Arduino?
- Как запрограммировать ардуино на чистом C/C++?
- Подключение HX711 к трехпроводному датчику нагрузки
Вы пробовали ввести этот вопрос в Google? Есть много, много примеров того, как это делается., @Mark Smith
@MarkSmith Нет особого способа, которым я пытаюсь, и я попробовал стек, так как он удобен для меня по сравнению с Google, который приведет меня к спам-сайтам, но я не нашел свой ответ в Google, он не был точным., @The Little Cousin