Arduino Duemilanove & Ethernet shield -ongelma

Minulla on eräässä dataa keräävässä demossa tuo Arduino Duemilanove ja siinä päällä ethernet kortti.
Jännite syötetään erillisestä virtalähteestä Power Pins (+5V) liittimeen. Syöttöjännite on vähän yli tuon viiden voltin, n. 6.2V.
Kun lataan ohjelman Arduinoon niin laite lähtee toimimaan ihan OK.
Otan ohjelmointi johdon irti ja laite toimii edelleen, mutta ajan X kuluttua, joskus 5 päivän joskus 12 tunnin jälkeen systeemi “nukahtaa” eli ethernet kortti ei vastaa pingiin eikä myöskään sitä myöden tallenna laitteen keräämiä tietoja.
Vaikuttaisi kuitenkin että itse Arduino olisi hengissä koska demossa olevat merkkiledit vilkkuvat järjestelmän toiminnan mukaan.
Systeemi “herää” henkiin kun käy painamassa ethernet kortissa olevaa “reset”-nappia.
Totesin myös että jos otan irti tuon virtalähdettä syöttävän liitiimen eli pätkäisen sähköt poikki ja kun laitan liittimen uudelleen kiinni niin silloinkaan laite ei ala kommunikoida verkkoon päin vaan pitää vielä uudelleen kuitata tuon resetin kautta jotta laite herää henkiin.

Olisko ehdotusta mitä/mistä alkaisin vikaa hakemaan?

Onhan tuo kuitenkin oikea/sallittu tyyli syöttää jännitettä kortille suoraan tuohon Power Pins +5 liittimeen vai pitäisikö jännitesyöttö tehdä tuon liittimen kautta?

Arduinon foorumissa ehdoteltiin tällaista:
arduino.cc/cgi-bin/yabb2/YaB … 1282325583
mutta en ole ihan vielä varma olisiko tuossa vastaus ongelmaani.

En tiedä mitä tuo arduinon oma regu tykkää, kun sen outputtiin laitetaan yli 5V. Eli suosittelen että käytät oikeata inputtia tuossa, jos ei ole tasan 5V.

Kumpi versio noista ethernet sieldeistä sulla on. Onko se jossa on pelkkä kytkin reset linjassa vai jännitevahilla oleva.

Tuota, tuota mistäkö tuon saisin selville?
Olen ostanut tuon shieldin noin vuosi sitten robomaalta.

Jos siinä resetti kytkimen vieressä on 4 nastanen sot-23 kokoinen lutikka, niin tämä on jännitevahti melkovarmasti.

Arduinon sivuilta yritin katella tuota uuden schemaa, niin en hoksannu tuon tyyppiä, mutta oletin sen olevan jännitevahti / reset piiri.

Empiiristen tutkimusten tuloksen väittäisin että ei ole tuota mainitsemaasi “lutikkaa”.

Mitä ajat takaa tällä resettinapin ympäristön kalustuksella ?
( “kalustuksella” >> olen vahvasähkäri koulutukseltani :slight_smile:)

Muuten näyttääkö se kortti yhtään kuvassa olevan tapaiselta. Tuossa on kyseinen piiri paikalla.
arduino.cc/en/Main/ArduinoEthernetShield

Jos sitä piiriä ei ole siinä, niin jännite notkahdukset voi sekoittaa tuon ethernet piirin.

Juu, ei ole tuollaista natiaista siinä kortissa ole.
Siispä Jari tilaa tuollaisen natiaisella varustetun kortin ja testaa poistuisiko tuo ei-toivottu toiminta sillä.
Ja tietty täytynee koittaa rukata sitä syöttöjännitettä vähän alaspäin.

mäpäs kattelen sopivan piirin, mitä voi tuossa käyttää, niin säästää muutaman kympin.
Jos kolvi pysyy kädessä :slight_smile:

Edit:
Kun tuo komponentti maksaa alle 2e kappaleelta

Esim:
Microchip TO-92 koteloinen Open-Drain lähdöllä oleva
elfaelektroniikka.fi/elfa3~ … &toc=19904

Kiitos, mutta mulla stydää händyt niin pirusti että juotosjälki ei ole “lapsille sopivaa katsottavaa” eli en pysty suorittamaan tuota pintaliitoskomponentin istutusta, mutta kiitos tarjouksesta.

Tilasin sen uudemman “koekappaleen” robomaalta, joten virkakoneisto on jo täydessä vauhdissa.

jep kattelin tollasta jalallista, joka olis ollu helppo modailla tolle kortille
tai tökätä vain sopiviin reikiin siinä liittimellä :slight_smile:

Ja sitten kun otta pään pois p***stä ja lukee sen laittamasi linkin tekstin (ajatuksellla) niin siellähän juurikin sanotaan:

Mutta kun perisuomalaisena tuo luetun ymmärtäminen on minulle nii-in kovin vaikeaa.

Mutta toi ei vielä selitä sitä miksi se kaatuu käytön aikana. Tuo vaikuttaa tohon boottaamiseen.

Ekana koittasin oikealla ja vakaalla 5V powerilla tai 9V poweri liitäntää, josta ite arduino reguloi itelle 5V.

Mikäs arduino sulla tolla oli?

Mikäli käsitin oikein, niin ajelet koko järjestelmää 6,2 voltilla, vaikka Arduinosta löytyvän mikrokontrollerin (Atmel ATmega328P) maksimikäyttöjännite on 5,5 volttia. Tuon johdosta myös ethernet-shieldi pyörii liian kovalla jännitteellä → epävakautta.

Ethernet shield kyllä reguloi itellesä 3.3V

Ok. Ehkä ongelma ei ole sitten jännitteessä, mikäli ohjelman suoritus ei pysähdy. Kannattaa kuitenkin laittaa se kohdilleen joka tapauksessa mahdollisimman pikaisesti.

[size=85]Edit: Muokkasin viestiketjun otsikkoa hieman paremmaksi.[/size]

Joo, kyllä mielestäni ohjelma pyörii Arduinossa edelleen vaikka ethernet-kortti ei enään vastaakaan pingiin, koska laitteen tilaa diagnosoivat ledit toimivat ja näiden ledien ohjaus on otettu Arduinon I/O:sta.

Kyllä tuossa jänniteessä varmaan on oma syynsä laitteen epämääräiseen toimintaan, kuten sekin että laite tai tarkemmin ethernet ei ala toimimaan kun kytken jännitesyötön kiinni laitteeseen vaan vaatii manuaalisen resetoinnin ethernet-kortin resetti napilla.

Mutta kyllä tuollainen kortti ihan hyvin on toteutettu kun sitä voi “rääkätä” tuollaisella suhteellisen rajullakin ylijännitteellä pitkän aikaa, yli kuukauden tällä hetkellä ja ainakin vielä perjantaina laite tallenteli tietoja kantaan kun lähdin töistä :slight_smile:

Muuten miten toi arduinon ledien ohjaus on tehty.

onko sulla tietyssä kohtaa koodia pätkä koodia, joka ilmoittaa koodin tilan?
Ite joskus käyttäny esim 4 lediä, niin saa 16 eri vaihetta näkyviin, jos johonkin jää jumiin

Edit:
toinen mikä tuli mieleen on toi jännitejaolla tiputettu SPI sille ethenet piirille, eli tuon takia, myös ehkä voi tykätä kyttyrää ja jumittua.

Tsydeemissä on Arduinon I/O pinnistä ohjaus pariin ulkoiseen lediin joita sitten ohjataan koodin mukaan tyyliin:

while(digitalRead(2) == HIGH){ /* kun luukku auki */
digitalWrite(6,HIGH); /* sytytetään vihreä led luennan merkiksi */
while(digitalRead(8) == HIGH){ /* pulssi jolla tiedetään rivin olevan kohdalla */
  for(i; i<6; i++){ /* käydään läpi kaikki 6 anturia */
    mitta = (2914 / (analogRead(i) + 5)) - 1;

  if(mitta > 2.8 && mitta < 6.5) /* jos havaitaan elementti paletissa */
     { kpl += kpl; }           /* lisätään se summaan */
      } 
   }
}
.... etc ...
digitalWrite(6,LOW); /* sammutetaan vihrea led */
.... etc ...

eli ulkopuolisilla ohjauksilla (releiden kärjillä joille tulee jännite Arduinosta, releiden kelat ohjataan logiikasta) ohjataan noita digit. 2 ja 8 tuloja ja luetaan analogia tuloja 0-5 niiden ohjauksen mukaan.

Näppäsin kuvan siitä shieldistä ja laitoin tuonne : http://www.nbl.fi/~nbl2294/
Tarkemmin kun katselin niin ei minun taidoilla tuohon edes löytyisi paikkaa sille ehdottamallesi “natiaiselle”.

No onhan tuossa liitin rimassa näkyy kaikki tarpeellinen Reset, 5V ja GND.

Tuo kyllä viittaisi, että softa kyllä osittain pyörii.
Mites tuon Ethernet piirille kommonikoiti on tehty. valmis kirjasto? Tuli mieleen ettei siellä jotkut tilakoneet yms mene pois kohtiilta, jos esim. piiri resetoituu, mutta softa ei osaa käsitellä sitä ja menee epäsynkkaan.

No niinpä tietty kun taas miettisi asiaa rauhassa hetken aikaa. Se vaan on jotenkin iskostunut tuonne takaraivoon että: “et ymmärrä piiritekniikasta mitään …” niin näin siinä sitten useasti käy.

Ethernet-kortti on otettu käyttöön Arduinon IDE:n mukana tulevilla kirjastoilla tyyliin:

#include <Client.h>
#include <Ethernet.h>
#include <SPI.h>
/* sitten nämä normaalit osoitejutut */
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 180 };
byte server[] = { 192, 168, 1, 2 };
/* ja alustuksessa */
void setup(){
Ethernet.begin(mac, ip);  
... etc ...
}

Tuota mac-osoitetta olen joskus miettinyt että onko tuo joku “de facto” tällaisille sovelluksille? Siis tarkoitan tuota DEAD BEEF FEED :slight_smile:

Tulipa nyt mieleeni siitä sovelluksesta/laitteesta että sen sähkönsyöttö (230V) on otettu (lähimmästä) virtakiskosta ja perhana vieköön ettei vain olisi valaistuksen kanssa samassa ohjauksessa oleva kisko.
Silloinhan se selvittäisi tuon epämääräisen toiminta ajan, joskus päivä toisinaan 5 päivää (koska valojen sammutus on vähän kiinni työvuoroista ja ihmismuistista).
Tuo asia täytyy tarkistaa kunhan pääsen pelipaikalle.