Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 gru 2024, o 14:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 19 gru 2013, o 09:05 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Próbuje sterować arduino poprzez ethernet. Wczytałem kod z przykładów zawartych w programie i zaczął wyświetlac wartości poprzez www(działa). Dodatkowo chciałe do projektu dodać obsługę RTC. Po dodaniu samych bibliotek od RTC i wire serwer www juz przestał działać. Czy te biblioteki lub moduły mogą razem współpracować? Czy bardziej prawdopodobny jest błąd ludzki czyli mój:).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2013, o 10:51 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Możliwe. Niekiedy biblioteki się gryzą. Ale nie powiem ci czy to jest akurat ten przypadek bo nie znam tych bibliotek. To już musisz sobie sprawdzić sam. A zachodzi to gdy dwie biblioteki próbują przejąć kontrolę nad tymi samymi zasobami sprzętowymi. Typowy przypadek: w Arduino są trzy timery (w podstawowym modelu - Arduino UNO), z których jeden jest wykorzystywany przez biblioteki systemowe, więc twórcy bibliotek z niego z reguły nie korzystają. Pozostają dwa: 16 bitowy i 8 bitowy. Twórcy obu użytych bibliotek mogą stwierdzić, że skorzystają akurat z tego samego timera i jest zonk. Można spróbować przerobić którąś bibliotekę przenosząc na drugi timer.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2013, o 11:11 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Oczywiście jako użytkownik arduino jestem żółtodziobem. Jak mogę sprawdzić gdzie leży problem? Może ktoś może podać sprawdzone biblioteki?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2013, o 11:34 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Trzeba w opisie albo w kodzie sobie zobaczyć z czego biblioteka korzysta. Daj linki do tych biblio to rzucę okiem.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2013, o 12:56 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Interesuje mnie webserwer oraz RTC jednocześnie. Z góry dziękuję.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2013, o 13:55 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Te biblioteki same z siebie się nie gryzą, ethernet używa SPI a rtclib I2C (przez biblio Wire) czyli całkiem inne moduły i całkiem inne piny. Ale jest jedno podejrzane miejsce, mianowicie w kodzie webserwera (domyślam się, że używasz przykładowego kodu) program odpytuje wszystkie wejścia analogowe. To jest ten fragment:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Magistrala I2C działa używa dwóch pinów wspódzielonych z pinami analogowymi (np. w Arduino UNO są to A4 i A5). Być może tu jest przyczyna.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 00:42 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Miałeś rację twoje rozwiązanie pomogło. Proszę jeszcze raz o spojrzenie na projekt bo efekt ten sam gdy dodaje rtc, znika serwer.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 03:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

To pomogło czy nie?

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 09:40 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Pomogło na poprzedni projekt ten w załączniku jest inny. Nowy projekt jest wzbogacony o bibliotekę do obsługi kart SD.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 15:26 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Czytam od wczoraj i dochodzę do wniosku że RTC i karta sd używają tego samego interfejsu? I2c oraz cc od karty sd to pin 4.
Kod:
  SD card test
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
   
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
        Pin 4 used here for consistency with other Arduino examples

Czy moje przypuszczenia są poprawne, jeżeli tak to jak z tym się uporać?

Znalazłem jeszcze informacje o podobnym problemie. Proszę o wyjaśnienie poniższego kodu:
Kod:
// disable RTC SPI
  pinMode(7,OUTPUT);
  digitalWrite(7,HIGH);

  // disable w5100 SPI
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);

  Serial.print(F("Starting SD.."));
  if(!SD.begin(4)) Serial.println(F("failed"));
  else Serial.println(F("ok"));

  Serial.print(F("Starting ethernet..."));
  if(!Ethernet.begin(mac)) Serial.println(F("dhcp failed"));
  else Serial.println(Ethernet.localIP());

  SPI.setDataMode(SPI_MODE3);
  if ( RTC.begin())
  { 
    RTC.adjust(DateTime(__DATE__, __TIME__));
    Serial.println("RTC Initialised.");
  }
  else
  {
    Serial.println("RTC failed to Initialise.");
  }
  SPI.setDataMode(SPI_MODE0);
}

void loop() {
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 15:28 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Przerobiłeś przynajmniej ten tutorial od początku czy od razu skoczyłeś do części 16 http://startingelectronics.com/tutorial ... -tutorial/ ? ;-)
Słuchaj, nikt ci nie będzie debugował kodu, to twoje własne zadanie. Wychodząc od oryginalnego kodu rób małe zmiany w interesujących cię miejscach i sprawdzaj czy działa. Jak wrzucasz wszytko na raz to debugować jest bardzo trudno bo nawet nie wiesz gdzie szukać błędu.
A co do tego co przyslałeś to wygląda że jest to ten sam bląd:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 15:44 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Dziękuję za odzew. O ile twoja poprzednią sugestię co do błędu zrozumiałem to ostatniej nie.
Kod:
for (count = 2; count <= 3; count++) { // A2 to A5 było for (count = 2; count <= 3; count++)
        analog_val = analogRead(count);

Ta cześć odpytuje wejścia A2 i A3 i nie powinna wpływać na A4 i A5 na której jest i2c?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 15:52 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

maglo18 napisał(a):
Czytam od wczoraj i dochodzę do wniosku że RTC i karta sd używają tego samego interfejsu? I2c oraz cc od karty sd to pin 4.
Kod:
  SD card test
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
   
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
        Pin 4 used here for consistency with other Arduino examples

Czy moje przypuszczenia są poprawne, jeżeli tak to jak z tym się uporać?



Nie są poprawne. Karta jest podłączona do magistrali SPI, co jest zresztą napisane: "SD card attached to SPI bus...". Na pinie 4 jest CS (Cable Select) czyli wybór aktywnego urządzenia. Chodzi tu o 4 pin CYFROWY. Magistrala I2C jest na 4 pinie ANALOGOWYM. Obejrzyj sobie swoje Arduino.

------------------------ [ Dodano po: 2 minutach ]

maglo18 napisał(a):
Dziękuję za odzew. O ile twoja poprzednią sugestię co do błędu zrozumiałem to ostatniej nie.
Kod:
for (count = 2; count <= 3; count++) { // A2 to A5 było for (count = 2; count <= 3; count++)
        analog_val = analogRead(count);

Ta cześć odpytuje wejścia A2 i A3 i nie powinna wpływać na A4 i A5 na której jest i2c?


No tak, rzeczywiście.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2013, o 16:41 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Czyli żadne z moich przypuszczeń.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2013, o 21:18 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Czytam, testuje i tak w kółko. Może ktoś podrzuci mi inny sposób na osiągniecie tego co potrzebuję.
1. Warunek sprawdzający stan pin 1 oraz godzinę pomiędzy 6-8 a 15 -22 (z tym sobie poradzę, daje radę z RTC)
2. Wyniki stanu wyjść wizualizowane na serwerze www.
3. Możliwość załączenia wybranego pinu z www.

Potrafię z tutoriali uruchomić serwer www oraz sterować pinem. Jak dodaję bibliotekę RTC pojawia się problem. Mianowicie po dodaniu czasu mam wrażenie że serwer www nie może odczytać pliku index.htm z kary sd. W domowej sieci mam jeszcze serwer www na apachu i może on mógłby komunikować się z z arduino ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 12:03 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

W tym programie co przysłałeś wcześniej, w funkcji setup() na wyjście serial są wyprowadzone komunikaty diagnostyczne. Pojawiają się przy starcie? Wszystko się inicjalizuje jak trzeba? Inicjalizację rtc.begin przenieś przed inicjalizację karty i zobacz co się wyświetli. Nie zaszkodzi też wstawić swoje printy w podejrzanych miejscach programu np. warunek w linii 135 zamienić na coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 13:43 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Poprawiony plik w załączniku. W serialu tylko:
Kod:
RTC is NOT running!
Initializing SD card...
SUCCESS - SD card initialized.


PS. Dziękuję za zainteresowanie.
Jak wklejać tak ładnie kolorowany kod?


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2013, o 11:51 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Czy moje problemy mogą być spowodowane tym że Arduino Uno R3 jest za słabe do tego projektu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2013, o 12:46 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

W kodzie jest trochę tych Serial.printlnów a tyś z łaski sypnął trzema. Klawiaturę oszczędzasz czy jak? Zapodaj co tam więcej jest. Zwłaszcza przy wołaniu serwera.
Z tego coś podał widać, że karta się inicjuje za to zegar nie działa. A nie działa boś nie zainicjował biblio Wire. Zapoznałeś się w ogóle z przykładami do biblio RTClib? A wiesz w ogóle jak podłącza się urządzenia przez magistralę I2C (pull-ups!)?
Myślę, że to nie Arduino jest za słabe tylko twoja wiedza.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2013, o 14:54 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Wkleiłem cały serial jaki wypluło w konsoli. Mam wrażenie że dalej wszytko zawisło. Wiem że wszystko jest ważne i nie wycinam sobie tego co mi się podoba.
Jak powinno wyglądać inicjowanie biblioteki bo mi wydało się że tak:
Kod:
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;


Czy potrafię podłączyć ocen sam ale ustawiłem czas na module RTC oraz napisałem prosty szkic który włącza i wyłącza diodę zależnie od sekund.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2013, o 15:57 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Ok, więc skoro wiesz tyle ile trzeba to skorzystaj z informacji które daje serial. Coś się sypie na odczycie z karty. Może trzeba sformatować kartę? Wstawić inną kartę? Wrzucić maly program, który będzie tylko czytał/zapisywał kartę, bez tego całego ethernetowego i zegarowego bagażu? Zainicjować pin CS jawnie? Spróbować z inną biblio? Próbowałeś tego wszystkiego?

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2013, o 16:07 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Na pewno nie wiem tyle ile bym chciałalem staram się najpierw czytać a potem pytać. Jestem w trakcie przerabiania nocami tych podpowiedzi tylko myślałem że robię błąd na jakiejś oczywistości. Dzięki za uwagi jak będę miał nowe spostrzeżenia to będę pytał.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2014, o 21:58 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Odpowiem sobie sam. Zdecydowałem na zakup wersji MEGA. Na zakupionym arduino kod bez przeróbek działa bez problemu. Wg mnie czegoś brakowało w UNO co jest w MEGA.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2014, o 22:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

RAM-u :) wiem jak chodzi ethernet na arduino czasami nie wyrabia :)

Popatrz tu nie trzeba shielda :)

http://www.blue17.elektroda.eu/mikrokontrolery-avr/1618

Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2014, o 21:29 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Skleciłem kod który działa na Arduino Mega oraz w5100 ethernet. Po dodaniu dodatkowego urządzenia pomiędzy je kod przestaje działać całkowicie. Kończy się w setup na obsłudze karty a właściwie brakiem jej wykrycia. Pomierzyłem wszystkie złącza są przejścia oraz brak zwarć. Rozszerzenie oprócz wlutowanych kabli nic więcej nie ma. Jedyne co mnie dziwi to brak złącza ICSP. Czy to może być przyczyna? W kilku miejscach doczytałem że to złącze nie jest potrzebne do działania w5100 ale czy to przypadkiem nie w tym tkwi problem?

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO