Arduino akvarium computer project

Hej i forum’et

Jeg har besluttet at kastet mig ud I elektronikkens verden og vil prøve at bygge mig en akvarium computer, som skal kunne styre pH via magnetventil og Co2, TDS ell µs målinger, Led Lys med sol op og sol ned, Temp/termostat (køl og varme), Doserings pumpe til gødning mm, Tank sensorer (måske trådløst, hvis det kan lade sig gøre) og måske noget automatisk vand påfyldning, og indtil videre skal den kunne styre 2 akvarier.

Planen er selvfølgelig så at bruge Arduino systemet, og jeg har søgt nettet tyndt efter diverse oplysninger for at finde ud af hvad jeg Ca skulle bruge til projektet, men da jeg næsten er nybegynder inden for elektronik, og total blank med arduino, (jeg har dog for nylig bygget en termostat styring og en vandpumpe styring til køle system ellers har jeg lavet diverse lys-styringer og styrings paneler til mit gamle mobil diskotek, men det er nu over 25 år siden og kan ski ikke huske så meget mere), men håber, man ikke bliver for gammel til at lære :slight_smile: og at der er nogle hjælpsomme sjæle herinde der kan lære mig det :slight_smile: måske en der syntes det kunne være sjovt at bygge det sammen med mig og som man måske kunne mødes med face to face, jeg bor i Ballerup, Storkøbenhavn.

Nå men her er hvad jeg har bestilt indtil videre og nu da jeg er lidt blank på dette område og ikke har så mange penge at gøre godt med, har jeg valgt de lidt billiger board til at starte op med og så købe resten lidt hen ad vejen.

Leonardo r3 AtmegA32U4. (Er ankommet)

Sensor Shield V5.0 Special Sensor Expansion Board (Er ankommet)

RF transmitter and receiver kit for Arduino project 433Mhz. (Er ankommet)

Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module. (Er på vej)

Mini Universal Solderless Breadboard 400 Tie-points +65PCS Jumper cable wire. (Er ankommet)

4 x 4 Matrix Array 16 Key Membrane Switch Keypad Keyboard. (Er ankommet)

Getting Started with Arduino. (bog/hæfte). (Er ankommet)

3.2 inch TFT LCD module Display with touch panel SD card 240x320 than 128x64 lcd. (Er ankommet)

40pcs Dupont Wire Color Connector Jumper Cable 2.54mm Female-Female. (Er ankommet)

10pcs breakable pin header 40 Pin 1x40 Male 2.54. (Er ankommet)

SD Card Module Slot Socket Reader. (Er ankommet)

3.3V/5V MB102 Breadboard Power Supply Module. (Er ankommet)

40PCS Dupont Wire Color Jumper Cabl 1P-1P 2.54mm Male to Female 20cm. (Er ankommet)

DC 9V Battery button /box power plug cable. (Er ankommet)

3 x D-sub Connector 9 pins male. (Er ankommet)

3 x D-sub Connector 9 pins female. (Er ankommet)

S3003 Standard futuba Servo. (Er ankommet)

Temp føler. (Er ankommet)

Her er der lige hvad jeg ellers har bestilt og er på vej

5V 2 Channel Relay Module Board,

Og her er så hvad jeg har planer om at købe.

PH Electrode Probe BNC Connector.

BNC Sensor Shield
Eller Komponenter til hvis man selv skal lave en pH & Tds-µs styring, har dog ikke lige fundet ud af hvad jeg skal bruge.

TDS ell µs probe, (hvis de da ellers er til at finde for menneske penge)

Så er det nu jeg ville spørge om der er nogen der kan komme med gode råd og vejledning, samt kan sige om der måske er noget jeg har glemt eller mangler, eller måske er lidt overkill?? til dette Project.

Så fik jeg lavet min aller første sketch, og vil gerne høre om jeg har gjort det rigtigt, og så høre om der er nogen som kan hjælpe med en timer funktion til servo'erne eks, hvis jeg vil ha servo 1 til kun at kunne køre: mandag - onsdag og fredag kl.10, en gang tilbage og en gang frem. Servo 2 skal kun køre: tirsdag - torsdag og lørdag kl.10, også en gang tilbage og en gang frem og begge ca 60 grader. Er det noget der kan lade sig gøre ???

Hej Johnny

Det var dog noget af en udfordring du der har givet dig selv. :slight_smile:

Omkring det at anvende tider til at beslutte körsel med servoerne - jeg har tidligere haft akvarie men har aldrig haft server paa dem; hvad er det du skal lave med servoerne?

Maaling af pH og uS er jo ikke noget man bare lige gör - hvorfor vil du nu dette?? (Jeg har arbejdet med svömmebasinner og der maaler man netop disse faktorer men det var en manuel process)

Jeg er elektronik man I mit daglige arbejde men kender ikke noget til de server du har men kunne jeg ikke faa lov at se et datablad?

/Karsten

karstenmentz:
Hej Johnny

Det var dog noget af en udfordring du der har givet dig selv. :slight_smile:

Omkring det at anvende tider til at beslutte körsel med servoerne - jeg har tidligere haft akvarie men har aldrig haft server paa dem; hvad er det du skal lave med servoerne?

Maaling af pH og uS er jo ikke noget man bare lige gör - hvorfor vil du nu dette?? (Jeg har arbejdet med svömmebasinner og der maaler man netop disse faktorer men det var en manuel process)

Jeg er elektronik man I mit daglige arbejde men kender ikke noget til de server du har men kunne jeg ikke faa lov at se et datablad?

/Karsten

Hej Karsten
Mange tak for svaret og ja det bliver lidt af en opgave :slight_smile:

Servo'erne skal bruges til at trække to sprøjter til dosering af gødning (micro/macro) lige som i denne video, bare kun med 2 styks.

Servo'erne er fra min gamle futaba fjernstyring.
Bearing Type: Bushing
Torque: 44 oz-in (3.2 kg-cm) at 4.8V - 57 oz-in (4.1 kg-cm) at 6.0V
19 sec/60??@ 6.0V
Speed: .23 sec/60??@ 4.8V
Length: 1.6" (40mm) X Width: .8" (20mm) X Height: 1.4" (44mm)
Connector Wire Length 150MM
Weight: 1.3 ounce (37.2 grams)

Ps. Der er noget forskel på en servo og en server :stuck_out_tongue:

Grunden til pH og µS måling er at jeg har nogle sarte rejer hvor pH'en skal ligge på ca 5.6-6,0 og µS omkring de 150, så de målinger er rimelige vigtige og må ikke svinge alt for meget, så for ikke at rende og måle værdigerne hele tiden, så kan det gøres med fast probe og automatisk kontrol, ligesom en pH controller der styre pH'en via co2 tilsætning/magnetventil.

Hej Igen

Jeg har laest lidt om servo og forstaar det saaledes: Servoen forsynes med spaending paa de 2 lederer og der tilföres en puls paa den tredje og servoen stiller sig I den position der svarer til puls laengden. DVS at en PWM udgang paa arduinoen er oplagt til formaalet.

Jeg har engang for laenge siden lavet en pröve med et potentiometer tilkoblet en analog indgang og vaerdien jeg laeste sendte jeg direkte til PWM udgangen (der er faerdige biblioteker I IDE) det vil sige at jeg lavede en lysdaemper - potentiometeret var input og en lysdiode var output. hvis du nu erstatter dioden med din servo motor skulle du kunne stille servoen I forskellige stillinger med potentiometeret.

Det med at den kun skal köre paa specielle dage er kun et spörgsmaal om at have den aktuelle tid til raadighed - AT24C32 kredsen er jo oplagt til dette - ellers maaske hente tiden fra internettet??

/K

Hvis I vil styre servoer er det ikke "bare" en PWM, men en ganske nøjagtig en. Og det er der (selvfølgeligt) lavet en library for. Library laver v.hj.a af en intern timer signal til en servo på en hvilkensomhelst pin.

Msquare:
Hvis I vil styre servoer er det ikke "bare" en PWM, men en ganske nøjagtig en. Og det er der (selvfølgeligt) lavet en library for. Library laver v.hj.a af en intern timer signal til en servo på en hvilkensomhelst pin.

http://arduino.cc/en/Reference/Servo

Hej Msquare

Mange tak for svar, jeg er total Newbie på arduino området og må lære det hele fra bunden af, men jeg har da fået lavet en lille simpel test code til den ene af de 2 servo'er jeg vil bruge, og det er ud fra servo Library'et og hvad jeg har læst rundt omkring på nettet,( og nedestående code virker som sådan godt nok, meeen 8) ). Men en af mange ting jeg lige mangler at forstå, er det med at indsætte en timer funktion til servo'erne, altså så man kan sætte en dag og et tidspunkt på nedestående code, så man ikke skal regne det hele ud i milliseconds, og så måske en lidt anden måde at stille sketchen op på ???

Det skal lige siges at jeg bruger arduino sensor shield v5,0 til servo'erne

PS. v.hj.a ved jeg ikke lige hvad er :~ ???

#include <Servo.h>

Servo myservo1;

void setup() { 
  myservo1.attach(9);
} 

void loop() {
  myservo1.write(140);
  delay(40000);

  myservo1.write(5);
  delay(1500);

  myservo1.write(40);
  delay(1500);

  myservo1.write(5);
  delay(1000);

  myservo1.write(5);
  delay(1000);
}

karstenmentz:
Hej Igen

Jeg har laest lidt om servo og forstaar det saaledes: Servoen forsynes med spaending paa de 2 lederer og der tilföres en puls paa den tredje og servoen stiller sig I den position der svarer til puls laengden. DVS at en PWM udgang paa arduinoen er oplagt til formaalet.

Jeg har engang for laenge siden lavet en pröve med et potentiometer tilkoblet en analog indgang og vaerdien jeg laeste sendte jeg direkte til PWM udgangen (der er faerdige biblioteker I IDE) det vil sige at jeg lavede en lysdaemper - potentiometeret var input og en lysdiode var output. hvis du nu erstatter dioden med din servo motor skulle du kunne stille servoen I forskellige stillinger med potentiometeret.

Det med at den kun skal köre paa specielle dage er kun et spörgsmaal om at have den aktuelle tid til raadighed - AT24C32 kredsen er jo oplagt til dette - ellers maaske hente tiden fra internettet??

/K

Hej Karsten
Det første har jeg fundet udad :slight_smile: og de forskellige stillinger, har jeg klaret via simpel code, men du har nok ret i at man kan styre servo'erne via I2C RTC DS1307 AT24C32 og en code, (og den er også bestilt, men er bare ikke kommet endnu), men så er det bare hvordan ???, for det er ski lidt besværligt med det code haløj :~

Hej
Har du tænkt på at bruge en peristaltisk pumpe til dosering?

Hilsner
Fernando Garcia

v.hj.a = ved hjælp af

"I2C RTC DS1307 AT24C32" sikken mange ord for en dims:

  • I2C er den serielle protokol der bruges, dvs der skal kun et par ledninger mellem Arduinoen og de andre chips, all kommunikation er seriel over en ledning.
  • RTC betyder RealTimeClock
  • DS1307 er en chip der indeholder et ur. Når den en gang er sat holder den tiden godt nok i flere år. Via I2Cen skriver den år-måned-da-time-minut-sekund i binær når du sprøger. Der er også et bilbliotekl til den.
  • AT24C32 er ny for mig. Måtte slå den op. Det er "bare" yderlige 32K hukommelse. Du kan skrive enkle bytes til/fra den, må altså selv holde styr på hvad du har skrevet i hvilken lokation.
    Med andre ord, det er en DS1307 du bruger. (Og det er det library du skal finde og tilføje)

Din sketch skal IKKE bruge delay(). Du skal bare lade den køre rundt i loop(), og hver gang rundt spørger du din DS1307 hvad klokken er og når det er "sol-op", så tænder du for lyset. Ditto "sol ned".

Jeg har nu lige kigget på din "første sketch" post. (I fremtiden, lav en ny tråd for et nyt emne) Når du vil vise kode, så skriv den direkte ind i tekst feltet og omgiv den af [ code ] og [ / code ] Det gøres nemmest ved at tryke på "#"-ikonet ovenfor tekst feltet. Det med at inkludere den i en JPG er ... blææhh. Hvis koden er med kan vi andre cut-n-paste det.

Jeg kan ikke kommentere på LCD opkoblingen (uden at begynde læse LCD bilblioteket hvad det forventer) - men hvis du fik din tekst så er det jo rigtigt!

Da der er to gange loop() og setup() antager jeg der er to sketches. Den første skriver "Dette er ikke et poem" på spansk meget hurtigt og ofte fulgt af et slags sekund klokke slet. Den er rimelig nok som "hello world" for LCDen.

Den anden sketch antager jeg begynder med #include linjen. Og den må også have virket i den forstand at dine servoer har rykket lidt frem og tilbage. Men bekriverlserne og de værdier der er passer ikke helt og det var vist nok ikke en robot du byggede? :slight_smile: Den der skrev den sketch havde nok "continous rotation servo", dvs de drejer som en motor.

m.a.o. hvis de virkede for dig så er det korrekt men de to sketches er for små til at vise/skjule dine færdigheder/mangler.


At udføre noget på en ugedag eller andre lange tider. Du har købt en RTC og jeg kan ikke huske om den har en "ugedag" byte i sin kalender. Hvis den har det så bruger du fremgagsmåden jeg beskrev i min forrige post.

FernandoGarcia:
Hej
Har du tænkt på at bruge en peristaltisk pumpe til dosering?

peristaltic pump in Fish & Aquariums for sale | eBay

Ferduino - Dosando 0,5 ml no modo de dosagem manual. - YouTube

Hilsner
Fernando Garcia

Hey Fernando

Jo jeg har tænkt på at bruge peristaltisk pumper, og det kan også være jeg laver det om til det, men lige på nuværende tidspunkt, var min løsning lige den billigste til at lege lidt med :slight_smile:

Msquare:
v.hj.a = ved hjælp af

"I2C RTC DS1307 AT24C32" sikken mange ord for en dims:

  • I2C er den serielle protokol der bruges, dvs der skal kun et par ledninger mellem Arduinoen og de andre chips, all kommunikation er seriel over en ledning.
  • RTC betyder RealTimeClock
  • DS1307 er en chip der indeholder et ur. Når den en gang er sat holder den tiden godt nok i flere år. Via I2Cen skriver den år-måned-da-time-minut-sekund i binær når du sprøger. Der er også et bilbliotekl til den.
  • AT24C32 er ny for mig. Måtte slå den op. Det er "bare" yderlige 32K hukommelse. Du kan skrive enkle bytes til/fra den, må altså selv holde styr på hvad du har skrevet i hvilken lokation.
    Med andre ord, det er en DS1307 du bruger. (Og det er det library du skal finde og tilføje)

Din sketch skal IKKE bruge delay(). Du skal bare lade den køre rundt i loop(), og hver gang rundt spørger du din DS1307 hvad klokken er og når det er "sol-op", så tænder du for lyset. Ditto "sol ned".

Hej Msqare

Hihi, ja det var et langt ord for en lille dims og så blev jeg da lidt klogere på sådan en lille dims :slight_smile: og jeg har fundet nogle DS1307 koder bibliotekerne, og håber jeg kan bruge dem uden at skulle rette for meget.
Okay, så må jeg lige prøve med klokken når shield'en kommer hjem.

Jeps, det er næsten rigtigt, men den skal fade lyset (Led strips ell spot) op & ned, f.eks, så skal den simulere solopgang og solnedgang og ikke bare tænde og slukke det.

buller42:
en skal fade lyset (Led strips ell spot) op & ned, f.eks, så skal den simulere solopgang og solnedgang og ikke bare tænde og slukke det.

Samme princip, bare lidt flere detaljer. Du bruger bare forskellen fra klokken nu til solopgang for at regne ud hvad fade-værdien skal være. Du kan endda gøre det kalender afhængigt (følge årstiderne).

Msquare:
Jeg har nu lige kigget på din "første sketch" post. (I fremtiden, lav en ny tråd for et nyt emne) Når du vil vise kode, så skriv den direkte ind i tekst feltet og omgiv den af [ code ] og [ / code ] Det gøres nemmest ved at tryke på "#"-ikonet ovenfor tekst feltet. Det med at inkludere den i en JPG er ... blææhh. Hvis koden er med kan vi andre cut-n-paste det.

Jeg kan ikke kommentere på LCD opkoblingen (uden at begynde læse LCD bilblioteket hvad det forventer) - men hvis du fik din tekst så er det jo rigtigt!

Da der er to gange loop() og setup() antager jeg der er to sketches. Den første skriver "Dette er ikke et poem" på spansk meget hurtigt og ofte fulgt af et slags sekund klokke slet. Den er rimelig nok som "hello world" for LCDen.

Den anden sketch antager jeg begynder med #include linjen. Og den må også have virket i den forstand at dine servoer har rykket lidt frem og tilbage. Men bekriverlserne og de værdier der er passer ikke helt og det var vist nok ikke en robot du byggede? :slight_smile: Den der skrev den sketch havde nok "continous rotation servo", dvs de drejer som en motor.

m.a.o. hvis de virkede for dig så er det korrekt men de to sketches er for små til at vise/skjule dine færdigheder/mangler.


At udføre noget på en ugedag eller andre lange tider. Du har købt en RTC og jeg kan ikke huske om den har en "ugedag" byte i sin kalender. Hvis den har det så bruger du fremgagsmåden jeg beskrev i min forrige post.

Okay, det må jeg lige prøve at huske næste gang :slight_smile:

LCD'en er heller ikke kommet endnu, så ingen tekst endnu, og sketch'en er kun midlertidig, (på prøve basis) og for at få at vide om jeg har forstået tingene og samlingen rigtigt.

Ja servo'erne virker ok med coden fra sweep biblioteket, og har fået stillet den, så den giver den mængde væske jeg skal bruge, og nej ingen robot men næsten hihi :slight_smile:
Ps. Har lige prøvet med en anden code og den virker også som den skal, men stadigvæk kun med millisec indtil RTC'en kommer.

Ja, nok flere mangler end færdigheder XD og jeg prøver at bruge din fremgagsmåde, når RTC'en kommer og ser hvad der sker, ellers må jeg lave et emne ad gangen, for at få lavet 1 ting ad gangen, for bedre at kunne forstå systemet i det her.

PPS. Er ikke så god til at formulere mig på skrift, så håber det hele giver lidt mening.

Msquare:

buller42:
en skal fade lyset (Led strips ell spot) op & ned, f.eks, så skal den simulere solopgang og solnedgang og ikke bare tænde og slukke det.

Samme princip, bare lidt flere detaljer. Du bruger bare forskellen fra klokken nu til solopgang for at regne ud hvad fade-værdien skal være. Du kan endda gøre det kalender afhængigt (følge årstiderne).

Okay, det lyder da rigtigt fedt og smart, så det glæder jeg mig til at lege lidt med.