"MÅNEDENS AKVARIE" Se denne måneds akvarie HER.

DIY akvariecomputer (Arduino) tråd

Forum hvor du kan læse og dele gør-det-selv tips og ideer.
Besvar
kmo
Grøn Chromis
Grøn Chromis
Reactions:
Indlæg: 47
Tilmeldt: lør 23. maj 2009 20:51
15
Postnummer: 2770 Kastrup
Saltvand siden?: 2012

DIY akvariecomputer (Arduino) tråd

Indlæg af kmo »

Hej alle!

Se, nu har jeg jo brugt ufatteligt mange timer på at skovle allemulige indlæg igennem i jagten på at starte mit eget saltvandsakvarium op, men af en eller anden årsag har jeg ikke kunnet finde så meget om at lave sin egen akvariecomputer. Lave den billigt, vel og mærke. Så tænkte at jeg ville begive mig ud i at skrive lidt om hvad jeg har kastet mig over, nu hvor akvariet alligevel bare står og kører ind med sten og saltvand og lys... og da tålmodighed er noget jeg skal lære at gro, så besluttede jeg mig for at se om jeg kunne finde ud af at samle en styring selv... ;)

Altså er spædt forsøg på at dele lidt af mine erfaringer - men allerhelst også at kunne finde nogen jeg kan høste erfaringer fra, selvfølgelig :)

Hvis det virker til at det er noget nogen synes er interessant også at rode med vil jeg skrive lidt efterhånden som projektet skrider frem - og deler selvfølgelig også gerne kode og det hele.

Missionen var at finde en lidt nemmere måde at styre pumper og påfyldning - og senere at lave en automatiseret dosering, så jeg fx kan kaste mig ud i noget Balling eller sådan noget. Men frem for at hive et større beløb frem for at sidde med de begrænsninger man har i de "rigtige" computere, så tænkte jeg at køre en anelse omkostningsbevidst på at lave en selv. Og indtil videre har det faktisk været nemmere end jeg troede.

Jeg har programmeringserfaring - men den er enormt rusten! Vi taler nok 10-12 år siden jeg sidst har slået en reel kodestreg, men arbejder i området til dagligt.

Første version:
- Styre stikkontakter (m. alm. 220v), bare med tænd/sluk (primært lys - alm. HQI+T5 - men i princippet også forsøg med cirkulation)
- Måle temperatur løbende
- Aut. ferskvandspåfyldning (osmolator)
- Styre varme, dvs. varmelegeme og blæsere
- Styre det hele fra min telefon (dvs. med en www-adgang)

Fremtidige versioner:
- Doseringspumper til Balling (fx med perilstatiske pumper eller sprøjtehåndtering - kunne fx være sådan en her: http://www.ebay.com/itm/Dosing-pump-Per ... 5d34f7eb53 inkl. motor...)
- Finde/bygge en snedig fodringsmaskine jeg kan styre
- Lave en saltmålerprobe (fx som ham her: )
- Måske lave en LED lampe...

Den platform jeg valgte at køre efter er Arduino, dels fordi den er temmeligt billig (open source hardware, så at sige), men samtidigt rimelig tilgængelig så man slipper for at skulle sidde og lodde komponenter sammen... Og så er der et enormt community bl.a. på http://www.arduino.cc - med anvendelser i enormt mange områder = mange eksempler man kan hugge og stjæle fra.

En Arduino er en lillebitte computer, som man kan styre ved c-lignende programmering - men man kan tage udgangspunkt i de mange folk der har lavet snedige løsninger før en selv, og kan derfor minimere hvor man man selv skal kode... Arduinoen består af en hovedenhed med et antal digitale porte (blot huller til ledninger - hvor man kan sende 5v eller måle om der er 5v, simplificeret fortalt) samt et antal analoge porte (hvor man kan sende eller måle en specifik mængde strøm mellem 0 og 5v).

Til en Arduino kan man købe et utal af shields, som er printplader i samme størrelse som man "klikker" ovenpå og som så har en funktion - fx at tilføje ethernet, wifi, særlige stik osv. osv.

Som du måske husker var jeg ikke så sørens begejstret ved tanken om at lodde, udvælge modstande osv., så jeg valgte at lægge ud med at købe en Arduino med indbygget Ethernet (denne her: http://www.let-elektronik.dk/arduino-et ... n-poe.html), og et shield der hedder "Grove", som har den fordel at man kan sætte komponenter på med simple stik - ingen lodning... Så jeg købte Grove-startpakken (http://www.let-elektronik.dk/grove-starter-kit.html) som ud over shieldet også gav mig en lille LCD-skærm, ledninger, knapper, led, temperaturføler, relæ osv. osv.

Første hug var at prøve at styre nogle stikkontakter selv, så jeg koblede grove-shieldet på, satte usb-stikket i Arduinoen og i min computer og installerede Arduino-software... Hentede en eksempelfil og prøvede at sende til Arduinoen. Det gik fint :)
Ved blot at forbinde et relæ til en port, så kunne jeg tænde det med kommandoen:

digitalWrite(pinNo, HIGH);

Eller slukke med:

digitalWrite(pinNo, LOW);

Det var overdrevet nemt - og relæet fra Grove-pakken kunne håndtere 10A 220v, så jeg spænede ud i Harald Nyborg og købte nogle stænktætte stikkontakter (http://www.harald-nyborg.dk/p6136/stikk ... staenktaet) og skruede 10 af dem op i mit skab. Så købte jeg 9 flere Grove relæer (til 29 kr stykket) og kunne med glæde konstatere at 6 af dem passede i en 10 cm stænktæt el-dåse perfekt (http://www.harald-nyborg.dk/p3782/lk-daase-membran-hvid) og det gjorde Arduinoen minsandten også - helt perfekt endda!
(OBS. Man skal ikke pille med stærkstrøm med mindre man har styr på hvad man laver - så skal man få en elektriker til at forbinde, fx når man har samlet).

Resultatet var derfor temmeligt kort tid efter at jeg havde sådan en dåse.
relay2.JPG
relay.JPG
Med strømledere op og Arduino-Grove-kabler til højre.

Skruede dåsen op under stikkene og satte Arduino-kassen ved siden af - og så havde jeg pludselig en computer der kunne styre 10 stænktætte stikudtag fra nogle stænktætte el-samle-dåser.

Hvad kostede det så?
10 stikudtag á 12,- => 120,-
4 plastiskdåser á 26,5 => 106,-
1 Arduino Ethernet => 399,-
1 Grove starterpakker => 378,-
Samlet: 1.003,-
(hertil lidt ledninger og skruer og sådan...)

Jeg lavede derefter en lille skedulering på Arduinoen hvor jeg nemt kunne lægge i "kalenderen" om at den skulle tænde eller slukke for et relæ - og lavede en simpel hjemmeside, så jeg kunne sidde med min telefon (hvor som helst) og se hvad der var tændt og slukket... og når jeg lige får et par timer, så kan jeg også skedulere direkte fra telefonen.

Godt så... 1000 kr efter, så kan jeg da lidt.

Jeg har nu købt 2 flydekontakter (http://dk.rs-online.com/mobile/p/niveau ... e/0519242/) som jeg bare skal forbinde til en port, så jeg med Arduinoen kan spørge om der skal fyldes ferskvand i sumpen (og dermed tanken) og om der er vand nok i ferskvandstanken til at jeg kan starte den gamle pumpe jeg bruger til det... (som er koblet på et relæ). Altså heller ikke nogen banebrydende opfindelse - en osmolator - men det dejlige er at jeg så kan se på min lille hjemmeside hvornår den sidst har fyldt på... og få den til at sende mig en besked så snart ferskvandskammeret løber tør :)

Udfordringen kom iøvrigt heromkring.... jeg begyndte at løbe tør for porte på Arduinoen.... :S
Jeg fandt heldigvis en simpel chip (shift register - http://www.let-elektronik.dk/74hc595-8- ... ister.html) som gør at jeg kan frigive 5 porte fra mine relæer... Selv om jeg nok bliver nødt til enten at lodde eller at forbinde ledningerne på en anden snedig måde... :S

OK. Sidste punkt på første version. Temperaturstyring (så jeg dels kan måle temperaturen kontinuerligt, dels kan starte/stoppe blæser/varmelegeme). Jeg købte en temperaturføler (http://www.let-elektronik.dk/one-wire-d ... 18b20.html) som godt nok kræver at jeg sætter en modstand på, men som så også kan måle temperaturen med 0,5 graders nøjagtighed. Selve føleren har jeg gjort vandtæt, ved at putte den ned i et plastikrør og fylde det med silikone (se evt. - stort set sådan jeg gjorde, skulle bare liiige huske modstanden... ). Dermed kan jeg bede min Arduino om at se på temperaturen - og hvis den er for lav, så tænd relæet med varmelegemet, hvis for høj så tænd relæet der driver 4 blæsere (via en strømforsyning - bare en gammel en jeg havde - købte disse her, som jeg dog mangler at få monteret: http://dk.rs-online.com/mobile/p/blaese ... e/5441030/ - 2 til sumpskabet og 2 til lampekassen.
På sigt overvejer jeg at købe en fugtighedsmåler (fx http://www.let-elektronik.dk/grove-temp ... ensor.html), sætte den i sumpskabet og prøve at sætte blæserne der til at holde luftfugtigheden lidt nede, hvis vandet ellers er varmt nok...

Jeg har vist de vigtigste ting på et LCD-display (det der fulgte med i Grove-pakken), men gad ikke at lave et knapbaseret menusystem - så har blot sagt at jeg kan styre med min telefon (eller computer) via den hjemmeside jeg fik Arduinoen til at lave. Selve LCD-skærmen passede sjovt nok perfekt i den sidste af de 10 cm. stænktætte el-dåser (hvis du undrede dig over hvorfor jeg købte 4?), så den sidder bare inde i mit skab og viser temperatur og relæstatus.

Temperaturføleren kostede 34 kr - modstande koster under en krone... Og Blæserne kostede 68,-. Så 300,- oveni budgettet.
Men så kan jeg sørme køre med alt i første version - for 1300,- - og mulighed for at udvide med 3-4 doseringspumper og en DIY fodermaskine i en næste version for 2-500 kr... Og det fedeste er altså at jeg kan se på det uanset hvor jeg er, blot jeg har en computer eller telefon der kan gå på nettet...
(og så har jeg også et lille webcam jeg tror jeg smider op på en reol, når der engang kommer fisk i)

Reelt set har eventyret foreløbigt kostet mig 5-600 mere, fordi jeg har købt lidt forskellige komponenter at sidde og lege lidt med... men dem har jeg altså ikke brugt... endnu ;)

Anyway. Lang forklaring, sorry.
Jeg deler som sagt gerne kode osv. - men advarer lige om at mine kodeevner ikke (længere) er på et niveau så jeg ville tage penge for det... så ingen hånlige bemærkninger :)

Kan tage nogle billeder og skrive mere om fremtidige version hvis der er nogen der gider læse om det. Så kan jeg også prøve at love at skrive lidt kortere ...
Kristian :)

--
Breathes there the man with soul so dead
Who never to himself hath said
Fuck this shit I'm going to bed!
Brugeravatar
Bingocaller
Rev haj
Rev haj
Reactions:
Indlæg: 6258
Tilmeldt: ons 21. apr 2010 18:09
14
Postnummer: 1500-1799 København V
Saltvand siden?: 2010

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af Bingocaller »

Simpelthen Awesome!

Billeder og mere snak writeup som det kommer derud af!
Light travels faster than sound - maybe thats why some people appear bright until you hear them speak...
palsmark
Foxface
Foxface
Reactions:
Indlæg: 327
Tilmeldt: man 22. nov 2010 14:43
13
Postnummer: 2791 Dragør
Saltvand siden?: 2010

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af palsmark »

Ja for satan da, skriv endelig mere :y
Det er super spænende, sådanne diy projekter :GO
Følger Helt sikkert din tråd :h
Brugeravatar
skod
Dragefisk
Dragefisk
Reactions:
Indlæg: 711
Tilmeldt: ons 24. dec 2008 14:04
15
Postnummer: 9440 Aabybro
Saltvand siden?: 2009
Geografisk sted: Birkelse, Aabybro
Kontakt:

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af skod »

mere mere mere mere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mvh. Gert Skjølstrup
Læs mere på min blok: http://www.gteck.dk/#home
Madfishmartin
Rev hummer
Rev hummer
Reactions:
Indlæg: 38
Tilmeldt: tirs 7. feb 2012 22:46
12
Postnummer: 9000 Aalborg
Saltvand siden?: 2010

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af Madfishmartin »

Hej kmo
Sejt projekt, har selv været lidt i gang.
Nu siger du at du ikke er den store koder, men jeg synes det lyder ret avanceret at inkorporere hjemmeside i computeren.
Deler du koden vil jeg meget gerne se den for måske at plukke lidt;-)
De relæer er sgu guf:-)
Hvordan styrer du tiden? har du købt et RTC modul til det, eller er det kodet?
(Dont fear) The Reefer.
kmo
Grøn Chromis
Grøn Chromis
Reactions:
Indlæg: 47
Tilmeldt: lør 23. maj 2009 20:51
15
Postnummer: 2770 Kastrup
Saltvand siden?: 2012

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af kmo »

Yes, deler gerne... selvfølgelig med det egoistiske formål at håbe på at der er nogen der har rodet med et eller andet jeg ikke har tænkt på, som jeg kan snøble fra :)

Lad mig lige rydde lidt op i koden, så der i det mindste er en chance for nogen andre kan læse den.... sidder lige med 30 andre ting, så der går nok en uges tid...

Selve HTML-delen (og det er 100% ren HTML - nothing fancy) er faktisk slet ikke så kompliceret. Hvis du har en Arduino Ethernet (eller et Ethernet shield - wifi virker for dyrt efter min smag... 6-700 for et shield :S), så kan du tage librariet ethernet og gå ind og se på eksempler...

Har lige klippet og fjernet fra min kode min kode (og altså... det ER quick n' dirty!! Det er bl.a det jeg godt vil rydde op :), så er det sådan set blot:

//Included libraries
#include <SoftwareSerial.h> //Also needed to control the LCD screen
#include <SPI.h>//Ethernet
#include <Ethernet.h> //Ethernet

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

// the setup routine runs once when you press reset:
void setup() {
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
// initialize serial and wait for port to open:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
String requestString = "";
int charInt = 1;

while (client.connected()) {
if (client.available()) {
char c = client.read();

//Superhack... hvis tegn nr 6 er 1 eller 2, så er det fordi siden der er kald er 192.168.1.177/1 eller /2 :)
//Quick n' dirty til at fange forskellige undersider
if (charInt==6) {
if (c=='1') {
//Kode for /1
} else if (c=='2') {
//Kode for /2
}
}
charInt = charInt+1;
requestString = requestString + c;
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
//client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.print("Arduino control!! (v. 0.002)<br>");
client.print("Skift til<br><a href=1>1</a><br>");
client.print("Skift til<br><a href=1>2</a><br>");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}

Og så kan du tilgå 192.168.1.177 - og så se din lille hjemmeside.... Hvor du kan skrive tingene ud.
Jeg smider min kode op når jeg har fået klippet 47 forsøg og mærkværdigheder bort :)

Nogen der har prøvet noget med nogle prober? Jeg har lavet en temperaturmåler (med den der DS18B20 - og en gammel Liberal Alliance kuglepen :) ) - men har ikke haft tid til at kaste mig over saltmåleren endnu... eller noget andet for den sags skyld... Men man burde kunne mål PH og Salt uden at det bliver helt sygt kompliceret... (eller er jeg naiv?)

:)
Kristian :)

--
Breathes there the man with soul so dead
Who never to himself hath said
Fuck this shit I'm going to bed!
kmo
Grøn Chromis
Grøn Chromis
Reactions:
Indlæg: 47
Tilmeldt: lør 23. maj 2009 20:51
15
Postnummer: 2770 Kastrup
Saltvand siden?: 2012

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af kmo »

Tiden sætter jeg iøvrigt via en NTP-server: IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server

Koden har jeg bare bøffet herfra: http://arduino.cc/en/Tutorial/UdpNtpClient
(Det er et UDP-kald)

Og så pakket det ind i en funktion så min loop i det mindste ikke er syltet KOMPLET til med lort :)
Kristian :)

--
Breathes there the man with soul so dead
Who never to himself hath said
Fuck this shit I'm going to bed!
Madfishmartin
Rev hummer
Rev hummer
Reactions:
Indlæg: 38
Tilmeldt: tirs 7. feb 2012 22:46
12
Postnummer: 9000 Aalborg
Saltvand siden?: 2010

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af Madfishmartin »

pH er så vidt jeg kan læse bare et præcist voltmeter koblet på en probe, med en kode der omdanner resultatet til skala. Saliniteten kan man vel måle via ledningsevnen eller? Men den vil vel også påvirkes af andre salte end NaCl. Altsammen langt ude i fremtiden for mit vedkommende:-)
(Dont fear) The Reefer.
Brugeravatar
MoG
Rev haj
Rev haj
Reactions:
Indlæg: 4105
Tilmeldt: fre 6. apr 2012 22:00
12
Postnummer: 4684 Holmegaard
Saltvand siden?: 2012

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af MoG »

Det lyder godt nok interessant! Men hold da fest, noget af det er helt sort for mig! :biggrin:
Morten
storm
Grøn Chromis
Grøn Chromis
Reactions:
Indlæg: 46
Tilmeldt: søn 15. aug 2010 15:07
13
Postnummer: 1000-1499 København K
Saltvand siden?: 2005
Geografisk sted: København

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af storm »

Jeg ser frem til at læse al koden når den kommer op. Ved du om der er nogle open source akvariecomputer projekter? Ellers kunne dit jo blive det første?
Madfishmartin
Rev hummer
Rev hummer
Reactions:
Indlæg: 38
Tilmeldt: tirs 7. feb 2012 22:46
12
Postnummer: 9000 Aalborg
Saltvand siden?: 2010

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af Madfishmartin »

De der har lavet noget lignende kalder dem for "arduarium controller".
Det kan man søge på og finde koder, det er det fede ved Arduino konceptet, at tingene er open source og tilgængelige.
Der er en på practicalmaker.com der har lavet et pH-meter-shield.
(Dont fear) The Reefer.
kmo
Grøn Chromis
Grøn Chromis
Reactions:
Indlæg: 47
Tilmeldt: lør 23. maj 2009 20:51
15
Postnummer: 2770 Kastrup
Saltvand siden?: 2012

Re: DIY akvariecomputer (Arduino) tråd

Indlæg af kmo »

Yes - deler gerne koden (som sagt skal jeg lige have nogle timer til oprydning) helt uden garantier eller andet :) men meget gerne for måske at kunne få noget igen, fx hvis nogen gider rode med prober :D
Open source er jo sjovest hvis flere kræfter forenes ;)

Arduarium er snedigt nok - men det bygger på det hardware (arduino-shield) han sælger... Man kan i særdeleshed lade sig inspirere, men man kan ikke uden lidt omkodning hugge hans kode...
Kristian :)

--
Breathes there the man with soul so dead
Who never to himself hath said
Fuck this shit I'm going to bed!
Besvar

Tilbage til "DIY - Gør-det-selv"