DS3231 koppelen aan twee arduino's

Hoi allemaal,

Ik ben al avonden bezig, maar ik kom er maar niet uit..
Ik ben een woordklok aan het maken en maak gebruik van:

  • 1x ds3231
  • 2 arduino's
  • 1x ws2821
  • 1x LCD i2c (optioneel nog 'niet i2c', maar liever wel)
  • 3x buttons

Nu wil ik de tijd instellen zonder de klok (ds) aan de laptop te hoeven hangen etc, dus heb ik bedacht een LCD met buttons aan de arduino te hangen en op die manier de tijd te verzetten (zichtbaar op LCD).

Dus ik heb 2 arduino's, met 1 ds3231 (ik gebruik liever 2 arduinos):

  • 1 met programma die woordklok aanstuurt
  • 1 met programma om tijd aan te passen

Nu heb ik de twee arduinos gekoppeld aan elkaar (gnd en A4 en A5, waarbij ik de DS heb gekoppeld aan 1 arduino op SCL en SDA poorten) met jumpers. Dit lijkt te werken, alleen krijg ik veel storing op mn woordklok zelf en op het LCD scherm (af en toe rare tekens).

Zoals gezegd; ik ben al een mooie tijd aan het zoeken, maar ik kom er niet uit.
Waarschijnlijk is het met iets simpels op te lossen, maar ik zie het even niet.
Andere oplossing waarmee ik de ds voor beide arduinos kan gebruiken is ook meer dan welkom :slight_smile:

Weten jullie raad?

Alvast bedankt,
GeJeBe

Hoi GeJeBe, welkom.

Je hebt wel aardig wat woorden gebruikt om je probleem te vertellen, maar toch weet ik nu niet voldoende om er een goed antwoord op te geven (dat kan natuurlijk ook aan mij liggen).

Wanneer ik je goed begrijp, heb je een hoofd-Arduino die de woordklok vormt, en wil je met een dochter-Arduino de klok instellen.
Verder wil je ook alle communicatie via I2C laten verlopen.

I2C is oorspronkelijk bedoeld om intern in 1 apparaat te werken.
Dus in 1e instantie tussen verschillende chips op 1 print, maar ook tussen verschillende printen onderling, maar wel binnen de behuizing van 1 apparaat.
Dus dat betekent dat alles erop gemaakt is dat de te overbruggen afstanden klein zijn.
Wanneer je grotere afstanden gaat overbruggen met je data, is I2C niet de beste oplossing.
Maar ik weet dus helemaal niet of dat hier (al) van toepassing is.

Verder weet ik ook niet of je de 2 Arduinos een ander adres hebt gegeven en dat ze onderling hebben vastgesteld wie de baas is (er kan er maar 1 de baas zijn).

Op de Arduino boards zijn geen afsluit of pull up weerstanden aangesloten, van de andere onderdelen weet ik niet of ze die hebben en of ze misschien ingeschakeld kunnen worden.
Maar soms heb je dat nodig wanneer je meerdere I2C devices gebruikt.

Dit soort dingen kun je onder anderen laten weten door de betreffende codes te plaatsen, en door een tekening of foto te laten zien waar duidelijk is hoe een en ander aan elkaar hangt (een foto waarop dat goed te zien is, is lastig te maken kan ik uit ervaring zeggen).

Misschien is het lastig om die knoppen en display aan de woordklok toe te voegen, maar dat is uiteindelijk veel eenvoudiger dan met twee Arduino boarden te werken.

Met twee Arduino boarden die beide Master zijn op dezelfde I2C bus, dat gaat niet goed.
Ik zeg wel eens dat een multi-Master bus met Arduino boarden een sprookje is.

Pin A4 is hetzelfde als de SDA pin. En ook pin SCL is doorverbonden met A5.

je kunt dit prima met een arduino hoor, eerst zet je de tijd goed en daarna kun je alles verbouwen zolang je d batterij van de klok laat zitten blijft deze door lopen, zelfs als je een compleet ander programma in de arduino zet. Maar beide samen in een programma kan ook heel goed hoor.

Geen idee of je daar al aan gedacht had, maar wat als je de klok display een slave maakt, en je bediening de master ?
De master haalt de waarden uit de DS module en stuurt die door naar de klok display.
De master stelt de DS module in wanneer van toepassing, en gebruikt ook diens eigen display daarbij als interface naar de mens die op de knoppen zit te drukken.

Nogmaals, er kan maar 1 master zijn.

M&S zijn termen die zijn verbannen naar BSDM kelders...
MISO en MOSI zijn nu CIPO en COPI
Maar inderdaad, zet een arduino in als randapparaat (Pheripheral heet dat tegenwoordig in het Engels) door Wire.begin(0x..); hier een eigen adres te kiezen. De andere Arduino kan daar dan als gastheer (in het Engels heet dat vandaag de dag Controller of Host) mee praten.

Ook in BDSM kelders word dat geacht fout te zijn; ik doe niet mee aan die ongelofelijk overtrokken onzin.

1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.