Arduino - bastlení

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Uživatelský avatar
Marcus81
Příspěvky: 374
Registrován: pát dub 28, 2017 8:05 pm
Lokalita: Senec
Systémové napětí: 48V
Výkon panelů [Wp]: cca 16kWp
Kapacita baterie [kWh]: 30kW Pb
Bydliště: Blízko Senec, SVK

Re: Arduino - bastlení

Příspěvek od Marcus81 »

Uz som skusal niekolko krat, chvilu som sa trochu do toho dostal, ale ked na dlhu dobu prestanes, vypadne ti to z hlavy pokial to nepozivas kazdy den. A ked mam znova absolvovat vyucbu "blikanie LED" tak ma ide rozhodit. Programovanie nie je moja salka kavy a zrejme to asi nikdy nepochopim, preto hladam projekty na nete aby som to nejako pozliepal a aby to fungovalo. Viem ze nie je to ono a spravne, ale to zrejme inak "nedam" :-(
Hybrid, 4x260Wp Amerisolar, 6x260Wp Mono CSun, 2x260Wp Aleo, 9x 230Wp JuliSolar, 32x Astronergy 245Wp, 3f-Victron Energy Multiplus 48/5000, 750 Ah trakčná, 800 Ah OPzV stacionarne, 3xMPPT Victron Energy 150/70-Tr, 1xMPPT Victron Energy 150/45-Tr, AC-out Coupling Fronius Symo 4.5-3-M
zatial vsetko vo výstavbe...
Uživatelský avatar
youda
Příspěvky: 3074
Registrován: stř dub 27, 2016 12:12 am

Re: Arduino - bastlení

Příspěvek od youda »

Z toho si nic nedělej, lepení je celkem běžný postup.

Pouhá znalost syntaxe je v programování to nejmenší. Každá HW platforma má svoje specifika, možnosti, přerušení, časovače, vstupy a výstupy, AD převodníky.... To samé každá periferie, kterou připojíš, nebo protokol kterým budeš chtít komunikovat. Syntaxi umí kde-kdo, ale vyrobit na konkrétní HW platformě něco opravdu užitečného, to chce o dost víc. Pak je ještě další level - optimalizovat kód tak, aby byl rychlý, krátký, snadno čitelný.

Takže já to dělám taky tak, že splácám dokopy vše co najdu. Většinou ;)

Máš funkční sketche na ty dva senzory, které chceš číst?
Jde už jen o to ze dvou funkčních programů vyrobit jeden?

Pokud ano, tak toto je většinou celkem snadné. Nejčastějsí špeky bývají:
- stejné názvy proměnných
- stejné IO piny
- časová závislost přesnosti měření, kdy delší kód do toho zanese nepřesnosti

Většinou stačí vybrat jeden z těch dvou programů, typicky ten na složitější čidlo, a jen do něj přidat 5 řádek na to druhé čidlo.

V případě tebou uvedených čidel BH1750 (luxmetr) a DHT11 (vlhkoměr a teploměr) jsou příslušné sketche tak krátké, že to bude malina.
Youdova ostrovní laboratoř 20kWp: https://youda.mypower.cz
kodl69
Příspěvky: 7700
Registrován: sob črc 19, 2014 8:56 pm
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Arduino - bastlení

Příspěvek od kodl69 »

To marcus81: tak to se na to vykašli dokud je čas, protože pokud tě to pohltí, tak to má podobnej průběh jako solaritída, a to nechceš... Mě to stálo cca rok života, než jsem pochopil, že něco dokážu splácat podobnejma metodama jako youda, ale jestli je problém už bikání ledky, tak doporučuju napřít svoje úsilí jinam a pořídit si nějakej systém domácí automatizace, kde se dají připojovat periferie "uživatelským způsobem". Prostě nemůžou všichni umět všechno...
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino - bastlení

Příspěvek od rottenkiwi »

DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
Marcus81
Příspěvky: 374
Registrován: pát dub 28, 2017 8:05 pm
Lokalita: Senec
Systémové napětí: 48V
Výkon panelů [Wp]: cca 16kWp
Kapacita baterie [kWh]: 30kW Pb
Bydliště: Blízko Senec, SVK

Re: Arduino - bastlení

Příspěvek od Marcus81 »

Co sa tyka zapojenia a prvotneho ozivenia jednotlivých modulov aby nieco merali, to si viem spravit, ale niektore veci mi proste do hlavy nejdu, sketche mam funkcne, ale tak ako pise youda, potrebujem z dvoch funknych spravit jeden funcny a tak, aby napr. ked ho spustim v monitore seriovohe portu, zobrazovali sa mi obidve hodnoty. A to nehovorim o prepojeni s raspberry na ktorom bezi domoticz, to som skusal cely vikend a ten domoticz skratka ardiuno nevidi :wall:
Hybrid, 4x260Wp Amerisolar, 6x260Wp Mono CSun, 2x260Wp Aleo, 9x 230Wp JuliSolar, 32x Astronergy 245Wp, 3f-Victron Energy Multiplus 48/5000, 750 Ah trakčná, 800 Ah OPzV stacionarne, 3xMPPT Victron Energy 150/70-Tr, 1xMPPT Victron Energy 150/45-Tr, AC-out Coupling Fronius Symo 4.5-3-M
zatial vsetko vo výstavbe...
Uživatelský avatar
NOPARasito
Příspěvky: 2623
Registrován: čtv črc 19, 2018 12:14 am
Bydliště: Vidiek, Trhanova Lhota

Re: Arduino - bastlení

Příspěvek od NOPARasito »

Na co anglictinu? Chrome prohlížeč ti to přeloží rovnou ;-).
Uživatelský avatar
Marcus81
Příspěvky: 374
Registrován: pát dub 28, 2017 8:05 pm
Lokalita: Senec
Systémové napětí: 48V
Výkon panelů [Wp]: cca 16kWp
Kapacita baterie [kWh]: 30kW Pb
Bydliště: Blízko Senec, SVK

Re: Arduino - bastlení

Příspěvek od Marcus81 »

To je pravda, google prelozi vsetko :lol:
Hybrid, 4x260Wp Amerisolar, 6x260Wp Mono CSun, 2x260Wp Aleo, 9x 230Wp JuliSolar, 32x Astronergy 245Wp, 3f-Victron Energy Multiplus 48/5000, 750 Ah trakčná, 800 Ah OPzV stacionarne, 3xMPPT Victron Energy 150/70-Tr, 1xMPPT Victron Energy 150/45-Tr, AC-out Coupling Fronius Symo 4.5-3-M
zatial vsetko vo výstavbe...
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino - bastlení

Příspěvek od rottenkiwi »

Čo to znamená, že Arduino nevidí ?
Na Arduine musí bežať server, ktorý mu natvrdo priradí MAC adresu
potom cez DHCP dostane nejakú adresu v tvare 192.168.x.y
a server bude odpovedať na požiadavky GET POST.
To všetko však treba naprogramovať napr.


HTML:
request.open("GET", "ajax_inputs" + nocache, true);

request.send(null);

setTimeout('GetArduinoInputs()', 1100);
Arduino Mega:

Kód: Vybrat vše

  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {   // client data available to read
        char c = client.read();
          //read char by char HTTP request
          // buffer first part of HTTP request in HTTP_req array (string)
          // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
          if (req_index < (REQ_BUF_SZ - 1)) {
              HTTP_req[req_index] = c;          // save HTTP request character
              req_index++;
          }
          // last line of client request is blank and ends with \n
          // respond to client only after last line received
           
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Access-Control-Allow-Origin: *");
          // remainder of header follows below, depending on if
          // web page or XML page is requested
          // Ajax request - send XML file
              
                   if (StrContains(HTTP_req, "GET")
                                 && StrContains(HTTP_req, "ajax_inputs")) {
                        // send rest of HTTP header
                        client.println("Content-Type: text/xml");
                        client.println("Connection: keep-alive");
                        client.println();
                        //SetLEDs ();
                        // send XML file containing input states
                        XML_response(client);
                    }
                    else
                    if (StrContains(HTTP_req, "POST")
                                 && StrContains(HTTP_req, "ajax_inputs=1")) {
                        // send rest of HTTP header
                        client.println("Content-Type: text/xml");
                        client.println("Connection: keep-alive");
                        client.println();
                        //SetLEDs ();
                        // send XML file containing input states
                        XML_response(client);
                    }
                    else if (StrContains(HTTP_req, "ajax_logs")) {
                        // send rest of HTTP header
                        client.println("Content-Type: text/xml");
                        client.println("Connection: keep-alive");
                        client.println();
                        SetDays ();
                        SetWeeks ();
                        SetMonths ();
                        // send XML file containing input states
                        XML_response_2(client);
                    }
                    
                    else {  // web page request
                        // send rest of HTTP header
                        client.println("Content-Type: text/html");
                        client.println("Connection: close");
                        client.println();
                        if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /index.htm")) {
                              webFile = SD.open("index.htm");        // open web page file
                        }
                        else if (StrContains(HTTP_req, "GET /logtr.htm")) {
                              webFile = SD.open("logtr.htm");        // open web page file
                        }
                        else if (StrContains(HTTP_req, "GET /page0.htm")) {
                              webFile = SD.open("page0.htm");        // open web page file
                        }   
                        else if (StrContains(HTTP_req, "GET /page1.htm")) {
                              webFile = SD.open("page1.htm");        // open web page file
                        }
                        else if (StrContains(HTTP_req, "GET /datalogp.txt")) {
                              webFile = SD.open("lifelog.txt");        // open web page file
                        }     
                        else if (StrContains(HTTP_req, "GET /page2.htm")) {
                              webFile = SD.open("page2beg.htm");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              for ( int i = 0 ; i < Max_G_buff ; i++ )
                              {
                                 client.print ("['");
                                 client.print (i / 3);
                                 client.print ("',");
                                 client.print ((float)U1_buff [(U1_index+i) % Max_G_buff]*5.0/1023*U_1_call);
                                 client.print (",");
                                 client.print ((float)U2_buff [(U2_index+i) % Max_G_buff]*5.0/1023*U_2_call);
                                 client.print (",");
                                 client.print ((float)( ( (A2_buff [(A2_index+i) % Max_G_buff]- A_offset ) / A_call)+
                                 ((A3_buff [(A3_index+i) % Max_G_buff]- A_3_offset ) / A_call) ) );
                                 client.print (",");
                                 client.print (((A0_buff [(A0_index+i) % Max_G_buff]- A_0_offset ) / A_call)+
                                               ((A4_buff [(A4_index+i) % Max_G_buff]- A_4_offset ) / A_call)+
                                               ((A1_buff [(A1_index+i) % Max_G_buff]- A_1_offset ) / A_call)    );
                                 client.print ("],");
                                 client.println();
                               };
                             webFile = SD.open("page2end.htm");        // open web page file 
                        }      
                        else if (StrContains(HTTP_req, "GET /page3.htm")) {
                              webFile = SD.open("page3beg.htm");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              webFile = SD.open("d.d");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              
                            
                             webFile = SD.open("page3end.htm");        // open web page file 
                        }      
                        else if (StrContains(HTTP_req, "GET /page4.htm")) {
                              webFile = SD.open("page4beg.htm");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              webFile = SD.open("e.e");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              
                            
                             webFile = SD.open("page4end.htm");        // open web page file 
                        }
                        else if (StrContains(HTTP_req, "GET /elog.htm")) {
                              webFile = SD.open("page4beg.htm");        // open web page file
                                if (webFile) {
                                  while(webFile.available()) {
                                    client.write(webFile.read()); // send web page to client
                                  }
                                  webFile.close();
                              };
                              
                              for ( int i = 0; i <=6; i++ )
                              {
                                int day_x;
                                day_x = i+1;
                                if ( D_state [i] )
                                {
                                  if (W_state [1])
                                  {
                                    day_x = i + 8;
                                  }
                                  else if (W_state [2])
                                  {
                                    day_x = i + 15;
                                  } 
                                  else if (W_state [3])
                                  {
                                    day_x = i + 22;
                                  }  
                                  else if (W_state [4])
                                  {
                                    day_x = i + 29;
                                  } 
                                  
                                  char x = (day_x / 10) + 48;
                                  char y = (day_x % 10 )  + 48;
                                  strLogName = "/pv/elog/";
                                  strLogName += x;
                                  strLogName += y;
                                  strLogName += strLogNameSuffix;
                                                                
                                  webFile = SD.open(strLogName);        // open web page file
                                  if (webFile) {
                                      while(webFile.available()) {
                                        client.write(webFile.read()); // send web page to client
                                      }
                                      webFile.close();
                                  }
                                  else
                                  {
                                    webFile = SD.open("e.e");        // open web page file
                                    if (webFile) {
                                      while(webFile.available()) {
                                        client.write(webFile.read()); // send web page to client
                                      }
                                    webFile.close();
                                    }
                                  }
                                }
                            }
                            webFile = SD.open("page4end.htm");        // open web page file 
                        }

                        
                        
                        // send web page
                        // webFile = SD.open("index.htm");        // open web page file
                        if (webFile) {
                            while(webFile.available()) {
                                client.write(webFile.read()); // send web page to client
                            }
                            webFile.close();
                        }
                    }
                    // display received HTTP request on serial port
                    Serial.print(HTTP_req);
                    // reset buffer index and all buffer elements to 0
                    req_index = 0;
                    StrClear(HTTP_req, REQ_BUF_SZ);
                    break;
          
/*          
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin
          int analogChannel = Amp_1_pin;
          client.print("<p style=""color:blue"">");
          
          int sensorReadingA = analogRead(analogChannel);
          sensorReadingA = analogRead(analogChannel);
           
            client.print("A: ");
            //client.println("<br />");
            //client.print(analogChannel);
            //client.print(" = ");
            //client.print( ( Amp_min - A_offset ) / A_call );
            //client.print(", ");     
            //client.print( ( Amp_max - A_offset ) / A_call );
            //client.print(", ");
            //client.print( ( Amp_avg - A_offset ) / A_call );
            //client.print(", ");
            client.print( ( Amp_med - A_offset ) / A_call );
            client.print(", ");
            client.print( ( sensorReadingA - A_offset ) / A_call );
            //client.println("<br />");
          //client.print("</p>");  
          
          analogChannel = U_1_pin;
          int sensorReadingU = analogRead(analogChannel);
          sensorReadingU = analogRead(analogChannel);
          
          client.print("<p style=""color:red"">");
          client.print(" V: ");
          //client.println("<br />");
          
          //client.print(analogChannel);
          //client.print(" = ");
          //client.print( U_min*5.0/1023*U_call );
          //client.print(", ");            
          //client.print( U_max*5.0/1023*U_call );
          //client.print(", ");
          //client.print( U_avg*5.0/1023*U_call );
          //client.print(", ");
          client.print( U_med*5.0/1023*U_call );
          client.print(", ");
          client.print( sensorReadingU*5.0/1023*U_call );
          //client.println("<br />");
          
          /*
          for ( analogChannel = 6; analogChannel < 8; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            
            client.print("Voltage ");
            client.print(analogChannel);
            client.print(" = ");
            client.print(sensorReading*5.0/1023*U_call);
            client.println("<br />");
          }
          */
          //client.print("</p>");
/*          
          client.print("<p style=""color:black"">");
                   
          client.print("W: ");
          //client.println("<br />");
          //client.print(analogChannel);
          //client.print(" = ");
          //client.print( ( ( Amp_min - A_offset ) / A_call ) * ( U_min*5.0/1023*U_call ) );
          //client.print(", ");            
          //client.print( ( ( Amp_max - A_offset ) / A_call ) * ( U_max*5.0/1023*U_call ) );
          //client.print(", ");
          //client.print( ( ( Amp_avg - A_offset ) / A_call ) * ( U_avg*5.0/1023*U_call ) );
          //client.print(", ");
          client.print( ( ( Amp_med - A_offset ) / A_call ) * ( U_med*5.0/1023*U_call ) );
          client.print(", ");
          client.print( ( ( sensorReadingA - A_offset ) / A_call ) * ( sensorReadingU*5.0/1023*U_call ) );
          //client.println("<br />");
          //client.print("</p>");  
          
          client.print(" Wh: ");
          //client.print(analogChannel);
          //client.print(" = ");
          client.print( P_day );
          //client.println("<br />");
          //client.print("</p>"); 
          
          client.print("<p style=""color:red"">");
          client.print(" DC Wh: ");
          //client.print(analogChannel);
          //client.print(" = ");
          client.print( P_Dc );
          //client.println("<br />");
          //client.print("</p>"); 
          
          
       
          client.print("<p style=""color:green"">");
          client.print("C: ");
          client.print(celsius);
          //client.print(" Celsius, ");
          client.println("<br />");
          
            client.println("<a href=\"/?r2on\"\">+L2</a>");
            client.println("<a href=\"/?r2off\"\">-L2</a><br />");
            client.println("<br>");

            client.println("<a href=\"/?r3on\"\">+L3</a>");
            client.println("<a href=\"/?r3off\"\">-L3</a><br />");
            client.println("<br>");

            client.println("<a href=\"/?r5on\"\">+L5</a>");
            client.println("<a href=\"/?r5off\"\">-L5</a><br />");
            client.println("<br>");

            client.println("<a href=\"/?r6on\"\">+L6</a>");
            client.println("<a href=\"/?r6off\"\">-L6</a><br />");
            client.println("<br>");

            client.println("<a href=\"/?r7on\"\">+L7</a>");
            client.println("<a href=\"/?r7off\"\">-L7</a><br />");
            client.println("<br>");

            client.println("<a href=\"/?r8on\"\">+L8</a>");
            client.println("<a href=\"/?r8off\"\">-L8</a><br />");
            client.println("<br>"); 
            
          client.println("</html>");          
          break;
*/          
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
/*    
    if(readString.indexOf("?r2on") > 0)//checks for on
    {
      digitalWrite(2, HIGH);    // set pin 2 high
      Serial.println("Led On");
      client.println("L2 On");
      client.println("<br>");
    }

    if(readString.indexOf("?r2off") >0)//checks for off
    {
      digitalWrite(2, LOW);    // set pin 2 low
      Serial.println("Led Off");
      client.println("L2 Off");
      client.println("<br>");
    }

    if(readString.indexOf("?r3on") >0)//checks for on
    {
      digitalWrite(3, HIGH);    // set pin 4 high
      Serial.println("Led On");
      client.println("L3 On");
      client.println("<br>");
    }
    
    if(readString.indexOf("?r3off") >0)//checks for off
    {
      digitalWrite(3, LOW);    // set pin 4 low
      Serial.println("Led Off");
      client.println("L3 Off");
      client.println("<br>");
    }
    
    if(readString.indexOf("?r5on") >0)//checks for on
    {
      digitalWrite(5, HIGH);    // set pin 6 high
      Serial.println("Led On");
      client.println("L5 On");
      client.println("<br>");
    }
    
    if(readString.indexOf("?r5off") >0)//checks for off
    {
      digitalWrite(5, LOW);    // set pin 6 low
      Serial.println("Led Off");
      client.println("L5 Off");
      client.println("<br>");
    }
    
    if(readString.indexOf("?r6on") >0)//checks for on
    {
      digitalWrite(6, HIGH);    // set pin 7 high
      Serial.println("Led On");
      client.println("L6 On");
      client.println("<br>");
    }

    if(readString.indexOf("?r6off") >0)//checks for off
    {
      digitalWrite(6, LOW);    // set pin 7 low
      Serial.println("Led Off");
      client.println("L6 Off");
      client.println("<br>");
    }

    if(readString.indexOf("?r7on") >0)//checks for on
    {
      digitalWrite(7, HIGH);    // set pin 8 high
      Serial.println("Led On");
      client.println("L7 On");
      client.println("<br>");
    }

    if(readString.indexOf("?r7off") >0)//checks for off
    {
      digitalWrite(7, LOW);    // set pin 8 low
      Serial.println("Led Off");
      client.println("L7 Off");
      client.println("<br>");
    }

    if(readString.indexOf("?r8on") >0)//checks for on
    {
      digitalWrite(8, HIGH);    // set pin 9 high
      Serial.println("Led On");
      client.println("L8 On");
      client.println("<br>");
    }

    if(readString.indexOf("?r8off") >0)//checks for off
    {
      digitalWrite(8, LOW);    // set pin 9 low
      Serial.println("Led Off");
      client.println("L8 Off");
      client.println("<br>");
    }

   //clearing string for next read
   readString="";
*/    
    Serial.println("client disconnected");
  }
}
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
Dusan61
Příspěvky: 292
Registrován: úte kvě 22, 2018 6:38 am
Lokalita: Zvolen
Systémové napětí: 24V
Výkon panelů [Wp]: 3960
Kapacita baterie [kWh]: 13
Bydliště: ZV

Re: Arduino - bastlení

Příspěvek od Dusan61 »

Marcus81 píše:
Ahojte vsetci, hlavne ty co ovladaju arduino, chcem sa opytat mozno pre vas jednoducha vec, chcel by som si nieco vyskladat ohladom merania nejakych velicin a nie som vobec borec v progamovani, preto si projekty hladam na nete, popridade trochu upravim, no neviem ako mam nahrat do arduina aby mi sledoval,zobrazoval viacej meranych velicin ako napr. DHT11 a BH1750, ako to docielim?!
Dakujem za kazdu odpoved
Skús si niečo prečítať tu:
https://tinycontrol.pl/en/lan-controller-v3/
https://tinycontrol.pl/en/lan-controller-v3-3/

Toto nie je arduino, ale na jednoduché meranie, monitoring a ovládanie cez mobilnú aplikáciu stačí.
Pri tomto nemusíš vedieť vôbec programovať a je to celkom lacné.
Panel 270 Wp ZV
Panely 3960 Wp, Regulátor EPEVER-150VDC/80A, Meniče Dom/Victron 5000 VA/24V, Bojler/Victron 3000 VA/24V, Akumulátor Li-ion 18650 56P/8S + Li-ion 50Ah 3P/8S + Li-ion 150Ah 8S = 31,6V/440Ah
LK3 monitoring
Grafy: Panely 3960 Wp Napätie na akum. Energia v akum. Denný výkon/spotreba
DC/DC menič
Uživatelský avatar
Marcus81
Příspěvky: 374
Registrován: pát dub 28, 2017 8:05 pm
Lokalita: Senec
Systémové napětí: 48V
Výkon panelů [Wp]: cca 16kWp
Kapacita baterie [kWh]: 30kW Pb
Bydliště: Blízko Senec, SVK

Re: Arduino - bastlení

Příspěvek od Marcus81 »

ja ho mam prepojeny cez USB porty a domoticz ho nevidi aj ked mu raspberry prideli napr.port USB0. V MySensors v domoticz aj ked mu nastavim port na aky je pripojeny, jeducho ho nevidi aj napriek tomu ze na arduine nahrate napr. sketch DHT11
Hybrid, 4x260Wp Amerisolar, 6x260Wp Mono CSun, 2x260Wp Aleo, 9x 230Wp JuliSolar, 32x Astronergy 245Wp, 3f-Victron Energy Multiplus 48/5000, 750 Ah trakčná, 800 Ah OPzV stacionarne, 3xMPPT Victron Energy 150/70-Tr, 1xMPPT Victron Energy 150/45-Tr, AC-out Coupling Fronius Symo 4.5-3-M
zatial vsetko vo výstavbe...
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino - bastlení

Příspěvek od rottenkiwi »

Tak toto poriešil nejaký chlapík tu.
Je tu kód aj knižnice.
https://www.youtube.com/watch?v=lWqYYBQ6_AQ
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
Marcus81
Příspěvky: 374
Registrován: pát dub 28, 2017 8:05 pm
Lokalita: Senec
Systémové napětí: 48V
Výkon panelů [Wp]: cca 16kWp
Kapacita baterie [kWh]: 30kW Pb
Bydliště: Blízko Senec, SVK

Re: Arduino - bastlení

Příspěvek od Marcus81 »

Skusim este hladat, hadam sa mi to podari nejako sklbit aby to fungovalo...
Hybrid, 4x260Wp Amerisolar, 6x260Wp Mono CSun, 2x260Wp Aleo, 9x 230Wp JuliSolar, 32x Astronergy 245Wp, 3f-Victron Energy Multiplus 48/5000, 750 Ah trakčná, 800 Ah OPzV stacionarne, 3xMPPT Victron Energy 150/70-Tr, 1xMPPT Victron Energy 150/45-Tr, AC-out Coupling Fronius Symo 4.5-3-M
zatial vsetko vo výstavbe...
Uživatelský avatar
antoni_sk
Příspěvky: 677
Registrován: pát lis 17, 2017 3:14 pm
Bydliště: Liptov

Re: Arduino - bastlení

Příspěvek od antoni_sk »

Inak ten TinyControl vyzerá zujímavo.
Pripadá mi že sa v ňom dajú použiť snímače, čidlá, senzory také isté ako pri Arduine - mám ich doma kopec :-)
Ktovie či by si TinyControl nezaslúžilo aj samostatnú tému - mohli by tam svoje skúsenosti a projety písať členovia ktorí s ním majú už skúsenosti
FV-1, 60°, 2019 3x Suntech STP280-20/Wfw (840Wp), EPSOLAR LS3024B (30A)
FV-2, 35°, 2020 3x CSUN 280-60P (840Wp), EPEVER LS3024B (30A),
FV-3, 35°, 7/2020 4x Trinasolar TSM-235 (940Wp), SRNE ML 40A MPPT
FV-4, 35°, 10/2021 2x Moser 220Wp (440Wp), EPEVER LS3024B (30A),
FV-5, 45°, 9/2022 6x Trinasolar 235Wp (1400Wp), Easun ISolar SPS 3kW
Meniče: Carspa 3000W (špičk.9000W), Easun ISolar SPS 3kW
batérie: 16x 200Ah LiFePo4 (24V) + 8x 280Ah LiFePo4 (24V)
Uživatelský avatar
Dusan61
Příspěvky: 292
Registrován: úte kvě 22, 2018 6:38 am
Lokalita: Zvolen
Systémové napětí: 24V
Výkon panelů [Wp]: 3960
Kapacita baterie [kWh]: 13
Bydliště: ZV

Re: Arduino - bastlení

Příspěvek od Dusan61 »

Áno, v TinyControl sa dajú použiť snímače, čidlá, senzory také isté ako pri Arduine.
Ja som túto tému nazval LK3, lebo pod týmto názvom som toto zariadenie kúpil.
V LK3 sa dajú použiť len tie snímače, čidlá a senzory ktoré sú v programe, ale s konštruktérmi TinyControl sa dá dohodnúť a program priebežne upravujú.
Panel 270 Wp ZV
Panely 3960 Wp, Regulátor EPEVER-150VDC/80A, Meniče Dom/Victron 5000 VA/24V, Bojler/Victron 3000 VA/24V, Akumulátor Li-ion 18650 56P/8S + Li-ion 50Ah 3P/8S + Li-ion 150Ah 8S = 31,6V/440Ah
LK3 monitoring
Grafy: Panely 3960 Wp Napätie na akum. Energia v akum. Denný výkon/spotreba
DC/DC menič

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek