27-02-2023, 01:40
(Ten post był ostatnio modyfikowany: 27-02-2023, 16:56 przez husc777@gmail.com.)
Witam.
Mam następujący problem
Póbuję przesłać dane z arduino do esp8266 przez port szeregowy. Niestety esp nie odczytuje danych. Port szeregowy softwarowy na pinach 3 i 4 esp (Rx,Tx). Hardwerowy ma te dane w celach kontrolnych przesłać do portu szeregowego na komputer. Dane pochodzą z czujniika dht11 podłączonego do arduino. Początkowo pin Tx z arduino podłączyłem do pinu 3 przez konwerter napięć z 5 v na 3,3 v była też próba przez dzielnik napięcia. Brak jakiego kolwiek odzczytu. Na pinie Tx z arduino po przyłożeniu voltomierza widniej wynik około 4,98V~`5V.
kod arduino:
#include <DHT.h>
#define DHTPIN 2 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
delay(10);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" °C, Humidity: ");
Serial.print(h);
Serial.println(" %");
Serial.print("Sending data to ESP8266: ");
Serial.print(t);
Serial.print(",");
Serial.println(h);
delay(5000); // Wait 5 seconds before sending next reading
}
kod wgrany do esp (nie mojego autorstwa):
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <WiFiServer.h>
SoftwareSerial arduinoSerial(3, 4); // RX, TX
const char* ssid = "ssid";
const char* password = "password";
const char* server = "api.thingspeak.com";
const char* apiKey = "your_APIKEY";
WiFiClient client;
void setup() {
Serial.begin(9600);
arduinoSerial.begin(9600);
delay(10);
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, password);
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
if (arduinoSerial.available()) {
String data = arduinoSerial.readStringUntil('\n');
Serial.print("Received data from Arduino: ");
Serial.println(data);
int commaIndex = data.indexOf(',');
if (commaIndex != -1) {
String t = data.substring(0, commaIndex);
String h = data.substring(commaIndex + 1);
String url = "/update?api_key=";
url += apiKey;
url += "&field1=";
url += t;
url += "&field2=";
url += h;
url += "\r\n";
if (client.connect(server, 80)) {
client.print("GET ");
client.print(url);
client.println("HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.stop();
}
}
}
}
Celem całego projeku jest przesłanie tych danych na stronę thingspeak po dodaniu wiekszej liczby czujników.
Proszę o podanie możliwej przyczyny nie przesyłania danych.
Mam następujący problem
Póbuję przesłać dane z arduino do esp8266 przez port szeregowy. Niestety esp nie odczytuje danych. Port szeregowy softwarowy na pinach 3 i 4 esp (Rx,Tx). Hardwerowy ma te dane w celach kontrolnych przesłać do portu szeregowego na komputer. Dane pochodzą z czujniika dht11 podłączonego do arduino. Początkowo pin Tx z arduino podłączyłem do pinu 3 przez konwerter napięć z 5 v na 3,3 v była też próba przez dzielnik napięcia. Brak jakiego kolwiek odzczytu. Na pinie Tx z arduino po przyłożeniu voltomierza widniej wynik około 4,98V~`5V.
kod arduino:
#include <DHT.h>
#define DHTPIN 2 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
delay(10);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" °C, Humidity: ");
Serial.print(h);
Serial.println(" %");
Serial.print("Sending data to ESP8266: ");
Serial.print(t);
Serial.print(",");
Serial.println(h);
delay(5000); // Wait 5 seconds before sending next reading
}
kod wgrany do esp (nie mojego autorstwa):
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <WiFiServer.h>
SoftwareSerial arduinoSerial(3, 4); // RX, TX
const char* ssid = "ssid";
const char* password = "password";
const char* server = "api.thingspeak.com";
const char* apiKey = "your_APIKEY";
WiFiClient client;
void setup() {
Serial.begin(9600);
arduinoSerial.begin(9600);
delay(10);
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, password);
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop() {
if (arduinoSerial.available()) {
String data = arduinoSerial.readStringUntil('\n');
Serial.print("Received data from Arduino: ");
Serial.println(data);
int commaIndex = data.indexOf(',');
if (commaIndex != -1) {
String t = data.substring(0, commaIndex);
String h = data.substring(commaIndex + 1);
String url = "/update?api_key=";
url += apiKey;
url += "&field1=";
url += t;
url += "&field2=";
url += h;
url += "\r\n";
if (client.connect(server, 80)) {
client.print("GET ");
client.print(url);
client.println("HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.stop();
}
}
}
}
Celem całego projeku jest przesłanie tych danych na stronę thingspeak po dodaniu wiekszej liczby czujników.
Proszę o podanie możliwej przyczyny nie przesyłania danych.