Close

HadrDisk

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 991. až 1,020. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9940
    Strojek
    Účastník

    dekuju za informace 🙂

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9938
    posjirka
    Účastník

    potřebuješ oboje napájení pro převodník a pak použiješ 5V pro napájení jak DS3231, tak LCD s převodníkem I2C/LCD většinou je to nějáký PCF85xx.


    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9935
    Strojek
    Účastník

    Vojto posli me prosim to zapojeni. na te desticce je BVCC a AVCC .. v popisu se pise strana A (5V) <–> strana B (3.3V)

    Taak uz nemusis na te strance zapojeni je .. dekuju za info

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9934
    posjirka
    Účastník

    to vojtech: tak jsem chvilku musel hledat na interetu. Vím že některé Arduina mají 3,3V napětovou hladinu. Já je nemám moc rád, protože většina věcí je na 5V a nemusím pak nic řešit.

    to strojek: jestli to není kritické doporučuju použít spíš klasicé Arduino UNO nebo MEGA. Nevidím u DUE žádnou extra výhodu. 2 USB porty jsou sice zajímave, 2x DAC přvodík taky, ale zatím jsem se nestakla s aplikací, kterou by s přehledem nezvládla klasika. Doma nemám ani MEGU i když si jí už dost dlouho plánuju.

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9933
    Vojtěch Vosáhlo
    Účastník

    Je napájený pouze z 1 zdroje a to VCC IN. Na desce je regulátor který vstupní napětí shodí na 3,3V a to je pak na VCC 3V. Aspoň tak je to ve schématu.

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9931
    Strojek
    Účastník

    posjirka ….. super diky .. tohle bude ono .. a budu v klidu ..

    jeste jedna vec .. tenhle prevodnik se napaji 5V i 3,3V ??? aspon to tak vypada, tak pravdepodobne ano ..dekuju..

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9930
    Vojtěch Vosáhlo
    Účastník

    Aha. Díky za opravu, to jsem si nedohledal 😉

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9929
    posjirka
    Účastník

    ano právě že Arduino DUE je na 3,3V.
    DS3231 má rozsah napájení 2,3-5,5V, takže to máš v pořádku:https://cdn-learn.adafruit.com/downloads/pdf/adafruit-ds3231-precision-rtc-breakout.pdf

    Vidím 3 varianty řešení:
    1. použiješ Arduino UNO a nemusíš nic dalšího řešit
    2.a. použiješ převodník na LCD pro I2C komunikaci:
    http://arduino-shop.cz/arduino/1071-lcd-seriove-rozhrani-iic-i2c-twi-sp-1602-1438010911.html?gclid=Cj0KEQiAwMLDBRDCh_r9sMvQ_88BEiQA6zuAQ5BXnPnLW76aC-ORGEKrhSnDJ2fn18jnDABqQNA-EDEaAhNj8P8HAQ
    tím pádem jí dáš stejnou sběrnici I2c jako pro RTC a přes převodník úrovní srovnáš 3,3 vs. 5V:

    arduino I2C na 3,3V
    |
    konvertor úrovni 3,3V/5V –
    |
    LCD převodník I2C/LCD + DS3231
    |
    LCD

    2.b. použiješ na LCD převodníky urovní 3,3v-5v pro 6 pinu, které LCD potřebuje, takže třeba 2x tento:

    Arduino – I2C – DS3231
    |
    2x převodník urovní 3,3v/5v
    |
    LCD

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9928
    Strojek
    Účastník

    Vojto . mozna jsem to blbe napsal .. arduino due ma vstupy a vystupy pro 3,3V .. proto Ds3231 napajim jen napetim 3,3V a funguje i na tohle napeti .. jinak se napaji normalne 5V .. ted jde o to, ze paralerne pripojim k tomu ds3231 ten lcd modul ale ten musi byt napajen 5V .. Nevim jake napetove urovne bude mit komunikace i2c z ds3231 a jake urovne napeti modulu lcd. jestli je mohu paralerne spojit.

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9927
    Vojtěch Vosáhlo
    Účastník

    Jako převodník hledejte něco v podobě tohoto: https://www.adafruit.com/products/757
    V těch článcích taky píšou že DS musí být napájený z 3,3V a pak zmiňuje že arduino mu to neodpálilo. Abych řekl pravdu, o odpálení duina bych se nebál. Osobně nevidím důvod. Jirka mě kdyžtak opraví ale pokud celé duino běží na 5V tak by mu to nemělo vadit. 5V bude spíš vadit tomu DS které je na 3,3V. Pokud by na jeho pinu bylo 5V tak by mohl být problém na světě.

    Podle mě by to mohlo být zapojené takto:

    Arduino (5V level) <–> LCD (5V level) <–> Převodník z 5V na 3,3V <–> DS3231 (3,3V level)

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9925
    Strojek
    Účastník

    Tak nevim jestli je nejaky prevodnik na scl a sda. Tx Rx jsem nasel .. hledal jsem googlem a nasel, ze to maji pripojene na primo .. co vy na to ?? http://theelectromania.blogspot.cz/2016/01/clock-and-calendar-using-arduino-due.html
    http://theelectromania.blogspot.cz/2016_01_01_archive.html

    jsou tam i obrazky toho pripojeni na primo a napajeni 5V .. tak nevim ???

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9924
    Strojek
    Účastník

    A prosim te jakej prevodnik by si me doporucil ??? diky.

    odpověď na: Arduino Due – Ds3231 – Lcd 20×4 i2c #9923
    posjirka
    Účastník

    v kazdem pripade pouzij prevodnik jinak si odpalis arduino.

    odpověď na: Řídící jednotka pro peletový kotel #9921
    posjirka
    Účastník

    z dálky se tžko radí. nevím kde jsi přerušil D10. V aruinui nebo na LCd shieldu?
    Teď je třeba to odladit. Mě většinou pomůže zapojit na volný pin LED diodu (spíš používá D13 s LEDkou na desce), úplně na začátku jí dám na LOW a v dalším kroku dám HIGH. Když se LED rozsvítí a přesto se program kousne posunu příkay HIGH o pár řádků dolu. No a když se program kousne a LED nesvítí tak víš co ti to blokuje a můžeš pátrat.

    odpověď na: ESP8266 server/klient #9920
    Luke_CZ
    Účastník

    V lokální síti – no problem, stačí ti znát přidělenou IP
    Na webu – bez veřejné IP, celkem problém

    odpověď na: ESP8266 server/klient #9919
    Miroslava
    Účastník

    Prípad:
    Z webovej stránky budem vedieť nájsť svoje zariadenie v sieti. Budem vidieť stav svojho zariadenia – či ide motor alebo nie (ten napríklad bude pracovať na základe nejakého snímača). Ak ho budem chcieť zap/vyp tak sa budem vedieť na neho pripojiť a prostredníctvom webovej stránky zapínať alebo vypínať motor 🙂 Myslím tým že budem vedieť zisťovať stav svojho zariadenia a takisto budem vedieť ho prostredníctvom webu meniť.

    odpověď na: ESP8266 server/klient #9918
    Luke_CZ
    Účastník

    Pokud tím myslíš například:
    Zjisti na serveru kolik je hodin a podle toho zapni/vypni osvětlení (zjednodušeně)
    1, klient si vyžádá RTC data ze serveru
    2, server zpracuje dotaz, tj. načte data z RTC
    3, server pošle vyžádaná data do klienta, tj. pošle jednoduchý html, či pouze string do klienta
    4, klient rozparsuje data a tato vyhodnotí, pokud je RTC > 19.00 zapne osvětlení

    Tak to samozřejmě jde, ideálně však popiš tvůj případ pro diskuzi.

    L.

    odpověď na: ESP8266 server/klient #9917
    Miroslava
    Účastník

    No, chcela som skôr použiť tento wifi shield http://randomnerdtutorials.com/how-to-make-two-esp8266-talk/ ten sa da pripojiť na Arduino avšak som bola v domnienke že tento shield môžem využívať aj na prijímanie údajov z webu ale aj odosielanie.. avšak teraz som si neni istá či je to možné jedným wifi shieldom.

    odpověď na: Magnetické snímače #9916
    Miroslava
    Účastník

    Ahojte, problém bol vyriešený – môj breadboard od polovice neprepúšťal prúd takže problém bol v tom že nenapájal LED – takže keď som cele zapojenie posunula len na jednu polovicu všetko ide v poriadku 😮

    Dzaraaa
    Účastník

    Také nevím, zda nemusí být propojené nějaké piny pro komunikaci se shieldem. U originál shieldu jsou na to patice. Nevíte?

    Dzaraaa
    Účastník

    Supr to je přesně on! Akorát po přeložení jsem z toho nic nezjistil, protože překladač neumí plynule přeložit text.
    Jsou tam klíčová slova. Ještě by to chtělo začátek programu.

    ArduXPP
    Účastník
    Dzaraaa
    Účastník

    Děkuji všem co napsali 🙂
    Spíše bych ale uvítal tu možnost jako u originálního arduina, to znamená, základ arduino + připojení wifi shieldu. Spolupráce obou modulů v jednom. Návod do jaké polohy přepnout přepínače a program pro uvedení do provozu. Děkuji za pomoc.

    ArduXPP
    Účastník

    Tady několik českých článků je :

    Pavel72
    Účastník

    Vypadá to, že ano. Otestuju a dám vědět, jak jsem dopadl. Díky.

    Luke_CZ
    Účastník

    Jukni na použití PWM výstupů http://underservice.org/index.php?topic=241.0

    Stačí?

    L.

    Luke_CZ
    Účastník

    Asi takhle:
    a, alespoň bez základů AJ toho nikde moc nezjistíš
    b, tvůj WiFi shield má na sobě odkaz na elecshop.ml, tož bych kouknul tam 🙂
    c, pokud chceš dělat s WiFi, tak použij rovnou něco s ESP8266(NodeMcu, WeMos). To je jak vozit v autě druhej motor v kufru.

    L.

    odpověď na: ESP8266 server/klient #9906
    Luke_CZ
    Účastník

    Souhlasím s Vojtou,
    pro menší komplikaci bych šel třeba do NodeMcu, či WeMos. Cenově cca 3USD, a pro WeMos jsou i shieldy, třebas relé(ovládání motorku), SD karta(pokud bys chtěl větší stránky, či logování) atd…

    Oboje má na sobě rovnou převodník USB <> RS232, pozor však na logickou úroveň 3,3V!

    L.

    odpověď na: Řídící jednotka pro peletový kotel #9905
    johnyhol
    Účastník

    Takže jsem přemostil pin D4 z LCD na D30, přerušil cestu k D10 a vyzkoušel, co to bude dělat. Když jsem to zkoušel na nečisto jenom s testovacím prográmkem „hello, world!“ tak to fungovalo a dokonce k mýmu překvapení i svítilo podsvícení.(myslel jsem, že když je přerušený vývod na D10, že to nebude svítit – nechápu) Tak jsem to tedy zkusil přímo v prográmku pro řídící jednotku a tam už to začalo trochu zlobit. Nevím, jestli je to tím, že je přerušený ten pin D10, nebo jestli nezlobí napojení na Exosite. (jestli jsem to dobře doplnil do kódu – do správný části) Mělo by se to chovat tak, že když zapnu napájení tak by se to mělo připojit na Exosite (odeslat hodnoty z čidla teploty a fotobuňky) a pak normálně naběhnout program pro kotel. Mně to někdy funguje normálně, ale většinou se po chvíli asi sekne procesor (zastaví se sériová komunikace a na displeji svítí pořád „nastavuji vstupy/výstupy“) a pomůže jenom vypnout/zapnout napájení.
    Tady poslední kód:

    
    // REGULACE PELETKOVEHO KOTLE
    // author. Johnyhol & by JP
    // v 5_1_2017
    
    // changelog
    // v 5_1_2017
    // zmena pinu LCD (4->30)
    // v 4_1_2017 
    // pridani mereni teploty a vystupu na Exosite
    // v 2_1_2017
    //   zmena desky na MEGA
    //   precislovani pinu kvuli displeji a ethernetu
    //   doplneny/zmeneny komentare
    // v 16_12_2016
    //   precislovani pinu kvuli displeji
    //   testovani displeje
    // v 13_11_2016
    //   zrusena reakce na prostorovy termostat -> není potreba, reseno jiz v kotli
    // v 10_11_2016
    //   uprava seriove komunikace -> pridani casovacu jednotlivych funkci 
    // v 5_11_2016
    //   zmena casu - upraveno pro realny provoz
    // v 4_11_2016
    //   zmena vsech vystupu na rele
    // v 14_5_2016
    //   precislovani pinu
    //   zmena funkce fotobunky z digitalu na analog
    //   dolpneni seriove komunikace o hodnotu fotobunky 
    // v 30_3_2016
    //   oprava funkce tlacitka kvitace poruchy -> HIGH->LOW
    //   umazani parametru "long cas=13000;" -> jiz neni potreba
    //   umazani parametru "//delay(84000); //pockej 84s" u funkce dohoreni -> jiz neni potreba
    //   umazani parametru "//delay(12000); //po dobu 12s" u funkce davkovani zapalovaci davky pelet -> jiz neni potreba
    //   umazani parametru "//if(digitalRead(prostorovyTermostat) == LOW || digitalRead(kotlovyTermostat) == LOW){  // prostorovy  nebo  kotlovy termostat vypne" u funkce zapaleni
    //   drobne upravy textu/popisu jednotlivych parametru/funkci
    // v 27_3_2016
    //   uprava procesu zapalovani - nebude reagovat na prostorovy termostat
    //   uprava dlouhych delayu na smycky,  pro vyuziti watchdogu - autoreset pri zaseknuti procesou - doba nez se resetuje = 8s
    //   nastaveni definice poruch pro pozdejsi vyuziti
    // v22_3_2016
    //   uprava ladicich textu pro termostaty
    // v21_3_2016
    //   presunuti testuPlamene pouze do smycky udrzuj horeni
    //   doplneni textu do testu horeni
    //   oprava textu zprav
    //   zruseni diakritiky
    //   zapnuti alarmu pri vyskytu poruchy
    // v20_3_2016
    //   slouceni podminenych funkci  
    //   vypnuti zhaveni pri rozepnuti termostatu (kotlovy nebo prostorovy)
    //   rozdeleni funkci do vlastnich funkcnich bloku
    //   zapojeni seriove komunikace pro odladeni funkci 
    // v16_3_2016
    //   uprava podminky smycek (zruseno =)
    //   posun zpozdeni 5s z procesu zapaleni na jeho konec
    //   doplnena podminka reakce na termostaty (kotlovy/prostorovy) v procesu zapaleni
    //   upravena doba na 1 zapalovaci proces - nastavitelna trimrem na analog.vstupu A0. v rozsahu 60 - 600 s = 1 - 10 min. - nastaveni pouze v dobe necinosti kotle
    //   nastaveni poruchy a jeji kvitance tlacitkem na pinu 9
    
    // definice poruch
    // bit  funkce
    // 0    prehrati kotle pri zapalovani
    // 1    ztrata plamene pri horeni
    // 2    volne
    // 3    volne
    // 4    volne
    // 5    volne
    // 6    volne
    // 7    volne
    
    // knihovna watchdogu
    #include <avr/wdt.h>
    // knihovna displeje
    #include <LiquidCrystal.h>
    #include <EEPROM.h>
    #include <SPI.h>
    #include <Ethernet.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <Exosite.h>
    
    // nastaveni pinu displeje
    LiquidCrystal lcd(8, 9, 30, 5, 6, 7);
    
    #define davkovaniPelet 22 //davkovani pelet snek
    #define spirala 24 //zapalovaci spirala
    #define ventilator 26 //ventilator
    #define alarm 28 //signalizace poruchy
    #define kotlovyTermostat 2 //kotlovy termostat
    #define fotobunka 55 //fotobunka pro kontrolu plamene DI55 = A1 pro arduino MEGA
    #define trimr1 56 // nastaveni doby zapaleni  DI56 = A2 pro arduino MEGA
    #define tlacitkoKvitance 3 // pin tlacitka kvitance poruchy
    #define ONEWIRE 23 //pin pro mereni teploty
    #define REPORT_TIMEOUT 30000 //milliseconds period for reporting to Exosite.com
    #define SENSOR_READ_TIMEOUT 5000 //milliseconds period for reading sensors in loop
    //pin DI54 = A0 -> rezervace pro tlacitka displeje
    //pin D13 -> rezervace pro Ethernet Schield
    //pin D12 -> rezervace pro Ethernet Schield
    //pin D11 -> rezervace pro Ethernet Schield
    //pin D10 -> rezervace pro Ethernet Schield + pro podsviceni displeje(prerusene)
    //pin D4 -> rezervace pro SD kartu
    //pin D1 -> rezervace pro seriovou linku
    //pin D0 -> rezervace pro seriovou linku
    
    OneWire oneWire(ONEWIRE);
    DallasTemperature sensors(&oneWire);
    
    //String cikData = "6c1d94611bda02dbaa5cc6640218cd0360088b7f";  // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)
    byte macData[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };        // <-- Fill in your Ethernet shield's MAC address here.
    
    // Enter your Unique Identifier code here
    char unique_id[11] = "0020024A24"; // <-- Generated from Adding your device in portals.exosite.com
    
    // Use these variables to customize what datasources are read and written to.
    const String readString = "d25";
    
    // Number of Errors before we try a reprovision.
    const unsigned char reprovisionAfter = 3;
    
    unsigned char errorCount = reprovisionAfter;  // Force Provision On First Loop
    char macString[18];  // Used to store a formatted version of the MAC Address
    
    EthernetClient client;
    //Exosite exosite(cikData, &client);
    Exosite exosite(&client);
    
    String tempString;
    int index = 0;
    int lastIndex = -1;
    float tempC;
    
    int smycka1 = 0; // pomocna smycka - zapaleni
    int smycka1max = 720; // max.pomocne smycky - ted jiz nastavitelne trimrem na A2 60-720s
    int smycka2 = 0; // pomocna smycka - udrzeni horeni
    int smycka2max = 2; // max.pomocne smycky
    int smycka3 = 0; // pomocna smycka - pocet pokusu o zapaleni
    int smycka3max = 2; // max.pomocne smycky
    int smycka4 = 0; // pomocna smycka - davkovani zapalne davky pelet
    int smycka4max = 10; // max.pomocne smycky
    int smycka5 = 0; // pomocna smycka - rozhoreni
    int smycka5max = 5; // max.pomocne smycky
    int smycka6 = 0; // pomocna smycka - dohoreni
    int smycka6max = 84; // max.pomocne smycky
    byte porucha = 0; // promenna pro zaznam poruchy
    int ldr = 1; //analogovy pin kde je pripojen fotorezistor
    int ldr_value = 0; //promenna pro zaznam hodnot z fotorezistoru
    
    void setup() {
      // nastav seriovou komunikaci na rychlost 9600 bd 
      Serial.begin(9600);
      Serial.println("Boot");
      pinMode(25, OUTPUT); //assume using D25 as output to control remotely
      
      // Start up the OneWire Sensors library
      sensors.begin();
      delay(1000);
      Serial.println("Starting Exosite Temp Monitor");
      Serial.print("OneWire Digital Pin Specified: ");
      Serial.println(ONEWIRE);
      Ethernet.begin(macData);
      // wait 3 seconds for connection
      delay(3000);
      
      Serial.println("Nastavuji vstupy/vystupy"); // ladici seriova komunikace
      lcd.begin(16, 2); // nastaveni displeje
      lcd.print("NAST.VSTUPY/VYST"); // zobrazeni na displeji
      lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("VYPINAM VS. RELE"); // zobrazeni na displeji
      delay (2000);
      pinMode(davkovaniPelet, OUTPUT);
      pinMode(spirala, OUTPUT);
      pinMode(ventilator, OUTPUT);
      pinMode(alarm, OUTPUT);
      pinMode(kotlovyTermostat, INPUT);
      pinMode(fotobunka, INPUT);
      pinMode(trimr1, INPUT);
      pinMode(tlacitkoKvitance, INPUT);
      // vsechno vypni
      vypniVse();
            // nastav watchdog na 8s
            wdt_enable(WDTO_8S);
    }
    
    void loop() {
            wdt_reset(); // resetuj watchdog
      static unsigned long sendPrevTime = 0;
      static unsigned long sensorPrevTime = 0; 
      char buffer[7];
      String readParam = "";
      String writeParam = "";
      String writeString = "";
      String returnString = "";
      index = 0;
      lastIndex = -1;
    
       // Check if we should reprovision.
      if (errorCount >= reprovisionAfter) {
        if (exosite.provision("exosite", "ard-generic", unique_id)) {
          errorCount = 0;
        }
      }
        String uptime_str = String(millis()/1000);
      writeString += "uptime="+ uptime_str;
    
        //GET ANALOG 1 VALUE
      //get average of a number of readings
      int avgValue=0;
      int readings = 0;
      unsigned long avgTot = 0;
      int avgCnt = 0;
    
      while(readings<10)
      {
        avgTot += analogRead(A1);
        avgCnt += 1;
        avgValue = avgTot/avgCnt;
        readings++;
      }
      String analog1_str = String(avgValue);
      writeString += "&a1="+ analog1_str;
      
    //Make Write and Read request to Exosite Platform
      Serial.println("---- Do Read and Write ----");
      if (exosite.writeRead(writeString, readString, returnString)) {
        Serial.println("OK");
        Serial.print("Returned: ");
        Serial.println(returnString);
        Serial.println("Parse out dataport alias values");
        errorCount = 0;
        for(;;){
          index = returnString.indexOf("=", lastIndex+1);
          if(index != 0){
            String alias = "";
            tempString = returnString.substring(lastIndex+1, index);
            Serial.println(tempString);
            lastIndex = returnString.indexOf("&", index+1);
            alias = tempString;
            if(lastIndex != -1){
              tempString = returnString.substring(index+1, lastIndex);
            }else{
              tempString = returnString.substring(index+1);
            }
            
            
            if (alias == "d25"){
              if(tempString == "1"){
                digitalWrite(25, 1);
                Serial.println("set Digital25 to 1");
              }else if(tempString == "0"){
                digitalWrite(25, 0);
                Serial.println("set Digital25 to 0");
              }else{
                Serial.println(tempString);
              }
            } else if (alias == "msg"){
              Serial.print("Message: ");
              Serial.println(tempString);
            } else {
              Serial.println("Unknown Alias Dataport");
            }
       
            if(lastIndex == -1)
              break;     
            
          }else{
            //Serial.println(F("No Index"));
            break;
          }
        }
        
      } else {
        Serial.println("No Connection");
        errorCount++;
      }
    
      Serial.print("."); // print to show running
     
     // Read sensor every defined timeout period
      if (millis() - sensorPrevTime > SENSOR_READ_TIMEOUT) {
        Serial.println();
        Serial.println("Requesting temperature...");
        sensors.requestTemperatures(); // Send the command to get temperatures
        tempC = sensors.getTempCByIndex(0);
        Serial.print("Celsius:    ");
        Serial.print(tempC);
        Serial.println(" C ..........DONE");
      
        sensorPrevTime = millis();
      }
     
      // Send to Exosite every defined timeout period
      if (millis() - sendPrevTime > REPORT_TIMEOUT) {
        Serial.println(); //start fresh debug line
        Serial.println("Sending data to Exosite...");
        
        readParam = "";        //nothing to read back at this time e.g. 'control&status' if you wanted to read those data sources
        writeParam = "temp="; //parameters to write e.g. 'temp=65.54' or 'temp=65.54&status=on'
        
        String tempValue = dtostrf(tempC, 1, 2, buffer); // convert float to String, minimum size = 1, decimal places = 2
        
        writeParam += tempValue;    //add converted temperature String value
        
        //writeParam += "&message=hello"; //add another piece of data to send
    
        if ( exosite.writeRead(writeParam, readParam, returnString)) {
          Serial.println("Exosite OK");
          if (returnString != "") {
            Serial.println("Response:");
            Serial.println(returnString);
          }
        }
        else {
          Serial.println("Exosite Error");
        }
     
        sendPrevTime = millis(); //reset report period timer
        Serial.println("done sending.");
      }
      delay(1000); //slow down loop
            
            ldr_value = analogRead(ldr); //čte hodnoty LDR
      Serial.print("HODNOTA FOTOBUNKY = ");
      Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
      Serial.println("Cekam na sepnuti termostatu ..."); // ladici seriova komunikace
      smycka1max = map(analogRead(trimr1), 0, 1024, 60, 720); // nastaveni doby zapaleni trimrem na A2
      if(digitalRead(kotlovyTermostat) == HIGH){  // kotlovy termostat je zapnuty
              Serial.println("Kotlovy termostat zapnut"); // ladici seriova komunikace
              lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
              lcd.print("TERMOSTAT ZAPNUT"); // zobrazeni na displeji
      delay (2000);
          // startovaci davka pelet
          //------------------------
          zapalovaciDavkaPelet();
          
          // proces zapaleni
          //----------------
          zapaleni();
          
          // test poruchy
          // -----------------
          //testPlamene(); 
          
          // udrzeni horeni
          //--------------
          udrzujHoreni();
          
          // dohoreni
          //---------
          dohoreni();
        } else {
          Serial.println("Kotlovy/Prostorovy termostat vypnut"); // ladici seriova komunikace
          lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print("TERMOSTAT VYPNUT"); // zobrazeni na displeji
          }
      // kvitence pripadne poruchy
      //-------------------------------
      kvitancePoruchy();
    }
    
    void vypniVse() {
      // funkce vypni vse
      Serial.println("Vypinam vsechny rele ..."); // ladici seriova komunikace
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
      digitalWrite(spirala, HIGH); //vypni zhaveni
      digitalWrite(ventilator, HIGH); //vypni ventilator
    }
    
    void zapalovaciDavkaPelet() {
      // prvotni davkovani pelet pro zapaleni
      Serial.println("Davkuji pelety pro zapaleni ... 110s"); // ladici seriova komunikace
      lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("ST.DAVKA        "); // zobrazeni na displeji
      digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            for (smycka4 = 0;  smycka4 < smycka4max; smycka4 ++){
        delay(1000); 
              wdt_reset(); // resetuj watchdog
      Serial.print("Stav: ");
      Serial.print(smycka4);
      Serial.print("s/");
      Serial.print(smycka4max);
      Serial.println("s ");
      lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print(smycka4);
      lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("/"); // zobrazeni na displeji
      lcd.print(smycka4max);
              }
      digitalWrite(davkovaniPelet, HIGH); //potom vypni davkovani
      digitalWrite(ventilator, LOW); //zapni ventilator
      digitalWrite(spirala, LOW); //zapni zhaveni
    }
    
    void zapaleni() {
      // funkce zapaleni pelet
      // 2 pokusy o zapaleni
      Serial.println("Spoustim zapaleni ..."); // ladici seriova komunikace
      lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("ZAPALENI        "); // zobrazeni na displeji
      for (smycka3 = 0;  smycka3 < smycka3max; smycka3 ++){
        // smycka "1-10" minut zapalovani
        for (smycka1 = 0;  smycka1 < smycka1max; smycka1 ++){
                            wdt_reset(); // resetuj watchdog
          Serial.print("Pokus o zapaleni "); // ladici seriova komunikace
          Serial.print(smycka3); // ladici seriova komunikace
          Serial.print("/"); // ladici seriova komunikace
          Serial.println(smycka3max); // ladici seriova komunikace
          Serial.print("Stav: "); // ladici seriova komunikace
          Serial.print(smycka1); // ladici seriova komunikace
          Serial.print("s/"); // ladici seriova komunikace
          Serial.print(smycka1max); // ladici seriova komunikace
          Serial.println("s "); // ladici seriova komunikace
          lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print("POKUS           "); // zobrazeni na displeji
          lcd.setCursor(6, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print(smycka3);
          lcd.setCursor(7, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print("/"); // zobrazeni na displeji
          lcd.print(smycka3max);
          lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print(smycka1);
          lcd.print("  "); // zobrazeni na displeji
          lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print("/"); // zobrazeni na displeji
          lcd.print(smycka1max);
                            
          if(digitalRead(kotlovyTermostat) == LOW){ // kotlovy termostat vypne
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3
            Serial.println("Rozepnuti termostatu ..."); // ladici seriova komunikace
                                    bitSet(porucha,0); // nastav poruchu bit c.0 na "1"
          }
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
            digitalWrite(spirala, HIGH); //vypni zhaveni
            smycka1 = smycka1max; // ukonci smycku1
            smycka3 = smycka3max; // ukonci smycku3 
            Serial.println(" hori ...");   // ladici seriova komunikace
            Serial.println("Rozhoreni ... 50s ");
            lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
            lcd.print("ROZHORENI       "); // zobrazeni na displeji
            lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
            lcd.print("HORI...         "); // zobrazeni na displeji
                    
          } else {
            Serial.println(" nehori ...");   // ladici seriova komunikace 
          }
          delay(1000);
        }
                    for (smycka5 = 0;  smycka5 < smycka5max; smycka5 ++){
                delay(1000); 
                      wdt_reset(); // resetuj watchdog
            Serial.print("Stav: ");
            Serial.print(smycka5);
            Serial.print("s/");
            Serial.print(smycka5max);
            Serial.println("s ");
            lcd.setCursor(10, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
            lcd.print(smycka5);
            lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
            lcd.print("/"); // zobrazeni na displeji
            lcd.print(smycka5max);
                    }
        //delay(5000); //cekej 5s
      }
    }
    
    void udrzujHoreni() {
      // funkce udrzeni horeni
      ldr_value = analogRead(ldr); //čte hodnoty LDR
      Serial.print("HODNOTA FOTOBUNKY = ");
      Serial.println(ldr_value); //zobrazí hodnoty LDR na seriove lince
      Serial.println("Udrzeni horeni ..."); // ladici seriova komunikace
      for (smycka2 = 0;  smycka2 < smycka2max; smycka2 ++){
                    wdt_reset(); // resetuj watchdog
        smycka2 = 0; // vynuluj smycku
        if(digitalRead(kotlovyTermostat) == HIGH){ // kotlovy termostat je zapnuty
          if(analogRead(fotobunka) <= 500){ //pokud fotobunka vidi plamen
                      Serial.println("Test plamene ... hori"); // ladici seriova komunikace
                      Serial.println("Davkuji pelety ... ");
                      lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
                      lcd.print("DAVKOVANI       "); // zobrazeni na displeji
            digitalWrite(davkovaniPelet, LOW); //davkuj pelety
            delay(4000); //pockej 4s
            wdt_reset(); // resetuj watchdog
            delay(4000); //pockej 4s
            wdt_reset(); // resetuj watchdog
            Serial.println("Pauza ... ");
            lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
            lcd.print("HORENI          "); // zobrazeni na displeji
            digitalWrite(davkovaniPelet, HIGH); //vypni davkovani
            delay(5000); //pockej 5s
            wdt_reset(); // resetuj watchdog
            delay(5000); //pockej 5s
            wdt_reset(); // resetuj watchdog
          } else {
            delay(1000); // pocekej jeste 1s a zkus to znovu
            if(analogRead(fotobunka) >= 500){  //pokud fotobunka nevidi plamen
                                    Serial.println("Test plamene ... porucha"); // ladici seriova komunikace
                                    //lcd.clear(); // smaze displej pred dalsi smyckou
                                    lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
                                    lcd.print("NEHORI - PORUCHA"); // zobrazeni na displeji
      //delay (500);
                                    smycka2 = smycka2max; // ukonci smycku
                        //porucha = 1; // nastav poruchu
                                    bitSet(porucha,1); // nastav poruchu bit c.1 na "1"
                                    digitalWrite(alarm, LOW); // zapni alarm
            }
          }
        } else {
          smycka2 = smycka2max; // ukonci smycku
        }  
      }
    }
    
    void dohoreni() {
      // funkce dohoreni
      Serial.println("Dohoreni ... 840s "); // ladici seriova komunikace
      lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("DOHORENI        "); // zobrazeni na displeji
      digitalWrite(davkovaniPelet, HIGH); //vypni davkovani pelet
      digitalWrite(spirala, HIGH); //vypni zhaveni - pro jistotu
      
            for (smycka6 = 0;  smycka6 < smycka6max; smycka6 ++){
      Serial.print("Stav: ");
      Serial.print(smycka6);
      Serial.print("s/");
      Serial.print(smycka6max);
      Serial.println("s ");
      lcd.setCursor(9, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print(smycka6);
      lcd.print("  "); // zobrazeni na displeji
      lcd.setCursor(12, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
      lcd.print("/"); // zobrazeni na displeji
      lcd.print(smycka6max);
        delay(1000); 
              wdt_reset(); // resetuj watchdog
            }
      digitalWrite(ventilator, HIGH); //vypni ventilator
      
    }
    
    void kvitancePoruchy() {
      // funkce kvitance poruchy
      
      if(porucha > 0 ){ // kdyz je porucha aktivni
            Serial.println("Kvitance poruchy ..."); // ladici seriova komunikace
        // vypni vse
        vypniVse();
        while (digitalRead(tlacitkoKvitance) == LOW) { // zapni alarm a cekej na stisk tlacitka
          digitalWrite(alarm, LOW); // zapni alarm
          Serial.println("Porucha ... cekam na kvitanci"); // ladici seriova komunikace
          lcd.setCursor(0, 0); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
          lcd.print("CEKAM NA KVITACI"); // zobrazeni na displeji
                              wdt_reset(); // resetuj watchdog
        }
        Serial.println("Porucha kvitovana ..."); // ladici seriova komunikace
        digitalWrite(alarm, HIGH); // vypni alarm
        porucha = 0; // vynuluj poruchu
      } else {  // jinak 
        Serial.println("Zadna porucha  ..."); // ladici seriova komunikace
        lcd.setCursor(0, 1); // (1 znak => sloupec,druhy znak => radek, prvni radek je 0)
        lcd.print("ZADNA PORUCHA..."); // zobrazeni na displeji
          digitalWrite(alarm, HIGH); // vypni alarm
    }
    }
    
    odpověď na: ESP8266 server/klient #9904
    Vojtěch Vosáhlo
    Účastník

    Trochu mi nedošlo to se serverem a klientem. Máte tedy čidlo na nějakém místě připojené na wi-fi a pak motor na jiném místě taky připojený. Motor se řídí buď z dat a nebo z web GUI. Můžu se zeptat jestli v tomhle projektu hraje arduino. Espčka se dají programovat přímo a to příkazy stejnými jako arduino. Proč teda nezredukovat cenu a velikost a rozjet to na ESP samotném, třeba 12F, to má hodně pinů.
    Popřemýšlejte o tom a ozvěte se.

Aktuálně je na stránce zobrazeno 30 příspěvků - 991. až 1,020. (celkem z 2,760)