Entwicklung: Temperatur Funk Sensor

  • Hallo,


    jetzt stelle ich diese Frage noch einmal in diesem Thread.


    Ich würde auch gerne ein paar komplette Boards bestellen (Sammelbestellung).


    Was mich aber interessieren würde ist, ob man auch einen DHT22 (Nur Luftfeuchte) und 2-3 DS18B20 (Temperatur) gleichzeitig anschließen kann (Ich habe noch keine Entwicklungsumgebung um es zu testen).


    Wie ich gelesen habe, sind die kompilierten Sketch Größen:
    - DS18B20 ohne Verschlüsselung: 7.342 Bytes
    - DHT22 ohne Verschlüsselung: 5.254 Bytes


    Da hier viel Code nur einmal vorhanden sein muss, frage ich mich trotzdem ob ich dann mit 8KByte auskomme. Der DS18B20 benötigt ja schon 7.342 Bytes (2-3 gleiche Sensoren wohl nur unmerklich mehr), da bleibt ja nicht mehr viel übrig für den DHT22.


    Vielen Dank schon einmal im Voraus für die zukünftlichen Antworten ;-)

    Edited once, last by xtraman ().

  • Danke :thumbs1:


    Beim Transceiver Sketch wäre es interessant wenn man die SENDTO id über UART übergeben könnte - aber da stehe ich gerade irgendwie aufm Schlauch :s


    Also kann man da nicht anstatt

    Binäre Sketchgröße: 8.184 Bytes (von einem Maximum von 8.192 Bytes)[/spoiler]

  • "Was mich aber interessieren würde ist, ob man auch einen DHT22 (Nur Luftfeuchte) und 2-3 DS18B20 (Temperatur) gleichzeitig anschließen kann (Ich habe noch keine Entwicklungsumgebung um es zu testen)."


    Also ich habe hier einen DHT22 direkt an einem Raspi angeschlossen. Der DHT22 misst doch schon Temperatur UND Feuchte. Warum willst Du da noch zusätzlich einen DS18B20 anschließen? :s

  • Warum willst Du da noch zusätzlich einen DS18B20 anschließen? :s


    Ich vermute mal er möchte an einem Standort mehrere Stellen mit nur einem TinyTX abdecken.


    Da hier viel Code nur einmal vorhanden sein muss, frage ich mich trotzdem ob ich dann mit 8KByte auskomme.


    Wie gesagt: Wenn du es schaffst noch irgendwo 476 bytes einzusparen könnte es ggf klappen... Aber nur mit 1x DHT22 und 1x DS18B20


    Das Problem ist eben das die Libs am meisten Platz fressen und es kann zB schon einen Unterschied machen ob die activityLED anstelle der blinkLED Funktion verwendet wird, auch wenn beides das selbe machen würde - nicht blinkLED zu nutzen macht an nur einer Stelle im Code bereits ~20 bytes aus und das is bei nur 8.192 verfügbaren Bytes schon ne menge :(


    Vielleicht gibt es irgendwo noch abgespecktere Tiny Libs die weniger Platz benötigen - das weiß ich grad nicht.
    (mögliche Suche nach: Arduino tiny OneWire ... o.ä.)


    Wenn du nur auf den stromsparenden Watchdog verzichtest, fehlen aber weiterhin 198 bytes. Schmeißt man dann noch mehr Stromsparfunktionen raus fehlen weiterhin 144 bytes. :denker:


    Eventuell lassen sich meine Sketches auch noch etwas kleiner machen - das weiß ich zZt auch nicht.
    Oder wenn man anstatt wie von mir bisher vorgesehen Strings übermittelt, wieder zurück auf Binär geht, könnte das auch Platz schaffen... Aber dann muss das gesamte Netz darauf umgebaut werden und auch das Sensor.pl


    //EDIT:


    Wenn ich den Sketch hardcore kürze und alles unnötige (LED blinken, Stromsparen etc) raus werfe, fehlen aber leider weiterhin 70 bytes.


    Wenn ich dann aber annehme das du für den TinyTX eine stationäre Stromversorgung verwendest, wo diese nicht mit überwacht und somit auch nicht übermittelt werden muss, also die readVCC Funktion ebenfalls rausfliegen kann - DANN passt es!


  • Du kannst das sketchbook auch im Homedir des 'pi' Benutzers anlegen - musst dann aber die Einstellung in der ArduinoIDE entsprechend ändern..


    Die Send_*.ino und Receive_PI.ino findest in dem Beitrag zu den Sketches (ist im Index verlinkt)


    ArduinoIDE musst du neu starten nachdem du die attiny Dateien ins Sketchbook kopiert hast.


    Danke.


    Habe die attiny Dateien ins Sketchbook kopiert. Jedoch habe ich trotz Neustart von ArduinoIDE keine Auswahlmöglichkiet für den Attiny? Bekomme nur jede Menge Atmega angeboten. Habe die boards.txt und die beiden pins_arduino.h in die jeweiligen Verzeichnisse kopiert.
    Was könnte jetzt noch fehlen das es klappt?

  • Bezüglich dem Transceiver Sketch würde ich folgendes versuchen um die NodeId mitzugeben:


    Code
    while (mySerial.available() > 0){
    char inChar = (char)mySerial.read();
    inputString += inChar;
    }
    String nodeIdStr = getValue(inputString, ':', 0);
    String command = getValue(inputString, ':', 1);
    int nodeId = atoi(nodeIdStr);
  • Leider funktioniert das nicht ... getValue ist anscheint leider nicht für ATtiny's verfügbar, ebenso wenig wie splitString (was ich gestern auch schon probiert hatte):


    Code
    Transceiver_PI:111: error: 'getValue' was not declared in this scope
    Transceiver_PI:113: error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'



    Funktioniert meine oben genannte Variante denn nicht?

  • Merci. Habe die Attinys nun flashen können :thumbs1:


    Habe nun ein Problem, das ich beim Aufrufen der index.php die Meldung bekomme 'Need Input'. Scheint so als ob die SQLite Datenbank bei mir nicht angelegt wurde. Kann dies evtl an fehlenden Schreibrechten des Scripts liegen? Wie kann ich das prüfen?


    Der DB Pfad steht ja in der config.php '/tmp/.db.sensors'
    Der Pfad wird bei mir jedoch gar nicht angelegt und somit auch keine DB angelegt.

    Edited once, last by maxbauer ().

  • Habe bemerkt das ich momentan mit 864MHz Modulen des RFM12B arbeite. Muss ich dafür irgendwo Anpassungen vornehmen und wenn ja wo?


  • In den Sketches - lese die ersten 10 Zeilen, dann findest du das schon ...


    Frequenzband auf 868MHZ stellen müsste dann ausreichen?


    radio.Initialize(NODEID, RF12_433MHZ, NETWORKID);


    ändern in


    radio.Initialize(NODEID, RF12_8683MHZ, NETWORKID);

  • Ich habe mal eine Verständnis Frage.
    Welche Vor- oder Nachteile hat das Nutzen einer der folgenden beiden Libs in den Sketchen?
    #include <jeeLib.h> oder <RFM12B.h>
    Stromsparen?

  • Hmm ich weiß grad nicht wieso, aber mit JeeLib werden die Sketches kleiner :s
    Ich erinnere mich aber dunkel an die Anfänge der Entwicklung, wo es genau andersherum war: mit JeeLib waren die Sketches größer :denker:


    Send_DHT22_Watchdog.ino mit RFM12B lib --> Binäre Sketchgröße: 5.512 Bytes
    Send_DHT22_Watchdog_JeeLib.ino mit JeeLib --> Binäre Sketchgröße: 5.082 Bytes


    Send_DHT22_Watchdog.ino mit RFM12B lib & Verschlüsselung --> Binäre Sketchgröße: 7.154 Bytes
    Send_DHT22_Watchdog_JeeLib.ino mit JeeLib & Verschlüsselung --> Binäre Sketchgröße: 6.746 Bytes


    Send_DS18B20_Watchdog.ino mit RFM12B lib --> Binäre Sketchgröße: 7.590 Bytes
    Send_DS18B20_Watchdog_JeeLib.ino mit JeeLib --> Binäre Sketchgröße: 7.160 Bytes


    Send_DS18B20_Watchdog.ino mit RFM12B lib & Verschlüsselung --> ... 1012 bytes zu groß
    Send_DS18B20_Watchdog_JeeLib.ino mit JeeLib & Verschlüsselung --> ... 578 bytes zu groß


    Send_ReedSwitch_Watchdog.ino mit RFM12B lib --> Binäre Sketchgröße: 4.312 Bytes
    Send_ReedSwitch_Watchdog_JeeLib.ino mit JeeLib --> Binäre Sketchgröße: 3.870 Bytes


    Send_ReedSwitch_Watchdog.ino mit RFM12B lib & Verschlüsselung --> Binäre Sketchgröße: 5.954 Bytes
    Send_ReedSwitch_Watchdog_JeeLib.ino mit JeeLib & Verschlüsselung --> Binäre Sketchgröße: 5.534 Bytes


    Send_BMP085_Watchdog_JeeLib.ino mit JeeLib --> Binäre Sketchgröße: 6.266 Bytes
    Send_BMP085_Watchdog_JeeLib.ino mit JeeLib & Verschlüsselung --> Binäre Sketchgröße: 7.894 Bytes



    Funktion hab ich aber noch nicht geprüft





  • Ok,
    ich habe bei mir aktuell die jeelib drin, kam durch die Sketches von Nathan und von ps915 aus dem Reed-Switch Thread.
    Bei der Verfolgung hier bei Dir bzgl. watchdog etc. ist mir dann aufgefallen, dass Du die rfm12b lib nutzt.
    Werde die Sketches mit watchdog und jeelib bei Gelegenheit mal testen...

  • Kann mir einer bei folgendem Problem helfen?


    Beim Ausführen der Sensor.pl bekomme ich in der Konsole nur folgende Ausgabe:


    "Serial to PHP gateway for RaspberryPi with RFM12B"


    Eine weitere Ausgabe erfolgt leider nicht.
    Das Problem scheint an der folgenden Zeile zu liegen:
    my $line = trim(<SERIAL>);


    Ein print vor dieser Zeile wird noch ausgegeben, danach nicht mehr. Kann mir hier jemand helfen.

    Edited once, last by maxbauer ().