Entwicklung: Temperatur Funk Sensor


  • Hier findet ihr das fertige Projekt wesentlich übersichtlicher: [Messen, Steuern, Regeln] Batteriebetriebene Funk Sensoren


    Vorläufige Zusammenfassung/Beschreibung der TinyTX4 Sender- und Empfänger-Platinen von der Sammelbestellung findet ihr in Beitrag#675


    Vorwort:

    Das hier ist nur der Entwicklungs-Thread in denen die Informationen gesammelt und Fortschritte usw gepostet werden

    Wenn das Projekt fertig entwickelt ist werde ich einen neuen Thread mit der entgültigen Version sowie alle benötigten Informationen erstellen!


    Nachfolgendes ist noch nicht fertig, möchte ich aber hier aus diesem Thread schon mal zusammentragen damits ein bischen übersichtlicher wird


    Ziel dieses Projekts ist es schnurlose Funk Sensoren, die über Batterien versorgt werden, zu betreiben und mit dem RaspberryPI die Daten zu empfangen sowie auszuwerten.

    Als Sensor kann man theoretisch so ziemlich alles verwenden, ob Temperature / Luftfeuchtigkeit oder Magnetschalter / ReedKontakt usw

    Das Projekt orientiert sich am TinyTX von Nathan Chantrell (auf der Seite findet ihr auch weitere Informationen zu verwendbaren Sensoren)


    Technische Grundlagen:

    Zur Funkübertragung habe ich mich für RFM12B Module entschieden da diese sehr klein, stromsparend, flexibel aber vorallem auch in Deutschland zulässig sind (und man auf bereits vorhandene Libs zurück greifen kann).
    Die Übertragung erfolgt dabei über das ISM-Band und wahlweise 433MHz oder 868MHz (zwei verschiedene Module).
    Das RFM12B hat eine Betriebsspannung von 2.2V bis 3.8V, funktioniert aber problemlos auch mit bis zu 6V und wird dadurch auch (angeblich) nicht beschädigt - habe es selber problemlos längere Zeit mit 5V betrieben aber keine negativen Auswirkungen feststellen können.

    Gesteuert wird das ganze über einen ebenfalls sehr stromsparenden Atmel Microcontroller Chip ATtiny84A-PU der ebenfalls sehr klein und stromsparend ist. Man könnte aber auch einen Atmel Mega nutzen wenn man zB mehr Speicher oder Pins benötigt.. Aufgrund der begrenzten Flash-Speichergröße (8 kB) des ATtiny84A können die Sketches leider nicht allzu umfangreich ausfallen, für die hier genutzten Zwecke ist es aber ausreichend
    Der ATtiny84A hat eine Betriebsspannung von 1.8V bis 5.5V .. Da er hiefür aber mit 8 MHz betrieben werden muss liegt die Betriebsspannung bei 2.7V bis 5.5V

    Als Stromversorgung verwende ich 3 x AA Batterien, die im geladenen Zustand eine Spannung von ca. 4.5V liefern (eine hat 1.5V). AA Batterien sind eine bessere Wahl als AAA, denn damit ist ein längerer Betrieb möglich da die eine höhere Kapazität haben.
    Im leeren Zustand beträgt die Spannung einer Batterie noch etwa 0.9V bis 1.0V, was also bedeuten würde das bei 3 Batterien noch eine Spannung von ca. 3V angezeigt werden würde.. Das RFM12B Module benötigt mindestens 2.2V und der ATtiny64A mindestens 2.7V - demnach wäre es mit 3 Batterien noch im grünen Bereich. Allerdings nimmt dann selbstverständlich die Reiche ab, da nicht mehr genug Ampere zur Verfügung stehen.. Deshalb plane ich auch ein Hinweis in die Graphen-Page einzubauen sobald ein Sensor längere Zeit keine Daten mehr übertragen hat, denn die Sensoren übermittelt zusätzlich zu den eigentlichen Werten auch die aktuelle Spannung ihrer Stromversorgung (Supply Voltage). Dadurch liese sich erkennen wann die Batterien ausgetauscht werden müssten..

    Bei den Sensoren sollten Digitale bevorzugt werden da man dann keinen Analog-to-Digital-Wandler benötigt und dies somit auch weniger Code und Strom benötigt.

    Zusätzlich zu den oben genannten Bauteilen benötigt man auch noch ein paar Widerstande und Keramik-Kondensatoren, sowie einen Sockel für den ATtiny Chip, ein bischen Kabel und einen Kupferdraht für die Antenne des RFM12B Modules. Um das alles irgendwie zusammen zu löten verwende ich eine Streifenrasterplatine.


    Hinweise:

    • Nach einigen Tests scheint der Empfänger unbedingt die NodeID 22 haben zu müssen damit es funktioniert! Wieso das so ist konnte ich bisher nicht herausfinden. Die Sender können aber nach belieben eine NodeID von 1 bis 30 haben (also insg. 29 Sender)
    • Wichtig ist auch die Wahl der richtigen Batterie, was sowohl Größe (AA oder AAA) als auch Kapazität betrifft. Es muss auch darauf geachtet werden das die maximalen Spannungen der hier verwendeten Bauteile nicht überschritten werden. Also die Anzahl der Batterien nicht über 3 liegen sollte, da die Batterien in Reihe geschaltet werden und sich somit die Spannung addiert (zB 3 x 1,5V = 4,5V). Wie lange die Batterien halten hängt aber natürlich auch vom Intervall der Datenübermittlung ab: Alle 60 Sekunden oder alle 300 Sekunden macht schon einen nicht zu unterschätzenden Unterschied aus.
    • 10µH Drosseln (Spulen) sind in ihrer Bauform so groß wie Widerstände. In den AVR-Eingangsbeschaltungen werden sie nur benötigt, um Störimpulse zu unterdrücken (tiefpassfilter) .

    Die Reichweite

    Oft werde ich gefragt: “Wie weit gehen die denn?” Diese Frage lässt sich nicht mit einer einfachen Angabe von x km beantworten.

    Die erzielbare Reichweite aller Funklösungen ist hauptsächlich abhängig von der Antenne, Antennenaufstellungsort, Empfängerempfindlichkeit, Sendeleistung und der Frequenz.
    Auf die Empfängerempfindlichkeit haben wir meist keinen Einfluss.. Wir konzentrieren uns also auf die Antenne und die Frequenz.
    Für mobile Lösungen setzen wir kurze (ca.50 mm) oder lange (100 bis 200 mm), auf die Frequenz abgestimmte Stabantennen ein. Die Antennen sollten möglichst parallel angeordnet sein, was aber beim Kopter meist nicht der Fall ist.
    Wenn es weiter reichen soll müssen wir bei der Bodenstation mit einer Richtantenne arbeiten. Bei einem Modul mit 25 mW Leistung auf 868 MHz können wir damit die Reichweite von ca. 800 m auf über 4 km erhöhen.

    Bei der Frequenz gilt: je tiefer desto besser.

    Zum Beispiel ein XBee mit 100mW auf 2,4 GHz sieht alt aus, verglichen mit 10 mW auf 433 MHz. Hier haben wir bei der Wahl der Module den größten Einfluss auf die erzielbare Reichweite.

    Die maximal erlaubte Sendeleistung ist länderspezifisch.
    Die maximale zugelassene Sendeleistung mit einem Duty cycle von 100 % beträgt bei 433 MHz ERP 10 mW, bei 868 MHz dürfen es 25 mW sein.

    Mit dem 433 MHz Funkmodul lassen sich, aufgrund der besseren Ausbreitungsbedingungen, enorme Reichweiten erzielen. Aber auch das 868 MHz Modul schlägt das 433Mhz Module in der maximalen Reichweite.

    Es gibt Module für die ISM Frequenzen 433/470/868 und 915 MHz. Hier in Europa sind allerdings nur die Frequenzen 433 MHz und 868 MHz interessant bzw zugelassen.


    Ein paar genauere Details zu den RFM12 Modulen kann man auch hier (auf Englisch) nachlesen: http://blog.strobotics.com.au/2008/06/17/rfm12-tutorial-part2/
    Oder hier ein Vergleich zwischen RFM12, RFM22 und RFM23: http://blog.strobotics.com.au/2009/07/30/int…-to-the-rfm12b/


    Nachfolgend noch mal eine genaue Bauteil-Liste der benötigten Teile:

    pro Sender-Sensor:

    Basis:

    • Atmel ATtiny 84V-10PU (Low-Voltage) - oder besser: ATtiny 84A-PU (Pico-Power) .. plus Sockel (um die AVR Chips später ggf neu programmieren zu können)
    • RFM12B Funkmodule (433Mhz oder 868Mhz, 2.2V-3.8V)
    • 2x AA / AAA Batterie Halter für ATtiny 84V-10PU, oder 3x AA / AAA für ATtiny 84A-PU
    • Streifenplatine: 15 x 16 Löcher
    • Plastikgehäuse (50x50x20mm müsste theoretisch reichen)
    • Kupfer/Klingel-Draht für 165mm lange 1/4W Antenne (allgemeine detailierte Beschreibung)
    • 1x 10µH Spule zwischen 5V und AVcc [für bessere Messwerte]
    • 2x 100nF Keramikkondensator zwischen GND und Vcc (Pin 11 und 10) und zwischen AVcc und GND (30 und 31) [für bessere Messwerte]

    Je nach verwendetem Sensor:

    • DS18B20 - Digital Temperatur Sensor + 4,7k Ω Widerstand
    • DHT22 - Digital Temperatur&Luftfeuchtigkeits Sensor + 10k Ω Widerstand (liefert bei einer Spannung unter 2,96V falsche Werte)
    • TMP36 - Analog Temperatur Sensor, ohne Widerstand (2,7V - 5,5V). Wichtiger Hinweis zum TMP36 > hier <.
    • BMP085 - Digitaler Temperatur & Luftdruck & Höhen Sensor (1,8V - 3,6V) (liefert genauere Werte als DHT22)
    • LDR - Analoger Licht Sensor (Fotowiderstand) + 10k Widerstand

    Optional:

    • 3 pol Buchsenleiste - oder 3 pol Stiftleiste plus Pfostenstecker ... für austauschbaren Sensor
    • 2 pol Buchsenleiste - oder 2 pol Stiftleiste plus Pfostenstecker ... für austauschbaren Widerstand


    Empfänger:
    Bei dem Empfänger würde ein Sensor und somit auch die Spulen wegfallen, aber trotzdem sollten die Kondensatoren auch hier verbaut werden. Zusätzlich werden aber auch noch 2x 10k Ω Widerstände benötigt


    Antennenlänge, sowie ein Bild zur Verlötung des RFM12B Modules auf eine Streifenrasterplatine wird > hier < beschrieben.


    Reichelt Warenkorb für 5 Sensoren - exkl. AVR & Sensor & Funkmodule: http://www.reichelt.de/?ACTION=20;AWKID=821034;PROVID=2084 .. Warenkorb-Kosten: 17,51eu plus 5,60eu VSK

    Ansonsten die Bauteile einzeln bestellen, nachfolgend eine kleine Ansammlung:

    5x ATtiny 84A-PU über eBay für insg. 6,99eu plus 1,80eu VSK ... einer kostet dann 1,758eu inkl. VSK
    Alternative:
    ATtiny 84A-PU über guloshop.de .. für je 1,00eu plus 2,40eu VSK ... bei 5 Stück würde einer 1,48eu inkl. VSK kosten (2,40eu VSK bis 10eu Warenwert, über 10eu: 4,80eu VSK)

    10x IC Sockel 14 polig über ebay für 1,00eu plus 1,75eu VSK


    DS18B20 über amazon [Anzeige] ... 5 Stück für 6,79eu inkl. VSK

    DHT22 über eBay .. für je 4,48eu inkl. VSK

    TMP36 über eBay .. 2stk. für insg. 3,53eu plus 1,85eu VSK


    RFM12B 433Mhz Transceiver Sende Emfangs Modul über eBay .. für je 6,45eu plus 0,95eu VSK .. 5 Stück würden 38,70eu kosten (plus 1x VSK)
    RFM12B 868Mhz Transceiver Sende Emfangs Modul über eBay .. für je 6,45eu plus 0,95eu VSK
    Alternativ:
    6x 433Mhz von JeeLabs für insg. 29,50eu (einzelpreis normalerweise: 6,50eu) plus 3eu VSK .. einer kostet dann 5,416eu inkl. VSK
    6x 868Mhz von JeeLabs für insg. 29,50eu (einzelpreis normalerweise: 6,00eu) plus 3eu VSK

    oder:
    RFM02 433Mhz Transmitter Sende Modul über eBay .. für je 4,85eu plus 0,95eu VSK .. 5 Stück würden 24,25eu kosten (plus 1x VSK)
    RFM02 868Mhz Transmitter Sende Modul über eBay .. für je 4,85eu plus 0,95eu VSK


    Es gibt verschiedene RFM12 Module also Vorsicht:

    RFM12B von HopeRF -> http://www.hoperf.com/rf_fsk/fsk/21.htm
    Die haben eine Betriebsspannung von 2.2V bis 3.8V

    RFM12 von Pollin -> http://www.pollin.de/shop/dt/Njg4OT…fangsmodul.html
    Die haben eine Betriebsspannung von 2.2V bis 5.4V

    Beide Module haben aber laut Datenblatt eine maximal zulässige Vdd Spannung von 6V


    Kupferdraht über eBay, 1x10m (0,80mm²) .. für 1,69eu plus 1,90eu VSK

    100nF Keramik Kondensatoren über ebay ... 20 Stück für 1,88eu inkl. VSK
    oder:
    100nF Keramik Kondensatoren über ebay ... 100 Stück für 3,09eu inkl. VSK

    10k Ω Widerstände über ebay ... Metallschicht, 100 Stück für 2,79eu plus 1eu VSK
    (ob Kohleschicht oder Metallschicht ist relativ egal. Metallschicht haben eine niedrigere Toleranz, sind höher belastbar und geringeres rauschen aber mittlerweile nur minimal teurer als Kohleschicht..)

    AAA Batterien über Pearl ... 20 Stück für 3,90eu ... Spannung: 1,5 V , Kapazität: 1250 mAh
    oder
    AA Batterien über Pearl ... 20 Stück für 3,90eu ... Spannung: 1,5 V , Kapazität: 2800 mAh

    2x AA Batterie-Halter geschlossen mit Ein-/Aus-Schalter über amazon [Anzeige] ... für 1,15eu
    3x AA Batterie-Halter geschlossen mit Ein-/Aus-Schalter über amazon [Anzeige] ... für 2,10eu

    3x AAA Batterie-Halter geschlossen mit Ein-/Aus-Schalter über amazon [Anzeige] ... für 2,19eu
    3x AAA Batterie-Halter geschlossen über amazon [Anzeige] ... für 1,38eu

    10x Single Reihe Stift- und Buchsenleiste über amazon [Anzeige] ... für 4,98eu


    Kosten für ein Sender-Sensor (berechnet für insg. 5 Module) liegt zwischen 12,43eu und 16,79eu (jenachdem wo oder was man aus der obigen Liste bestellt)

    Für die Sender gäbe es auch fertige (nackte) Platinen die man aber erst in Auftrag geben müsste und Verhältnismässig viel kosten: http://www.circuits.io/circuits/1932 ... 3 x nackte PCB's für $15,21 inkl. VSK

    Oder nachfolgendes lesen bzw nach dem Quote: (wäre wesendlich günstiger aber ist eben auch etwas umständlicher)

    Zitat


    If you want to get PCBs made up I can recommend the Chinese site SeeedStudio, for 10 boards in green (other colours are more expensive) it costs 9.90 USD + shipping which worked out at £9.01 including UK delivery (90p each) and it will only take a couple of weeks. They don’t take Eagle files directly but Eagle can export the Gerber files that they need and they have an Eagle design rules file that makes it easy to check that your board fits with what they are capable of producing and a job file for the Gerber export to make sure everything is setup correctly for them. It’s still worth double checking the resulting Gerber files in a viewer such as Gerbv to make sure everything has come out as intended, I found that some of the silkscreen text that looked fine in Eagle had overflowed the board in the Gerber files. If you don’t want to get 10 boards made up you could always build the stripboard version or the guys at Circuits.io were also kind enough to import the Eagle files into their site for me so you can order boards in a pack of 3 from them for $14.67 plus $5 for international shipping. Unfortunately they don’t support adding text to the silkscreen so you will lose all the labelling with their boards. I’m not selling any boards myself at the moment but might have something in the pipeline soon.

    Siehe dazu auch > hier < bzw im folgenden Spoiler:

    Spoiler anzeigen

    Über http://iteadstudio.com
    Oben im Menü auf OPEN PCB dann links auf PCB prototyping anschliesend:
    PRICE: $0.00 - $9.99
    PCB QUANTITY: 10 pcs
    Smaller than 5cm x 5cm
    Und dann rechts auf ADD TO CART ... anschliesend:

    nqz6uh5g.pnghttp://imall.iteadstudio.com/im120418001.html

    Es kommen dann noch $3,90 Versandkosten für den Standardversand hinzu - also insg. $13,80 für 10 nackte Platinen

    Nach Bestellung erhaltet ihr eine Bestätigungsmail.
    Nun müsst ihr leider die Eagle Dateien vom Empfänger noch in Gerber Dateien umwandeln (wie das geht wird hier beschrieben (runter scrollen bis 'Gerber Files' erwähnt wird) - oder die RFM2Pi_rev3_gerber.zip von mir nutzen)
    Vom Sender (TinyTX v3) gibt es bereits Gerber Dateien.

    Anschliesend die Gerber Dateien, von der PCB die ihr haben wollt (entweder, oder) in einem gepackten Zip mit folgenden Dateinamen an die Adresse pcb@iteadstudio.com mailen:

    <eure.OrderID>_pcb.zip

    Ersetzt dabei <eure.OrderID> mit eurer OrderID also zB: 0123456789


    Leider kann man pro Order nur jeweils Sender oder Empfänger beauftragen - wer also die Empfänger-Platine haben möchte muss sich 10 Stück davon anfertigen lassen!

    Wenn ihr "Open Source" auf Yes gestellt habt, bedeutet das dass ihr 10 eurer bestellten Platinen kriegt und eure 2 zusätzlich jemand X-beliebiges der auch bei ITeadStudio bestellt - ihr kriegt stattdessen 2 andere Platinen (ich hab zB einmal Arduino Leonardo und ein mal Iteaduino BT 1.1 gekriegt - nur die Platinen - ohne Aufpreis).
    Alle Platinen sehen übrigends sehr gut und hochwertig aus.


    Zitat


    Prototyping PCB Order Steps:
    1. Purchase Prototyping PCB Service from depot and check out.
    2. An order number will be provided in confirmation email from iStore (info@iteadstudio.com)
    3. Send the gerber file to pcb@iteadstudio.com with the order number in title - this file will be processed and please make sure it's your final design.
    4. If the file and design meets requirements, they will be processed and shipped in 4-6 days, and we will not reply you. If the files have any issue pcb@iteadstudio.com will contact you.

    Hier meine EMail die ich schrieb:

    Zitat


    My Order Numer: ...

    I've selected "Open Source: Yes" so i'll guess to get 2 additional pcs

    Please use the attached Files:
    1 x PCB of: ...__1_PCS.zip (RFM2Pi_rev3)
    11 x PCBs of: ...__11_PCS.zip (tinytx3)

    If this is not possible than please inform me befor you process
    Thanks!


    Den Receiver kann man auch fertig bestellen: http://shop.openenergymonitor.com/rfm12pi-v2-ras…xpansion-board/ für 20,78eu plus 4,15eu VSK ...
    Oder: http://jeelabs.com/products/rfm12b-board für 11,50eu plus 3eu VSK (funktioniert nur mit Arduino's!)

    Oder mit den selben Bauteilen wie für den Sender selber löten, nur das kein Sensor verbaut wird ;)


    Zum Programmieren der ATtiny 84A-PU AVR's entweder den RaspberryPI benutzen
    Oder: Arduino UNO rev3 über eBay .. für 12,99eu inkl. VSK (funktioniert besser, schneller und ist bequemer)

    Wie, steht weiter unten..


    Stripboard Plan für Sender Sensoren:

    Spoiler anzeigen

    tinytx_stripboard_ds18b20.png


    Stripboard Plan für Empfänger:

    Spoiler anzeigen


    Zum flashen des ATtiny84a (mit 14 Pins) über den RaspberryPI folgendermassen über ein Steckbrett verkabeln:
    (unbedingt den RPI ausschalten zum verdrahten! (spannungsspitze an RESET kann den Chip beschädigen)

    AVR RESET (pin4) --> GPIO-8 (pin24)
    AVR SCK (pin9) --> GPIO-11 (pin23)
    AVR MOSI (pin7) --> GPIO-10 (pin19)
    AVR MISO (pin8) --> GPIO-9 (pin 21)
    AVR VCC (pin1) --> 3V3
    AVR GND (pin14) --> GND

    Anschluss-Plan:

    Spoiler anzeigen

    5m92lh3xfbn.png

    quelle: http://blog.stevemarple.co.uk/2012/07/avrard…mmer-using.html

    • Benötigte Pakete installieren:

      Code
      wget http://project-downloads.drogon.net/files/avrdude_5.10-4_armhf.deb
      wget http://project-downloads.drogon.net/files/avrdude-doc_5.10-4_all.deb
      
      
      dpkg -i avrdude_5.10-4_armhf.deb
      dpkg -i avrdude-doc_5.10-4_all.deb
      
      
      apt-get install arduino git-core gcc-avr lxde
    • Optional: Signatur des Chips prüfen:

      Code
      avrdude -P gpio0 -c gpio -p attiny84
    • Folgende Verzeichnisse erstellen:

      Code
      mkdir -p /root/sketchbook/hardware/tiny/variants/tiny8
      mkdir -p /root/sketchbook/hardware/tiny/variants/tiny14
      mkdir -p /root/sketchbook/libraries
    • RFM12B lib laden:

      Code
      git clone https://github.com/LowPowerLab/RFM12B /root/sketchbook/libraries/RFM12B
    • JeeLib laden:

      Code
      git clone https://github.com/jcw/jeelib /root/sketchbook/libraries/JeeLib
    • arduino-tiny-0150-0018.zip laden und entpacken:

      Code
      cd /root/sketchbook/hardware/
      wget http://arduino-tiny.googlecode.com/files/arduino-tiny-0150-0018.zip
      unzip arduino-tiny-0150-0018.zip && rm arduino-tiny-0150-0018.zip
    • Folgende Dateien anlegen:

      • /root/sketchbook/hardware/attiny/boards.txt

      • /root/sketchbook/hardware/attiny/variants/tiny8/pins_arduino.h

      • /root/sketchbook/hardware/attiny/variants/tiny14/pins_arduino.h

    • Standardmässig öffnet ArduinoIDE ein Sketch unter /usr/share/arduino/ , also am besten einfach die Send.ino und Receive.ino dort hin kopieren.
    • Unter LXDE -> ArduinoIDE starten und besagte Dateien öffnen
    • In ArduinoIDE auf das Menü Tools -> Board gehen und dort ATtiny84 (internal 8 MHz clock) auswählen
    • In ArduinoIDE auf das Menü Tools gehen und dann auf Bootloader installieren (damit wird er auf 8 MHz eingestellt - nur einmal nöitg)
    • In ArduinoIDE auf das Menü Datei -> Einstellungen gehen und dort einstellen: Ausführliche Ausgabe anzeigen während: [x] Kompilierung
    • Auf den "abgehakt" Haken klicken (Überprüfen)
    • ..Leider wird das *.hex File in ein zufällig erstelltes Verzeichnis in /tmp/ abgelegt. Da dies also bei euch anders lautet macht ihr einfach folgendes um den Code auf den ATtiny zu flashen:

      Code
      avrdude -P gpio -c gpio -p attiny84 -U flash:w:/tmp/build*/Receive.cpp.hex -v


    dragoner2k hat herausgefunden wie man den Sketch über den RaspberryPI anschließend auch direkt über ArduinoIDE flashen kann:

    In der /usr/share/arduino/hardware/arduino/programmers.txt die folgenden Zeilen einfügen:

    Code
    gpio.name=Raspberry Pi GPIO (on-board)
    gpio.communication=gpio
    gpio.protocol=gpio


    dann kann man die ATtiny's mit der Direktverdrahtung flashen.


    Zum flashen über einen Arduino wie zum Beispiel den UNO unter Windows:

    Benötigt wird ArduinoIDE und WinAVR

    Vor dem flashen müsst ihr euren ArduinoUNO noch zu nem ISP machen, das geht wie folgt:

    • ArduinoIDE starten
    • Datei -> Beispiele -> ArduinoISP
    • Es öffnet sich ein neues Fenster in dem ihr folgendes macht:
    • Tools -> Board -> Arduino Uno
    • Tools -> Programmer -> AVR ISP
    • Anschliesend auf den "Pfeil nach rechts" klicken (Upload)

    Dann zunächst http://arduino-tiny.googlecode.com/files/arduino-tiny-0150-0018.zip herunterladen und den darin befindlichen Ordner "tiny" in euren Sketchbook Ordner nach " hardware " entpacken:
    Euren "Sketchbook Ordner" könnt ihr wie folgt festlegen:

    • ArduinoIDE starten
    • Datei -> Einstellungen
    • Ganz oben: Sketchbook Speicherort zum Beispiel auf C:\Sketches ändern (Verzeichnis muss existieren)

    In eurem Sketchbook Ordner muss es folgende Verzeichnisse geben:

    • hardware

      • tiny
    • libraries

      • RFM12B
      • JeeLib
      • DHT22


    Die Libs könnt ihr auf folgenden Links herunterladen:
    https://github.com/LowPowerLab/RFM12B/archive/master.zip
    https://github.com/jcw/jeelib/archive/master.zip
    https://github.com/nethoncho/Ardu…hive/master.zip

    Nun müsst ihr leider noch mal in den Ordner " hardware\tiny\avr\ " gehen und die Datei " Prospective Boards.txt " in -> " boards.txt " umbenennen

    Wem das zu kompliziert ist kann auch einfach mein Sketchbook verwenden ;)

    Zum Kompilieren und Hochladen des Sketches geht ihr wie folgt vor.
    Einmalig:

    • In ArduinoIDE auf das Menü Tools -> Board gehen und dort ATtiny84 (internal 8 MHz clock) auswählen
    • In ArduinoIDE auf das Menü Tools -> Programmer gehen und dort Arduino as ISP auswählen
    • In ArduinoIDE auf das Menü Datei -> Einstellungen gehen und dort einstellen: Ausführliche Ausgabe anzeigen während: [x] Kompilierung
    • In ArduinoIDE auf das Menü Tools gehen und dann auf Bootloader installieren (damit wird er auf 8 MHz eingestellt - nur einmal nötig)


    Anschliesend:

    • Entweder auf den "abgehakt" Haken klicken (Überprüfen) - damit wird der Code kompiliert
    • Oder zum kombinierten kompilieren und anschliesenden Hochladen auf den "Pfeil nach rechts" klicken


    Anschlussplan zum Flashen des ATtiny84 über einen ArduinoUNO:

    Spoiler anzeigen
    • Arduino 5V an ATtiny84 Pin 1 (VCC +)
    • Arduino GND an ATTiny84 Pin 14 (GND -)
    • Arduino Pin 10 an ATtiny84 Pin 4 (Reset)
    • Arduino Pin 11 an ATTiny84 Pin 7 (Pin 6, PWM, Analog Input 7)
    • Arduino Pin 12 an ATTiny84 Pin 8 (Pin 5, Analog Input 5, PWM, MISO)
    • Arduino Pin 13 an ATTiny84 Pin 9 (Pin 4, Analog Input 4, SCK)


    Wer mit der RFM12B lib einen Sketch kompilieren möchte muss die RFM12B.h anpassen und zwar so:
    Zeile 202:

    Code
    void SendStart(uint8_t toNodeId, const void* sendBuf, uint8_t sendLen, bool requestACK=false, bool sendACK=false, uint8_t waitMode=SLEEP_MODE_STANDBY);


    Ändern in:

    Code
    void SendStart(uint8_t toNodeId, const void* sendBuf, uint8_t sendLen, bool requestACK=false, bool sendACK=false, uint8_t waitMode=SLEEP_MODE_PWR_DOWN);

    Zeile 204:

    Code
    void Send(uint8_t toNodeId, const void* sendBuf, uint8_t sendLen, bool requestACK = false, uint8_t waitMode=SLEEP_MODE_STANDBY);


    Ändern in:

    Code
    void Send(uint8_t toNodeId, const void* sendBuf, uint8_t sendLen, bool requestACK = false, uint8_t waitMode=SLEEP_MODE_PWR_DOWN);


    Offensichtlich ist das WinAVR (von 2008) welches bei ArduinoIDE dabei ist, fehlerhaft

    Die Lösung ist relativ einfach:

    • Ladet euch die aktuelle WinAVR-Suite (aktuell von 2010) von SourceForge herunter, installiert sie z.B. nach C:\WinAVR
    • Benennt den Ordner “avr” im Verzeichnis “C:\Program Files (x86)\Arduino\hardware\tools” in “avr.old“ um
    • Erstellt das Verzeichnis “avr” neu und kopiert dorthin alle Dateien und Ordner unterhalb von C:\WinAVR\
    • Aus dem alten und umbenannten Ordner “avr.old“ muss nun noch das Verzeichnis “etc“ ins neue kopiert werden (genauer gesagt die avrdude.conf)


    Danach funktioniert auch das kompilieren der Sketches wieder!


    UART:
    Die UART-Schnittstelle wird bei Raspbian wheezy standardmässig als serielle Konsole genutz. Damit die UART-Schnittstelle genutzt werden kann, ist diese Funktion zu deaktivieren...

    Dazu in der Datei /boot/cmdline.txt folgende Parameter löschen:

    Code
    console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

    Anschliessend sollte die Zeile wie folgt aussehen:

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

    Ausserdem muss in der Datei /etc/inittab folgende Zeile durch voranstellein eines # auskommentiert werden:

    Code
    # T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


    Anschliesend rebooten und dann kannst du UART verwenden


    quelle: https://asciich.ch/wordpress/uart…berrypi-nutzen/


    Sketches für Sender und Receiver, sowie die benötigten Scripts auf dem RaspberryPI zum speichern und auswerten der Daten


    Receiver_PI.ino:

    Spoiler anzeigen

    Send_DHT22.ino:

    Spoiler anzeigen

    Send_TMP36.ino:

    Spoiler anzeigen

    Send_DS18B20.ino

    Spoiler anzeigen

    Send_ReedSwitch.ino

    Spoiler anzeigen

    Auf dem RaspberryPI muss dann noch folgendes eingerichtet werden:

    Vorraussetzung für nachfolgendes ist:

    Code
    apt-get update
    apt-get install apache2 php5 php5-gd php5-sqlite
    apt-get install libdevice-serialport-perl libwww-mechanize-perl libproc-daemon-perl


    Das Perl Script welches die Daten vom UART entgegen nimmt und an ein PHP Script weiterreicht:
    Sensor.pl


    Dann muss ein Verzeichnis im apache2 Webroot sowie dort ein paar PHP Script angelegt werden:

    Code
    mkdir /var/www/Sensor


    Hier die erwähnten PHP Scripts: (v0.3: add.php , index.php , functions.php , config.php )
    Sensor_php_v0.3.zip
    Ich arbeite aber bereits an v0.5 mit Graphen usw ;)

    -> Hier findet ihr v0.5: https://www.forum-raspberrypi.de/Thread-entwick…=54921#pid54921


    Anschliesend sicherstellen das der apache2 Benutzer in den Verzeichnissen auch schreiben darf:

    Code
    chown -R www-data:www-data /var/www/Sensor/


    Dann das Sensor.pl ausführbar machen und anschließend ausführen:

    Code
    chmod +x Sensor.pl
    ./Sensor.pl


    Sender und Empfänger Module einschalten und anschliesend den RaspberryPI WebServer ansurfen:

    Code
    http://raspberrypi.ip/Sensor/

    Dann sieht das in etwa so aus:

    Spoiler anzeigen

    kvgdir61stct.png

    Die Temperature Werte sind bei mir aber noch falsch.. Und so super toll sieht die Tabelle vielleicht auch noch nicht aus - aber es funktioniert soweit zumindest schon mal :D


    Damit die Sensor.pl im Hintergrund weiter läuft muss noch ein Programm installiert werden:

    Code
    apt-get install screen

    Anschliesend würdet ihr das Script dann wie folgt starten können:

    Code
    screen -dmS sensor /path/to/Sensor.pl

    Also zum Beispiel: screen -dmS sensor /root/Sensor.pl


    Desweiteren ist es ratsam ein Watchdog einzurichten, der jede Minute überprüft ob das Sensor.pl Script noch läuft und falls nicht wird das Script neu gestartet:
    nano watchdog_Sensor.sh && chmod +x watchdog_Sensor.sh


    Dann den watchdog in die Crontab eintragen. Wer anstatt vi lieber nano benutzen möchte gibt ein mal vorher export EDITOR=nano ein und ruft anschliesend den Befehl zur bearbeiten der Crontab auf:

    Code
    crontab -e


    Der Eintrag sähe dann zum Beispiel so aus:

    Code
    * * * * *  /root/watchdog_Sensor.sh >/dev/null 2>&1


    Extra Display:

    Als Touchscreen Display benutze ich das 2,8" wie es > hier < aufgelistet wurde. Kostet zZt ca. 10,77€ über eBay inkl. VSK

    Dabei handelt es sich um das HY28B Display wie es auch > hier < aufgeführt ist, also ein 8-bit SPI was allerdings ein Rastermaß von 2mm hat! Man kriegt dort also nicht ohne weiteres normale Steckbrett-Kabel drauf gesteckt da dafür der Abstand zwischen den Pins zu knapp ist - aber auch hierfür gibt es eine einfache Lösung: Adapter: Rastermaß 2.0mm auf 2.54mm

    Die Installation bzw Einrichtung habe ich > hier < beschrieben

    Das Script fürs Touchscreen Display findet ihr > hier <


    Die Installation für ein Display ohne Touch, wie ich für das zuvor erwähnte Tiny.py Script genutzt habe, hab ich > hier < beschrieben (2,2" 8-bit SPI für ca. 4€ inkl. VSK)


    Links:

    Bezüglich dem RFM12B Module von Seegel-Systeme:
    https://www.forum-raspberrypi.de/Thread-entwick…=92650#pid92650
    https://www.forum-raspberrypi.de/Thread-entwick…=91356#pid91356
    https://www.forum-raspberrypi.de/Thread-entwick…=92915#pid92915

    History:

    - Send_ReedSwitch.ino hinzugefügt
    - Display-Beschreibung hinzugefügt

  • Hallo zusammen,

    sowas suche ich auch schon lange, nachdem sehr preiswert eine Riesenauswahl an diversen Wetterstationen mit Aussenfühlern zur Verfügung steht.
    Man müsste Protokoll, Modulationsart, etc. kennen - das ist leider nirgends dokumentiert. So "einfach" wie bei den fernsteuerbaren Steckdosen ist es nicht und eingefleischte Hacker haben daran scheinbar kein Interesse. :(

    Deshalb hilft vermutlich nur Eigenbau:
    - kleiner ATMEL uC mit Temperatursensor
    - 433 MHz bzw. 2,4 GHz Funkmodule (Transceiver) jeweils am Atmel und am RPi

    Was brauchbar Fertiges zum angemessenen Preis habe ich noch nicht gesehen.

    Gruß, mmi

  • http://www.watterott.com/de/Wixel-Progr…Wireless-Module

    Der Baustein hat 6 analoge Eingänge z.B. für MCP9700A Temperaturfühler, es gibt einen Stromsparmodus, der aber vom Lieferanten nicht direkt ermöglicht wird, keine Bibliotheken dafür mitgeliefert. Programmierung erfolgt in C. Überbrückbare Entfernung ca. 13 m, selbst versucht, ca. 9 m im Gebäude. Es lassen sich direkt Batterien anschließen ohne Spannungsregelei.

  • Hallo meigrafd,

    ich hab meinen Vorschlag ja oben schon geschrieben.

    Deine Links habe ich mal überflogen, entweder sehr teuer oder nur Teil einer Lösung.
    Ein kleiner Atmel kostet ca. 1 -2 EUR, dazu die 433 MHz Module und den Temperatursensor. Macht insgesamt ca. 10 -12 EUR.

    Wie so ein AVR (Atmel) programmiert wird - ok, da muss man sich einarbeiten. Aber alle anderen Lösungen sind exotisch und (von den sehr teuren mal abgesehen) nicht einfacher.

    Gruß, mmi

  • Naja aber du erwähntest leider nicht welches 433 MHz Module, da gibts leider auch verschiedene... Und wie man die Module zusammen bringt entzieht sich bisher auch meiner Kentniss :-/

    Wie das ungefähr funktionieren könnte weiss ich - aber was im Detail alles tatsächlich benötigt wird, sowohl materiell als auch nötiges wissen :huh:


    In dem Link zum raspberrypi.org Forum wurde das auch diskutiert und da sind im 2. , 3. und 4. Post auch wie ich finde sehr interessante Links - vorallem das mit den Solar Modulen damit der Sensor auch 24/7 ohne Wartung funktionieren würde

  • Sinn meiner Antworten sollte ja nur sein, auf eine gute sowie preiswerte Lösungsmöglichkeit aufmerksam zu machen. Die fertige Lösung habe ich - leider - auch nicht. ;)

    Wenn man mit dem AVR arbeiten möchte:
    Gute Tipps wird man in diversen Arduino Foren finden (siehe z.B. https://forum-raspberrypi.de/www.arduino.cc).
    Mit einem Arduino liesse sich aufgrund der grossen Community am besten in die AVR Welt einsteigen, dort findest Du auch z.B. die geeigneten Funkmodule, etc.

    Die anderen Lösungen sind nach meiner Erfahrung die schwierigeren - lasse mich aber gerne eines besseren belehren. ;)
    Gruß, mmi


  • Sucht mal nach funky und ds18b20, dass ist eine super Lösung! Hat ein Engländer auch auf seinem blog vorgestellt

    Das hab ich oben in Post#5 ja bereits verlink - hast du damit Erfahrungen oder weisst dazu mehr?

  • Ich würd gern dieses Projekt nochmal hervor holen und an dieser Stelle fragen ob jemand eine Teile-Liste für den Funky3 (oder Funky2) hat oder mir eine erstellen könnte?

    :danke_ATDE:


    PS: Ich hab auch noch das hier gefunden: http://nathan.chantrell.net/20120707/using…umidity-sensor/
    Aber dazu leider auch keine Teile-Liste finden können :(
    Oder http://harizanov.com/wiki/wiki-home/tinysensor/ aber kA ob das damit was zu tun hat :huh:


    /EDIT: Am Ende von http://nathan.chantrell.net/tinytx-wireless-sensor/ werden einige Teile aufgeführt

  • Also wenn ich das Richtig verstehe brauch man, für so ein ähnliches Module wie die Funky, folgendes:

    tinytx_stripboard_ds18b20.png

    Meine Frage an dieser Stelle wäre ob man statt des DS18B20 auch ein DH22 nehmen könnte?


    Und als zweites: Ob man unbedingt einen solchen Sender/Empfänger für den Raspberry nehmen muss: http://shop.openenergymonitor.com/rfm12pi-v2-ras…xpansion-board/
    oder ob es da vielleicht etwas günstigeres gäbe?


    Und als letztes: Muss man den ATtiny84 verwenden? Und wie programmiert man den IC?
    hab hier was von SPI gelesen aber noch nicht so wirklich verstanden :s

  • Tach meigrafd, alter Schwede ;) ...

    naja, ganz so einfach ist das nicht :).
    Der ATTiny ist ja ein µC von ATMEL - da bräuchtest Du den Source-code oder zumindest das Hex-File mit dem Progamm, damit das läuft.
    Da ist aber dann die Sensor-Abfrage schon kodiert - das kannst Du nur ändern, wenn Du die Sourcen hast.
    Das Hexfile kannst Du dann mit Luna oder der gcc-Toolchain selbst erzeugen.
    Programmieren kann man den Käfer mit dem RPi über SPI (hab ich hier mal irgendwo als Tut abgelegt).

    Alles in allem ein Ansatz, den ich nicht weiter verfolgen würde.

    Alternativ dazu - und das würde ich eher bevorzugen - wäre der Einsatz eine Arduino.
    Da gibts ja mittlerweile diverse versionen vom Nano bis zum Duemille oder wie der heisst.
    Der kann direkt über USB Programmiert werden.
    Sketches zum Handling aller möglichen Peripherie-Teile sind vorhanden.
    Was bliebe, wäre aus den vorhandenen Code-Snippets ein Programm zusammen zu frickeln und gut ist.

    cheers,
    -ds-

  • dreamshader ;)

    Kann ich dafür jeden X-beliebigen Arduino verwenden um so einen ATtiny zu programmieren?
    Also reicht dafür so ein SainSmart Nano V3 :huh:

    Oder benötigt man mindestens ein UNO R3 :huh:

    Oder muss es sogar ein ATMEGA16U2 Mega2560 R3 sein :huh:

    Was würdest du mir empfehlen? :)

  • Hi auch,

    nö ... Du brauchst keinen ATTiny zu programmieren. Man nehme einen Arduino (Nano oder sonstwas), ein beliebiges Funk-Sendemodul (oder evtl. einen Transceiver) und einen Temperatur-Sensor.
    Dann schliesse man das Funkmodul und den Temperatur-Sensor an den Arduino, suche sich die passenden Sketches zusammen und bastle daraus ein passendes Programm. Das wirderum kann dann direkt mit der Arduino IDE auf den Arduino geladen werden. ... Fäddisch

    -ds-

  • Und was ist mit der Stromversorgung?

    Ich möchte wie gesagt Temperatur-Funk Module die ich mit Batterien/Akkus irgendwo "ablegen" kann - also zum Beispiel eines drausen, eines in der Garage und ein paar in der Wohnung... Aber da will/kann ich nicht überall Kabel hin verlegen

    Deshalb suche ich eben nach Möglichkeiten solche "mobilen" Temperatur Sensoren zu basteln - wenn ich dafür jeweils ein Arduino Nano kaufen müsste, wäre das denk ich viel zu teuer :huh:


    Die Anleitung zum Batteriebetriebene-Funk-Temperatursensoren, die streen1 gepostet hat ist schon nicht schlecht, allerdings fehlt da leider auch welche Funk Module der verwendet oder wie das dann zusammengebaut wird oder wie die Programmierung aussieht :(

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!