Re-use change SPI pins - ATTiny84, DHT22, CCS811, RFM69

  • Hey Leute


    Intro

    Vorab, ich habe bis jetzt eigentlich null Plan von Elektrik aber dafuer einiges an Wissen was die Programmierung angeht, wenn auch in anderen Sprachen als C^^

    Vor ein bis zwei Jahren habe ich erfolgreich einen eigenen Temperatursensor nach dieser Anleitung zusammen geschustert. Ich habe jedoch ein RFM69C und kein 12er Modell genutzt. Nun ist mein Plan den Sensor etwas zu Pimpen und einen VOC Sensor mit einzubauen um eine Nachricht zu bekommen wenn man Lueften sollte. Als VOC Sensor have ich mich fuer den CCS811 entschieden da dieser mit 3V arbeitet, recht guenstig ist und ein simples Wiring vorzuweisen scheint (in einem Video reichten V, GND, SDA, SCL). Diesen Sensor habe ich mir in einem CJMCU-8118 PCB geholt.


    Problem

    Nun zu meinem Problem. Nachdem ich versucht habe mir einen Plan fuer die Lochplatte zu machen, fiel mir auf das die SDA und SCL Pins des ATTiny84 an anderer Stelle liegen als ich dachte. Die sind naemlich die gleichen wie MOSI und MISO (vermutlich offensichtlich fuer andere^^) welche der RFM69 schon nutzt.


    Hier einmal die Belegung des ATtiny84


    [Blocked Image: http://www.necromundo.de/blog/wp-content/uploads/2015/04/attiny84.png]



    Und hier mein bisheriger Plan




    Loesungsansaetze

    1. Mein erster Gedanke war fuer die SDA und SCL des CCS811 einfach andere pins zu nutzen und das der Bibliothek auch entsprechend beizubringen. Der Gedanke dahinter ist dass die Pins doch (meiner unwissenden Meinung nach) nur Wellen durch Stromimpulse senden und dies ja theoretisch ueber jeden Pin moeglich sein muss. Ich bitte um Aufklaerung ob das richtig ist^^


    2. Als zweiten Ansatz dachte ich an die doppen belegung der SDA/MOSI und SCL/MISO Pins des ATTiny84 durch den RFM und CCS811 chip. Jedoch denke ich waehrend ich das hier schreibe eher nicht mehr dass dies Moeglich ist da man Programmatisch nicht klar unterscheiden kann was da fuer Daten ankommen und an wen die geschickt werden. Man koennte also Register des falschen Chips ansprechen.


    Ich wuede mich sehr ueber Loesungsansaetze freuen, Aufklaerung meiner Fragen und natuerlich ueber jegliche Tipps wie ich Dinge besser machen kann :)



    Zusatz: In der Bibliothek TinyWireM wird von einem PullUp auf SDA und SCL gesprochen, was ich noch nicht richtig verstanden habe. Reicht es wenn ich die ueber einen solchen 4.7 kΩ oder 10 kΩ Widerstand anbinde? Zur not muss ich dahingehend noch mehr Lesen :)


    Vielen Dank im Vorraus


    MfG

    FragSalat



    Edited once, last by FragSalat ().

  • Lösungsansatz Nr. 1 ist der richtige. Du musst die Signale von SPI und I2C getrennt voneinander betreiben. SCL und SDA kannst du mit einem Software-I2C Treiber auf beliebige Ports des ATtiny legen. Wegen den Pull-ups musst du schauen ob diese nicht vielleicht schon auf dem CCS811 Board bestückt sind.


    Ob du Code für den DHT22 (auf deiner Zeichnung total falsch verdrahtet), das CCS811 Modul und den Code für den RFM69 zusammen auf den ATtiny84 bekommst wage ich zu bezweifeln. Wenn doch wäre ich an den Sourcen sehr interessiert!


    Auf deiner Zeichnung hast du das Pinout für einen RFM69HCW, ob deine Verkabelung so stimmt kann ich im Moment nicht beurteilen (bin gerade unterwegs), aber du musst aufpassen: das Pinning des RFM69CW (ohne H) ist komplett anders!


    Der Aufbau auf einer Streifenplatine ist im Prinzip möglich, aber wegen dem 2mm Raster des RFM Moduls mühsam und fehleranfällig. Besser ist es du besorgst dir fertige Leiterplatten wie das TinyTx3 oder TinyTx4. Ich glaube User daniu hat vor einiger Zeit TinyTx3 Platinen bestellt und hier im Forum zum Kauf angeboten.


    Noch besser ist es du verwendest einen Prozessor mit mehr Flash wie den AtMega328. Dann kriegst du dein Projekt auf jeden Fall ins Flash. Die Leiterplatten meines TiNo Projekts würden für dein Vorhaben perfekt passen. (Link zum TiNo Projekt folgt, aber du findest es leicht unter „abgeschlossene Projekte“).

  • Ok danke ich versuchs mal. Eine Version ohne CCS811 hat zumindest schon mal funktioniert und die Verkabelung scheint inzwischen richtig zu sein. Inzwischen habe ich auch eine Version mit CCS811 die sich zumindest kompilieren laesst und auf den Chip passt. Dafuer musste ich aber die Bibliothek etwas einstampfen (bin bei 8,110 / 8,192 bytes XD). Mal gucken ob das funktioniert^^

    Ich versuche es einfach erst mal ohne pull up auf dem breadboard und guck mir die Daten an, wenn ich denn welche bekomme.


    Das mit den TinyTx3 muss ich mir mal genauer angucken. Ich bin wie gesagt noch absoluter noob auf dem Elektro, Platinen und Mikrocontroller Gebiet.

    Dein Projekt sieht auch gut aus. Ich habe aber noch mehrere ATTiny84 vorraetig und guck erst mal ob es damit geht. Die 6€ die du erwaehnst halte ich auch fuer zu wenig wenn man nicht viele von den Teilen bestellt.


    Ich melde mich in ein paar Tagen mit den Updates :D