• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
lolin esp32 OLED, ThingSpeak IoT, a wysyłanie danych ADC
#1
Witam,

Mam problem z wyświetlaniem informacji z ADC. Gdy nie połączę się z siecią by wysłać dane na thingspeak.com jest ok, ale zaraz po połączeniu wartość ADC wskakuje na 4095 i takie już odczyty pozostają. Sprawdzałem na wszystkich ADC i jest to samo. Termometr DS18B20 działa prawidłowo na I2C. I tak już 3 dzień... Sad pomocy...

poniżej dołączam kod

Kod:
#include "SSD1306.h"
#include <WiFi.h>
#include <DallasTemperature.h>              
#include <OneWire.h>
 
int one_wire = 2;                          

OneWire oneWire(one_wire);                  

DallasTemperature sensors(&oneWire);

SSD1306  display(0x3c, 5,4);

int sensor_cmH2O = 0;
int sensor_temp;

// replace with your channel?s thingspeak API key,
String apiKey = "";
const char* ssid = "";
const char* password = "";

const char* server = "api.thingspeak.com";

WiFiClient client;

void setup() {

sensors.begin();
 
pinMode(26, INPUT);

Serial.begin(115200);

display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_16);
}

void wyslij ()  {

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

delay(1000);

if (client.connect(server,80)) { // "184.106.153.149" or api.thingspeak.com
String postStr = apiKey;
postStr +="&field1=";
postStr += String(sensor_cmH2O);
postStr += "\r\n\r\n";

client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);

Serial.print("cmH2O - ");
//Serial.print(t);
Serial.println(sensor_cmH2O);
//Serial.print(h);
Serial.println("% send to Thingspeak");
}
client.stop();

Serial.println("Waiting?");
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}

void temp_wody()  {
 
 sensors.requestTemperatures();
 sensor_temp = sensors.getTempCByIndex(0);

 String tekst2;
 tekst2 = String(sensor_temp);
 
 display.setTextAlignment(TEXT_ALIGN_CENTER);
 display.setFont(ArialMT_Plain_24);
 display.drawString(64, 6, tekst2 + " 'C");    
 display.drawString(64, 35, "H2O");                      
                                     
}

void oled_cmH2O() {

 sensor_cmH2O = analogRead(26) * (4.7 / 4096) * 216.6994;  

 String tekst1;
 tekst1 = String(sensor_cmH2O);  
 
 display.setTextAlignment(TEXT_ALIGN_CENTER);
 display.setFont(ArialMT_Plain_24);
 display.drawString(64, 0, tekst1 + " cm");
 display.drawString(64, 25, "H2O");
}

void linijka_cmH2O()  {

 display.drawProgressBar(0, 53, 120, 10, sensor_cmH2O / 10);  
}

void loop() {

 Serial.print("cm - ");
 Serial.println(sensor_cmH2O);
 Serial.println (analogRead(26));
 Serial.print("Temperatura: ");              
 Serial.print(sensors.getTempCByIndex(0));  
 Serial.println(" C");
 Serial.println();
 
 display.clear();
 oled_cmH2O();
 linijka_cmH2O();
 display.display();
 
 delay(2000);
 display.clear();
 temp_wody();
 
 display.display();  

 wyslij();

 delay(2000);

}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości