Отправить запрос с помощью NODEMCU при нажатии клавиши
Привет, я хочу отправить запрос на сервер с помощью метода get с параметрами URL, когда клавиша нажата с помощью nodemcu. Но я не могу сделать эту работу, я получил следующую ошибку от последовательного монитора:
Я получаю эту ошибку от последовательного монитора
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v951aeffa
~ld
Мой основной код
#include <ESP8266WiFi.h>
const char* ssid = "MobinNet1365";
//заменить на свой собственный wifi ssid
const char* password = "G12229M1Q64"; //заменить на свой собственный //wifi ssid password
const char* host = "webhook.site";
const int button = 8;
int temp = 0;
void setup() {
Serial.begin(115200);
pinMode(button, INPUT);
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
temp = digitalRead(button);
if (temp == HIGH) {
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
String url = "/df35c8cd-0398-4c92-b55f-b9e36629b309";
url += "?switche=";
url += "1";
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
}
}
мой код отправки запроса приведен ниже:
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
const char* host = "";
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {
delay(5000);
++value;
Serial.print("connecting to ");
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
String url = "/";
/* url += "?param1=";
url += param1;
url += "?param2=";
url += param2;
*/
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000)
{
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
while (client.available())
{
String line = client.readStringUntil('\r'); Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
И мой детектор кода нажатия клавиши находится ниже:
const int button = 8;
int temp = 0;
void setup() {
Serial.begin(9600);
pinMode(button, INPUT);
}
void loop() {
temp = digitalRead(button);
if (temp == HIGH) {
Serial.println("LED Turned ON");
delay(1500);
}
else {
Serial.println("LED Turned OFF");
delay(1500);
}
}
И моя схема такова:
NodeMCU => Микропереключатель
VIN => C
D0 => НЕТ
G => 10k => НЕТ
Как я могу сделать так, чтобы при нажатии этой клавиши он отправлял запрос?
@Alirezaaraby, 👍0
Обсуждение1 ответ
ИМХО, некоторые соображения :
- const int button = 8; const int button = 5; // ИЗМЕНИТЬ НА Pin "D1 GPIO5"
GPIO8 используется для подключения флэш-чипа, вы можете перейти на вывод "D1", который является GPIO 5.
- Сверьтесь с распиновкой вашей платы.
- чтобы предотвратить непрерывный вызов внутри цикла, вы можете использовать millis();
например :
void GetUrl() {
temp = digitalRead(button);
if (temp == HIGH) {
Serial.println(host);
WiFiClient client;
const int httpPort = 80;
String url = "/df35c8cd-0398-4c92-b55f-b9e36629b309";
url += "?switche=";
url += "1";
String link = String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n";
// Serial.println( "link : " + link );
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
}
}
unsigned long previousMillis = 0;
const long interval = 1000 * 0.5; // 500ms (0.5 sec)
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
GetUrl();
}
}
Ссылка :
https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay
https://iotbyhvm.ooo/gpio-pins-esp8266/
- WebSocketsServer.h: No such file or directory
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- ESP8266 не подключается к Wi-Fi
- Как определить размер Flash?
- В ESP-12E NodeMCU, какой выход PIN A0?
- ESP8266 Аналоговое чтение мешает Wi-Fi?
- Преобразование byte* в int в Arduino
- Было найдено несколько библиотек для «WiFiClient.h» с помощью nodemcu.
Я не совсем понимаю-что такое фактический код ypur? Один кусок кода никогда не инициализирует "хост", другой-нет. Каков фактический код, вызывающий ошибку? Вы делаете запрос между двумя NodeMCU?, @Dave Newton
Нет,это просто для отправки запроса на сервер при нажатии клавиши, но я получаю "ets Jan 8 2013, первая причина:4, режим загрузки:(3,7) wdt сброс нагрузки 0x4010f000, len 1384, номер 16 хвост 8 chksum 0x2d csum 0x2d v951aeffa ошибка ~ld", и этот код имеет заголовок с именем main code, является моим фактическим кодом, @Alirezaaraby
Пожалуйста, укажите только соответствующий код., @Dave Newton
почему вы считаете,что сообщение "ets Jan 8 2013, rst cause:4, boot mode:(3,7) ..." является сообщением об ошибке?, @jsotola