30.8.12

i2c boduje

Ako som pisal v minulom clanku, postavil som i2c usb adapter. Dalsia meta bola pripojit k nemu relatka. Rozhodol som sa, ze z dovodu co najvyssej spolahlivosti postavim i2c usb adapter a aj relatka na jednu dosku.
Nepouzil som 23008 (8 bitov I/O), rozhodol som sa pre cip 23016 - za tip nan vdacim clankom o Raspberry Pi - ma 16 I/O vystupov.
8 pouzijem na relatka a 8 necham vyhradenych na dalsie vstupy alebo vystupy - potencionalne cidlo vlhkosti pody, vysky hladiny vody, zistovanie, ci prsi a podobne. Uvidime...
Zistil som, ze existuje zaujimavy program - eagleCAD. Je free s nejakymi obmedzeniami - velkost dosky, pocet vrstiev PCB a podobne. Mne ale tie obmedzenia nejako neprekazali, dokazal som sa s nimi popasovat. Je jedna vec navrhnut dosku a uplne ina ju vyrobit. A to je celkom problem. Nasiel som zaujimavy navod na youtube. Postup je to sice skvely, ale moc sa mi nedaril - 3x som nazehlil tu dosku a 3x som ju musel zmazat. Nikdy sa mi nepodarilo nazehlit okraje. Stred bol viac-menej OK, ale to je k nicomu. Nakoniec som to skusil po stvrty krat a vyleptal - nebol to dobry napad. Polovica dosky sa zle vyleptala a preleptala aj spoje tam, kde mali byt. A co je horsie, vsetky okrajove linky sa proste nevyleptali - cokolvek malo ist niekde pri kraji zmizlo. Musel som ist do GME kupit novy plosak. A tento krat som si dal zalezat - od Moki som si ukradol laserovu tlaciaren domov, v ovladaci som nastavil kvalitu tlace na Dark (co najviac toneru). Prekreslil som aj plosak tak, aby v nom boli hrubsie linky - nech je vacsia sanca, ze aj ked sa nepodaria, tak budu dostatocne dobre na fungovanie. Opat boli 2 pokusy o nazehlenie, ale tento krat som uz ten 2. pokus povazoval za dost dobry. Skoda, ze som nemal nejaku olejovu fixku na opravenie tych okrajovych liniek - musim si kupit. Vyleptal som to, nevyzeralo to tak zle, ako som si myslel. Nakoniec sa nepodarili asi 4 linky + dalsie asi 4 boli nevyrazne. Tie nevyrazne som prebehol cinom (pre istotu) a tie poskodene som proste nahradil kuskami odstrihnutych noziciek z rezistorov. Vrtanie 0.6mm vrtakom je blbost - ani samotne rezistory mi do tych dierok nesli vocpat. Takze som to nakoniec prevrtal este raz 0.8mm vrtakom, niektore diery (na konektory pre silove kable) som musel riadne zvacsit a rozvrtat. Podarilo sa - az na maly detail. Znicil som jeden z konektorov. Nevadi - kedze momentalne mam len 4 realne vystupy z cerpadla, zapojim len tie a na to mam konektorov dost.
Kazdopadne, tu je doska. Musim uznat, ze ta schema je prasacka, ale vznikla spojenim existujucej schemy pre i2c-tiny-usb a mojho navrhu. Nepodarilo sa mi prepojit korektne zem a 5V napajania, takze som to musel polinkovat dratmi. Musim sa s tym naucit poriadne robit. Nasiel som vynikajuci navod na pouzitie EagleCADu na youtube.
Sice je to dlhe (vela casti) a obcas zdlhavo vysvetlovane, ale nakoniec to bolo presne to, co som potreboval - naucil som sa otacat tie suciastky, vyrabat spoje, optimalizovat prepojenia, menit sirku ciary a podobne. Podarilo sa mi s vynimkou jedineho spoja vyrobit dosku na jednej vrstve. Drobny problem toho navrhu bol, ze som mal v povodnej scheme chybu - prehodil som data a hodiny z i2c do 23016 - cim sa zapojenie, samozrejme, stalo nefunkcnym. V navrhu tu uz je to opravene, ale len za cenu, ze su tam 2 spoje (nevedel som preskocit datovu linku). Ale to nie je az taka tragedia.
No v konecnom dosledku som uz mal vyrobenu dosku podla povodneho navrhu, to znamenalo, ze som musel trosicku vrtat, rozskriabat datove a hodinove spoje a zletovat to rucne. Problem vyrieseny ;) Kedze spoje sa musia nazehlovat opacne, tak som sem prihodil aj obraz dosky v pozitive, pripraveny na nazehlovanie. Dosku som po vyvrtani este natrel vrstvou kolofonie, rozdrvenej v alpe - je to finta od profesora, co nas na zakladke ucil letovat. Finta je to skvela - je to zaroven vrstva proti oxidacii a este k tomu to zjednodusuje letovanie. Jedina nevyhoda je, ze to lepi pri vrtani, ale to sa da prezit. Pretrel som to par krat, aby som si bol isty, ze to je kvalitne (a hlavne preto, ze som toho roztoku spravil prilis vela).
Dosku som s vynimkou spomenuteho konektora naletoval, ozivil, opravil tie spoje a hotovo - relatka cvakaju tak, ako maju. Uznavam, ze do presneho vrtania alebo rovneho letovania mam co dohanat, ale ucel to splnilo - doska funguje na 100%, dokonca som odskusal aj ten RJ11 vystup, ktory som si tam dal - na pripadne rozsirenie o dalsie dosky s i2c zbernicou - toto je len tak na pobavenie, kedze este stale mam na tej doske 8 I/O portov.
Trosku ma potrapili tie WAGO svorky - naletovane boli OK, ale nevedel som, ako do nich vlastne vtrepat kable. Ukazalo sa, ze vlastne velmi jednoducho - do jednej dierky clovek silno zatlaci srobovakom, tym sa v druhom otvore spravi dierka medzi pritlacnymi plechmi a da sa tam efektne vlozit drotik. Akonahle som vybral srobovak, zubky sa zavreli a extremne pevne uzavreli drotik - parada.
Otestovane, pracujuce zariadenie som zobral na zahradu - pripojil som 12V adapter, ventily a zacal sa hrat - cvakal som cidlami tak rychlo, ze to doslova stihlo vystreknut 3 kvapky - extremne super.
Pripojil som aj 220V vstupu a aj vystup pre cerpadlo, odskusal som aj to a bolo - vsetko fungovalo, ako ma.
Zostal posledny problem - samotnemu zariadeniu moc nevonia voda. Takze som zobral krabicu na potraviny, spravil som dozadu dierku na srob, ktorym som to vonku prichytil o konstrukciu, v ktorej je aj cerpadlo. Pripojil som USB, vsetky kable som pospajal rychlosvorkami a pozatvaral - hotovo.
Pripojil som Alix. Zmenil som v podstate len par riadkov v polievacom programe - namiesto vystupu na USB-bit-whacker som posielal vystup na i2c.
Rozdiel voci 23008, o ktorej som pisal minule, bol v tom, ze bolo treba nastavit 2 registre (0x00 a 0x01 - jeden ovlada prvych 8 bitov a druhy ostatnych 8, vsetko na vystup) a hodnoty sa posielaju na ine porty (0x12 a 0x13, opat rozdelene po 8 bitov na vystup).
V Alix-e som prehodil system. Z Voyage som presiel radsej na OpenWRT - mam ho radsej a hlavne malo uz skompilovany modul pre i2c-tiny-usb :)
Webserver zostal na lighttpd tak, ako bol na Voyage predtym.
Akurat som prehodil par riadkov - pridal som ficuru, ktora zabezpeci, ze ked sa vypina vystup, tak sa najskor vypne cerpadlo a az 2 sekundy na to sa vypne samotny okruh - aby tam zbytocne nezostala natlakovana voda.
No a pridal som na poziadavku uzivatelov (Lusimta) moznost napisat si vlastny program polievania - takze ked clovek zada povedzme 30 5 7 30 10 5 5 10, tak sa bude polievat v tomto poradi:

  • 30 minut platan
  • 5 minut visna
  • 7 minut ceresna
  • 30 minut jablon
  • 10 minut opat platan
  • 5 minut visna
  • 5 minut ceresna
  • a nakoniec 10 minut jablon
Samozrejme sa da ktorekolvek polievatko preskocit - ak chcem napriklad len 10 minut polievat ceresnu, staci napisat do programu 0 0 10 - prve 2 sa preskocia a 10 minut sa bude polievat ceresna.
Myslim, ze v tomto momente som s polievatkom skoncil - funguje uz 3 tyzdne absolutne spolahlivo, takze som spokojny - zadanie sa podarilo.
Snad tento navod pomoze aj niekomu inemu - podobne slahnutemu, ako ja :)