Mehr Bugfixes und 2 Updates

Nachdem viel getestet wurde die letzten Wochen gibt es ein größeres Update für den MiniControl und DIY Minimalistik Controller.
Viel hat sich nicht getan da hauptsächlich bugfixes drin sind. Ich werde die auch mal langsam protikulieren müssen und änderungen festhalten… Ich komme leider zu zu wenig im moment. Aber das Wichtigste:

Config hat sich geändert:
// Neu zuordnung der Pins für Dosierung
const int dosingPins[]={DOSE1,DOSE2,DOSE3,DOSE4};

Hier werden Die Pins angegeben wie Sie zugeordnet sind im Pin Mapping. WICHTIG: Dose1 Ist der Pin/Klemme nahe der LED Buchsen. Hier gibt es bei der Platinenversion1.1 nen Missverständniss durch den Aufdruck.
// Milliliter per minute in Reihenfolge wie Pumpen oben
const int dosingMlMin[]={60,60,60,60};

Das Array ist zum Eintragen der ml/Minute. Erster Wert steht dabei für die erste Pumpe/Pin aus dem dosingPins array. Für jede Pumpe/Pin ist ein Wert drin und es sollten genauso viele Werte hinterlegt wwerden wie unter #define PUMPCOUNTS angegeben ist.
PUMP dosing[] = {
{get_ts(0,2,0),1,"D1",0,30},
{get_ts(0,3,0),1,"D1",1,50},
{get_ts(0,4,0),1,"D1",2,70},
{get_ts(11,26,0),0,"D4",3,3},
//{get_ts(11,23,0),0,"D3",2,3},
//{get_ts(11,28,0),0,"D1",0,5},
};

Wert für ml/Min wurde entfernt. Die Werte stehen für: Uhr, Aktive, Name, Pin (auch wieder bezogen auf dosingPins=> 0 ist erster Wert, sprich DOSE1), Mililiter pro Düngung.
// byte ManLightState[]={70,70,70,70,70,70,0,0};
Ist grade noch im Test. Hierbei kann man nachher auf Taste 0 des Keypads ne voreingestellte helligkit abrufen.

Mit dem Update werden hauptsächlich Bugs behoben wie:
Dosiermengen über 30ml gehen nicht,
Eichung funktionierte nicht,
Keypad war an Dosierzeiten gebunden. Wer 2 zeiten für eine pumpe definiert hat konnte mit A und C die gleiche Pumpe steuern (unlogisch…)
wiedermal versucht paar bytes zu sparen…

Möchte mich dabei noch Herzlichst bei Stefan bedanken dass er fleißig testet und mir beim debuggen geholfen hat.

In kürze werden dann auch alle Anleitungen nochmal überarbeitet.

Beide Code versionen findet Ihr unter

https://github.com/MajorMadness/aquagrow-diy-minimalistik-aquarium-controller
https://github.com/MajorMadness/AquaGrowDosingTime
bzw. Als Release zip unter https://github.com/MajorMadness/aquagrow-diy-minimalistik-aquarium-controller/releases
und eingebunden in die fertige Arduino IDE unter https://github.com/MajorMadness/ArduinoIDE

Arduino Probleme mit China clones

Wo viel getestet wird tauchen auch viele Probleme auf. Auf eins welches in direkter Verbindung mit dem Nano ist, ist nun bei Stefan W. aufgetaucht:

Wenn ich Spannung auf die Platine gebe (egal ob 6V oder 12V) und den Nano per USB an meinen Rechner anschließe, wird der Nano nicht erkannt. Wenn ich alles ohne Spannung anschließe, ist der Nano ohne Probleme ansprechbar. Allerdings scheitert es dann schon beim ‚I2Cscanner‘. Es wird nix gefunden. Dabei spielt es keine Rolle, ob Keypad und/oder LCD angeschlossen sind, oder nicht. Test des Tempsensors hingegen funktioniert. Die anderen Tests funktionieren nicht.

Tja, wir haben paar mal geschrieben und versucht das Problem zu beheben, allerdings ohne Erfolg. Stefan war aber hartnäckig und ist dem Problem weiter nach gegangen:

Wir konnten das Problem auf einen Kurzschluss zwischen A5 undf GND eingrenzen. Nachdem er dann mit einem Uno statt Nano die Platine in funktion geprüft hat war klar das diese Fehlerfrei läuft. Zum Glück hat er das Problem aber auch finden können und die Lösung ergoogelt:

Das mit dem Nano hat mir keine Ruhe gelassen und ich habe im Netz das hier dazu gefunden:

„Das Problem: die Schaltungs-Entwickler des Nano 3.0 haben einfach vergessen eine Leitung in ihren Schaltbild einzumalen. Und zwar schreibt FTDI vor, dass man den TEST-Pin (Pin 26) vom FTDI-Chip zwingend auf Masse legen muss. Genau das haben die Entwickler vergessen zu beachten. Folglich habe alle gebauten Nanos diesen Fehler. Wenn man den Test-Pin auf Masse klemmt, sollte genannter Fehler verschwinden. Jedenfalls wird das im Netz berichtet…“
Und genau das war der Fehler! Man muss nur 2 Pin’s des FTDI-Chips auf dem Nano wie auf dem Bild verbinden und schon funktioniert es.

image

Was bleibt mir mehr zu sagen als DANKE Stefan fürs finden und beheben dieses Fehlers! Ich muss aber selber noch anmerken das es bei 6 verschiedenen Nano’s bei mir noch nie passiert ist. Es scheint also ein sehr seltener Fehler zu sein der nur bei gewissen Nano Herstellern auftaucht…

Update über den Arduino IDE upload

Nur eine kleine Notiz zwischendurch:

Unter https://github.com/MajorMadness/ArduinoIDE/archive/master.zip steht nun ne volle Arduino IDE V1.0.5 zum download bereit. Hier ist auch bereits der DIY Sketch als Beispiel hinterlegt. ( Datei/Beispiele/DIY Minimalistik Controller)
Dies öffnet direkt den Sketch der geändert ABER nicht gespeichert werden kann. Beim klick auf Speichern gibt es eine Warnmeldung und dann kann man einen neuen Ort angeben. dies garantiert aber das alle benötigten Dateien an diesem Ort sind. Zukünftige Updates des Controller Codes müssen nur an den gleichen Ort verschoben werden.

Ich hoffe dies hilft wieder mehr Leuten besser mit dem DIY Projekt zurecht zu kommen.

10 mal abgeschnitten und immer noch zu kurz…

Kennt Ihr den Satz? Ich auch. *grins

Mittlerweile haben einige den Controller in betrieb und so kommt auch immer mehr Rückmeldung. Dabei tauchen auch kleine Fehler auf die mir nicht aufgefallen sind, Ich aber dokumentieren möchte bevor ich sie fest ändere und somit auch ein bugfixen ohne komplettes löschen des Codes möglich ist.

1.: in der datei keypad.ino Zeile 35:
if(dimming[chanel].level==1){
dimming[chanel].level=0;
ledDriver.setLEDOff(chanel*2);
ledDriver.setLEDOff(chanel*2-1);
manualLight=true;
}else if(dimming[chanel].level==0){
dimming[chanel].level=1;
ledDriver.setLEDOn(chanel*2);
ledDriver.setLEDOn(chanel*2+1);
manualLight=true;
}

Wichtig hierbei die Zeile „ledDriver.setLEDOff(chanel*2-1);“. Es muss heißen
ledDriver.setLEDOff(chanel*2+1);

2.: Das manuelle Dimmen durchs Halten der Taster (wie hier beschrieben:
http://aqua-grow.de/jetzt-wird-es-ernst/) funktioniert gar nicht. -> Ja es musste leider deaktiviert werden durch speicher Probleme… Hoffe das es später mal wieder kommt.

3.: Die ausgabe im Serial Monitor ist wärend der Programmierung geändert, aber nicht dokumentiert wurden. Ich werde versuchen mal ne etwas sinnigerere Ausgabe zu schrteiben und diese dann ein zu bauen.

4.: Die LEDs sollten sich über den Serial Monitor einstellen lassen. Hier scheint es aber ein kleines Problem zu geben welches ich nicht genau gefunden habe. Verantwortlich ist die Zeile 29 aus Serial.ino:
case 2:
pin= input.substring(2,3).toInt();
val= input.substring(4,7).toInt();
setLED(pin,4095-int(val*40.95));
manualLight=true;
Serial.print(pin);
Serial.print(F(" -> "));
Serial.println(4095-int(val*40.95));
break;

Eigentlich stimmt der code. wenn man „2=2:90“ an den Controller schickt sollte dieser mit „2 -> 409“ antworten und dann auf 90% Licht dimmen. evt hilft ein verschieben der Zeile „manualLight=true;“ vor setLED(); (eins nach oben), ich werde das aber noch genau untersuchen und dann schauen.

5.: Wo wir bei den LEDs sind: Ich möchte nochmal drauf hinweisen das der Controller 16 Kanäle dimmen kann ABER nur 8 unabhängig von einander. Das heist Kanal 1 und 2 haben immer die gleiche Schaltzeit, zustand ect. Gleiche auch 3/4,5/6,7/8,…,13/14,15/16.

6.: Wo wir beim dimmen sind: Die Dimmzeit kann man nicht beeinflussen. Das kommt daher das der Contoller IMMER dimmt, von einem zum anderen wert. Also sagen wir um 10uhr habt ihr 20% eingestellt und um 11 soll es hell sein (100%) dann dimmt der von 10-11 von 20% zu 100%. bis 16uhr soll es so hell bleiben, dann 2 stunden runterdimmen: Dafür müsst ihr 16uhr mit 100% erneut angeben und dann 18uhr mit 10 oder 0%. In der Zeit von 11-16 „dimmt“ der controller von 100% zu 100%, ergo er ist immer ganz an. Die Dimmzeit ist also nur die Spanne zwischen einer Uhrzeit und der anderen. So könnt ihr aber auch ne „Kurvendimmung“ machen: (bisschen pseudocode)
10->0%
11->10%
12->30%
13->70%
14->100%
15->0%
19->100%
22->0%
Jetzt dimmt der 4 Stunden, erst langsam, dann schnell ein, eine stunde wieder auf 0, 4 stunden wieder auf ganz hell und 3 stunden langsam runter auf 0%.

Dann hat mir Stefan noch nen schönes Bild geschickt von seiner Lampe beim Testen des Controllers, welches ich finde sieht sehr gut aus und daher möchte ich es euch nicht vor enthalten:

IMG_20140701_215920