Začátky s Arduinem

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
jan.westhuserlt
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputace: 0

Začátky s Arduinem

Příspěvek od jan.westhuserlt »

Ahoj, při snaze o nahrání vzorového projektu (přiloženého k instalačnímu softwaru Arduina) se mi zobrazí tato chybová hláška: avrdude: stk500_getsync(): not in sync: resp=0x00
Používám software ve verzi 1.0.6., hardware je http://www.dx.com/p/nano-3-0-atmel-atme ... .VJw5-F4jA.

Trošku bych ocenil odkaz na ověřený software, ověřené vzory a podobně, dostal sem to z druhé ruky a není vůbec vyloučeno, že je problém v Softwaru. Hlavně je problém, že k tomu nemám periferie, takže potřebuji něco, co otestuji jen s pomocí té integrované testovací diody.

Děkuji.

PS: http://img24.cz/images/56362291040029911837.jpg v určitých detailech toho obrázku se ty desky liší, tak jsem pro jistotu tu svou ofotil.

http://forum.arduino.cc/index.php?topic=28223.0 a nic z tohoto nepomohlo
TyTycko
Příspěvky: 110
Registrován: pon zář 03, 2012 8:47 pm
Reputace: 1

Re: Začátky s Arduinem

Příspěvek od TyTycko »

No chyba je v tom že ti ten převodník co máš zjevně ze spodní strany desky nekomunikuje s Atmelem.Párkrát sem to řešil výměnou diody co je ze spoda u stabilizátoru a jednou byl v háji stabilizátor.Otázka je jen taková do jaké míry se to vyplatí opravovat a jestli se spíš nevyplatí objednat jinou u číňana.Pokud umíš s mikropájkou a změřit si diodu a proměřit stabilizátor,tak je práce zadara :-)
Polánka 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever :-( ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
jan.westhuserlt
Příspěvky: 8
Registrován: čtv pro 25, 2014 6:03 pm
Reputace: 0

Re: Začátky s Arduinem

Příspěvek od jan.westhuserlt »

VYŘEŠENO:

Ovladačem to u mě nebylo, ten přiložený funguje správně (je jediný, který jsem instaloval)

Tak nakonec vyřešeno: u mě byl problém s nastavením komunikace... V Tools sem musel na záložce Board vybrat správnej typ desky, a u Serial Portu zvolit COM4.

Kdyžtak přikládám osvědčený ovladač. Instalace setupem, zvolte soubor CH341SER.INF.

http://www.ebastlirna.cz/modules.php?na ... d&id=45233

----

Ale hele, chtěl bych nějaký typ na zapojení a naprogramování zapojení s poťákem, prostě něco sofistikovanějšího :-) Mám jen tento základní program, kde mi bliká testovací "L" dioda, ale nemám k tomu žádné další periferie. :-)

Dá se tento program upravit i pro použití na mém NANU? http://www.arduino.cc/en/tutorial/potentiometer

http://img24.cz/images/74475244091290492011.jpg
Jinak, to origiální nano a to moje čínské mají probohezné porty... selský rozum mi říká, že je to na 99% procent jedno... pin 26 bude vždy 26, a je jedno, zda se označí číslem A0 anebo A7. takže tady je ten program, upravený pro mé NANO.

int potPin = 26; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int val = 0; // variable to store the value coming from the sensor

void setup() {
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}

void loop() {
val = analogRead(potPin); // read the value from the sensor
digitalWrite(ledPin, HIGH); // turn the ledPin on
delay(val); // stop the program for some time
digitalWrite(ledPin, LOW); // turn the ledPin off
delay(val); // stop the program for some time
}

Kam mám ale fyzicky zapojit tu diodu, a jak určím, při jaké napěťové hodnotě se mi ta dioda zapne/vypne?
ome
Příspěvky: 159
Registrován: úte čer 03, 2014 5:16 pm
Reputace: 29

Re: Začátky s Arduinem

Příspěvek od ome »

Nazdar, potrebujem poradit s displayom arduina 16x02.
Zbastlil som si elektricmeter https://forum.mypower.cz/viewtopic.php?f=3&t=2057#p38992 pri pokusoch som mojou vinou odpalil arduino a display. Po vymene za obidva nove mi display zobrazuje necitatelne znaky. Arduino v serial monitore pracuje spravne. Skontroloval som vsetky kontakty od displaya az po nozicky cipu arduina, ok. Moze to byt ze mi cinan poslal display s cipom neeuropskej znakovej sady, alebo kde je podla vas chyba? Ten novy je presne taky ako povodny (spaleny).
Přílohy
IMG_20150509_164017.jpg
500Wp seriovo balkon JZ a 960Wp paralelne strecha J a JV,
epsolar 2210, 24v 19xKPH 150 + 12xSunica 70 cca 3,3 kW/h, menice modif. sinus 1000W cina a PJ 3000W LF
radeczek
Příspěvky: 59
Registrován: čtv črc 31, 2014 12:03 am
Reputace: 3

Re: Začátky s Arduinem

Příspěvek od radeczek »

Hoj, jen tipuju: Jsou opravdu dobře připojení kontakty? proměřeno, že se žádný nedotýká vedlejšího? Jdou všichni do dobrého pinu na arduinu? Podobnou chybu mi to dělalo, když jsem měl špatný kontakt a třeba v průběhu vypadával.

Co opravdu doporučuju je "Arduino keypad shiled", což je shield s displayem a tlačítky, který se nasazuje přímo na arduino, takže odpadají špatné kontakty. Tlačítka jsou jako bonus ;)
TyTycko
Příspěvky: 110
Registrován: pon zář 03, 2012 8:47 pm
Reputace: 1

Re: Začátky s Arduinem

Příspěvek od TyTycko »

Taky zkus nepoužité piny LCD připojit na GND,občas se stává že to nemá nulová data na D0-D3.
Polánka 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever :-( ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
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: Začátky s Arduinem

Příspěvek od kodl69 »

já tipuju přehozený vývody d4-d7 displeje s arduinem, něco podobnýho se mi povedlo taky, samoznaky neuvěřitelnýho typu. Ten údaj je tam stále, nebo to nějak se posunuje a mění? Základ je zkusit příklad co je u arduina (nemusí se dycky psát hello word :-)) ) a zkusit v LiquidCrystal lcd(12, 11, 5, 4, 3, 2); je to v pořadí RS, EN, D4, D5, D6, D7, vývod R/W displeje na gnd - kolikrát je jednodušší přepsat toto než pájet drátky...
Displayshield mám na pokusy taky, ale lepší je displej přes I2C, stačí dva dráty a je to, akorát jsem bojoval s knihovnou a vývody i2c převodníku (u některé knihovny jdou předefinovat, u některé ne...)
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.
ome
Příspěvky: 159
Registrován: úte čer 03, 2014 5:16 pm
Reputace: 29

Re: Začátky s Arduinem

Příspěvek od ome »

Dakujem vsetkym za pomoc. Bol to skrat na plosaku medzi D4 a D5. Na skrat som to nepremeriaval, moja chyba. Uz to funguje.
500Wp seriovo balkon JZ a 960Wp paralelne strecha J a JV,
epsolar 2210, 24v 19xKPH 150 + 12xSunica 70 cca 3,3 kW/h, menice modif. sinus 1000W cina a PJ 3000W LF
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Ahoj, právě jsem zprovoznil modul reálného času ds3231 a zadal správné údaje už si to správná data pamatuje i při odpojení napájení arduina. Korektně to vypisuje na seriovou linku, jak ale přiřadit údaj do proměnné - pro zápis ntřeba na SD, nebo jakoukoliv jinou činnost?

promenna_daum = displayTime(); // takhle to teda nefunguje

Díky



#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}



void setup()
{
Wire.begin();
Serial.begin(9600);
//set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
// setDS3231time(00,50,11,3,19,05,15);



}

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)

{

// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}


void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(":");
if (minute<10)
{
Serial.print("0");
}
Serial.print(minute, DEC);
Serial.print(":");
if (second<10)
{
Serial.print("0");
}
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
if (month<10)
{
Serial.print("0");
}
Serial.print(month, DEC);
Serial.print("/");
Serial.print("20");
Serial.print(year, DEC);
Serial.print(" ");
Serial.print(" Den v tydnu: ");
switch(dayOfWeek){
case 1:
Serial.println("Nedele");
break;
case 2:
Serial.println("Pondeli");
break;
case 3:
Serial.println("Utery");
break;
case 4:
Serial.println("Streda");
break;
case 5:
Serial.println("Ctvrtek");
break;
case 6:
Serial.println("Patek");
break;
case 7:
Serial.println("Sobota");
break;
}
}




void loop()
{
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every second
}
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: Začátky s Arduinem

Příspěvek od rottenkiwi »

Ked to chcem vypisat do suboru na SD karte, ja to robim takto:

if ( Log_index == Max_buff )
{

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
for ( int i = 0 ; i < Max_buff ; i++ )
{
for ( int j = 0 ; j < Max_sensor ; j++ )
{
dataFile.print( Log_buffer [j]);
dataFile.print(",");
}
dataFile.println ();
};

Log_index = 0;
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
Log_index = 0;
};


}

To znamena napisat si novu funkciu get_Time()
a namiesto Serial.print dat dataFile.print, kde dataFile je typu File
a este je dobre si tam zvolit nejaky buffer a ten cely zapisat na koniec suboru,
inac to budem zapisovat niekolko krát viac, a stále otvarat a zatvarat subor.
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.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

void get_Time()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
}

datum = get_Time();

Díky za snahu, zdroják je to pro mne velmi složitý... prozatím by mi stačilo pracovat s proměnnou, nemusí se rovnou zapisovat

lcd.print(datum); // očekávám na LCD 14:33:20 19/05/2015

ale vono furt nic.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Takže už je šet a furt nic, bude to bez logu a jdu na pivo.... Ještě jsem se nikdy nebabral s něčím tak dlouho...
Uživatelský avatar
Frenky
Příspěvky: 815
Registrován: pon led 21, 2013 6:36 pm
Reputace: 131
Lokalita: Doubravička
Systémové napětí: 48V
Výkon panelů [Wp]: 8700
Kapacita baterie [kWh]: 25
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Doubravička

Re: Začátky s Arduinem

Příspěvek od Frenky »

250w_gridfree píše:Takže už je šet a furt nic, bude to bez logu a jdu na pivo.... Ještě jsem se nikdy nebabral s něčím tak dlouho...
A to je teprve začátek, mě trvalo cca půl roku každý den tak 3 hodiny, nežli jsem alespoň trochu tušil o čem si programátoři vlastně povídají. :lol:

Chce to hodně trpělivosti a hodně studia :D
Přeji aby obého se dostávalo a úspěch se zajisté dostaví :mrgreen:
24x Solární panel JINKO SOLAR 225 Pmpp=225W, 2x Regulátor STUDER VT-80, 2x Střídač Studer XTM 4000-48, BSP, RCC, 1x AKU 48V LFP200Ah 1x AKU 48 V LFP280Ah. Řizení a dohled, SDS, vlastní vyčítání arduinem DUE v krabičce (ARMOSY), export dat do RPi s databází a html stránkou.
http://95.85.214.80, viewtopic.php?t=4809
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Nedalo mi to, došel jsem si do džbánku a hned se dostavily úspěchy, nyní sháním obdobu pro arduino, co bylo pro PHP $promenna = “rok” . “mesic” . “den”;

úspěšně jsem lokalizoval proměnné rok, mesic, den ---- jak je v arduinu spojit do jedné proměnné ? //předpokládám vysledek 150519

Díky... // taky su musím naučit používat ty ksiftíky :)
Uživatelský avatar
ixo
Příspěvky: 489
Registrován: stř říj 10, 2012 6:11 pm
Reputace: 22
Bydliště: Bratislava

Re: Začátky s Arduinem

Příspěvek od ixo »

Najrýchlejšie je spýtať sa Googlu: https://www.google.sk/webhp?sourceid=ch ... %20strings
1900 Wp, LiFePo 8x200Ah + 123\SmartBMS, Tristar MPPT 60A, Meanwell 1 kW, PowerJack 5kW, Bratislava
Monitoring systému: https://panel.homeinfo.sk/?id_objekt=15 ... elektraren
(Ne)návratnosť systému: https://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: https://tinyurl.com/mx6gvsj
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

problém je, že mi to proměnné sečte a vyhazuje to "39"
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: Začátky s Arduinem

Příspěvek od rottenkiwi »

Ak to chceme mat v jednej premennej, musi byt schopna to cislo uchovat, bez
nejakej hlasky: "bla bla overflow"
Ak je to taka premena a je kompatibilna s premennymi: rok, mesiac, den,
tak potom do premennej:
cely_Datum = rok * 10000 + mesiac * 100 + den;

a dame je vypisat bud na serial.print ( cely_Datum )
alebo dataFile.print ( cely_Datum)

alebo ked mame funkciu, ktora to zabrazi na LCD, tak napr.
vypis_na_LCD ( cely_Datum );

Ak by to neslo, tak este treba robit typecasting, nieco ako (long) premenna alebo (float) premenna.
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.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Díky, s tím násobením je to dobrý nápad a funguje, v závislosti na čase mohu spouštět naplánované úkoly. jeden_den = hodina * 3600 + minuta * 60 + sekunda;
Atp.
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
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: Začátky s Arduinem

Příspěvek od kodl69 »

přetypování se to jmenuje, stálo mě to 6 hodin života při jiné příležitosti.
Pořád mi vycházelo 512*122= -3072 a ne 62464 . Pokud máme long a, int b,c, tak výsledek c=a*b přeteče, protože to bude int.... dokonce hodnota z analogovýho vstupu přepíše proměnou na int, ať je definováno cokoliv.
s přetypováním to vypadá takhle: c=(long)a * b - stačí přetypovat jednu proměnnou a je to správně. Jak je to při sčítání sem nezkoumal, ale není problém to přetypovat taky, a taky třeba na float, pokud se třeba dělí...
rottenkiwi to myslel původně jinak, že by vzniklo číslo,něco jako yymmddhhmmss což by do unsigned long vlezlo jistě, a dá se s tím pracovat, ale třeba počet sekund třeba od roku 1.1. 2010 je taky řešení - líp se plánují pravidelné operace.
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.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am
Reputace: 2

Re: Začátky s Arduinem

Příspěvek od 250w_gridfree »

Jednoduchý čítač s využitím eeprom, zbývá integrovat do solárního regulátoru... Zatím se to při odpojení vynuluje.

#include <EEPROM.h> //knihovna eeprom
int stovky = EEPROM.read(9); //načteme hodnotu stovek
int desitky = EEPROM.read(10); // načteme hodnotu desítek
float suma;
float prirustek;
int ulozeno;



void setup()
{
Serial.begin(9600);
//EEPROM.write(9,000); //nulujeme eeprom
//EEPROM.write(10,000); //nulujeme eeprom
}


void loop(){
Serial.print("Hodnota stovky : "); //vypisujeme hodnoty
Serial.print(stovky);
Serial.print(" ");
Serial.print("Hodnota desitky : ");
Serial.print(desitky);
Serial.print(" ");
if (desitky >= 100) { //když jsou desítky větší nebo rovno 100, zvětšíme stovky o +1, stačilo by ale ==100 v zápisu
stovky += 1;
EEPROM.write(9,stovky); //zápis do eeprom
desitky = 0; // desitky pocitame od zacatku
}


if (prirustek >= 10) { // ta sama operace jako vyse, zvetsujeme desitky o +10 prirustkem
desitky += 10;
EEPROM.write(10,desitky);
prirustek = 0;
}



prirustek += 0.5; //zvetšeni prirustku - simulujeme vykon
Serial.print("Hodnota prirustek : ");
Serial.print(prirustek);
suma = stovky*100 + desitky + prirustek; //pocitame celkovy vykon
ulozeno = stovky*100 + desitky;
Serial.print(" A mame vysledek : ");
Serial.print(suma);
Serial.print(" Ale v pameti ulozeno : ");
Serial.println(ulozeno); // zachytny bod po deseti ulozen v eeprom
delay(500); // cekame 0.5 s a jdeme na zacatek loop


}


Ještě přidám funkci denního výkonu, tzn. přidat proměnnou vykon_den a tuto např o půlnoci vynulovat

Je to ale dřina... díky všem za podporu

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