Nettigo Air Monitor - Dokumentacja

Nie. Nie tyle anteny co słabe moduły radiowe ze “skręconą” mocą wyjściową. Co akurat jest dobre.

Hej, złożyłem wczoraj do końca mój NAM 0.3.2 + HECA + BME280 + LCD.

Działam aktywnie u siebie w mieście (Olsztyn) i dostałem nawet odzew po wpisie na Facebooku :wink: To pierwszy obywatelski czujnik w mieście. Nie chcę zaliczyć falstartu.

Kilka rzeczy troszkę mnie zaskoczyło:

  • W instrukcji składania jest chyba wcześniejsza wersja 0.3, gniazdo do zasilania jest tam do płyty podłączone przez wlutowanie kabli, trochę bezmyślnie wykonując instrukcję musiałem je odlutować i zamiast kabli zlutować złącze terminalowe śrubowe.
  • Brakowało mi zdjęć z góry / dołu, w całości złożonego modułu. Tak poglądowo, żeby zobaczyć czy mój nie różni się jakoś znacząco od wzorcowego.
  • Włożenie LCD do środka powoduje, że nie da się zamknąć Kradexa. To trochę problem, bo chcę wystawić czujnik na zewnątrz. LCD zajmuje 2mm za dużo. To mogę przeżyć, po prostu wyjmę LCD, albo będę musiał kupić/spiłować dystanse do 33mm. Trzeba się nad tym zastanowić.
  • Zastanawiam się jak kalibrujecie/weryfikujecie czujniki?
  • Czy PM1 jest w zasięgu? Czy któryś z czujników stosowanych w Luftdaten ma dokładności mniejsze niż 50% przy niskich stężeniach?

Potrzebuję te rzeczy dograć, bo już kilku znajomych chce, żebym im złożył takie czujniki (na razie 4) :wink:

Mam problem z LCD:
image

Urządzenie działa i wykonuje pomiary. Połączyłem się z nim i skonfigurowałem WiFi. Nie działa wyświetlacz. O ile dobrze rozumiem (uczciwie przyznaję, że od kiedy skończyłem studia elektroniką zajmuję się raz na rok, więc jestem noob i mogę coś pokręcić), sercem urządzenia jest Wemos, który komunikuje się z innymi elementami poprzez I2C. Wygląda mi to, jakby komunikacja Wemosa z LCD nie działała. Zastanawiam się gdzie jest problem i jak to zdiagnozować? (podejrzewam swoje umiejętności lutowania)

Musiałeś coś pomylić przy montażu. 1.5 tygodnia temu montowalem LCD wchodzi idealnie i przylega do przedniej szybki. Sprawdź poprawność lutów LCD połączenia z płytą… Moje umiejętności lutowania są dramatyczne, podgrzej luty jeszcze raz i zobacz czy goldpiny są poprawne! Być moze pod płyta coś jest lub złe przykreciles do kradex Screenshot_20191124-204231_Photos

1 polubienie

Ustaw kontrast na LCD. Potencjometrem z tyłu wyświetlacza.

Dzięki za uwagi. Popełniłem błąd, t.j. na koniec lutowałem wtyk IDC16, zapomniałem obciąć piny. Znalazły się brakujące 2mm.

@irukard Co do kontrastu, nie pomaga. To zrobiłem w pierwszej kolejności (było o tym w manualu). Ten widok, który jest u mnie na zdjęciu wygląda jak jakiś domyślny w tym LCD.

Zweryfikowałem, kabelki i same piny zdają się działać. Wygląda na to, że problem jest po stronie LCD. Mam gdzieś zalegający Arduino UNO, podepnę i zweryfikuję.

Zweryfikowałem LCD. Działa poprawnie, ale jego adres I2C to jest: 0x3F, a nie tak jak spodziewa się Wemos 0x27.

Wykorzystałem w tym celu przeróbkę kodu z: https://www.makerguides.com/character-i2c-lcd-arduino-tutorial/

/*I2C_scanner
  This sketch tests standard 7-bit addresses.
  Devices with higher bit address might not be seen properly.*/
  
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Library for LCD

LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x3F, 20, 4); // Change to (0x27,16,2) for 16x2 LCD.

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);
  Serial.println("\nI2C Scanner");
  
  pinMode(LED_BUILTIN, OUTPUT);

  lcd.init();
  lcd.backlight();
  searchI2CDevices();
}

void searchI2CDevices() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println("  !");
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
}

void loop() {
  Serial.println("printing");
  lcd.setCursor(0, 0); // Set the cursor on the first column and first row.
  lcd.print("Hello World!"); // Print the string "Hello World!"
  lcd.setCursor(2, 1); //Set the cursor on the third column and the second row (counting starts at 0!).
  lcd.print("LCD tutorial");
}

Teraz będę szukał jak zmienić adres I2C wyświetlacza LCD :slight_smile:

Edit: nie da się zmienić adresu an 0x27. Trzeba skompilować firmware z innym adresem.

Ogarnę to dzisiaj. Pewnie konwertery są na PCF z literą A na końcu.

Dokładnie tak. LCD który dostałem (z Nettigo) ma konwerter: PCF8574AT, żeby działać z Luftdaten powinien mieć PCF8574T.

Jak włączysz testowo wyświetlacz 1602 to zadziała bo on ma 3F. Ale spróbuję skompilować wersję z 27 i 3F naraz.

Fakt, jakoś zignorowałem fakt, że te wyświetlacze są kompatybilne.

Na razie wystawiłem na zewnątrz czujnik bez wyświetlacza. Jeszcze będę się zastanawiał co zrobić z wyświetlaczem.

Przeczytałem też trochę kodu firmware, przydałby mu się jakiś refactoring, z drugiej strony “działa” :wink:

firmware.bin.pdf (498,6 KB)

Przetestuj proszę. Usuń z nazwy “.pdf”. W konfigu jest dodatkowa opcja dla tego wyświetlacza

1 polubienie

Przyznałem się w innym wątku, że nie wiem jak ręcznie wgrać firmware:

W sensie, z poziomu linuksa sobie pewnie poradze, ale niewiem jak go podpiąć do PC.

Zaiste nie jest to trudne :slight_smile:

Kabelkiem USB podpinasz się pod Wemosa i ziuuu…

Szukasz urządzenia:
ls -1 /sys/bus/usb-serial/devices/

Wgrywasz firmware
esptool.py -c esp8266 /dev/ttyUSBjakiśtam write_flash 0x0000 /sciezka/do/firmware.bin

Esptool powinien być w systemowej paczce. Może być bez “.py” na końcu.

Dzieki, już wszystko jasne. Zapomniałem, że Wemos ma port USB wbudowany i chciałem go po pinach podpinać przez serial port :man_facepalming: :smiley:

Usiądę do tego za kilka godzin.

Ok, wgrałem binarkę komendami:

pip install esptool

esptool.py -c esp8266 --port /dev/ttyUSB0 write_flash 0x0000 firmware.bin

Wyświetlacz działa jak trzeba, niestety nie mogę zamknąć obudowy gdy zakładam wyświetlacz. Myliłem się w poprzedniej wypowiedzi, w której twierdziłem, że znalazły się 2mm, dla zobrazowania wrzuciłem filmik: https://drive.google.com/open?id=12Vdfh04Ix0mPESWjcGaFaf1Xejkm8XjF

Planuję nagrać filmik z instrukcją składania :slight_smile:

1 polubienie

Ok. To chyba nasz babol. Wygląda że te nowe wyświetlacze są wyższe. Poszukam krótszych dystansów.

Troszkę zagmatwana pisownia w opisie Nettigo Air Monitor serii 0.2 na stronie https://air.nettigo.pl/zbuduj/

Grzałka jest włączona na stałe, do kontroli możesz użyć modułu HECA, ale jak do to złożyć w całość (grzałka, HECA i wlot powietrza do SDS011 musza być w jednym miejscu) to już Twoja inwencja.

Czy braliście pod uwagę wykorzystanie czujnika SPS30 (https://www.soselectronic.pl/articles/sensirion/technologiczny-przelom-w-dziedzinie-optycznych-czujnikow-czastek-stalych-2217), oprócz PM2.5 i PM10 mierzy tez PM1 i PM4 i wedle opisu 8 lat ciągłej pracy bez czysczenia?

Ech… Ech… To tak jakby PMS7003 mierzył PM1 i PM10 i SDS011 mierzył PM2.5. To że dany czujnik podaje dają wartość nie znaczy że ja mierzy. Kiedyś napiszę o tym rozprawę.

W dużym skrócie SPS30 jest dla nas za drogi.

Na stronie Baza wiedzy ostatnimi czasy działo się sporo. Poprawiłem czytelność elementów.

Dzisiaj dodałem instrukcję lutowania płyty głównej do NAM 0.3.2. Zaś instrukcja montażu mechanicznego do NAM 0.3.2 jest już dostępna od jakiegoś czasu.

Na najbliższe dni przewidziałem poprawę starych tekstów i obrandowanie całości logiem Koduj dla Polski, bo jak słusznie zauważył @WojtekSanko, jest go za mało na stronie.

2 polubienia