2019-03-17T12:56:21

6temp → six temperature measurement points, one I2C device

Needed to measure 4 water temperature points, had created Arduino shield with I2C device using ATmega328 with color led temperature indication.


first there was a prototype

Soldered together the prototype hardware and wrote firmware and I2C library for it to be used in master Arduinos.

features:

  • I2C device
  • fixed positions readings of up to six 1-wire temperature sensors
  • visual indication of temperature or error using red(pwm)&blue(on-off) led


then Arduino UNO shield #1

Using KiCAD designed schematics and PCB:

Had to also create schematic libraries and footprints for Arduino UNO shield and Arduino Pro Mini along the way.

Sent this pcb to Aisler for manufacturing and it 100% matched the original Arduino UNO plastic holder - good job there:

features:

  • standard size UNO shield PCB
  • on-board R/B leds, each enabled/disabled by jumper

possible improvements:

  • some pin holes unusable due to being too close to Arduino Pro Mini pcb
  • 3x extra UNO pins skipped
  • no second row of UNO pin holes
  • 6 jumpers needed
  • labels only no one side of rgb/1-wire holes
  • sixtemp sensor serial cmd/debug pins only on top
  • could be made into a generic 6xPWN + 6xDigital pins shield


then Arduino UNO shield #2

Base on the experiences from the #1 version ^^^ created a new version.


Software

I2C slave sensor code is on GitHub with a long README. For it to work I created another two libraries: 1) Arduino-TextCMD that allows for easy defining text commands with callback functions suitable to send commands over the serial console. 2) Arduino-Uptime that allows to count uptime in seconds and check/trigger events based on seconds elapsed since timer set/reset.

I2C master (read-out) library code is on GitHub too.


What next?

Next version could be stand-alone, that is replacing the Arduino Pro Mini with a smd version of ATmega328.

The shield is not limited to measure temperature. It's basically Arduino UNO shield with I2C connected ATmega328 that has exposed pins on 2xIDC connectors and 1-wire connection. Indication leds can be soldered or skipped, resistors also and in that case when shortcut-ed there are 2 pin holes per microprocessor pin to connect something.