Data Logger Pin Conflicts? Arduino + SD/RTC Shield + Wifi

This question is looking for help choosing hardware and avoiding pin conflicts for a data logger.

I would like to build an Arduino-based data logger to monitor soil moisture and soil temperature for citrus trees in my backyard. The concept is similar to the work published for "A Low-Cost Electronic Tensiometer System for Continuous Monitoring of Soil Water Potential." It will be solar/battery powered.

The finished product needs to:- Measure data from sensors every ~5 minutes.

  • Log data to SD card with timestamp

  • Connect to home Wifi network (WPA2 security)

  • Send tiny amount of data over Wifi to website using GET/POST string

  • Go to sleep to conserve power until next sensor measurementMost of the code samples seems fairly straightforward, but I'm having trouble choosing hardware. From reading, it seems that I will need to:

  • choose an Arduino board to use,

  • find a compatible SD/RTC shield,

  • find a compatible Wifi shield/chip (ESP8266-based?),

  • and make sure they can all work together?Can anyone jump in to give me a few suggestions or point me in the right direction for hardware combinations and avoiding the conflict issue? Thank you!

More details of the project below if it helps:


I anticipate having at least 20 sensors: 8 soil moisture tensiometer sensors and at least 12 temperature sensors.

I plan to use 1-Wire digital sensors if possible, so they can all connect to a single digital port and I communicate to each of them by their unique id:

  • Temperature: DS18B20 or similar
  • Pressure: SDP600 or similar
  • Pressure (analog option): MPX5100DP or similarBasic requirements for sensor connections:
  • Digital I/O: 1 (min.)
  • Analog I/O (If all sensors are 1-Wire compatible): 0
  • Analog I/O (If pressure sensors are analog): 8 (min.)

This sort of thing is simpler than you think and the peripherals are not likely to conflict.

The SD uses the SPI bus and can share with others, they just need exclusive chip select pins.

The RTC uses the I2C bus and can share with others, no CS pins needed.

The DS18B20 is one wire, as you know.

I submit data-logging projects usually need a Mega. One is much the same as another, and you are likely to run out of memory before you run out of pins. This is usually caused by some facility you haven't thought of, but probably will next week.

If a SD/RTC shield is made for Arduino, it will be compatible. If you want to use WiFi, you may find that an ESP8266 module can do what you want without the need for an Arduino.