Связь между двумя Arduino/MKR1000
Я пытаюсь создать проект в свободное время просто для развлечения - он состоит из двух MKR1000 (один действует как веб-сервер, подключенный к одному ноутбуку, а другой действует как веб-клиент, подключенный к другому ноутбуку, поэтому я могу просматривать серийный монитор).
К одному MKR1000 подключен потенциометр (поэтому я могу изменить его значение), и он отправляет значение потенциометра на последовательный монитор каждые 4 секунды.
ЦЕЛЬ: Как только веб-сервер настроит сеть Wi-Fi, а веб-клиент подключится к этой сети Wi-Fi, я хочу отправлять значение потенциометра веб-клиенту каждый раз, когда он обновляется. . Однако я понятия не имею, как этого добиться.
Это мой код недействительного цикла веб-сервера (остальное похоже на https:/ /www.arduino.cc/en/Tutorial/Wifi101WiFiWebServer):
void loop() {
WiFiClient client = server.available();
// прослушивание входящих клиентов
if (client) {
// если вы получите клиента,
Serial.println("new client");
// вывести сообщение из последовательного порта
String currentLine = "";
// создаем строку для хранения входящих данных от клиента
while (client.connected()) {
// цикл, пока клиент подключен
if (client.available()) {
// если есть байты для чтения от клиента,
char c = client.read();
// прочитать байт, затем
Serial.write(c);
// вывести его на серийный монитор
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
// содержимое ответа HTTP следует за заголовком:
client.print("Click <a href=\"/showValue\">here</a> showValue of the potentiometer <br>");
// Ответ HTTP заканчивается еще одной пустой строкой:
client.println();
// выйти из цикла while:
break;
} else {
// если вы получили новую строку, то очищаем currentLine:
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
// добавляем его в конец currentLine
}
if (currentLine.endsWith("GET /showValue")) {
Serial.println(sensorValue);
delay(2000);
}
}
}
client.stop();
}
}
Это код моего веб-клиента, который я использую https://www.arduino. cc/en/Tutorial/Wifi101WiFiWebClient — я не уверен, как мне изменить это, чтобы получить значение потенциометра напротив веб-сервера MKR1000. Будем очень признательны за любые советы или подсказки!
Извините, если это простой вопрос, однако я только начинаю с идеи Arduino, и я новичок в программировании!
Спасибо.
@begineerJava, 👍1
2 ответа
В нижней части страницы предоставленной вами ссылки на клиентский код есть ссылка на пример Chat Server. Если вы изучите код, я думаю, вы увидите, как отправлять и получать показания потенциометра. Подсказка: посмотрите в коде, где он повторяет то, что получает.
mkr1000 Wi-Fi Chat Server
Для этого вам не нужно использовать веб-сервер/веб-клиент; необработанный сокет также будет работать. Если вы хотите использовать "веб-технологии":
Веб-клиент может периодически опрашивать веб-сервер для получения нового значения (запрашивать новое значение каждые несколько секунд и интерпретировать ответ), либо веб-сервер инициирует связь каждый раз, когда доступно новое значение.
В последнем случае вы можете использовать события, отправленные сервером, или веб-сокет, оба из которых очень удобны для Google.
Я сделал примеры для обоих, но они довольно большие и имеют дополнительную функциональность. Тем не менее, они могут дать вам некоторые указатели и/или код для повторного использования.
Эти примеры здесь:
https://github.com/ocrdu/arduino-webinterface-sse
и здесь:
https://github.com/ocrdu/arduino-webinterface-websocket-ap
Обратите внимание, что клиентская сторона в примерах — это веб-страница в веб-браузере, но принцип тот же.
- Связь Arduino master/slave с использованием RS485
- Могу ли я использовать выход 3,3 В Arduino напрямую к esp8266?
- Устройство еще не подключено к сети при попытке подключить Arduino uno (с USB) к приложению Blynk
- Не удается подключить мой ESP-12F к Wi-Fi с моим Arduino Uno
- ESP-01 + UNO не обнаруживает шлюз
- Управлять 2 сервоприводами с последовательным считыванием
- Проблема отображение данных отправленных с Arduino Mega на Arduino Mrk1000 с использованием последовательной связи
- Хочу сделать два ардуино для связи по разным Wi-Fi. Возможно ли это?