Skocz do zawartości

ESP32 Czujnik zanieczyszczeń i komunikacja Wi-Fi


Vallium_

Pomocna odpowiedź

Hej , witajcie . Mam do was dwa pytanka o problemy przez które zaczynam siwieć przy moim projekcie a internet nie pomaga mi w rozwiązaniu. 

Mam ESP32 devkit V1. Podłączone czujniki DHT22,BMP388,czujniki wilgotności gleby 3x, i czujnik zanieczyszczeń powietrza.

Problem pojawia się z tym ostatnim czujnikiem zanieczyszczeń PM2.5 - GP2Y1010AU0F. Wszystkie odczyty wyrzucam sobie po Wi-Fi na aplikacje BLYNK. Czujnik zanieczyszczeń działa prawidłowo do chwili gdy nie używam Wi-Fi i BLYNK a odczyty wyświetlam na porcie szeregowym lub ekranie. 

Jak tylko do akcji wkracza Wi-Fi to odczyt z czujnika zmienia się na  wartość oscylującą w granicach 29400.

Czujnik działa tak że zostaje wzbudzony na określony czas i wtedy następuje odczyt poprzez zaczytanie wartości na wyjściu analogowym czujnika. Próbowałem różnych wejść na ESP zmieniałem sposoby odczytu, skalowania wartości, bez skalowania i filtrów i efekt za każdym razem jest taki sam. Przy czym wartości z czujników wilgotności gleby też analogowe są ok. Próbowałem na różnych płytkach ESP... próbowałem na stałym wzbudzeniu czujnika 

Całość zasilam z zewnątrz. Próbowałem już tylu opcji że skończyły mi się pomysły dlatego zwracam się do was może ktoś coś ? 

Jest jeszcze jeden problem mniej znaczący ale uciążliwy. Żeby nawiązać połączenie z siecią ESP muszę mieć odłączone od czujników i wpiąć do płytki gdzie wszystko mam zlutowane już po uruchomieniu komunikacji, inaczej nie da się nawiązać połączenia 😕    

 

Tak z grubsza wygląda program jest to gotowiec ze generatora Blynka i obsługa czujnika która działa prawidłowo gdy nie ma Wi-Fi oczywiście mój program wygląda inaczej ale na tym efekt jest jak wyżej.  Próbowałem umieścić odczyt z czujnika poza myTimerEvent() i wyrzucać pomiar na port szeregowy i dalej lipa 😞 . 

#define BLYNK_PRINT Serial


#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
int dustPin = 0; // dust sensor 
int ledPin = 2; 
float voltsMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

BlynkTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void myTimerEvent()
{
  digitalWrite(ledPin,HIGH); // power on the LED
  delayMicroseconds(280);
  voltsMeasured = analogRead(dustPin); // read the dust value
  delayMicroseconds(40);
  digitalWrite(ledPin,LOW); // turn the LED off
  delayMicroseconds(9680);
 
  //measure your 5v and change below
  calcVoltage = voltsMeasured * (5.0 / 1024.0);
  dustDensity = 0.17 * calcVoltage - 0.1;
  Blynk.virtualWrite(V5, dustDensity);
}

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);
}

void loop()
{
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
}

 

Link do komentarza
Share on other sites

3 godziny temu, Vallium_ napisał:

Jak tylko do akcji wkracza Wi-Fi to odczyt z czujnika zmienia się na  wartość oscylującą w granicach 29400.

A do którego pinu masz podpięty czujnik? Bo jeśli działa WiFi to nie działa część pinów ADC (tzn. działa tylko ADC1, a nie ADC2).

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Kurcze przyznam że próbowałem różne piny ale fakt wszystkie były z ADC2 !!

Z pracy wrócę to szybko podepnę pod któryś ADC1 bo tam mam podpięte te analogi które działają 🙂 

Jak teraz patrze w dokumentacje to faktycznie jest o tym wzmianka 😄 Wielkie dzięki ! Może zacznie też działać WiFi jak jest w płytkę wpięte . 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.