[Arduino] [Gezocht] Mensen om mee te sparren

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Hallo,

Bij voorbaat mijn excuses als ik niet voldoe aan de forum criteria heb het forum toch al bijna 10 jaar niet meer echt bezocht dus het is wat roestig allemaal..... Verbeter mij waar nodig.

Dan nu mijn vraag. Ik ben op het moment bezig met het bouwen van een climat controller voor mijn terrarium. Nu staat er op het web wel aardig wat zoals de stilo 3.0 en de raspi viv en andere, maar die voldoen toch niet aan mijn strenge kritische blik dus ben ik zelf aan de gang gegaan. Ik ben zelf bioloog en maak mijn systeem vanuit de biologie >> techniek, waar eigenlijk alle andere systemen denken van techniek>> biologie, waarbij zaken automatiseren zwaarder tellen dan de functie/doel en of dat eigenlijk wel goed is voor het ecosysteem dat je creëert/onderhoudt. Voor mijn een grote no-go, het dier staat altijd voorop.

Ik ben dus een compleet groentje kwa programeren en heb daar geen achtergrond in. Alles is zelfgeleerd (youtube, fora je kent het wel). Ik ben al aardig opgeschoten, ben nu redelijk in C++ en heb samen met mijn vader die ITer is een prototype draaien. Momenteel ben ik zelf bezig met versie 2.0 waar ik de UI voor een touchscreen bijna klaar heb en wil daar binnenkort de werkende delen van mijn prototype in verwerken en uitbreiden. Helaas gaat dat erg traag en heb ik last van de typische bugs en errors. Nu kunnen jullie waarschijnlijk makkelijk vinden, mijn groene onkunde helaas niet en zit ik vaak vast door zeer simpele fouten. Zo heb ik laatst weken lopen klooien omdat ik allerlei rommel kreeg op de serial monitor terwijl mijn code wel compileerde en alles klopte. Waarbij mijn vader simpel zei: "ow heb je naar de baud gekeken? die zal wel fout zijn". Dat was dus precies het probleem, andere geselecteerd en er kwamen de gewenste waardes.... Dit soort fouten. Helaas kan mijn vader me ook niet meer goed verder helpen vanwege te weinig tijd. Ik ben dus opzoek naar een mentor/sparrings partner waarbij ik mijn code kan reflecteren die mijn op dit soort simpele problemen kan wijzen. Maar ook iemand die mij wellicht uberhaupt met mijn code kan helpen?
Het is NIET de bedoeling dat je dingen voor mij doet/schrijft etc. (mag wel natuurlijk). Maar gewoon een kritische noot geeft aan wat beter zou kunnen of helemaal niet werkt of juist wel en waarom. Ik hoor/zie/spreek ook graag over andere projecten van mensen. Ik ben zeer goed in 'puzzelen' en problemen oplossen. Dus mocht je met een logica probleem zitten kan ik je daar waarschijnlijk wel mee helpen, hoe technischer hoe beter!

Wat meer ingaande op de stof en uitleg waarvoor ik specifiek hulp zoek. Het systeem anzich moet in staat zijn om de voornaamste variabelen binnen een gesloten klimaat te besturen. Denk hierbij aan temperatuur, (lucht)vochtigheid, tijd, licht. Waarbij het dus verscheiden zaken als pompen, lampen, sensoren etc aanstuurt om dit te realiseren.
Het prototype bevat:
-dag/nacht cyclus op basis van timers via string functies
-zonopkomst/zonondergang dmv LED strips en dimmer functies
-regen dmv sproeiers door timer functies
-temp/humi sensor die de realtime waardes op een lcd laat zien.

De lampen en pompen gaan via relais shields de rest is direct aangesloten op de arduino. Het geheel is zeer ongebruiks vriendelijk want waardes aanpassen gaat via deze door het in de code te veranderen en opnieuw te uploaden.

De nieuwe versie bevat (hopelijk) boven op wat het prototype al heeft.

-realistisch dag/nacht ritme op basis van een maancyclus klok (heb ik code van gevonden online alleen lukt de implementatie niet) Deze maakt een dynamisch dag/nacht mogelijk die dus ook voor langere zomer dagen en kortere winter dagen zorgt doordat je lengte en breedte graad moet invullen.
-touchscreen zodat je fysiek de waardes kunt instellen (dit krijgt al aardig vorm)
-modulaire/universele aansluitingen. Lampen en pompen gaan gewoon via relais naar stopcontacten. 12v zaken als ventilatoren en LED strips gaan via push pin 'speaker' aansluitingen. Zodat welke pomp of lamp of fan je hebt, je die altijd kunt aansluiten (mits 12v).
-alarm op basis van sensors. Kleine zaken als een vlotter voor het water niveau or een (reeds getest en werkende) UV sensor waarbij een buzzer of melding komt als je UV lamp beneden een bepaalde waarde is. Dit wilde ik simpel houden door een reeks leds die knipperen als er iets mis is.

Van bijna alles heb ik al code of het gross van een code, ik krijg het alleen niet goed geïmplementeerd. Voornamelijk die maanklok blijkt moeilijk.
Mocht er iemand reageren die snapt hoe je app besturing werkende krijgt via arduino kus ik je voeten. Hen als naar MIT app maker gekeken en NODEred. Helaas heb ik daar geen kaas van gegeten en is dat een groot zwart gat voor mij. Dus waarschijnlijk blijft het bij een touchscreen, dat snap ik tenminste en is eigenlijk poep simpel te programmeren!
Ik ben heel grondig in mijn documentatie en heb CAD tekeningen, concept tekeningen, links, documenten etc. en natuurlijk alle beetjes code voor referentie (Waarschijnlijk vol met kinderziektes) als referentie mocht je meer info willen.

Sorry voor de lange babbel.

Alvast heel erg bedankt voor enige reactie of tip, mvg,
T.

Alle reacties


Acties:
  • +4 Henk 'm!

  • Cassettebandje
  • Registratie: Juli 2002
  • Laatst online: 09:10

Cassettebandje

SA-C90 TDK

Wat jij wil kan prima, maar waar je nu tegenaan loopt is dat je veel in een keer voor elkaar wilt krijgen en daar onvoldoende ervaring voor hebt. Het zijn dingen die je niet makkelijk online oplost. Wellicht is het een idee om een hackerspace of makerspace op te zoeken?

Acties:
  • 0 Henk 'm!

  • tafkaw
  • Registratie: December 2002
  • Laatst online: 01-10 20:16
Cassettebandje schreef op zaterdag 8 december 2018 @ 10:57:
Wat jij wil kan prima, maar waar je nu tegenaan loopt is dat je veel in een keer voor elkaar wilt krijgen en daar onvoldoende ervaring voor hebt. Het zijn dingen die je niet makkelijk online oplost. Wellicht is het een idee om een hackerspace of makerspace op te zoeken?
Precies dit zou mijn antwoord zijn. In welke regio zit je?

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Hoi, dank voor de reactie, we hebben een Fablab zitten. Daar konden ze me niet verder helpen. Daar doen ze heel basale arduino dingen (ledjes knipperen etc) en laser graveren en 3D printen. Maar ga er af toe heen in de hoop bezoekers te vinden die meer kunnen/weten van arduino. Ik zit in wageningen.

Acties:
  • +1 Henk 'm!

  • -36-
  • Registratie: Januari 2009
  • Laatst online: 29-09 12:07

-36-

Trust me. I'm an amateur

Misschien een idee om qua techniek en interface iets prefab te nemen en dat met scripttaal naar keuze (https://www.domoticz.com/wiki/Scripts) of nodeRED aan elkaar te knopen. Dan sla je een hoop technisch gepruts over.

Bv een raspberry met domoticz evt icm mqtt (wifi) of RF-link ( 433mhz / KaKu) waar je dan de sensors (esp8266 met tasmota of espeasy) en relays (kaku of geflashte sonoff) aan kan knopen.

[ Voor 14% gewijzigd door -36- op 08-12-2018 22:40 ]


Acties:
  • +1 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Nu online
Wat een omvangrijk project. Ik ben inmiddels embedded programmeur van beroep, en dit zijn projecten waar ik thuis dus niet meer aan wil beginnen omdat het zo gigantisch veel tijd kost. Tijdens mijn studie deed ik dat nog wel :P
-realistisch dag/nacht ritme op basis van een maancyclus klok (heb ik code van gevonden online alleen lukt de implementatie niet)
Daarvan heb ik ooit ook eens code geprobeerd te draaien voor lichtsturing in een LPC1768, maar dat bleek vrij lastig door veel ontbrekende wiskundige functies. Ik heb uiteindelijk per week de tijden van de zonsopkomst en zonsondergang in een textfile gezet die ik via mbed localfilesystem kon lezen, en zodoende ook eenvoudig via de USB kabel kon updaten mocht dat nodig zijn.

Dit klinkt voor mij meer als een oplossing voor een PLC. Dan is er al heel veel low-layer tijdrovend spul van je bordje afgehaald, en kun je eigenlijk direct de focus leggen op wat belangrijk is. De functionaliteit.
De meeste PLC's zijn wat vriendelijker voor gemiddelde programmeurs dan harde C. Waarin je ook nog druk bent met alle randverschijnselen in de implementatie van embedded C of het aan elkaar knopen van modules.
Misschien alleen financieel iets duurder. Maar wel programmeerbaar in blokjes (FBD) en flowcharts (SFC).

Hoeft niet meteen zoals dit: video: Het slimste huis van de Achterhoek: op bezoek bij Tweakers-oprichter F...

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Nee heb al veel gekeken naar die prefab zaken en dat krijg ik het niet zoals het moet zijn. Het moet één centraal modulair systeem zijn en de biologie 'begrijpen', de prefab dingetjes dienen dan alsnog 99% aangepast te worden voordat dat zo is. Dan kan ik het net zo goed van de grond af aan bouwen, dacht ik. Leek me zelf inderdaad ook handiger omdat ik zo'n noob ben, maar blijkt voor mij nog lastiger om all die zaken aan elkaar te rijmen. Dankje voor de input/feedback.

Acties:
  • +1 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
Dit zijn dingen die je prima met een embedded bord (wat de Arduino is) kunt doen. Ik wil je graag helpen maar ik mis het concrete stuk van je vraag.
Heb je een specifieke class/module waar je mee geholpen wilt worden? Of is het C++ in het algemeen? Of het tweede aan de hand van het eerste?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
jeroen3 schreef op zaterdag 8 december 2018 @ 22:45:
Wat een omvangrijk project. Ik ben inmiddels embedded programmeur van beroep, en dit zijn projecten waar ik thuis dus niet meer aan wil beginnen omdat het zo gigantisch veel tijd kost. Tijdens mijn studie deed ik dat nog wel :P


[...]

Daarvan heb ik ooit ook eens code geprobeerd te draaien voor lichtsturing in een LPC1768, maar dat bleek vrij lastig door veel ontbrekende wiskundige functies. Ik heb uiteindelijk per week de tijden van de zonsopkomst en zonsondergang in een textfile gezet die ik via mbed localfilesystem kon lezen, en zodoende ook eenvoudig via de USB kabel kon updaten mocht dat nodig zijn.

Dit klinkt voor mij meer als een oplossing voor een PLC. Dan is er al heel veel low-layer tijdrovend spul van je bordje afgehaald, en kun je eigenlijk direct de focus leggen op wat belangrijk is. De functionaliteit.
De meeste PLC's zijn wat vriendelijker voor gemiddelde programmeurs dan harde C. Waarin je ook nog druk bent met alle randverschijnselen in de implementatie van embedded C of het aan elkaar knopen van modules.
Misschien alleen financieel iets duurder.

Hoeft niet meteen zoals dit: video: Het slimste huis van de Achterhoek: op bezoek bij Tweakers-oprichter F...
Haha ja heb ook al naar DIN rail zaken zitten kijken en iemand gevonden die een zeer mooi systeempje met DIN. raspb en NODEred had gemaakt.
https://www.dendroboard.com/forum/members-frogs-vivariums/314714-high-tech-raspberry-pi-tablet-controlled-terrarium.html

Maar dat is toch wat levels voorbij mijn kunde. De beste versie van de maan code die ik heb gevonden is alweer wat jaartjes oud:
http://forum.reefangel.com/viewtopic.php?f=11&t=2836&start=30
Dacht dat er een definitieve file stond op pagina 4. Volgens de mensen op dit forum is hij universeel en zou hij moeten werken op breedte-en lengtegraad en een RTC. Alleen is deze aangepast voor een eigen code en ik in mijn onkunde niet goed kan zien wat nu lines zijn die bij de maancode horen en wat nu vreemde code is. Maar als het goed is moet het hier allemaal instaan, moet het alleen even aanpassen. Alle formules en de wiskunde zit hier dus in. Ik zie dus helaas door de bomen het bos niet 8)7 . Maar inderdaad ik merk dat het stiekem veeeeeeel meer tijd vreet dan ik dacht daarom deze oproep. Dacht wellicht is er iemand met een goude tip die mij in de juist richting stuurt.
Dankje voor de input!

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
farlane schreef op zaterdag 8 december 2018 @ 22:48:
Dit zijn dingen die je prima met een embedded bord (wat de Arduino is) kunt doen. Ik wil je graag helpen maar ik mis het concrete stuk van je vraag.
Heb je een specifieke class/module waar je mee geholpen wilt worden? Of is het C++ in het algemeen? Of het tweede aan de hand van het eerste?
Ik denk C++ in het algemeen. Ik merk dat alles 100x trager gaat omdat ik geen antwoorden op mijn vragen kan vinden omdat ik bijv de namen van mijn probleem niet weet....
Concreet heb ik nu de gehele library voor de maan cylcus, alleen is die aangepast voor een of andere eigen systeem en werkt die op commands die weer werken met andere libraries. Ik probeer nu alleen die functionele wiskunde eruit te filteren, wat niet lukt.
Op pagina 5 staat een moon.zip waar die gehele functie in staat:
http://forum.reefangel.co....php?f=11&t=2836&start=40

Dankje voor de hulp!

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Nu online
Die moon library lijkt gewoon een losstaande module te zijn. Gewoon moon_init en in de structure kijken wanneer de maan op komt.
Het is overigens wel een zware module voor een arduino, sterkte ;) . De functie void moon(float jd) zal een groot stuk van je stack opeten.

ps, er is ook gewoon een api van de navy.
http://api.usno.navy.mil/...=today&coords=52N,6E&tz=0

[ Voor 7% gewijzigd door jeroen3 op 08-12-2018 23:35 . Reden: linkje naar moon library op github voor de toekomst ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
jeroen3 schreef op zaterdag 8 december 2018 @ 23:33:
Het is overigens wel een zware module voor een arduino, sterkte ;) . De functie void moon(float jd) zal een groot stuk van je stack opeten.
11 floats op de stack (44 bytes), whats the problem?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • franssie
  • Registratie: Februari 2000
  • Laatst online: 00:38

franssie

Save the albatross

Licht, temperatuur en vochtigheid zijn dingen die op elkaar ingrijpen dus probeer niet die drie tegelijkertijd constant te houden maar geef met name temp en vocht (RV) de tijd om wat te schommelen met allen alarmen als het ene of het andere langere tijd buiten een grenswaarde blijft. Toen je het met de ahnd deed stond je ook niet elke 10 seconden aan de knoppen te draaien, dus geef je arduino voldoende fuzzy ruimte om te spelen en lees de waarden om de dag uit en stel wat bij.
Een water sensor is verstandig maar pas op met automatisch bijvoeren van water, blijft die solanoid hangen dan verzuipt alles, met of zonder alarm (hoe doe je dat nu als je op vakantie gaat?)

Het helpt vaak om een schematje te maken met de statussen waarin je systeem kan verkeren en de wisselingn daartussen (gewoon op een A4 met potlood), wat is de troog, te nat te koud te warm - en wat zijn dan de acties. Als je systeem in een woonkamer staat heb je in elk geval een redelijk constante omgevingstemp maar zorg wel voor een feedback (sensor) zodat je de boel niet nu bij 20c afregelt en bij 30c in de zomer extra opstookt.

franssie.bsky.social | 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar


Acties:
  • +1 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
franssie schreef op zondag 9 december 2018 @ 00:10:
Licht, temperatuur en vochtigheid zijn dingen die op elkaar ingrijpen dus probeer niet die drie tegelijkertijd constant te houden maar geef met name temp en vocht (RV) de tijd om wat te schommelen met allen alarmen als het ene of het andere langere tijd buiten een grenswaarde blijft. Toen je het met de ahnd deed stond je ook niet elke 10 seconden aan de knoppen te draaien, dus geef je arduino voldoende fuzzy ruimte om te spelen en lees de waarden om de dag uit en stel wat bij.
Een water sensor is verstandig maar pas op met automatisch bijvoeren van water, blijft die solanoid hangen dan verzuipt alles, met of zonder alarm (hoe doe je dat nu als je op vakantie gaat?)

Het helpt vaak om een schematje te maken met de statussen waarin je systeem kan verkeren en de wisselingn daartussen (gewoon op een A4 met potlood), wat is de troog, te nat te koud te warm - en wat zijn dan de acties. Als je systeem in een woonkamer staat heb je in elk geval een redelijk constante omgevingstemp maar zorg wel voor een feedback (sensor) zodat je de boel niet nu bij 20c afregelt en bij 30c in de zomer extra opstookt.
Wat je zegt zijn precies de fouten die iedereen maakt wat een absolute no go wat mij betreft. Het automatiseren staat ter ondersteuning van het te regelen klimaat nooit andersom. Zoals je inderdaad aangeeft kan je dan bijv. zaken onderwater laten lopen. Ik wil sensoren niet direct iets laten aansturen. Nu blijft een error natuurlijk altijd een risico, maar ik wil de kans zo minimaal mogelijk maken. Ik ben bioloog dus de natuur staat voorop, niet de techniek. Mijn voornaamste reden dat ik die wil maken is zodat ik de data kan aflezen en zo bepaalde parameters kan onderzoeken bepalen en de natuurlijke omstandigheden zo goed mogelijk kan nabootsen (dat gaat niet met conventionele timers etc.). Zo gebruiken veel mensen simpele stopcontact timers voor de lampen die dan stress veroorzaken bij aan en uitgaan. Vandaar de maancode die voor een dynamische dag/nacht cyclus zorgt en daardoor zelfs seizoenen kan nabootsen. De enige functie waar ik over twijfel is een thermostaat functie, dat werkt alleen fatsoenlijk als het systeem daar op mag reageren. Gelukkig is dat zeer simpel en heb ik al liggen dus dat kan ik altijd nog implementeren. Sensor wise is het alleen bedoelt voor alarm functies dmv buzzers of knipper leds ofzo.
Mijn lijst van te implementeren sensors:

- UV sensor (ml8511), die knippert/zoemt als hij onder een bepaalde kritieke waarde komt en je dus de lamp moet vervangen.
- temp/humi sensor gebruik daar nu een DHT22 voor, deze doet niets laat je gewoon de actuele waarde zien op het scherm.
- 2 a 3 temp sensors (nog geen keuze gemaakt welk type) die je bij de warmte lamp of onder in terrarium kunt stoppen om specifieke temperaturen te meten mocht ik dat willen.
- vlotter als je waterpijl laag is, heb geen kraan erbij dus ik dacht ik reken uit hoeveel ml/min mijn pomp aankan en zet de vlotter dan 5x (of meer) dat volume er tussen zodat je meer dan genoeg tijd hebt om bij te vullen voordat de poimp droogvalt. Vrij standaard.
- lichtintensiteit.Deze is voor feedback of alle lampen wel goed werken. met name voor dimfuncties is dit handig.

En van al deze sensors wil ik dan een kader op het scherm maken met de realtime waardes zodat je altijd met een snelle blik een beeld kan schetsen van hoe het met je klimaat staat. Ik heb dit ook uitgeschreven op papier! Heb uberhaupt wat handgemaakte grafieken van in welke volgorde er wat geschakeld moet worden om alles zo au naturel te laten lopen is wel in paint... :P

En als het lukt en ik er zin in het PH meter, barometer etc. gewoon om de waardes compleet te maken maar dat is een misschien. Prioriteit voor nu is die maan functie in samenwerking met een RTC voor de tijd.

Sorry overigens als ik over kom als een azijnzeiker! Dat is niet mijn bedoeling en ik stel de feedback zeer op prijs! Ben nogal een pietje precies als het om natuur gaat (bioloog he) en heb de basale functionaliteit al tig keer van voor naar achter uitgeschreven! De praktische kant van de werking zit wel snor, de software kant nog niet. Maar goed dat je dit aanstipt, precies dit is de grote valkuil waar veel hobbyisten de fout in gaan!
Bedankt voor de feedback!


Edit:
jeroen3 schreef op zaterdag 8 december 2018 @ 23:33:
Die moon library lijkt gewoon een losstaande module te zijn. Gewoon moon_init en in de structure kijken wanneer de maan op komt.
Het is overigens wel een zware module voor een arduino, sterkte ;) . De functie void moon(float jd) zal een groot stuk van je stack opeten.

ps, er is ook gewoon een api van de navy.
http://api.usno.navy.mil/...=today&coords=52N,6E&tz=0
Ik heb het dus geprobeerd die te te gebruiken/testen, maar bij mij kwam er een scala aan erros binnen dat ik verschillende libraries van 'reefangle' miste. Dat wil ik er dus uit halen maar ik heb geen idee hoe dat moet of wat er dan aangepast moet worden? Ze hebben een github met tig libraries vol met functies waar ik allemaal helaas niets mee kan. Voor zover ik weet kan deze prima draaien op mijn MEGA 2560 maar blijkbaar niet dus?

[ Voor 11% gewijzigd door toekie op 09-12-2018 01:58 . Reden: toevoeging ]


Acties:
  • +1 Henk 'm!

  • teaser
  • Registratie: April 2007
  • Laatst online: 01-10 08:04
Lijkt me inderdaad dat je iemand kan gebruiken voor enkele real life sessies pair programming. Veel succes alvast.
toekie schreef op zondag 9 december 2018 @ 01:43:
[...]PH meter[...]
[...]azijnzeiker[...]
Hier zit een grap in :)

Acties:
  • +1 Henk 'm!

  • franssie
  • Registratie: Februari 2000
  • Laatst online: 00:38

franssie

Save the albatross

Deze had je al gevonden denk ik? Je bent natuurlijk niet de eerste die dit wil maken - al is zelf doen het leukste blijft inspiratie altijd een goed vertrekpunt (beter goed gejat dan slecht bedacht immers) ;) https://www.instructables...ino-Controlled-Terrarium/

franssie.bsky.social | 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar


Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
franssie schreef op zondag 9 december 2018 @ 12:40:
Deze had je al gevonden denk ik? Je bent natuurlijk niet de eerste die dit wil maken - al is zelf doen het leukste blijft inspiratie altijd een goed vertrekpunt (beter goed gejat dan slecht bedacht immers) ;) https://www.instructables...ino-Controlled-Terrarium/
Ja, op deze heb ik mijn eerste versie gebaseerd! Om te testen of ik uberhaupt wel iets werkende kon krijgen en deze is slim gemaakt met stopcontacten wat ik ook doorvoer in mijn nieuwste versie! Deze heb ik daarom ook al helemaal nagebouwd wat makkelijker ging dan ik dacht. Dankje voor het meedenken en de interesse! Verdere projecten die ik nog gevonden had waren de stilo 3.0, aquarium controller.
https://code.google.com/archive/p/stilo/
Toen ik deze vond dacht ik, dan moeten mijn ideeen ook kunnen, deze is super uitgebreid helaas wel voor aquaria en niet terraria. Raspi viv maar die man is er mee gestopt, krijg allerlei spams en weet ik wat en hij vond het de moeite niet meer, zonde.
Als laatste dan deze van dendroboard, de DINrail/nodered, overigens gemaakt door een amsterdammer, kon alleen niet met hem in contact komen.
https://www.dendroboard.c...errarium.html#post3051998

Deze is echt heel gaaf en vooral ook heel strak opgebouwd maar ook $$$$.

Vragen!

Ik heb nog concrete vragen!
Ander ding waar ik tegenaan loop is dat ik via touchscreen knoppen de tijd wil kunnen instellen. Nu krijg ik de knoppen prima werkende, maar ik kan geen goede manier vinden om de tijd te laten lopen van 0, 1.....59>0, 1.....59. Boxplot moet ik maken met 59 als max. voor de uren dan natuurlijk t/m 24. dus (24:59:59) De ui heb ik met simpele up en down pijl toetsen en een kalender/klok code die ik gekopieerd heb van hier:
http://rinkydinkelectronics.com/p_utft_analog_clock.php
Ik gebruik ook veel library van deze beste man, die werken echt fantastisch.
En ik dacht ik copy/paste het stukje waar hij de tijd kan instellen een paar keer en verander het voor timer functies. Ik kom alleen niet uit de meerdere paginas van losse code die hij heeft. En uiteindelijk wil ik dus de bovengenoemde maancode hiermee samenvoegen voor een dynamische dag lengte met kalender/datum etc. Iemand een idee hoe je dat doet? Kon het niet vinden op het arduino forum.

Ook gebruik ik op het moment string functies om de tijd uit te lezen voor specifiek ingestelde tijden, maar werkt soms niet. Na wat gegoogle vond ik dat string functies vaker bugs geven bij arduino en je beter iets anders kunt gebruiken. wat zou ik dan kunnen gebruiken? Vond string functies al heel wat dat mij die lukte!

Dank voor de feedback!

Acties:
  • +1 Henk 'm!

  • Yucon
  • Registratie: December 2000
  • Laatst online: 07:29

Yucon

*broem*

Kun je niet beter eerst eens los alle sensoren aan de gang krijgen? Dan kun je alsnog dingen gaan combineren.

Acties:
  • +1 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Dat heb ik al!

Acties:
  • 0 Henk 'm!

  • franssie
  • Registratie: Februari 2000
  • Laatst online: 00:38

franssie

Save the albatross

Tijd instellen zou ik me nu nog niet gelijk op focussen, meer hoe je van uitlezen (dat lukt dus) naar aansturen gaat.
Het zon/maan schema zou je ook nog als een soort array kunnen laden (het zijn grofweg twee sinussen met een andere lengte). In het slechtste geval hang je de arduino eens per jaar aan je laptop om de boel te updaten.

franssie.bsky.social | 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar


Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Maar dat moet nog juist gebeuren. voorbeeld bij mijn prototype heb ik een pomp draaien die eens in de zoveel tijd moet sproeien. Dat gaat dan stopcontact>>relais>>arduino>>specifieke tijd en dan de relais 'high' voor bijv 60 sec via een counter functie. Maar dat instellen gaat nu via het direct veranderen van de tijd in de string en dan opnieuw uploaden. Tijd is simpel door een RTC even gelijk te stellen met de computer tijd en dan alles "//" zodat hij de tijd vasthoudt. Wat ik nu dus wil doen is dit gebruiksvriendelijker maken, want dat uploaden werkt heel slecht en traag en per heropstart reset de arduino en dan piekt het hele systeem even waardoor lampen knipperen etc. wat zeer storend is voor de dieren. Dus ik wil zo min mogelijk downtime events mogelijk hebben. Dat wil ik dus omzeilen door het nu met een interface te doen. Maar dat lukt niet. Digitale knoppen op het touchscreen maken lukt me ook dus de stap die ik mis is hoe ik via de UI die tijd in de stringfunctie kan veranderen zonder letterlijk in de code te zitten maar via de digitale knoppen. Volgensmij is dat best simpel, maar ik kan in voorbeeld codes niet vinden hoe dat zit? Aan/uit knop lukt me ook. Of lees ik je antwoord nu verkeerd? In mijn hoofd is het instellen van de tijd vrijwel gelijk aan de tijdfuncties werkende hebben aangezien het een niet werkt zonder het ander? Naar sinus functies heb ik ook gekeken, maar die gaan inderdaad snel afwijken. Blijkt dat je alleen een van de twee helften netjes krijgt en dat de andere binnen een week gaat afwijken. Had blijkbaar te maken met hoe de baan van de maan wordt berekend (dacht ik). Die had ik wel in mijn achterhoofd. Maar dan lijkt me dat vaste tijden instellen beter is vanwege stabiliteit dus gewoon dag van 7:00 tot 19:00 beter is. Dat heb ik nu en dan heb ik een dim functie op mijn leds van 0>>255 geduurende 30 min en het totaal gaat dan van 6:30 leds 0>>>255 tot 7:00[dag leds + alle lampen]19:00, leds 255>>0 19:30 alles uit (was het beste wat ik kon programmeren met mijn beperkte kennis). Dat wil ik nu dus wat stappen verbeteren. Heel erg bedankt voor de hulp!

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
Ik heb het een aantal keren doorgelezen maar begrijp eigenlijk je probleem nog niet helemaal. Ik denk nog steeds dat je (zoals eerder aangegeven) te grote brokken in een keer wil oplossen. Je noemt een aantal zaken:
- Je touchscreen werkt, dus je kunt een teller laten ophogen door op de '+' te drukken? (dan begrijp ik het probeem niet helemaal dat je niet van 0-23 kunt lopen)
- Wat bedoel je met 'stringfuncties'. Functies die een char array als input hebben?
- Je geeft de datum nu als string door om te tijd te zetten? Kun je eens een code voorbeeld posten. Arduino heeft toch gewoon losse SetDate, SetTime functies waar je een integer (byte) aan meegeeft om de tijd te zetten?

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Hier is een stuk dimmer code, wat volgens strings gaat (dacht ik tenminste):

Declared variables:
String spray_1;
String spray_2;
String spray_3;
String tijd;//format: "hours:minutes:seconds"
String b_ochtend;
String e_ochtend;
String b_avond;
String e_avond;
void setup:
void setup()
{
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++ diverse settings+++++++++++++++++++++++++++++++++++++++++++++++++
b_ochtend = "07:15:10";//start time fade in brightness of led strip in the morning
e_ochtend = "07:55:10";//end time fade in brightness of led strip in the morning
b_avond = "17:10:10";//start time fade out brightness of led strip in the evening
e_avond = "17:50:10";//start time fade out brightness of led strip in the evening
en dat werkt dan voor code:
//============================================OCHTENDSCHEMERING=====================================================07:15:10-07:55:10
if (tijd >= b_ochtend && tijd <= e_ochtend) {

String b_ochtendth = b_ochtend.substring(0, 2);//not yet ready for hours
String b_ochtendtm = b_ochtend.substring(3, 5);
String b_ochtendts = b_ochtend.substring(6, 8);
int b_oth = b_ochtendth.toInt();//not yet ready for hours
int b_otm = b_ochtendtm.toInt();
int b_ots = b_ochtendts.toInt();

String e_ochtendth = e_ochtend.substring(0, 2);//not yet ready for hours
String e_ochtendtm = e_ochtend.substring(3, 5);
String e_ochtendts = e_ochtend.substring(6, 8);
int e_oth = e_ochtendth.toInt();//not yet ready for hours
int e_otm = e_ochtendtm.toInt();
int e_ots = e_ochtendts.toInt();

li = 6.375 * (tm - b_otm) + 0.10625 * (ts - b_ots);
analogWrite(led_strip, li);
Waarbij ik voor mij gemak de tijd een naam heb gegeven en het laat verrekenen, anders moest ik steeds de code doorneuzen waar ik nu steeds de tijd moest aanpassen en kreeg ik problemen als ik het ergens niet had veranderd. Hier duurt de 'schemer' 40 min en omdat schemering nooit langer duurt dan 1 uur heb ik alleen de minuten en secondes functioneel, de uren zijn niet nodig.
Dit:
if (tijd >= b_ochtend && tijd <= e_ochtend)
Was eerst dit:
if (tijd >= 07:15:10 && tijd <= 07:55:10)
En deze tijden wil dus kunnen veranderen met idd +/- knoppen via mijn touchscreen. Voor die UI heb ik gewoon de up/down pijltoetsen gekopieert van deze eerder geposte arduino klok:
http://rinkydinkelectronics.com/p_utft_analog_clock.php

En dan krijg ik het niet werkende dat bijv minuut 59 en je drukt op "+" het 0 wordt en niet 60, 61, 62 etc. maar gewoon weer van voor begint 0,1,2 etc, maar ik heb daar veel over gegoogled maar ik snap niet hoe die codes in elkaar zitten. Bij de klok code van bovenstaande staande link zit dit ook, maar ik kan het er niet uithalen? Begrijpen jullie dit of leg ik het nog steeds raar uit? 8)7


Voor de normale lampen is het gewoon dit:
//overdag tussen 07:55:11 uur en 17:55:11 uur is de lamp aan
if (tijd >= "07:50:10" && tijd <= "17:10:10") {
digitalWrite(sun_lamp, LOW); // warmtelamp inschakelen (attention low active!)
// digitalWrite(uv_lamp, LOW);// uvlamp inschakelen (attention low active!)
}
else {
digitalWrite(sun_lamp, HIGH); //Nighttime (attention low active)
// digitalWrite(uv_lamp, HIGH);//Nighttime (attention low active)
}
Dankje jullie voor de tijd en moeite!

Acties:
  • 0 Henk 'm!

  • CCJJVV
  • Registratie: Maart 2016
  • Laatst online: 28-09 00:03
Om eerlijk te zijn denk ik dat het handiger is als je een / een aantal tutorial(s) gaat volgen alvorens verder te gaan met dit project. Doordat je nog niet alles begrijpt leer je zelf nu manieren aan om dingen op te lossen welke eigenlijk veel beter op een andere manier opgelost kunnen worden.
Ik zou zelf bijvoorbeeld nooit de tijd opslaan in een string laat staan het vergelijken van twee tijden welke opgeslagen zijn in een string door het gebruik van de >= operator. Kijk eens naar het gebruik van Structs om tijden in op te slaan.

[ Voor 3% gewijzigd door CCJJVV op 11-12-2018 13:25 ]


Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Nu online
Als je een eigen klasse maakt en operator>= implementeert kan dat natuurlijk wel.

Ik lees ook dat je nog niet eens de tijd kan bijhouden? Lijkt mij best belangrijk.

Wellicht, kun je overstappen op een Particle Core of iets uit de mbed familie. Die hebben WiFi/LAN en RTC. En zijn veel sneller dan een Atmega328p. Mits je dat aandurft natuurlijk.

[ Voor 5% gewijzigd door jeroen3 op 11-12-2018 14:02 ]


Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Ik zou zelf bijvoorbeeld nooit de tijd opslaan in een string laat staan het vergelijken van twee tijden welke opgeslagen zijn in een string door het gebruik van de >= operator. Kijk eens naar het gebruik van Structs om tijden in op te slaan.
Ja daar kwam ik een tijdje geleden ook achter op het arduino forum, maar ik snap niet ik het anders kan doen.
Ik heb werkelijk geen idee wat 'structs' zijn, zal het even op mijn lijst zetten en ga het uitzoeken! Dankje!
Ik lees ook dat je nog niet eens de tijd kan bijhouden? Lijkt mij best belangrijk.

Wellicht, kun je overstappen op een Particle Core of iets uit de mbed familie. Die hebben WiFi/LAN en RTC. En zijn veel sneller dan een Atmega328p. Mits je dat aandurft natuurlijk.
Tijd bijhouden via een RTC en daar dan dingen via schakelen gaat goed, of is dat niet waar je bedoelt met tijd bijhouden? Heb nog niet gehoord van een Particle Core, ik zat wel al te kijken naar die WeMos bordjes met geïntegreerde WiFi maar dat leek me niet handig omdat ik touchscreen wilde gebruiken en dat gaat handiger via een arduino MEGA. Daar zijn 'klik en play' shields voor namelijk. Maar ik kan het natuurlijk altijd proberen, ga het uitzoeken dankje voor de feedback!

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
Als je een eigen klasse maakt en operator>= implementeert kan dat natuurlijk wel
Uiteraard kan dit, maar de klasse String bestaat al bij Arduino, maar bevat niks specifieks aangaande date/time (uiteraard). Een string op die manier vergelijken gaat dus ook zeker niet werken.

Acties:
  • 0 Henk 'm!

  • CCJJVV
  • Registratie: Maart 2016
  • Laatst online: 28-09 00:03
Rowwan schreef op dinsdag 11 december 2018 @ 15:27:
[...]


Uiteraard kan dit, maar de klasse String bestaat al bij Arduino, maar bevat niks specifieks aangaande date/time (uiteraard). Een string op die manier vergelijken gaat dus ook zeker niet werken.
Wat TS doet werkt wel degelijk zie: https://www.arduino.cc/re...ors/greaterthanorequalto/. Het vergelijken van een string wordt gewoon gedaan op “Alfabetische” volgorde. Aangezien de tijd van groot (uur) naar klein(seconden) gaat gaat het in het geval van TS wel goed. Ga je het echter over datums hebben dan kan je niet de DD-MM—YY/MM-DD--YY notatie kunnen gebruiken en zul je moeten overstappen naar YY-MM-DD. Desalniettemin is het gebruik van een struct een stuk gebruiksvriendelijker en gemakkelijker en qua geheugen gebruik ook vele malen interresanter.

Acties:
  • 0 Henk 'm!

  • Lennyz
  • Registratie: Januari 2010
  • Laatst online: 25-09 09:49
toekie schreef op dinsdag 11 december 2018 @ 02:45:
Wat ik nu dus wil doen is dit gebruiksvriendelijker maken, want dat uploaden werkt heel slecht en traag en per heropstart reset de arduino en dan piekt het hele systeem even waardoor lampen knipperen etc. wat zeer storend is voor de dieren. Dus ik wil zo min mogelijk downtime events mogelijk hebben.
Even een kleine tip om dit te voorkomen. Je moet dan eigenlijk in de setup eerst de digitalWrite van de pin doen, en dan pas aangeven dat de pin een output is.

Dus zoals dit:
code:
1
2
3
4
5
6
void setup()

{
digitalWrite(Relay, HIGH); (Of LOW als het een active LOW is).
pinMode(Relay, OUTPUT);
}


Dit voorkomt in veel gevallen het schakelen van leds/relays bij het herstarten van een Arduino.

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Super bedankt! Zo simpel opgelost, ik ga het er meteen in zetten. Hoop morgen even tijd te hebben nu uit te vogelen wat een struct is. Mijn dank is groot!

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
CCJJVV schreef op dinsdag 11 december 2018 @ 16:03:
[...]


Wat TS doet werkt wel degelijk zie: https://www.arduino.cc/re...ors/greaterthanorequalto/. Het vergelijken van een string wordt gewoon gedaan op “Alfabetische” volgorde. Aangezien de tijd van groot (uur) naar klein(seconden) gaat gaat het in het geval van TS wel goed. Ga je het echter over datums hebben dan kan je niet de DD-MM—YY/MM-DD--YY notatie kunnen gebruiken en zul je moeten overstappen naar YY-MM-DD. Desalniettemin is het gebruik van een struct een stuk gebruiksvriendelijker en gemakkelijker en qua geheugen gebruik ook vele malen interresanter.
Inderdaad, en dan is "9" inderdaad groter dan "8", maar "10" op zijn beurt kleiner dan "9"... Niet helemaal goed dus :)

Bij 09 vs 10 werkt het dan wel weer goed, maar in het algemeen is een tijd in een string proppen niet echt een goed idee...

[ Voor 58% gewijzigd door Rowwan op 11-12-2018 21:58 ]


Acties:
  • 0 Henk 'm!

  • teaser
  • Registratie: April 2007
  • Laatst online: 01-10 08:04
Datum/tijd in ISO formaat (yyyy-mm-ddThh:mm:ss.ffffff) kun je perfect met string comparison je plan trekken. Zolang je genoeg geheugen beschikbaar hebt, geen high-performance toepassing implementeert en het bij vergelijken blijft (dus geen calculaties gaan doen met datum/tijd) zie ik geen enkel nadeel aan strings gebruiken.

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
Er zullen vast use cases zijn waar een tijd/datum in een string goed genoeg is. In dit geval wil hij uiteindelijk de RTC tijd vergelijken met een eigen tijd. In plaats van alles nodeloos naar een string te converteren, is het veel eenvoudiger om met een Time object te werken. Dit maakt het eventuele berekenen van duraties ook een stuk eenvoudiger.

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Nu online
teaser schreef op woensdag 12 december 2018 @ 09:45:
Datum/tijd in ISO formaat (yyyy-mm-ddThh:mm:ss.ffffff) kun je perfect met string comparison je plan trekken.
Ik had hier mijn twijfels bij, maar het lijkt toch mogelijk*. Operator >= doet een lexicographically compare.
Toch weer wat geleerd. :P

*mits iso8601

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Hallo,

Ik heb de 'struct' bekeken en ik snap het niet helemaal. Je kan met een struct dus meerdere functies i.e tijd functies in één struct functie plaatsen maar hoe lost dat mijn probleem van dat ik handmatig de tijd wil instellen die dan vervolgens op die ingesteld tijd wordt afgelezen op? Denk dat te hoog gegrepen is voor mij helaas.

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
Een struct heeft niks met functies te maken, maar is een data structuur. Je kunt dan groepjes variabelen maken.

Bijv.:
code:
1
2
3
4
5
6
struct MyTime
{
    int hours;
    int minutes;
    int seconds;
};


Zoek ook eens naar 'time_t' of 'DateTime', dit geeft je zeker wat tips de juiste richting op...

(Je kunt ook functies aan een struct toevoegen, maar lijkt me voor nu nog een brug te ver)

[ Voor 13% gewijzigd door Rowwan op 12-12-2018 21:46 ]


  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Hallo,

Ben er wat naar gaan zoeken, nu ben ik me zeker dat onderstaan code het stuk is om de tijd in te stellen. Maar snap ik niet alle onderdelen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
void serialSetTime()
{
  char buf[6];
  char tmp;
  int  cnt=0;
  int  h,m,s;
  
  Serial.print("Enter time in 24-hour format [hhmmss]: ");
  while (cnt<6)
  {
    while(Serial.available()==0) {};
    tmp = Serial.read();
    if ((tmp>='0') and (tmp<='9'))
    {
      buf[cnt]=tmp;
      cnt++;
      Serial.print(tmp);
    }
  }
  Serial.println();
  h = ((buf[0]-'0')*10) + (buf[1]-'0');
  m = ((buf[2]-'0')*10) + (buf[3]-'0');
  s = ((buf[4]-'0')*10) + (buf[5]-'0');
  if ((h>23) or (m>59) or (s>59))
    Serial.println("ERROR: Invalid time");
  else
  {
    rtc.setTime(h,m,s);
    Serial.print("New time set to ");
    if (h<10)
      Serial.print("0");
    Serial.print(h,DEC);
    Serial.print(":");
    if (m<10)
      Serial.print("0");
    Serial.print(m,DEC);
    Serial.print(":");
    if (s<10)
      Serial.print("0");
    Serial.print(s,DEC);
    Serial.println("...");
  }
}


Het deel met 'buf' wat uren, minuten en secondes worden gedaan lijkt erg op je struct voorbeeld heb alleen geen idee wat het betekend? Ik dacht de structuur van uren minuten secondes in het 00:00:00 format. Het laatste stuk is denk dat hij de 0 plaats bij bijv 07:04:09 in de tijd. Maar wat die 'tmp' is en 'cnt' op het begin geen idee.

Acties:
  • 0 Henk 'm!

  • -36-
  • Registratie: Januari 2009
  • Laatst online: 29-09 12:07

-36-

Trust me. I'm an amateur

Houd evt voor de grap ook is bij hoe vaak de arduino reboot. Zeker met dit soort systemen wil je geen schakelmomenten missen

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
Het grootste deel van je voorbeeldje gaat over het lezen en schrijven naar een seriele poort. De relevante code is niet zo heel erg groot.

Regel 9-18: leest 6 characters van de seriele poort. Op regel 11 blijft hij wachten todat de gebruiker iets intypt. Het karakter wat wordt uitgelezen (regel 12) wordt tijdelijk opgeslagen (vandaar 'tmp'; temporary). Als het tussen 0 en 9 zit wordt het opgeslagen in een string (char array). Je krijgt dus iets als "123456". 'cnt' is een tellertje die tot 6 wordt opgehoogd.

Op regel 21-23 wordt de ingevoerde string vertaald in losse integer nummers voor uren (h), minuten (m) en seconden (s).

Regel 28 is vervolgens het enige relevante stuk, deze zet de tijd in de RTC. De rels 29-41 zijn vervolgens inderdaad om de tijd weer af te drukken, en te prefixen met '0' waar nodig.

Acties:
  • 0 Henk 'm!

  • toekie
  • Registratie: Juli 2009
  • Laatst online: 01-10 19:44
Oh super nu snap ik dit tenminste heel erg bedankt! Mijn vader begon over 'modulo' en dat ik dat moest gebruiken, maar ik heb het gegoogled en ook dat lijkt me zeer omslachtig. Ik zal deze week wel even de erros posten die ik krijg, de meesten zeggen me helaas niets. Nogmaals bedankt voor deze uitleg, duidelijk en helder!

Acties:
  • 0 Henk 'm!

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 08:09
We zien de vragen wel weer voorbij komen... Nog even opgezocht wat voor ingewikkelds "modulo" de Arduino nu weer kon zijn, maar volgens mij bedoeld hij gewoon de modulo operator, de rest bij een deling dus :)
Pagina: 1