Cand Atmelurile au aparut, erau super faine fata de PIC-uri: programatorul de PIC-uri era complicat iar compilatorul de C era pe bani, insa Atmel era foarte usor de programat, foarte ieftin, iar compilatorul C era gratis.
A aparut Adruino, la fel de ieftin, mult mai usor de programat, dar am sentimentul ca oamenii (putinii producatori de shield-uri) ridica pretul nejustificat pentru cateva plastice cu cateva grame de cupru.
Asa ca avand nevoie sa-mi construiesc un controller pentru acvarii, cel putin un monitor de temperatura pentru inceput, am hotarat sa merg catre o platforma open source - compatibila Arduino totusi (caci exista mult cod scris pentru Arduino + biblioteci pentru ecrane, etc).
Am comandat un pcDuino3 si aveam deja ecranul TFT de la Arduino (cel de 1.8 inch), asa ca efortul cel mai mare a fost sa fac sa mearga biblioteca din C-ul pentru Arduino, in C-ul pentru pcDuino. Macro-urile de port mask, ports nu mai exista. O sa scriu un articol si sa pun codul pe github dar sa-l mai polisez un pic ...
Exista o biblioteca facuta de chinezul care produce pcDuino - dar pentru ecranul de 2.8 inch cu touch de la Adafruit. Comparand cele 2 biblioteci (Adafruit + cea a chinezului) am reusit sa ma prind in mare ce e de facut, incat sa pot porta si biblioteca de Adafruit a ecranului de 1.8 inch fara SDCARD insa (caci am sdcard pe pcduino).
O scurta prezentare pcDuino3: Ubuntu 12.04 preinstalat, CPU ARM A20 la 1Ghz, 1Gb RAM, HDMI Out, 4Gb Flash on board si extensie sdcard pana la 32Gb, Wifi, Gigabit Ethernet, socket SATA, infrarosu, audio, etc, totul pe la vreo 80 euros (daca as pune toate shield-urile astea pe Arduino ar iesi MULT mai scump). Totusi, ca sa incapa intr-un spatiu mic, unele cuple sunt speciale (cea pentru camera Web cat si cea pentru alimentarea SATA). O alta problema este ca l-am alimentat pe USB cu un incarcator de mobil, si merge, dar el cere vreo 2A curent. In operatiile mai grele (cum ar fi un update de software cand faci remote VNC pe el) s-a blocat de cateva ori.
Am schimbat incarcatorul, si nicio problema deocamdata merge sa compilez pe SSH si folosesc Komodo Edit (nu IDE) free sa pot edita pe Windows si sa salveze direct pe pcDuino over SSH. Are si 2 USB-uri in plus, cat si o mufa USB OTG (care merge cu cablu normal de telefon USB, caci inversare firelor este realizata in mufa de pe placa) pentru a atasa carduri de memorie, samd, in caz ca se doreste ca placa sa fie atat host cat si client. O alta limitare este ca merge la 3.3V , dar ecranele pe care le am (Arduino TFT + Nokia 5110) cat si senzorii merg deja la 3.3V. Daca exista shield-uri Arduino la 5V doar, se poate cumpara un shield separat (ieftin!) care ridica voltajul.
Alte avantaje: maximum sketch size este 100Mb in loc de 32kb ! WOW. Atata loc sa scrii ce vrei. A se vedea in poza de mai jos raportat de Arduino IDE care ruleaza chiar pe pcDuino.
Cred ca singurul avantaj Arduino acum este ca poate rula multa vreme de pe baterii (daca e trecut in idle mode), insa, asta il face specific aplicatiilor de teren unde il lasi pe camp si nu te mai duci 2 luni sa vezi ce si cum. Altfel ...
Cateva poze:
1. pcDuino conectat pe HDMI la televizor, cu Keyboard si un Mouse conectate pe cele 2 porturi USB.
2. Acelasi, dar conectat la ecranul de la Arduino:
3. Ruland demo-ul pentru Arduino gasit pe un Instructables (dar nu a fost banal de portat biblioteca cum ziceam):
Am deschis topicul pentru ca sa fac concurenta la Arduino si sa vad daca apar idei interesante - sau daca s-a mai ocupat cineva as fi curios sa aflu ce si cum.
Ce vreau sa fac deocamdata este un controller de temperatura cu 4 x DS18B20 (0-100C) si sa primesc mail daca temperaturile depasesc anumite limite. Cum este un Ubuntu, codul o sa fie un daemon care raspunde la query-uri (asemanator hddtemp) si datele vor fi disponibile pe SNMP via WIFI unui alt calculator (NAS) care ruleaza Cacti.
Ecranul o sa fie si el conectat incat sa pot vedea din camera temperaturile si sa ma sigur ca e totul in parametri.
O sa caut apoi niste relee sa pot sa fac un prelungitor unde fiecare priza e controlata separat ... si poate, daca o sa pricep cum trebuie izolate sondele pH, dar sa vedem, prea multe de facut, prea putin timp
Foarte interesant. Bravos!
La un moment dat incepuse un topic cu Arduino si dupa o efervescenta s-a fasait si mie mi se pare ca cei care stiu lucreaza pe sub plapuma sa nu vada vecinul ce face poate ma insel...
Daca ai nevoie de niste cerinte despre ce ar trebui sa faca un bun controller nu ezita sa apelezi la mine, la altele din pacate nu pot decat sa te sustin moral
Inca o data felicitari si succes
„Singurele lucruri care se intampla rapid intr-un acvariu sunt cele rele. Lucrurile bine facute se observa in timp si necesita rabdare, rabdare, rabdare...”
@Lucian, da, nu cred ca sunt de facut bani din afacerea asta, pentru ca pana la urma pierzi mult timp ca sa particularizezi tot, sa-l faci suficient de generic si flexibil pentru orice ar putea apare, iar daca vrei sa ajungi la gradul acela de flexibilitate a produselor comerciale, realizezi ca ajungi sa ceri aproape la fel de multi bani.
Asa ca pentru amuzament mi se pare interesant sa poti sa impartasesti ceea ce faci - pana la urma, daca as vrea un controller, as lua unul facut profi, unde oamenii au deja experienta acumulata, rezolva probleme, integrari. Presupun ca lucrand o sa consum mai multe resurse decat unul cumparand unul ready made si pus la munca imediat, dar macar e amuzant.
@dberger multumesc pentru amplificator cred ca m-a speriat mai mult cum sa izolezi cat mai bine sonda - multe povesti pe internet despre sonda care arata impecabil in pahar - dar odata introdusa in acvariu unde sunt tot soiul de interferente, valoarea incepe sa oscileze. Te-ai lovit de problema ?
Valoarea DIY-ului cum o vad eu este data si de costul mult mai mic al mentenantei diferitelor componente, dincolo de costul initial. Plus ca se pot adauga extensii dupa gust
Eu de ex am pornit cu un Aquamedic AT controller, la care in timp s-au dus afisajul, conectorul USB pentru PC, lasand la o parte faptul ca soft-ul este arhaic, neactualizat de 4 ani. In lipsa oricarei documentatii, si dupa o investitie initiala considerabila, nu am avut de ales decat sa cumpar altele in loc Alta e situatia pentru controller-ul compatibil Arduino pe care l-am incropit in timp.
Referitor la izolarea sondei - problemele sunt reale: eu mi-am cumparat cu ceva vreme in urma un set de sonde/controllere Atlas Scientific. Salinitatea si pH masoara ceva cand sunt singure in acvariu, si altceva cand sunt impreuna. Atlas dupa ceva ani a confirmat in sfarsit problema, si a venit cu solutia corecta(cu cheltuiala in plus, bineinteles) : o izolare pe semnal si pe sursa de alimentare:
vm70 - super pontul cu Atlas Scientific. Singura problema pare ca au nevoie de 5V, si am descoperit ca pcDuino are deja un output de 5V pe unul din pini - dar nu stiu daca e suficient.
Izolarea maselor o intalnisem si eu citind de ground loops .. dar nu stiam ca e ceva gata construit. Urmeaza sa studiez daca imi trebuie mai multe placute, intre partea care masoara si controller ... (adica daca trebuie cate o placuta pentru fiecare senzor in parte). Mi-e teama ca da. Insa mai am un pic pana acolo.
Deocamdata mi-au sosit senzorii de temperatura (modelul DS18B20 waterproof).
Pe penultima pagina, cu wiring diagrams arata modul lor recomandat de conectare. Insa in diagrama ei nu izoleaza decat partea de semnal, nu si de alimentare.
Vad ca powerISO consuma 32mA fiecare, nu cred ca pinul pcDuino suporta mai mult de 50-100mA(trebuie verificat in datasheet). Mai bine nu risti si faci un circuit separat.
Ooops. Da, mi-era teama de asta .. merci de feedback.
M-am gandit si eu la un termistor atunci cand am vazut cat de scumpe sunt DS-urile ...
Problema (cu termistor sau LM35) e ca vreau sa masor 4 acvarii si trebuia sa folosesc 4 pini de la controller ca sa fac multiplexarea. Si trebuie si un condensator + rezistenta daca vrei sa le folosesti pe cablu mai lung (care am inteles ca introduce un efect capacitiv care destabilizeaza outputul lui LM35).
Asa o sa pot folosi doar un singur port, senzorii fiind digitali.
Dar m-am hotarat doar dupa ce am gasit o oferta pe Amazon, am dat 22 euros pe 5 senzori cu tot cu transport inclus - deci cam 5.5 euros / buc dar mai putina bataie de cap.
Am reusit sa portez biblioteca de OneWire pe pcDuino ... a fost dificil deoarece
a) delayMicroseconds (functia de asteptare) nu era implementata cu busywait (pentru intervale foarte mici) - ceea ce dadea peste cap timing-urile cerute de protocol.
b) operatiile pe unii din incearca sa opresca (fara sa zica nimic) driverul de PWM - in sensul ca sunt pini de PWM si daca tu vrei sa scrii, codul automat incearca sa opreasca engine-ul de PWM. Alte lag-uri foarte mari (20 micro secunde) cand de fapt toata comunicarea cu DS18B20 trebuie sa se intample sub 15 micro secunde.
Acum merge, cu toate ca trebuie sa mai studiez un pic timing-urile - o sa fac release la cod dupa ce termin (deocamdata mai sunt mici probleme in sensul ca din cand in cand sensorul nu este vazut pe bus).
ubuntu@ubuntu:~/c_environment$ sudo output/test/DS18x20_Temperature
ROM = 28 21 83 ce 4 0 0 a8
Chip = DS18B20 Data = 1 72 1 4b 46 7f ff e 10 57 CRC=57
Temperature = 23.125000 Celsius, 73.625000 Fahrenheit
No more addresses.
In weekend o sa introduc senzorii in acvariu
Weekend Edit
Am postat codul sursa pentru OneWire / pcDuino aici: https://bitbucket.org/viulian/onewire-library-for-pcduino Poze cu instalarea nu am pregatite - inca mai am de dichisit la forma intermediara in care o sa-l tin, dar am conectat 2 acvarii (cele marine) la jucarie, si apoi lasat serverul de Cacti sa isi ia informatiile de pe pcDuino si sa mi le puna intr-un grafic separat:
This message was edited 1 time. Last update was at 11/05/2014 23:08:50
a) am cumparat niste mini protoboards - numa bune pentru a ocupa spatiu putin. Un pic de chinuiala cu facut bus-urile de Vcc / Gnd / DATA pe un spatiu asa mic, dar cu niste bare de pini tata / tata si mufe mama de 3 pini, am reusit sa conectez cei 5 senzori la board, si sa ramana si TFT-ul conectat. (4 senzori in acvarii, si unul undeva aproape, de temperatura a camerei).
b) m-am luptat cu serverul de Cacti (nu stiu ce minte l-a gandit, dar e salbatic rau la configurare) dar in sfarsit pot sa vad graficul pe telefon
Cateva screenshot-uri mai jos.
Am inceput sa studiez despre sondele de pH. Am gasit chinezesti foarte ieftine, cu tot amplificator (15 euros in loc de 60-100 euros restul profi), si am intalnit destule posturi pe reef-central unde opinia era - bai, nu stim daca sunt atat de precise si rezistente in timp, dar doar pe post de monitorizare merg ok (cat timp nu te risti sa controlezi aditii, chestii care pot dezechilibra acvariul, acolo s-ar merita ceva profi in care sa ai incredere).
Imi trebuie 3 sonde, una pentru acvariul cu creveti, si 2 pentru acvariile marine. Al 4-lea acvariu insa, n-am nevoie sa stiu pH dar ar fi fain de vazut ce se intampla cand dau drumul la CO2 sau nu, etc.
Pentru decuplarea galvanica am gasit asa ceva : http://www.digikey.be/product-detail/en/EVAL-ADUMQSEBZ/EVAL-ADUMQSEBZ-ND/2305758 (pentru 4 canale seriale, ofera si tensiune pe linie). S-ar putea sa mearga, dar o sa mai studiez daca e exact ce imi trebuie. Exista multe DC to DC converters facute pentru seriala, dar nu stiu amplificatorul sondei de pH ce valori da la iesire, poate ar trebui sa comand sonda inainte si sa vad valorile, si apoi sa caut izolatorul. Insa par ieftine (placa aceea este 30 de euro pentru 4 canale, si nu 30 de euro pentru un canal cum este la Atlas Scientific).
Screenshots: graficele de temperatura pe Cacti (ziua este caldura oprita, si acvariile pierd si ele tempertura, iar seara, se ridica):
Poze din montaj:
Pasii urmatori ar fi deci sa studiez de decuplarea galvanica, sa dau comanda pentru sondele pH si placa aceea care nu pare asa scumpa pentru cate canale am nevoie. Si apoi, cand vad cate fire se aduna si acolo, sa ma gandesc la o cutie.
Foarte curat lucrat!Arata super.
Din cate stiu, sondele de pH ar trebui sa fie compatibile universal, diferentele putand fi compensate de catre procesul de calibrare.
Eu la un moment dat am avut curiozitatea sa urmaresc evolutia tensiunii la bornele sondei Atlas Scientific cu un multimetru Velleman, valorile citite fiind daca nu ma insel atat pozitive cat si negative(pH> 7, respectiv < 7) de ordinul zeci sau sute de mV.
Dupa ce am studiat o gramada de scheme electronice pentru amplifcatoare de pH am realizat ca:
a) trebuie sa fie un amplificator specializat, fiindca se discuta de rezistente de 1To curenti de fempto amperi - nu se poate cu orice opamp / condensator (am vazut un board scump - http://www.splatco.com/sx10507.htm - pentru a creste impedanta la intrare a placii, oamenii folosesc aerul pe post de izolator - impresionant, asta da dedicatie)
b) trebuie sa comand componente din toate partile ale lumii si cum ma intereseaza ceva decent si IEFTIN, chiar daca as asambla eu una alta, shippingul ar fi foarte scump ... si daca ard ceva, sau etc, o sa termin la pastele cailor.
The pH Adapter Board should be used to measure solutions that are 'electrically quiet'. Measuring pH in electrically noisy environments such as tanks with mixing pumps, and even other measuring devices is not recommended.
Le-am scris celor de la phidgets daca au vreo solutie pentru separarea galvanica, sa vedem daca raspund - dar deja pare complicat, ei vand si o interfata pentru 8 sensori de-ai lor, doar aceea poate fi cititia pe USB (costa in jur de 100 euros cred), aceiasi poveste - vendor lock-in - nu-mi place ideea. Am vazut cateva posturi despre interfatarea cu Arduino - tre sa corectezi formulele, probleme, complicat.
Cred ca pana la urma o sa merg pe solutia Atlas Scientific, pare cea mai "clean" insa fiecare acvariu o sa coste cam 80-90 euros cu tot cu sonda chinezeasca. Sa vedem.
Nah sa nu mai zica lumea ca ma dau dashtept ...nu ma pricep la toate.
Pe mine unu` m-ai pierdut de mullt...
Aici deja vorbiti alta limba.
Dar ma bucur ca daca o sa vreau stiu la cine sa apelez
Cat am priceput eu din jucarica e tare mishteaux. Bravo!
Am emailuit cu cei de la Atlas Scientific, si am nevoie doar de un DC to DC converter (mi-era teama sa nu fie nevoie de separarea galvanica pentru fiecare pH circuit in parte, caci separatorul nu e ieftin). Si phidgets vinde un produs asemanator cum ziceam, iar DC to DC converter-ul lor trebuie instalat intre interfata de masurat (pana la 8 senzor) si PC. Deci nu prea conteaza ce se intampla cu circuitele de masurat, cat timp au un ground comun ele, si ground-ul lor nu este ground-ul controller-ului.
In plus, chiar daca ar fi asa, placa aceea cu patru mufe BNC comuta fiecare senzor in parte in functie de canalul solicitat, deci la un moment dat masori valoarea dintr-un singur acvariu. Asa ca presupun ca e ok si sper sa nu interfereze ground-ul celorlalti electrozi.
Astept sa soseasca si apoi o sa comand un electrod chinezesc (am facut rost de unul de la sera foarte foarte ieftin printr-o ocazie) deci deja o sa ma pot juca ca sa ma prind de influente. O sa ajustez pe parcurs ... Atlas scientific vinde scump electrozii (presupun ca sunt ok) asa ca o sa vad ce si cum cu senzorul chinezesc cat si cel Sera.
Sper ca in 2-3 luni sa am montajul gata si sa pot masura pH-ul si temperatura in cele 4 acvarii.
„Singurele lucruri care se intampla rapid intr-un acvariu sunt cele rele. Lucrurile bine facute se observa in timp si necesita rabdare, rabdare, rabdare...”
Vezi ca vorbea lumea prin piata ca cica circuitele de la Atlas Scientific nu prea sunt stabile
Si eu sunt interesat de o sonda de pH din sticla cu lichid de regenerare...
„Singurele lucruri care se intampla rapid intr-un acvariu sunt cele rele. Lucrurile bine facute se observa in timp si necesita rabdare, rabdare, rabdare...”