Jakob77 skrev:@lath
Det lyder som om, at jeg bliver pioner, hvis jeg begiver mig ud i at lade Ubuntu styre showet alene.
Jeg forstår slet ikke, at det ikke er længere fremme, så der findes lækker software og strømlinet hardware med trådløse relæer og sensorer i lange baner til næsten ingen penge.
Der findes et SBC, som er en Debian Linux computer - den er dog ret dyr i forhold til en Rapberry Pi (6x prisen for en Raspberry Pi, model A/model A+) .
Sidste link er til et stærkstrøms add-on modul. De virker sådan uden videre.
Jakob77 skrev:Det kan sikkert være udmærket og bedst med Arduino på nogle områder, men på andre områder virker det umiddelbart på mig, som at gå over åen efter vand.
Hvad f.eks., når styringen skal tage hensyn til noget så simpelt som de sidste dages nedbør for at kunne fastlægge den tid, som der skal vandes..?
Det er den måde man gør det på. Device drivers til styresystemer er mere komplicerede at lave.
Du har brug sensor input fra en fugtighedssensor og nok også en temperatur sensor, da fugtighed og temperator over tid er de vigtige parametre for planter.
Brug af sensorer gøres nemmest med et indlejret system, så som en Arduino.
Jakob77 skrev:Kan der findes eller fastsættes variabler i Ubuntu, som Arduino'en kan aflæse og styre efter..?
Det kan man godt.
Du definerer en protokol - altså en måde at kommunikere på - imellem dit Arduino system og enhver computer der vil kommunikere med den.
Jeg anbefaler seriel port kommunikation, og en tekst baseret protokol, fordi en tekst-baseret protokol er nem at teste direkte i et seriel port program.
Ved at bruge et seriel port program kan du teste kommunikationen før du bygger programmet der skal bruge den samme tekst-baserede kommunikation.
Jakob77 skrev:Eller skal jeg så "bare lige" skrive et program, som automatisk ved bootup aflæser nedbøren og omsætter den til en variabel, som det så indskriver i Arduinoprogrammet og automatisk compilerer det til Arduino'en, som det så omsider må give besked på at starte..?
Det virker ikke helt som om du forstår hvordan det foregår.
Firmware/et program, og software generelt skal ikke gen-oversættes fra kildekode bare fordi du ændrer på en variabel.
Arduino systemetLige efter opstart gør man altid det at man lader microcontrolleren konfigurere dens I/O porte. Det gør den ved at tildelte bestemte værdier til bestemte adresser.
Når det er sket starter man en endeløs løkke (C kode):
Kode: Vælg alt
while 1 {
/* inde i den endeløse løkke har microcontrollerens software både rollen som program og det et styresystem normalt laver. */
}
Det ser ud til at i Processsing programmeringssproget, som er det programmeringssprog en Arduino programmeres i, så sker konfigurationen i setup() {...}, og while-løkken sker i loop() { ... } .
while-løkken(der hedder loop() i Processing), skal lave det her:
- Modtage kommandoer fra en PC via en seriel port.
Der er noget til at komme godt i gang her: http://arduino.cc/en/Tutorial/DigitalReadSerial - Give svar til PCen.
- Periodisk hente data ind fra en eller flere sensorer.
- Lave noget på baggrund af data fra sensorerne, ofte gerne er der nogle parametre i RAM der bestemmer hvad den skal gøre i en bestemt situation.
Intet fra oversående liste kræver en gen-oversættelse af Ardinoens program/firmware.
Jeg bemærker at en Atmel AtMega har en EEPROM, så du kan lægge en default/standard handling ind i EEPROM, som så kopieres ind i RAM.
De default/standard handlinger bruger den så, medmindre den har fået noget andet at vide via dens serial port.
EEPROM har også memory wear (P/E =100.000).
Iøvrigt kan du ikke programmere en Atmel microcontrolleren mere end 10.000 gange i træk (P/E = 10.000) på grund af at de kvante-mekaniske fælder der lagrer microcontrollerens program som bits ikke længere virker.
Det fænomen hedder memory wear:
http://en.wikipedia.org/wiki/Flash_memory#Memory_wearPå PCenDu har brug for et program ovre på din PC tll at snakke med dit Arduino system via en seriel port.
Opgaven er så blevet nemmere af at ardunoen nu laver det meste af arbejdet, og du skal nu kun skubbe en kommando ned til Arduino systemet, eller du kan udlæse værdier med andre kommandoer.
/Lars
Edit, 20140724, 11:49: Redigeret for bedre forståelse