BH1750 Photosensor an TinyTX 4

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo!
    Ich will einen BH1750 an einen TinTX 4 anschließen und die Lichtstärke draußen messen (ist es hell, scheint die Sonne usw.).
    Der BH1750 hat eine I2C Schnittstelle und Arduino Treiber gibt es wohl auch
    vgl. http://www.mysensors.org/build/light.

    Meine Fragen:
    - Kann ich den BH1750 paralell zum RFM12 an den ATTINY84 anbinden?
    - Wenn nein, kann ich einen zweiten I2C Bus an ein paar freien Pins aktivieren?
    - Kommen sich die Treiber von RFM12 und BH1750 nicht ins Gehege?

    Schonmal danke für eure Antworten.

    Gruß

    Golmic:)

    Einmal editiert, zuletzt von golmic (19. Februar 2015 um 07:27)

  • I2C ist ein Bus-System, daher haben alle Geräte daran eine eindeuige Addresse, kommen sich also nur ins gehege, wenn man ähnliche Geräte benutzt (die sich dann unter gleichem Namen angesprochen fühlen). Ansonsten kannst du normalerweise merhere Geräte parallel an ein I2C hängen.
    Ein weiteren I2C Bus an anderen Pins zu aktivieren ist meistens komplizierter. Normalerweise sind die Pins schon von der Hardware her darauf ausgelegt, für andere müsste man dann wohl ein Teil Softwaremäßig lösen. Aber so wirklich kenne ich mich da jetzt auch nicht aus. Ist auch noch nie nötig gewesen, da normal ja Parallelbetrieb kein Problem ist.

  • Hi RyuKajiya!
    Nach Deinem Beitrag habe mich mir das noch mal angeschaut und festgestellt das mir ein Fehler unterlaufen ist. Der BH1750 (GY-302) hat einen I2C-Bus und der RFM12 einen SPI.

    Meine neuen Fragen jetzt:
    - Kann ich an einem ATTiny86 SPI und I2C parallel (an verschiedenen Pin) betreiben?
    - Hat schon mal jemand einen BH1750 an einem ATTINY84 angebunden?

    Gruß

    Golmic:)

    Einmal editiert, zuletzt von golmic (19. Februar 2015 um 12:23)

  • Hallo!

    Ich habe mir noch ein paar Gedanken zu dem Thema gemacht und möchte jetzt den RFM12B und BH1750 parallel betreiben, d.h. SPI und I2C-Bus werden über die gleichen Pin's angesteuert (Pin 7 und 9).
    Damit sie sich nicht gegenseitig stören, habe ich geplant die beiden IC's (RFM12B und BH1750) nur dann einzuschalten wenn auch wirklich gemessen oder gesendet werden soll, dies geschieht über die Pin 10/11.
    Bevor ich mich ans Löten und Programmieren mache (und mir ein Oskar oder LA für die Fehlersuche fehlt) wollte ich mal Eure Meinung hören und wissen wie Ihr die Sache einschätzt.
    Kann das gehen oder gibt es noch einen grundsätzlichen Denkfehler in der Lösung?
    Hier der Schaltplan:

    Gruß

    Golmic:)

  • Hi,
    das gehört imho zwar ins Microcontroller-Subforum aber sei's drum...
    Ich spul mal kurz auf Anfang ...
    Wie bzw. womit willst Du den Tiny programmieren?
    Wenn Du die Arduino IDE nutzt, müsste imho erstmal gechecked werden, ob diese Doppelbedeutung überhaupt unterstützt wird. Da wirst Du Dich wohl oder über an die Arduino-Vorgaben halten müssen.
    Ausser der Arduino IDE käme noch z.B. LunaAVR in Betracht.
    Ich habe jetzt das Datenblatt des Tiny nicht durchgeflöht ... aber da würden evtl. Restriktionen der Arduino-Umgebung nicht greifen und Du wärst flexibler ...

    Ich lass mir das Ganze aber noch mal im Detail durch den Kopf gehen ...

    cheers,
    -ds-

  • Hi,
    setze im Moment die Arduino IDE ein. Werde bei Gelegenheit (bin die nächsten Tage unterwegs) prüfen ob die beiden Treiber auf einem Port laufen.
    Anregungen und Vorschläge sind aber willkommen.

    dreamshader: Schon mal danke.

    Gruß

    Golmic:)

    Einmal editiert, zuletzt von golmic (10. März 2015 um 20:13)

  • Na alter Schwede ;) ...

    also rein theoretisch könnte das funktionieren.
    Die Pins von Port A können entsprechend über die Steuerregister eingestellt werden.
    Dürfte aber Tüftelarbeit werden ... möglicherweise ist da eine Art interner Reset diverser Register/Einstellungen nötig.
    Problematisch sehe ich allerdings nach wie vor den Einsatz der Arduino Library. Ich fürchte fast, da wirst Du generisch, also wie von mir schon mal vermutet z.B. über LunaAVR oder noch tiefer in Assembler, drangehen müssen (klassisches Beispiel ist für mich immer der externe IRQ, der beim Arduino nur auf Pin 2 und 3 unterstützt wird, wohingegen der AVR das auf allen I/Os unterstützt).

    Richtig tief in das Datenblatt eingelesen habe ich mich jetzt nicht. Die Dinger von Atmel sind immer so schwer verdaulich ;) ...

    Bin mal gespannt, wie das weitergeht ...

    cu,
    -ds-

  • Erstmal danke. :danke_ATDE:
    Werde aber erst nächste Woche dazu kommen mal was aus zu probieren.
    Fange dann mal mit der Arduino Lösung an, mal sehn was dann passiert.
    Werde dann wieder berichten.

    Gruß

    Golmic:)

  • Habe jetzt eine Lösung mit einem BM180 und BH1750 auf Basis eines TinyTX4 am Laufen :) .
    Diese habe ich mit Ardunio 1.6.5 und Einsatz der Libs

    C
    #include "pins_arduino.h"
    #include <JeeLib.h> // https://github.com/jcw/jeelib
    #include <PortsBMP085.h> // Part of JeeLib
    #include <RFM12B_tst.h>

    umsetzen können.
    Mein Problem war, dass JeeLib.h und RFM12B.h nicht zusammen laufen , da in der JeeLib auch die Definition für den rm12.h enthalten sind und damit die Buffer (rf12_buf) doppelt definiert ist (in JeeLib und RFM12B). Mein Workaround ist, dass ich die RFM12B (.h und .cpp) als neue Library mit neuem Namen für den Buffer (rf12_buf – jetzt als rf12_buf_tst) angelegt habe.
    Der BMP180 läuft ohne Änderungen mit der BMP085 Lib.

    Die Definition der Sensoren sieht wie folgt aus:

    Der Setup der Sensoren sieht wie folgt aus:

    Die Abfrage der Sensoren sieht wie folgt aus:


    Geht sicher alles noch viel schöner, aber bin zufrieden, dass es jetzt überhaupt schon mal läuft.
    Weitere Info's zum Ansteuern des BH1750 sind zu finden unter: http://jeelabs.net/boards/7/topics/2949?r=2964#message-2964


    Hier noch der Schaltplan wie ich die Sensoren an den TinyTX angeschlossen habe.

  • Abend Ich hab es ähnlich wie beschrieben versucht den BMP085 mit mit dem rfm12 und der jlib zum laufen zu bekommen. Leider bekomme ich beim Kompilieren eine fehlermeldung das i2c nicht vorhanden ist in der jeelib könnte es sein das die eventuell zu alt ist und ich eine neuer brauche. MFG

  • ... bin diese Wochenende Offline. Lade doch mal die letzte Jeelib von github.
    Wenn alles nicht hilft, kann ich dir nächste Woche mal meine per PM senden, melde dich dann bitte noch einmal.

    Gruß

    Golmic:)

  • Ich hab das Problem mit den I2C Beseitigen können.
    Ich bekomme jetzt leider noch diverse andere Fehlermeldungen .



    hast du da einen tip wie ich das beseitigen kann?

  • Indem Du den Funktions-Aufruf korrigierst ;)
    Sagt er Dir aber auch ...
    cu,
    -ds-

  • Indem Du den Funktions-Aufruf korrigierst ;)
    Sagt er Dir aber auch ...
    cu,
    -ds-


    Jup Hab ich jetzt auch zum laufen bekommen. Der BMP085 gibt auch vernünftige werte am Empfänger aus. Jetzt muss aber der DHT 22 noch dazu kommen. Sobald ich aber den Dazu nehme kommt am Empfänger leider nichts mehr an.
    Hier mal mein zusammen Geschnipselter sketch.



    kann mir irgend jemand nen tip geben warum nichts an kommt?
    MFG

Jetzt mitmachen!

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