Mały, bezprzewodowy czujnik temperatury na radiu

Awatar użytkownika
Robert Błaszczak
Posty: 3940
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

Jak robiłem RB-10, to nie wiedziałem o istnieniu Xiaomi :lol:

A co do cen to prosty rachunek:
Xiaomi LYWSD03MMC - 25 zł / szt. (samodzielnie u Chińczyków kupisz taniej)
Bramka Raspberry Pi Zero W + obudowa + zasilacz + karta microSD + przesyłka - 156,70 zł

5 czujników LYWSD03MMC (na dokładnym SHT31 i dodatkowo z wyświetlaczem LCD w gustownej obudowie) + bramka - 281,70 zł

W projekcie RB-10 5 baterii to już jest 50 zł, a gdzie reszta elementów.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
dogu18
Posty: 257
Rejestracja: czw paź 11, 2018 8:35 pm

Witam

Proszę o radę.
Czujnik odczytuje natężenie światła odbiornik go odbiera według serial Monitora
Niestety w Supli pokazuje się co jakiś czas wynik i potem wisi na jakiejś wartości.
jak to naprawić??

Używam tego programu

Kod: Zaznacz cały

/*
  Bramka RB-10G
  Copyright (C) 2019 Robert Błaszczak

  Niniejszy program jest wolnym oprogramowaniem; możesz go
  rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej
  Licencji Publicznej GNU, wydanej przez Fundację Wolnego
  Oprogramowania - według wersji 2-giej tej Licencji lub którejś
  z późniejszych wersji.
  Niniejszy program rozpowszechniany jest z nadzieją, iż będzie on
  użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej
  gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH
  ZASTOSOWAŃ. W celu uzyskania bliższych informacji - Powszechna
  Licencja Publiczna GNU.
  Z pewnością wraz z niniejszym programem otrzymałeś też egzemplarz
  Powszechnej Licencji Publicznej GNU (GNU General Public License);
  jeśli nie - napisz do Free Software Foundation, Inc., 675 Mass Ave,
  Cambridge, MA 02139, USA.
*/

#include <RFM69_ATC.h>                    //Pobierz z: https://github.com/lowpowerlab/rfm69

#define NODEID 1                          //Unikalny numer bramki (1 - 254).
#define NETWORKID 100                     //Numer sieci (1 - 254) w której działą bramka SUPLA oraz inne transmitery. Bramka oraz max. 6 transmiterów musi działać w sieci o takim samym ID.
#define FREQUENCY RF69_868MHZ             //Jeśli posiadasz moduł radiowy pracujący z inną częstotliwością zamień parametr na RF69_433MHZ lub RF69_915MHZ.
//#define IS_RFM69HW_HCW                  //Usuń zacznik komentarza, jeśli posiadasz moduł radiowy w wersji RFM69HW/HCW.
#define ENCRYPTKEY "qwertyuiopasdfgh"     //Klucz kodowania - 16 znaków (ani mniej, ani więcej) - identyczny w bramce SUPLA i we wszystkich transmiterach.
#define ENABLE_ATC                        //Wstaw znacznik komentarza jeśli chcesz wyłączyć automatyczną kontrolę transmisji (ATC).

#define SERIAL_BAUD 115200                //Prędkość transmisji portu szeregowego.

#define SUPLADEVICE_CPP
#include <SuplaDevice.h>

#define SUPLA_SERVER "svrx.supla.org"
#define LOCATION_ID xxxx
#define LOCATION_PASSWORD "xxxx"
// pobierz identyfikator urządzenia ze strony https://www.supla.org/arduino/get-guid i wprowadź go poniżej
#define GUID {0x5E,0xF9,0x77,0x8B,0x20,0x5F,0xF7,0x38,0xEC,0x84,0x04,0xF6,0x88,0x91,0xEB,0xBD};

RFM69_ATC radio(D8, D2, false);
bool promiscuousMode = false;

const unsigned long period = 600000;      //Czas (10 minut) po którym bramka uznaje brak odczytu z transmitera i ustawia wartości wysyłane do Supla Cloud na 0.
double temperature = 0.0;
double humidity = 0.0;
double pressure = 0.0;
double lux = 0.0;
unsigned long startMillis = 0;
unsigned long currentMillis = 0;
unsigned long RFNodesCount = 0;

typedef struct {
  int nodeid;
  int channelNumber;
  double temperature;
  double humidity;
  double pressure;
  double lux;
  //double batteryLevel;
  unsigned long lastContact;
} RF_TemperatureandHumidityNode;

RF_TemperatureandHumidityNode RFNodes[6];


void get_temperature_and_humidity(int channelNumber, double *temp, double *humidity) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == channelNumber)
    {
      *temp = RFNodes[i].temperature;
      *humidity = RFNodes[i].humidity;
    }
}

double get_pressure(int channelNumber, double pressure) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == (channelNumber - 1) / 2 )
    {
      pressure = RFNodes[i].pressure;
    }
  return  pressure;
}

double get_temperature(int channelNumber, double lux) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == (channelNumber - 1) / 3 )
    {
      lux = RFNodes[i].lux;
    }
  return  lux;
}

void setup() {
  Serial.begin(SERIAL_BAUD);

  SuplaDevice.setTemperatureHumidityCallback(&get_temperature_and_humidity);
  SuplaDevice.setPressureCallback(&get_pressure);
  SuplaDevice.setTemperatureCallback(&get_temperature);
  //   SuplaDevice.setDistanceCallback(&get_Distance);
  SuplaDevice.addDHT22();
  SuplaDevice.addPressureSensor();
   SuplaDevice.addDS18B20Thermometer();
  //SuplaDevice.addDHT22();
  //SuplaDevice.addPressureSensor();
   //SuplaDevice.addDS18B20Thermometer();



  char guid[SUPLA_GUID_SIZE] = GUID;
  uint8_t mac[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
  SuplaDevice.setName("BRAMKA RB-10G2");
  SuplaDevice.begin(guid, mac, SUPLA_SERVER, LOCATION_ID, LOCATION_PASSWORD);

  radio.initialize(FREQUENCY, NODEID, NETWORKID);

#ifdef IS_RFM69HW_HCW
  radio.setHighPower();
#endif

  radio.encrypt(ENCRYPTKEY);
  radio.promiscuous(promiscuousMode);

  char buff[105];
  sprintf(buff, "BRAMKA RB-10G. Start komunikacji radiowej na częstotliwości %d MHz...", FREQUENCY == RF69_433MHZ ? 433 : FREQUENCY == RF69_868MHZ ? 868 : 915);
  Serial.println(buff);
}

byte ackCount = 0;
uint32_t packetCount = 0;

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length() - 1;

  for (int i = 0; i <= maxIndex && found <= index; i++) {
    if (data.charAt(i) == separator || i == maxIndex) {
      found++;
      strIndex[0] = strIndex[1] + 1;
      strIndex[1] = (i == maxIndex) ? i + 1 : i;
    }
  }

  return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}

void readRadioData() {

  String value = "";
  if (radio.receiveDone())
  {
    int foundIdx = -1;

    for (int i = 0; i < RFNodesCount; i++)
      if (RFNodes[i].nodeid == radio.SENDERID)
      {
        foundIdx = i;
        break;
      }

    Serial.println("Odbieram dane...");
    if (foundIdx == -1)
    {
      if (RFNodesCount < 6)
      {
        Serial.println("Znalazłem nowy transmiter. Dodaję go do SUPLA Cloud");
        RFNodes[RFNodesCount].nodeid = radio.SENDERID;
        RFNodes[RFNodesCount].lastContact = millis();
        RFNodes[RFNodesCount].channelNumber = radio.SENDERID - 1;
        RFNodes[RFNodesCount].temperature = 0.0;
        RFNodes[RFNodesCount].humidity = 0.0;
        RFNodes[RFNodesCount].pressure = 0.0;
        RFNodes[RFNodesCount].lux = 0.0;
        //        RFNodes[RFNodesCount].batteryLevel = 0;

        foundIdx = RFNodesCount;
        RFNodesCount++;
      } else {
        Serial.println("Maksymalna ilość transmiterów przekroczona!");
        foundIdx = 0;
      }
    } else
    {
      RFNodes[foundIdx].temperature = 0.0;
    }

    Serial.print("#[");
    Serial.print(++packetCount);
    Serial.print(']');
    Serial.print('['); Serial.print(radio.SENDERID, DEC); Serial.print("] ");

    value = "";
    for (byte i = 0; i < radio.DATALEN; i++)
      if (radio.DATA[i] != ' ')
        value += (char)radio.DATA[i];

    Serial.println(value);

    String tempStr = getValue(value, '|', 0);
    String humStr = getValue(value, '|', 1);
    String presStr = getValue(value, '|', 2);
    String luxStr = getValue(value, '|', 3);
   // String battLevelStr = getValue(value, '|', 4);

    Serial.print("Temperatura: ");
    Serial.println(tempStr);
    Serial.print("Wilgotność: ");
    Serial.println(humStr);
    Serial.print("Ciśnienie: ");
    Serial.println(presStr);
    Serial.print("Natężenie światła: ");
    Serial.println(luxStr);
    //Serial.print("Poziom baterii: ");
    //Serial.println(battLevelStr);

    RFNodes[foundIdx].temperature = tempStr.toFloat();
    RFNodes[foundIdx].humidity = humStr.toFloat();
    RFNodes[foundIdx].pressure = presStr.toFloat();
    RFNodes[foundIdx].lux = luxStr.toFloat();
    //    RFNodes[foundIdx].batteryLevel = battLevelStr.toFloat();
    RFNodes[foundIdx].lastContact = millis();

    Serial.print("Poziom sygnału transmitera [RX_RSSI]:"); Serial.print(radio.RSSI); Serial.print(" dBm");

    if (radio.ACKRequested())
    {
      byte theNodeID = radio.SENDERID;
      radio.sendACK();

      if (ackCount++ % 3 == 0)
      {
        Serial.print(" ACK TEST - Transmiter ");
        Serial.print(theNodeID);
        delay(5);
        radio.sendWithRetry(theNodeID, "ACK TEST", 8, 0);
      }
    }
    Blink(LED_BUILTIN, 100);
    Serial.println();
    Serial.println();
  }

  for (int i = 0; i < RFNodesCount; i++)
  {
    if (millis() - RFNodes[i].lastContact >= period)
    {
      RFNodes[i].temperature = -375;
      RFNodes[i].humidity = -1;
      RFNodes[i].pressure = -10;
      RFNodes[i].lux = 0;
      //      RFNodes[i].batteryLevel = 0;
      Serial.print("Brak odczytu z czujnika ");
      Serial.println (RFNodes[i].nodeid);
    };
  }
}

void Blink(byte PIN, int DELAY_MS)
{
  pinMode(PIN, OUTPUT);
  digitalWrite(PIN, LOW);
  delay(DELAY_MS);
  digitalWrite(PIN, HIGH);
}

void loop() {
  readRadioData();
  SuplaDevice.iterate();
}
Pozdrawiam
Ostatnio zmieniony sob paź 24, 2020 12:01 pm przez dogu18, łącznie zmieniany 1 raz.
Pozdrawiam
Grzegorz Labudda
Awatar użytkownika
QLQ
Posty: 2276
Rejestracja: ndz wrz 03, 2017 9:13 am
Lokalizacja: Koszalin

dogu18 pisze: pt paź 23, 2020 10:52 pm Witam

Proszę o radę.
Czujnik odczytuje natężenie światła odbiornik go odbiera według serial Monitora
Niestety w Supli pokazuje się co jakiś czas wynik i potem wisi na jakiejś wartości.
jak to naprawić??

Używam tego programu

Kod: Zaznacz cały

/*
  Bramka RB-10G
  Copyright (C) 2019 Robert Błaszczak

  Niniejszy program jest wolnym oprogramowaniem; możesz go
  rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej
  Licencji Publicznej GNU, wydanej przez Fundację Wolnego
  Oprogramowania - według wersji 2-giej tej Licencji lub którejś
  z późniejszych wersji.
  Niniejszy program rozpowszechniany jest z nadzieją, iż będzie on
  użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej
  gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH
  ZASTOSOWAŃ. W celu uzyskania bliższych informacji - Powszechna
  Licencja Publiczna GNU.
  Z pewnością wraz z niniejszym programem otrzymałeś też egzemplarz
  Powszechnej Licencji Publicznej GNU (GNU General Public License);
  jeśli nie - napisz do Free Software Foundation, Inc., 675 Mass Ave,
  Cambridge, MA 02139, USA.
*/

#include <RFM69_ATC.h>                    //Pobierz z: https://github.com/lowpowerlab/rfm69

#define NODEID 1                          //Unikalny numer bramki (1 - 254).
#define NETWORKID 100                     //Numer sieci (1 - 254) w której działą bramka SUPLA oraz inne transmitery. Bramka oraz max. 6 transmiterów musi działać w sieci o takim samym ID.
#define FREQUENCY RF69_868MHZ             //Jeśli posiadasz moduł radiowy pracujący z inną częstotliwością zamień parametr na RF69_433MHZ lub RF69_915MHZ.
//#define IS_RFM69HW_HCW                  //Usuń zacznik komentarza, jeśli posiadasz moduł radiowy w wersji RFM69HW/HCW.
#define ENCRYPTKEY "qwertyuiopasdfgh"     //Klucz kodowania - 16 znaków (ani mniej, ani więcej) - identyczny w bramce SUPLA i we wszystkich transmiterach.
#define ENABLE_ATC                        //Wstaw znacznik komentarza jeśli chcesz wyłączyć automatyczną kontrolę transmisji (ATC).

#define SERIAL_BAUD 115200                //Prędkość transmisji portu szeregowego.

#define SUPLADEVICE_CPP
#include <SuplaDevice.h>

#define SUPLA_SERVER 
#define LOCATION_ID
#define LOCATION_PASSWORD 
// pobierz identyfikator urządzenia ze strony https://www.supla.org/arduino/get-guid i wprowadź go poniżej
#define GUID {0x5E,0xF9,0x77,0x8B,0x20,0x5F,0xF7,0x38,0xEC,0x84,0x04,0xF6,0x88,0x91,0xEB,0xBD};

RFM69_ATC radio(D8, D2, false);
bool promiscuousMode = false;

const unsigned long period = 600000;      //Czas (10 minut) po którym bramka uznaje brak odczytu z transmitera i ustawia wartości wysyłane do Supla Cloud na 0.
double temperature = 0.0;
double humidity = 0.0;
double pressure = 0.0;
double lux = 0.0;
unsigned long startMillis = 0;
unsigned long currentMillis = 0;
unsigned long RFNodesCount = 0;

typedef struct {
  int nodeid;
  int channelNumber;
  double temperature;
  double humidity;
  double pressure;
  double lux;
  //double batteryLevel;
  unsigned long lastContact;
} RF_TemperatureandHumidityNode;

RF_TemperatureandHumidityNode RFNodes[6];


void get_temperature_and_humidity(int channelNumber, double *temp, double *humidity) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == channelNumber)
    {
      *temp = RFNodes[i].temperature;
      *humidity = RFNodes[i].humidity;
    }
}

double get_pressure(int channelNumber, double pressure) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == (channelNumber - 1) / 2 )
    {
      pressure = RFNodes[i].pressure;
    }
  return  pressure;
}

double get_temperature(int channelNumber, double lux) {

  for (int i = 0; i < RFNodesCount; i++)
    if (RFNodes[i].channelNumber == (channelNumber - 1) / 3 )
    {
      lux = RFNodes[i].lux;
    }
  return  lux;
}

void setup() {
  Serial.begin(SERIAL_BAUD);

  SuplaDevice.setTemperatureHumidityCallback(&get_temperature_and_humidity);
  SuplaDevice.setPressureCallback(&get_pressure);
  SuplaDevice.setTemperatureCallback(&get_temperature);
  //   SuplaDevice.setDistanceCallback(&get_Distance);
  SuplaDevice.addDHT22();
  SuplaDevice.addPressureSensor();
   SuplaDevice.addDS18B20Thermometer();
  //SuplaDevice.addDHT22();
  //SuplaDevice.addPressureSensor();
   //SuplaDevice.addDS18B20Thermometer();



  char guid[SUPLA_GUID_SIZE] = GUID;
  uint8_t mac[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
  SuplaDevice.setName("BRAMKA RB-10G2");
  SuplaDevice.begin(guid, mac, SUPLA_SERVER, LOCATION_ID, LOCATION_PASSWORD);

  radio.initialize(FREQUENCY, NODEID, NETWORKID);

#ifdef IS_RFM69HW_HCW
  radio.setHighPower();
#endif

  radio.encrypt(ENCRYPTKEY);
  radio.promiscuous(promiscuousMode);

  char buff[105];
  sprintf(buff, "BRAMKA RB-10G. Start komunikacji radiowej na częstotliwości %d MHz...", FREQUENCY == RF69_433MHZ ? 433 : FREQUENCY == RF69_868MHZ ? 868 : 915);
  Serial.println(buff);
}

byte ackCount = 0;
uint32_t packetCount = 0;

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length() - 1;

  for (int i = 0; i <= maxIndex && found <= index; i++) {
    if (data.charAt(i) == separator || i == maxIndex) {
      found++;
      strIndex[0] = strIndex[1] + 1;
      strIndex[1] = (i == maxIndex) ? i + 1 : i;
    }
  }

  return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}

void readRadioData() {

  String value = "";
  if (radio.receiveDone())
  {
    int foundIdx = -1;

    for (int i = 0; i < RFNodesCount; i++)
      if (RFNodes[i].nodeid == radio.SENDERID)
      {
        foundIdx = i;
        break;
      }

    Serial.println("Odbieram dane...");
    if (foundIdx == -1)
    {
      if (RFNodesCount < 6)
      {
        Serial.println("Znalazłem nowy transmiter. Dodaję go do SUPLA Cloud");
        RFNodes[RFNodesCount].nodeid = radio.SENDERID;
        RFNodes[RFNodesCount].lastContact = millis();
        RFNodes[RFNodesCount].channelNumber = radio.SENDERID - 1;
        RFNodes[RFNodesCount].temperature = 0.0;
        RFNodes[RFNodesCount].humidity = 0.0;
        RFNodes[RFNodesCount].pressure = 0.0;
        RFNodes[RFNodesCount].lux = 0.0;
        //        RFNodes[RFNodesCount].batteryLevel = 0;

        foundIdx = RFNodesCount;
        RFNodesCount++;
      } else {
        Serial.println("Maksymalna ilość transmiterów przekroczona!");
        foundIdx = 0;
      }
    } else
    {
      RFNodes[foundIdx].temperature = 0.0;
    }

    Serial.print("#[");
    Serial.print(++packetCount);
    Serial.print(']');
    Serial.print('['); Serial.print(radio.SENDERID, DEC); Serial.print("] ");

    value = "";
    for (byte i = 0; i < radio.DATALEN; i++)
      if (radio.DATA[i] != ' ')
        value += (char)radio.DATA[i];

    Serial.println(value);

    String tempStr = getValue(value, '|', 0);
    String humStr = getValue(value, '|', 1);
    String presStr = getValue(value, '|', 2);
    String luxStr = getValue(value, '|', 3);
   // String battLevelStr = getValue(value, '|', 4);

    Serial.print("Temperatura: ");
    Serial.println(tempStr);
    Serial.print("Wilgotność: ");
    Serial.println(humStr);
    Serial.print("Ciśnienie: ");
    Serial.println(presStr);
    Serial.print("Natężenie światła: ");
    Serial.println(luxStr);
    //Serial.print("Poziom baterii: ");
    //Serial.println(battLevelStr);

    RFNodes[foundIdx].temperature = tempStr.toFloat();
    RFNodes[foundIdx].humidity = humStr.toFloat();
    RFNodes[foundIdx].pressure = presStr.toFloat();
    RFNodes[foundIdx].lux = luxStr.toFloat();
    //    RFNodes[foundIdx].batteryLevel = battLevelStr.toFloat();
    RFNodes[foundIdx].lastContact = millis();

    Serial.print("Poziom sygnału transmitera [RX_RSSI]:"); Serial.print(radio.RSSI); Serial.print(" dBm");

    if (radio.ACKRequested())
    {
      byte theNodeID = radio.SENDERID;
      radio.sendACK();

      if (ackCount++ % 3 == 0)
      {
        Serial.print(" ACK TEST - Transmiter ");
        Serial.print(theNodeID);
        delay(5);
        radio.sendWithRetry(theNodeID, "ACK TEST", 8, 0);
      }
    }
    Blink(LED_BUILTIN, 100);
    Serial.println();
    Serial.println();
  }

  for (int i = 0; i < RFNodesCount; i++)
  {
    if (millis() - RFNodes[i].lastContact >= period)
    {
      RFNodes[i].temperature = -375;
      RFNodes[i].humidity = -1;
      RFNodes[i].pressure = -10;
      RFNodes[i].lux = 0;
      //      RFNodes[i].batteryLevel = 0;
      Serial.print("Brak odczytu z czujnika ");
      Serial.println (RFNodes[i].nodeid);
    };
  }
}

void Blink(byte PIN, int DELAY_MS)
{
  pinMode(PIN, OUTPUT);
  digitalWrite(PIN, LOW);
  delay(DELAY_MS);
  digitalWrite(PIN, HIGH);
}

void loop() {
  readRadioData();
  SuplaDevice.iterate();
}
Pozdrawiam
Usun swoje dane cloud z kodu
jak coś nie działa to włącz zasilanie.....
dogu18
Posty: 257
Rejestracja: czw paź 11, 2018 8:35 pm

Poprawione. Zapomniałem o tym.
A pomysł na opuznieniem z odczytem nasłonecznienie może masz jakiś 🙂
Pozdrawiam
Pozdrawiam
Grzegorz Labudda
Pier
Posty: 45
Rejestracja: śr lut 26, 2020 10:26 am

Robert Błaszczak pisze: pt paź 23, 2020 11:45 am Jak robiłem RB-10, to nie wiedziałem o istnieniu Xiaomi :lol:

A co do cen to prosty rachunek:
Xiaomi LYWSD03MMC - 25 zł / szt. (samodzielnie u Chińczyków kupisz taniej)
Bramka Raspberry Pi Zero W + obudowa + zasilacz + karta microSD + przesyłka - 156,70 zł

5 czujników LYWSD03MMC (na dokładnym SHT31 i dodatkowo z wyświetlaczem LCD w gustownej obudowie) + bramka - 281,70 zł

W projekcie RB-10 5 baterii to już jest 50 zł, a gdzie reszta elementów.
Robert to może zapytam inaczej bo chyba się nie zrozumieliśmy. Co zrobiłeś ze Swoimi nadajnikami? Zdaje się Miałeś nawet częściowo polutowane płytki pod nowe obudowy Hamonda.

A co z tym pomiarem baterii? Ktoś coś zauważył czy wszyscy wyrzucili swoje nadajniki w kosz?
Zybi
Posty: 1511
Rejestracja: ndz cze 26, 2016 4:24 pm

Pier pisze: sob paź 24, 2020 3:23 pm ...
A co z tym pomiarem baterii? Ktoś coś zauważył czy wszyscy wyrzucili swoje nadajniki w kosz?
Nie wiem jakiej baterii używasz, ale poniżej masz wycinek z DataSheet dla LS14250.
Wystarczy spojrzeć na wykres rozładowywania się baterii i wszystko jasne.
Ja u siebie z tego względu nie robiłem poziomów odczytów tylko bezpośredni pomiar napięcia z dwoma miejscami po przecinku. Jednak i tak na nic to się zdało.

.
Załączniki
LS_1450.PNG
LS_1450.PNG (62.75 KiB) Przejrzano 2222 razy
Pier
Posty: 45
Rejestracja: śr lut 26, 2020 10:26 am

Zybi pisze: sob paź 24, 2020 10:23 pm
Pier pisze: sob paź 24, 2020 3:23 pm ...
A co z tym pomiarem baterii? Ktoś coś zauważył czy wszyscy wyrzucili swoje nadajniki w kosz?
Nie wiem jakiej baterii używasz, ale poniżej masz wycinek z DataSheet dla LS14250.
Wystarczy spojrzeć na wykres rozładowywania się baterii i wszystko jasne.
Ja u siebie z tego względu nie robiłem poziomów odczytów tylko bezpośredni pomiar napięcia z dwoma miejscami po przecinku. Jednak i tak na nic to się zdało.

.
Dzięki za rzeczową odpowiedź. Teraz wszystko jasne, pomiar baterii można sobie darować.
Awatar użytkownika
Robert Błaszczak
Posty: 3940
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

Pier pisze: sob paź 24, 2020 3:23 pm
Robert to może zapytam inaczej bo chyba się nie zrozumieliśmy. Co zrobiłeś ze Swoimi nadajnikami? Zdaje się Miałeś nawet częściowo polutowane płytki pod nowe obudowy Hamonda.

Całość z tego projektu przekazałem wraz z dokumentacją, linkiem do niniejszego tematu na forum do Zespołu Szkół Elektronicznych na warsztaty praktyczne. Niestety ze względu na zajęcia zdalne, wszystko czeka na lepsze czasy.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
dogu18
Posty: 257
Rejestracja: czw paź 11, 2018 8:35 pm

Dzień dobry.
Ja dalej ciągnę projekt czujniki zewnętrznego temperatury na moteino. mam problem bo średnio co 3-4 dni zawiesza sie nadajnik i trzeba go zresetować. Wygląda to tek ze układ się nie wybudza. Czy jest jakaś opcja żeby co któreś uśpienie układ się resetował??

Pozdrawiam
Pozdrawiam
Grzegorz Labudda
Awatar użytkownika
QLQ
Posty: 2276
Rejestracja: ndz wrz 03, 2017 9:13 am
Lokalizacja: Koszalin

dogu18 pisze: wt lis 24, 2020 1:25 pm Dzień dobry.
Ja dalej ciągnę projekt czujniki zewnętrznego temperatury na moteino. mam problem bo średnio co 3-4 dni zawiesza sie nadajnik i trzeba go zresetować. Wygląda to tek ze układ się nie wybudza. Czy jest jakaś opcja żeby co któreś uśpienie układ się resetował??

Pozdrawiam
U mnie działa T, P, H i natężenie światła teraz na MAX44099 od samego początku projektu. Ani razu nie pamiętam aby się zawieszało
jak coś nie działa to włącz zasilanie.....
ODPOWIEDZ

Wróć do „Projekty użytkowników”