100+ wired and wireless temp sensor monitor & logging system

Hey everyone!

Im looking to build a temperature monitor and logging system for up to 100 fish tanks.

Im fairly well versed in Arduino so my initial concept was:

Wired Sensor Unit

Arduino mega controller with custom shield
LCD panel with controls
SD Card logging facility
Multiple multiplexing ADC chips for temp inputs
LM35 temp sensors

or

Wireless Sensor Hub

Arduino mega controller with custom shield
LCD panel with controls
SD Card logging facility
Wireless receiver (capable of receiving data from 100 different transmitters)

Wireless Sensor Transmitter

Adafruit trinket
LM35 temp sensor
Wireless transmitter

Iv also been looking at jeelabs jeenodes or is this overkill for single sensor units?

What do you guys think?
Suggestions?

Thanks in advance!

G:)

I think I'd go with wifi and have a number of Unos with wifi shields sending data back to a central controller - Mega, Pi or PC. Each Uno could have a number of DS18B20s - either one bus or several, depending on the topology of the tanks and how fault tolerant you need the system.

Wifi shields aren't cheap, but you could easily expand by adding more sensors or more wifi equipped unos.

Im fairly well versed in Arduino ...............
Wireless receiver (capable of receiving data from 100 different transmitters)

I don't think anybody can answer this without knowledge of how the tanks are set up and the space they occupy, about which you say nothing, but I submit:

  1. If you do not intend to feed the Internet, you could do this with 100 DS18B20s, a Uno, and no wireless communication at all.

  2. You may be obliged to have a few groups of tanks, each under a Uno, which report to a central Uno in a NRF24 network, or the like, which would be a hell of a lot cheaper than WiFi

  3. The remote Unos may incorporate local display and/or SD backup at your discretion, or a comms failure alarm at the central Uno may suffice.

  4. WiFi is probably the communication means of last resort.

  5. You probably need to include an RTC

  6. If you think you might need 100 wireless transmitters, you are either running a seriously large operation, or you haven't really thought about this at all.

I'm not sure what wireless thermometers your intend to use, but you are likely to run into problems you configure the wireless units to send data too often.

e.g. if you intended to send a reading once per minute on average from 100 sensors; that's a reading every 60/100 th of a second

So its highly lightly that you will have two units transmitting at the same time, and will loose the data from both.

If however you are only sending readings perhaps very 5 minutes, this isn't so much of an issue as you will only be sending data every 3 seconds on average.

Depending on what distance you want to send the data over, you may want to consider using NRF24L01 modules, as AFIK they have automatic collision detection and retry etc

Or. You could go with a non-arduino solution and use ESP8266 modules with LUA pre-loaded, as they support the DS18B20 temperature modules, and you could just send data straight back to a PC running a simple web server or out to a server on the net.

I do something similar to monitor battery voltages straight to my web server. But only for a small number of batteries.

As I said, this is still in the concept stage, so yes Nick, Iv only been thinking about this since yesterday :wink:

Wifi would be great for Internet of things functionality, but i feel that cost would prohibit this.

I figured a wired system would be easier on the implementation side and more work on the installation side.

I have worked with NRF24L01 modules before so if I went with wireless, it would probably be the option I would go with.

I will be visiting the fish farm soon and will report back with more info, dimensions, topology and pictures.

Thanks for the advice guys!

I really appreciate it!

G:)

I reckon with a bit of care a series of NRF24 transceivers would do the job. They can transmit at a high baud rate.

Set up one of them (perhaps connected to a PC or RPi) as the master. It sends a request to each slave in turn and the slave sends back its data. Give each slave a separate ID and while all of them will hear the request only one will respond.

Put some effort into minimizing the volume of data that needs to be sent by each slave. And that there is no delay between receiving and responding to a request. The response should be ready before the request arrives.

I imagine it could make 100 requests per second.

...R

GarethRens:
Wifi would be great for Internet of things functionality, but i feel that cost would prohibit this.

I figured a wired system would be easier on the implementation side and more work on the installation side.

I have worked with NRF24L01 modules before so if I went with wireless, it would probably be the option I would go with.

A combination of both may be interesting as well. You could create a wireless network of 5-6 arduino's and connect 20 sensors each for example.

Costs of IOT functionality are dropping very... rapidly b.t.w.
The ESP8266 wifi modules Roger talks about are new competitors on the market and cost about $4-5.
Nice part is also that they may eliminate the need for an Arduino since the esp8266 itself is a programmable microcontroller.

The one-wire DS18B20 as temperature sensor, would be my choice as well, A. it requires only one arduino-pin + wire to read loads of them and B. it's possible to cover huge distances.

as price gets important with 100 sensors, choose the cheapest ones, like NTC,
use a analog switch to switch to every sensor, this way you need only one analog input. the time is not important.

Would it be possible to put 100 DS18B20 temp sensors on 1 bus line?

Thanks!

G:)

I'm not sure, I don't know your specific situation. There are several ways to create a 1-wire network and the number of sensors depends on a number of factors.

You probably can, but will have to check which way is best for you, 100 sensors is quite a large number.

This article does explain a lot Guidelines for Reliable Long Line 1-Wire Networks

Even if you could get 100 sensors on a single bus, I wouldn't be inclined to do so. The article linked to by Simpson_jr shows (somewhat anecdotally) how difficult it can be to get a large network to be reliable.

If I were restricted to a single pin, I think I'd look at setting up the switched network they suggest and then if one branch has issues, at least it wouldn't deprive me of all the data I'm trying to collect.

In reality though, I'd just use an arduino that has enough pins that I could run a bus on several of them - perhaps ten in this case.

I understand :slight_smile: (mostly :wink:

Would it be easier to setup a network of analog temp sensors and have them run to i2c capable multiplexing ADCs?

So have one adc per 10 sensors, then each adc comms with the uc.

G:)

Might be easier to do with RS485 network, so basically just serial comms but the RS485 hardware allows for serial lines to be shared.
One master, many slave, master polls each slave to avoid comm interference from unit to unit.

MAXIM AN763 Guidelines for RS485 wiring.pdf (247 KB)

With the LM35 it is easy to use ADC, multiplexing can be done the old school way with CD4026
you only need one ADC and you could use the internal one if you amplify the input a little, with a transistor or opamp.

I2C is powerfull enough if down slowly, to make a 20 meter .
although you wont need it.