Соединение Arduino с сервером не удалось
Я пытаюсь подключить Arduino Uno и Ethernet Shield и попытаться отправить некоторые данные в веб-приложение asp.net api. Когда я загружаю скетч, у меня не удалось подключиться к последовательному монитору. Я не понимаю, что происходит не так? Ниже приведен код, который я использую
#include "cactus_io_DHT22.h"
#include <SPI.h>
#include <Ethernet.h>
#include <Client.h>
#define DHT22_PIN 2
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xDD };
IPAddress ip(192,168,0,177);
IPAddress server(192,168,0,11);
EthernetClient client;
DHT22 dht(DHT22_PIN);
float heatindex1 =0.00;
float heatindex2 = 0.00;
void setup() {
Ethernet.begin(mac,ip);
delay(1000); Serial.begin(9600);
Serial.println("connecting...");
if (client.connect(server, 80)) {
Serial.println("connected :D ");
}
Serial.print("Arduino server IP address: ");
Serial.println(Ethernet.localIP());
Serial.println("DHT22 Humidity - Temperature Sensor");
Serial.println("RH\t\tTemp (C)\tTemp (F)\tHeat Index (C)\t Heat Index
(F)\t Max(C)\t\t Min(C)");
dht.begin();
dht.readHumidity();
dht.readTemperature();
}
float max1=dht.temperature_C;
float min1=100;
void loop() {
dht.readHumidity();
dht.readTemperature();
heatindex1=dht.computeHeatIndex_C();
heatindex2=dht.computeHeatIndex_F();
if(dht.temperature_C>max1)
{max1=dht.temperature_C;}
if(dht.temperature_C<min1)
{min1=dht.temperature_C;}
// Проверяем, не удалось ли какое-либо чтение, и выходим раньше (чтобы повторить попытку).
if (isnan(dht.humidity) || isnan(dht.temperature_C)) {
Serial.println("DHT sensor read failure!");
return;
}
if (client) {
// Когда клиент отправляет запрос веб-серверу, этот запрос заканчивается пустой строкой
boolean currentLineIsBlank = true;
Serial.println("OK"); }
if (client.connect(server, 80)) {
client.print("GET /api/todo?humidity=");
client.print(dht.humidity);
client.print("&temperature1=");
client.print(dht.temperature_C);
client.print("&temperature2=");
client.print(dht.temperature_F);
client.print("&heatindex1=");
client.print(heatindex1);
client.print("&heatindex2=");
client.print(heatindex2);
client.print("&max1=");
client.print(max1);
client.print("&min1=");
client.print(min1);// Именно это мы и сделали в разделе тестирования выше. Мы делаем запрос GET так же, как и в нашем браузере, но теперь с использованием оперативных данных с датчика.
client.println(" HTTP/1.1"); // Часть запроса GET
client.println("Host: 192.168.0.11"); // ВАЖНО: Если вы используете XAMPP, вам нужно будет узнать IP-адрес вашего компьютера и указать его здесь (это описано в предыдущей статье). Если у вас есть веб-страница, введите ее адрес (например, хост: «www.yourwebpage.com»).
client.println("Connection: close"); // Часть запроса GET, сообщающая серверу, что мы пересылаем сообщение
client.println(); // Пустая строка
client.println(); // Пустая строка
client.stop(); // Закрываем соединение с сервером
}
else {
//Если Arduino не может подключиться к серверу (вашему компьютеру или веб-странице)
Serial.println("--> connection failed\n");
}
Serial.print(dht.humidity); Serial.print(" %\t\t");
Serial.print(dht.temperature_C); Serial.print(" *C\t");
Serial.print(dht.temperature_F); Serial.print(" *F\t");
Serial.print(dht.computeHeatIndex_C()); Serial.print(" *C\t ");
Serial.print(dht.computeHeatIndex_F()); Serial.print(" *F\t ");
Serial.print(max1); Serial.print(" *C\t ");
Serial.print(min1); Serial.println(" *C\t");
delay(5000);
}
@esmehsnj, 👍0
1 ответ
▲ 1
Я не знаю об этой библиотеке, но вы используете код подключения дважды: один раз в setup(), а затем еще раз в цикле().
Вы уже проверяете, существует ли клиент:
if (client) {
Почему вы снова просите несколько строк ниже для подключения?
if (client.connect(server, 80)) {
Я предполагаю, что этот пункт if() не нужен. Или соединение в setup() следует удалить.
Если это не источник ошибки, сначала проверьте, работает ли сервер на 192.168.0.11 и можно ли подключиться (с другого устройства) к порту 80.
,
@Stefan M
Смотрите также:
- Как получить HTTPS на Arduino?
- Клиент MQTT на Arduino + SIM900
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Ethernet nodemcu
- Удаленная загрузка кода на плату Arduino через интернет
- Экран Ethernet не получает IP
- Где я могу найти лучшую схему выводов для платы «Arduino Ethernet»?
- Использование AysncUDPMessage для ESP32 для отправки строковых данных