www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino Uno in RTC DS1302
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Pet Feb 01, 2019 4:29 pm    Naslov sporočila:  Arduino Uno in RTC DS1302 Odgovori s citatom

Pozdravljeni.

Sem začetnik na Arduinu. Z njim bi želel izdelati čebelarsko tehtnico. V bistvu mi sama tehtnica že deluje. Težave so nastopile, ko želim tehtnico povezati z zunanjim svetom.
Na internetu je ohromno primerov a mi noben od njih ne deluje. Napak pa ne najdem.

Za tehtnico uporabljam Arduino Uno (kitajska), tehtalni modul 200kg z HX711 (A/D 64bit), LCD 16x2, ter senzor temperature, tlaka in vlage BME280. Ta kombinacija komponent mi deluje dobro.

Dodati želim še RTC DS1302 in GSM800L. Iz interneta sem preizkusil veliko primerov za RTC DS1302, vendar mi nobeden ne deluje. Napake ne najdem. Podobno je pri GSM modulu.

DS1302 imam povezan na porte 5, 6 in 7. Ostale porte imam že zasedene ali rezervirane za druge komponente.

Prosim vas, če mi lahko kdo pomaga s kakšnim delujočim primerom.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
polkic
Član
Član



Pridružen-a: Pon 04 Dec 2017 20:27
Prispevkov: 68
Aktiv.: 0.88

PrispevekObjavljeno: Pet Feb 01, 2019 5:34 pm    Naslov sporočila:   Odgovori s citatom

Pozdravljen,
objavi trenutno kodo programa in mogoče kakšno shemo vezave, da ti bomo lahko lažje svetovali.

Lp.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Pet Feb 01, 2019 9:32 pm    Naslov sporočila:   Odgovori s citatom

polkic je napisal/a:
Pozdravljen,
objavi trenutno kodo programa in mogoče kakšno shemo vezave, da ti bomo lahko lažje svetovali.

Lp.


Pozdravljeni. prilagam kodo programa za branje in prikaz ure na LCD in napake, ki so sem jih dobil pri prevajanju programa. Originalni primer sem popravil v smislu popravka pinov. Upam, da tu nisem naredil kake napake.

Program izgleda tako:
_________________________________________________________________
Koda:
// DS1302_LCD (C)2010 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// Adopted for DS1302RTC library by Timur Maksimov 2014
//
// A quick demo of how to use my DS1302-library to make a quick
// clock using a DS1302 and a 16x2 LCD.
//
// I assume you know how to connect the DS1302 and LCD.
// DS1302:  CE pin    -> Arduino Digital 5
//          I/O pin   -> Arduino Digital 6
//          SCLK pin  -> Arduino Digital 7
//          VCC pin   -> Arduino Digital 33
//          GND pin   -> Arduino Digital 35
// LCD:     DB7       -> Arduino Digital 13
//          DB6       -> Arduino Digital 12
//          DB5       -> Arduino Digital 11
//          DB4       -> Arduino Digital 10
//          E         -> Arduino Digital 9
//          RS        -> Arduino Digital 8

#include <Wire.h>          // Need for NewLiquidCrystal library
#include <LiquidCrystal.h>
#include <DS1302RTC.h>
#include <Time.h>

// Init the DS1302
// Set pins:  CE, IO,CLK
DS1302RTC RTC(7, 6, 5);

// Optional connection for RTC module
//#define DS1302_GND_PIN 33 - not for UNO
//#define DS1302_VCC_PIN 35 - not for UNO

// Init the LCD
//   initialize the library with the numbers of the interface pins
//            lcd(RS,  E, d4, d5, d6, d7, [slovenščina je zame španska vas], polarity)
LiquidCrystal lcd(8,   9, 10, 11, 12, 13);


void setup()
{
  // Setup LCD to 16x2 characters
  lcd.begin(16, 2);
 
// Activate RTC module
//  digitalWrite(DS1302_GND_PIN, LOW); - not for UNO
//  pinMode(DS1302_GND_PIN, OUTPUT); - not for UNO

 // digitalWrite(DS1302_VCC_PIN, HIGH); - not for UNO
//  pinMode(DS1302_VCC_PIN, OUTPUT); - not for UNO

  lcd.print("RTC activated");

  delay(500);
 
  lcd.clear();
   //setSyncProvider(RTC.get);          // the function to get the time from the RTC
  if (RTC.haltRTC())
    lcd.print("Clock stopped!");
  else
    lcd.print("Clock working.");

  lcd.setCursor(0,1);
  if (RTC.writeEN())
    lcd.print("Write allowed.");
  else
    lcd.print("Write protected.");

  delay ( 2000 );
 
  // Setup time library 
  lcd.clear();
  lcd.print("RTC Sync");
  setSyncProvider(RTC.get);          // the function to get the time from the RTC
  if(timeStatus() == timeSet)
    lcd.print(" Ok!");
  else
    lcd.print(" FAIL!");
 
  delay ( 2000 );
 
  lcd.clear();
}

void loop()
{
  static int sday = 0; // Saved day number for change check

  // Display time centered on the upper line
  lcd.setCursor(3, 0);
  print2digits(hour());
  lcd.print("  ");
  print2digits(minute());
  lcd.print("  ");
  print2digits(second());
 
  // Update in 00:00:00 hour only
  if(sday != day()) {
    // Display abbreviated Day-of-Week in the lower left corner
    lcd.setCursor(0, 1);
    lcd.print(dayShortStr(weekday()));

    // Display date in the lower right corner
    lcd.setCursor(5, 1);
    lcd.print(" ");
    print2digits(day());
    lcd.print("/");
    print2digits(month());
    lcd.print("/");
    lcd.print(year());
  }
  // Warning!
  if(timeStatus() != timeSet) {
    lcd.setCursor(0, 1);
    lcd.print(F("RTC ERROR: SYNC!"));
  }

  // Save day number
  sday = day();

  // Wait small time before repeating :)
  delay (100);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    lcd.write('_');
  }
  lcd.print(number);
}



DC1302_LCD.png
 Opis:
 Velikost datoteke:  152.67 KB
 Pogledana:  5 krat

DC1302_LCD.png



DS1302_LCD_napake.txt
 Opis:
Napake, ki so se pojavile pri kompajliranju.

Download
 Ime datoteke:  DS1302_LCD_napake.txt
 Velikost datoteke:  2.88 KB
 Downloadano:  11 krat



Nazadnje urejal/a poldim Pet Feb 01, 2019 10:45 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
solomojster
Član
Član



Pridružen-a: Tor 18 Maj 2010 12:26
Prispevkov: 845
Aktiv.: 5.01
Kraj: NOVA GORICA

PrispevekObjavljeno: Pet Feb 01, 2019 10:43 pm    Naslov sporočila:   Odgovori s citatom

Ta priložen program je verjetno za mego.
Poglej priklope na Uno plošči.
https://goo.gl/images/Pgxdgd

Če poskusiš s temle;
https://www.google.com/amp/s/surtrtech.com/2018/01/27/how-to-simply-use-ds1302-rtc-module-with-arduino-board-and-lcd-screen/amp/

Druga knjižnica...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Sob Feb 02, 2019 1:33 am    Naslov sporočila:   Odgovori s citatom

Knjižnica mora vsebovati dve datoteki z enakim imenom, a različnima končnicama: .c (ali .cpp) in .h . Tudi mapa mapa imeti enako ime kot obe datoteki.

Kup napak v zvezi z nedefiniranimi spremenljivkami je verjetno povezan z manjkajočo .h datoteko.
Hkrati pa sta najdeni 2 knjižnici s podobnim imenom.

Ali si kaj brisal v zvezi z DS1302? Poišči vse datoteke s 1302 v imenu in preveri, kaj paše skupaj.

Najbolje je dodati .c in .h datoteki od vseh uporabljanih knjižnic kar v mapo s skico.ino .

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Sob Feb 02, 2019 9:41 am    Naslov sporočila:   Odgovori s citatom

Hvala za predloga, danes popoldne preizkusim.

Obstaja možnost, da sem pri nalaganju različnih primerov kako knjižnico podvojil ali prepisal. Bom preveril knjižnice.

Sporočim kakšno je stanje.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Krampus
Član
Član



Pridružen-a: Pon 08 Sep 2008 13:07
Prispevkov: 1826
Aktiv.: 9.64

PrispevekObjavljeno: Ned Feb 03, 2019 6:08 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

Imaš tudi drugo varianto, če te slučajno piči Very Happy

Nekaj, kar C verniki ne smejo videti

_________________
Nisem ravno najbolj pameten na svetu, tu in tam pa imam kakšno idejo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Pon Feb 04, 2019 1:46 am    Naslov sporočila:   Odgovori s citatom

Krampus je napisal/a:
Zdravo

Imaš tudi drugo varianto, če te slučajno piči Very Happy

Nekaj, kar C verniki ne smejo videti


Zdravo,

kaj si to novega odkril, rabim nekaj podnapisov.

Jaz sem na forumu malo zaspal, pa sem izgleda določene zadeve spregledal.

Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Pon Feb 04, 2019 2:03 am    Naslov sporočila:   Odgovori s citatom

solomojster je napisal/a:
Ta priložen program je verjetno za mego.
Poglej priklope na Uno plošči.
https://goo.gl/images/Pgxdgd

Če poskusiš s temle;
https://www.google.com/amp/s/surtrtech.com/2018/01/27/how-to-simply-use-ds1302-rtc-module-with-arduino-board-and-lcd-screen/amp/

Druga knjižnica...


Hvala za dober primer. To je najenostavnejši primer, kar sem jih preizkusil. Deloval je iz prve. Moral sem ga vkomponirati v svoj program, in sedaj je rezultat pozitiven. Ostaja mi samo še to, da usposobim GSM 800L.

Ima kdo kakšen predlog za najenostavnejšo povezavo GSM modula (SIM800L)?

Pini na GSM modulu so: TxD, RxD, (RST ne vem če ga potrebujem?).

Na Arduino Uno imam na razpolago naslednje pine:

0-(RX), 1-(TX), A2, SCL, SDA in AREF.

Za dosedanjo pomoč se iskreno zahvaljujem, če pa je še kdo pripravljen z mano deliti kakšen nasvet, pa se priporočam.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gustinmi
Član
Član



Pridružen-a: Tor 26 Feb 2019 13:41
Prispevkov: 14
Aktiv.: 0.23

PrispevekObjavljeno: Tor Feb 26, 2019 2:00 pm    Naslov sporočila:   Odgovori s citatom

Tvoj GSM modul uporablja serijski UART (torej ne I2C ali SPI!!). Torej potrebuješ pine TX in RX. RST je zato, da modul zresetiraš, da se ponovne zažene. Z modulom komuniciraš preko AT komand; če jih ne poznaš ti svetujem, da modul priklučiš preko USB to TTL kabla na računalnik in uporabljaš kakšen terminal emulator, da se naučiš AT komand in najprej komuniciraš z modulom preko Windows-ov. Vsaj toliko, da znaš preveriti, če se poveže na ponudika mobilne telefonije, in če znaš poslati SMS.

Preveri npr. https://www.electroschematics.com/13548/introducingsim800l/

Morda bi ti bilo lažje, če bi za začetek podatke pošiljal preko WiFi konektorja npr. ESP8266.

Obedve zadevi nista ravno za začetnike, še najbolj je pomembno poznavanje C++
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gustinmi
Član
Član



Pridružen-a: Tor 26 Feb 2019 13:41
Prispevkov: 14
Aktiv.: 0.23

PrispevekObjavljeno: Tor Feb 26, 2019 2:14 pm    Naslov sporočila:   Odgovori s citatom

Pa še to: za realtime uro za začetek razvij svojo programsko. Imej timer prekinitev, ki se zgodi npr. vsak milisekundo in povečuje milisekunde, nato sekunde, nato minute in tako naprej. Izogibaj se ukaza DELAY, saj ustavi celotni program (torej vse čaka).

Zelo učinkovito boš lahko programiral na spodnji način (ti pa bo vzelo nekaj časa za naučiti se) : tukaj LED utripa glede na kristal, ki poganja procesor :

Koda:
#define ledPin 2

void setup()
{
  pinMode(ledPin, OUTPUT);

  // initialize timer1
  noInterrupts();           // disable all interrupts
 
  TCCR1A = 0;
  TCCR1B = 0;

  TCNT1 = 34286;            // preload timer 65536-16MHz/256/2Hz
 
  TCCR1B |= (1 << CS12);    // 256 prescaler
 
  TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
 
  interrupts();             // enable all interrupts
}

ISR(TIMER1_OVF_vect)        // interrupt service routine that wraps a user defined function supplied by attachInterrupt
{
  TCNT1 = 34286;            // preload timer
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}

void loop()
{
  // if you put "timer" routine here, with delay, it will not be precise, because the execution time for the code inside loop will always be added
}


https://www.robotshop.com/community/forum/t/arduino-101-timers-and-interrupts/13072
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Čet Feb 28, 2019 7:39 am    Naslov sporočila:   Odgovori s citatom

Hvala za predloga.

Vprašanje branja RTC DS1302 se uspel rešiti. sedaj imam pa še vedno odprto vprašanje GSM modula.

Ker sem za aplikacijo uporabil Arduino UNO, sem precej omejen z pomnilnikom. trenutno sem s tehtnico na 80% dinamičnega pomnilnika, kar pa je že zgornja meja za procesor.

Sedaj čakam na MEGA in takrat se lotim še GSM Modula.

GSM modil SIM 800 sem že testiral preko serijskega vmesnika in terminala in tudi z Arduino NANO. Branje in pisanje preko terminala mi ni problem, moral pa bom naštuditati še obdelavo SMS sporočil.

Še enkrat hvala za pomoč. Ko bom ponovno v Škripcih se oglasim.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Sob Mar 02, 2019 9:03 am    Naslov sporočila:   Odgovori s citatom

Naletel sem še na eno težavo. Ko Arduino UNO priključim na napajanje preko vtičnice za napajanje, se program v modulu noče zagnati. Pritisniti moram tipko za RESET in takrat se program zažene.

Če modul priključim preko USB vhoda z navadnim napajalnikom za telefon pa se normalno zažene.

Kje je tu razlika in kaj moram narediti, da se mi bo program zagnal tudi ob vklopu eksternega napajanja (vtičnice za napajanje)?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1364
Aktiv.: 7.37
Kraj: Lj.

PrispevekObjavljeno: Sob Mar 02, 2019 9:27 am    Naslov sporočila:   Odgovori s citatom

Pri meni ponavadi traja do 3-4s preden se zažene MCU, če ga napajam preko zunanjega napajalnika. Preko USBja se zažene veliko hitreje.
Razloga nisem raziskoval, mi pojav ni bil moteč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
poldim
Član
Član



Pridružen-a: Sre 02 Mar 2011 11:34
Prispevkov: 104
Aktiv.: 0.65
Kraj: Ormož

PrispevekObjavljeno: Sob Mar 02, 2019 9:37 am    Naslov sporočila:   Odgovori s citatom

Meni se sploh ne zažene, v tem je problem.

Na netu sem zasledil nekaj kot Power on kondenzator na vhodu za reset.



tOKqg.png
 Opis:
Power on kondenzator za RESET.

Download
 Ime datoteke:  tOKqg.png
 Velikost datoteke:  7.05 KB
 Downloadano:  6 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group