I2C connectivity for lcd screen and RTC clock circuit


I'd like to connect my AT24C32 Real Time Clock RTC I2C DS1307 Module with my I2C 2004 204 20 x 4 Character LCD Display Screen Module on an Arduino Uno (full specs at the bottom of this message).

I've been reading about the topic as it's my first shot at I2C but I still feel confused.

From what I can (barely) understand I need to connect the LCD screen and the RTC module in serie, however in some cases I need to add a pull up resistor as SDA and SCL are "open drains". Apparently it's not systematic as some modules already include the pull-up resistor.

I've looked at the specs of these two modules but I'm afraid I'm not too sure what to look for and I'm left uncertain regarding this pull-up resistor.

Here is what I believe the schematic should look like (thanks to http://cyaninfinite.com/tutorials/rtc-module-with-serial-lcd-display/:


Would you mind sending me feedback regarding the need of this pull-up resistor or if I'm safe to proceed with the aforementioned diagram?


Here are the specs of the RTC clock


Here are the specs of the LCD screen



Your diagram looks OK. The RTC and LCD are connected in parallel, not series. All SDA connected together, and all SCL connected together. The RTC module has the required pullups (R2 and R3) on the board so no othr pullups are needed.

I recommend the hd44780 library for the LCD. That library will auto detect the I2C address and LCD to I2C expander pin mapping making set much easier. Use the hd44780I2C_exp class.

Apparently it’s not systematic as some modules already include the pull-up resistor.

Only one set of pull-ups is needed. If more modules have pull-up resistors then their common value is like in parallel configuration. Fortunately, the range for pull-ups is wide enough so no problem to use more modules with pull-ups. Usable value is between 10k-1k. Recommended value is about 5k but as the bus is longer it is better to use smaller value.