Eigenbau Bodenfeuchtesensor wireless, < 20€, v2

Begonnen von tante ju, 07 September 2016, 13:57:27

Vorheriges Thema - Nächstes Thema

juergs

Hallo Darness,
wie wärs mit einer kleinen Zusammenfassung, damit andere auch was davon haben?

Jürgen

darkness

#286
Na ich kann es ja mal versuchen.

Also Ausgangsproblem war, dass ich den fertig Zusammengebauten Bodenfeuchte Sensor hatte aber bisher noch nie einen Bootloader geflasht habe.

Zum Flashen habe ich mir einen Arduino Uno zugelegt.

Verbinden des Sensors mit dem UNO:

UNO --> Sensor

Pin 11 --> Pin 4
Pin 12 --> Pin 1
Pin 13 --> Pin 3
Pin 10 --> Pin 5
3.3V --> Pin 2
GND --> Pin 6

Zunächst muss der UNO mit dem ISP-Sketch geflasht werden. Zu finden unter Datei --> Beispiele --> ArduinoISP
Im Sketch musst ich die Zeile:

// #define USE_OLD_STYLE_WIRING in
#define USE_OLD_STYLE_WIRING

ändern.
Anschließend noch Sketch auf den Arduino laden.

Im nächsten Schritt habe ich das Bodenfeuchte-Sketch in der IDE (Version 1.8.2) geöffnet
Evtl. muss hier noch die MySensors Libary eingebunden werden. Die kann unter Sketch --> Bibliothek einbinden --> Bibliotheken Verwalten erfolgen.
Einfach im Suchfeld nach MySensor suchen. Wichtig ist, die Version 2.0.0 der Libaries zu installieren, da es sonst beim kompilieren zu einen Fehler kommt.

Zusätzlich benötigt man noch die Optiboot-Libarys um den Bootloader zur den Atmel 328p auswählen zu können
Weitere Infos dazu hier: https://github.com/Optiboot/optiboot

Einstellungen zum kompilieren des Sketches:

Board: Optiboot on 28 pin cpus
Prozessor: Atmega 328p
CPU-Speed: 8MHz(int)

Anschließen das Sketch kompilieren.
Wenn dies ohne Fehler abgeschlossen wurde über Sketch --> kompilierte Binärdatei exportieren die hex-Dateien erzeugen.

avrdude -c avrisp -p m328p -P /dev/ttyACM0 -b 19200 -e -U flash:w:"/home/darkness/Downloads/Bodenfeuchte_no_5_v2.4/Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex":i -U lfuse:w:0xE2:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m

(Viele der Einstellungen hat Tante Ju bereits in seinem Post hier  geschrieben)

Das Problem was ich noch habe:

Ein Sensor wird damit korrekt geflasht und funktioniert.
Beim zweiten bekomme ich:

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


Kann es sein, das der durch mein Testen evtl. abgeraucht ist?

Edit:

Kabel habe ich alle mehrmals geprüft und sogar ausgewechselt

tante ju

Zitat von: darkness am 02 April 2017, 19:39:53
Beim zweiten bekomme ich:

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


Kann es sein, das der durch mein Testen evtl. abgeraucht ist?

Edit:

Kabel habe ich alle mehrmals geprüft und sogar ausgewechselt

Es gibt verschiedene mögliche Ursachen:
Kalte Lötstellen
Falsche Fuses
Prozessor zerstört

Wobei letzteres eher selten ist. Die ersten beiden habe ich öfter gesehen.
Wenn es die falschen Fuses sein sollten, dann gibt es zwei Wege, dem Prozessor wieder zu beleben: Mit einem High-Voltage-Programmer (wenn z.B. der RESET Pin abgeschaltet wurde) oder aber mit externem Takt.
Für den HV-Programmer muß der aber aus der Schaltung ausgelötet werden.
Für einen externen Takt kannst Du entweder einen Quarz mit Kapazitäten anlöten, müsstest dazu aber die eingestellte Frequenz kennen, oder aber Du schließt ein Rechtecksignal 3V von ca. 4 MHz an XTAL1 an. 4 MHz sollte mit jedem Programmer laufen, kannst es aber auch mit 1MHz versuchen, die aus dem Oszi-Abgleichausgang kommen. Es muß nur größer als das 4fache des Taktes vom Programmiertakt sein. Dann sollte der Programmer den Prozessor auch wieder erkennen.

tante ju

Ich sitze hier gedanklich an der v3 mit Solarzelle. Der erste Testaufbau mit Goldcap funktionierte nicht so wie gedacht :-) Ok, sowas passiert.

Es scheint so, daß ich einen LiPo einbauen müsste und die typischen Laderegler sind nun nichts mehr für den Lötkolben. Ich frage mich, ob das nicht ein wenig zu viel des Guten wäre. Darüber hinaus braucht es schon eine ordentliche Solarzelle (für 8 Stunden Tag/16 Stunden Nacht).

Was sind eure Gedanken oder Vorschläge?

pc1246

Och wie schade!
Was heisst denn ordentliche Solarzelle? Ich habe mal irgendwo in China von so einem Franzosen eine Kiste mit Handy und Solarzelle grkauft, das ging eigentlich problemlos! http://www.solarcamlab.com/
Der sass allerdings auch in China irgendwie direkt an der Quelle! Naja wenn es nicht geht, dann waere fuer mich eigentlich wichtig, dass man Akkus verwenden kann! Evtl. muesste man dann auf zwei Zellen umruesten, wegen der Laufzeit. Dann haette man auch ein groesseres Gehaeuse, was wiederum den Einbau der Verschraubung vereinfacht, denn das war schon eher sehr schwierig!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

juergs

#290
Hallo Zusammen,
ich würde mich gerne dem Thema anschließen.

Problem: resultierende Gehäusegröße.

Fall-Beispiel: Akku + Solarzelle, einfache (verlustbehaftete) Kopplung über zwei Schottky-Dioden ...

tante ju

Zitat von: pc1246 am 04 April 2017, 19:45:28
Och wie schade!
Was heisst denn ordentliche Solarzelle? Ich habe mal irgendwo in China von so einem Franzosen eine Kiste mit Handy und Solarzelle grkauft, das ging eigentlich problemlos! http://www.solarcamlab.com/
Der sass allerdings auch in China irgendwie direkt an der Quelle! Naja wenn es nicht geht, dann waere fuer mich eigentlich wichtig, dass man Akkus verwenden kann! Evtl. muesste man dann auf zwei Zellen umruesten, wegen der Laufzeit. Dann haette man auch ein groesseres Gehaeuse, was wiederum den Einbau der Verschraubung vereinfacht, denn das war schon eher sehr schwierig!

Ich denke, ich mache mal einen anderen Thread auf, um hier nicht die zu verwirren, die nach v2 suchen. Stay tuned.


darkness

Zitat von: tante ju am 03 April 2017, 23:39:23
...oder aber Du schließt ein Rechtecksignal 3V von ca. 4 MHz an XTAL1 an. 4 MHz sollte mit jedem Programmer laufen, kannst es aber auch mit 1MHz versuchen, die aus dem Oszi-Abgleichausgang kommen. Es muß nur größer als das 4fache des Taktes vom Programmiertakt sein. Dann sollte der Programmer den Prozessor auch wieder erkennen.

Ich werd verrückt. Das hat geklappt.

Wobei ich weniger an deinen Ausführungen gezweifelt habe als an meinen Fähigkeiten :)

Vielen Dank. Läuft jetzt!

tante ju

Zitat von: darkness am 11 April 2017, 20:02:23
Ich werd verrückt. Das hat geklappt.

Wobei ich weniger an deinen Ausführungen gezweifelt habe als an meinen Fähigkeiten :)

Vielen Dank. Läuft jetzt!

Sehr schön zu hören. Glückwunsch.

limats

Hallo zusammen,

ist es eigentlich normal, dass die Messwerte stark temperaturabhängig sind?
Hatte gestern einen Wert von 2800 bei 1 Grad und 2400 bei knapp 20 Grad ein paar Stunden später. Die Feuchtigkeit dürfte sich mangels Regen in der Zeit nicht erhöht haben.
Wie lange sollte das Kabel eigentlich max. sein? Hab momentan ca. 1 Meter.

Viele Grüße
Leo
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

tante ju

Zitat von: limats am 25 April 2017, 21:25:35
Hallo zusammen,

ist es eigentlich normal, dass die Messwerte stark temperaturabhängig sind?
Hatte gestern einen Wert von 2800 bei 1 Grad und 2400 bei knapp 20 Grad ein paar Stunden später. Die Feuchtigkeit dürfte sich mangels Regen in der Zeit nicht erhöht haben.
Wie lange sollte das Kabel eigentlich max. sein? Hab momentan ca. 1 Meter.

Ja, die Feuchtigkeit im Boden ist temperaturabhängig. Das ist normal. Und am Morgen sind die oberen Schichten von der Nacht auch noch feuchter und trocknen, wenn es nicht regnet, im Laufe des Tages ab, besonders bei Erwärmung durch Sonneneinstrahlung. Etwas tiefer im Boden sollte es gleichmäßiger werden.

Die Länge der Leitung ist eigentlich nicht so wichtig, allerdings würde ich bei 1m Schluß machen. Immerhin ist das eine Kapazität, die den Wert beeinflusst.

Jewe

#297
Hallo,
inzwischen habe ich mir einen Nano zugelegt und damit konnte ich nach der Anleitung von  darkness den ISP-Sketch laden. Nun hänge ich am flaschen des sensors :

C:\Program Files (x86)\arduino-1.6.11\hardware\tools\avr\bin>avrdude -C ../etc/avrdude.conf -c avrisp -p m328p -P com7 -b 19200 -e -U flash:w:"Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex":i -U lfuse:w:0xE2:m -U hfuse:w:0xD9:m -U efuse:w:0xff:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.08s

avrdude: Device signature = 0x1e950f
avrdude: erasing chip
avrdude: reading input file "Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 11.13s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex:
avrdude: load data flash data from input file Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex:
avrdude: input file Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 6.69s

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0xE2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE2:
avrdude: load data lfuse data from input file 0xE2:
avrdude: input file 0xE2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.05s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xff"
avrdude: writing efuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.13s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xff:
avrdude: load data efuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.03s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x07 != 0xff
avrdude: verification error; content mismatch

avrdude: safemode: efuse changed! Was ff, and is now 7
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (H:FF, E:D9, L:E2)

avrdude done.  Thank you.


Ist das mit den Fuses jetzt gut so oder nicht ?


Jens

tante ju

Zitat von: jensweber am 25 April 2017, 22:04:25
Hallo,
inzwischen habe ich mir einen Nano zugelegt und damit konnte ich nach der Anleitung von  darkness den ISP-Sketch laden. Nun hänge ich am flaschen des sensors :

C:\Program Files (x86)\arduino-1.6.11\hardware\tools\avr\bin>avrdude -C ../etc/avrdude.conf -c avrisp -p m328p -P com7 -b 19200 -e -U flash:w:"Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex":i -U lfuse:w:0xE2:m -U hfuse:w:0xD9:m -U efuse:w:0xff:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.08s

avrdude: Device signature = 0x1e950f
avrdude: erasing chip
avrdude: reading input file "Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 11.13s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex:
avrdude: load data flash data from input file Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex:
avrdude: input file Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 6.69s

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0xE2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE2:
avrdude: load data lfuse data from input file 0xE2:
avrdude: input file 0xE2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.05s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xff"
avrdude: writing efuse (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.13s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xff:
avrdude: load data efuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.03s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x07 != 0xff
avrdude: verification error; content mismatch

avrdude: safemode: efuse changed! Was ff, and is now 7
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (H:FF, E:D9, L:E2)

avrdude done.  Thank you.


Ist das mit den Fuses jetzt gut so oder nicht ?

Ja, ist richtig. Ist ein Fehler in avrdude. Die nicht benutzten Fuses werden als 0 anstelle 1 angezeigt, daher die 0x07 anstelle 0xff.

Jewe

Zitat von: tante ju am 26 April 2017, 01:46:40
Ja, ist richtig. Ist ein Fehler in avrdude. Die nicht benutzten Fuses werden als 0 anstelle 1 angezeigt, daher die 0x07 anstelle 0xff.
Wobei ich das nicht verstehe?

Ich gebe das ein:

C:\Program Files (x86)\arduino-1.6.11\hardware\tools\avr\bin>avrdude -C ../etc/avrdude.conf -c avrisp -p m328p -P com7 -b 19200 -e -U flash:w:"Bodenfeuchte_no_5_v2.4.ino.with_bootloader.arduino_standard.hex":i -U lfuse:w:0xE2:m -U hfuse:w:0xD9:m -U efuse:w:0xff:m

Und hier steht :
avrdude: safemode: Fuses OK (H:FF, E:D9, L:E2)

Da sind die Fuses doch anders zurück gemeldet ?

Muss ich die fuses alle setzen oder nur die eine die Du in Deinem Post gesetzt hast (efuses)