I'm trying to create a remote sensing system for a factory. There would be a single central Raspberry Pi, and I would connect up to 16 5 V analog sensors of different functions. e.g.: vacuum sensor: Vout=1.54 V for high vacuum, Vout=1.77 V for low vacuum.
The problem is that the sensors can be up to 100 m away from the Pi. How do I reliably read a sensor that far away?
So far I have looked at 2 tacks:
Transmit using analog signals. I have two 8-port ADC HATs on the PI using SPI interface. I'm assuming that reliably reading a 0.01 V difference across 100 m of CAT5 cable is a no-go. There will be too much noise, and some amount of voltage loss due to the distance. I thought about using a cheap $3 Class-D amplifier board right next to the sensor. instead of amplifying sound, it would only amplify the difference between 1.45 V and 1.77 V before going into the ADC. Ideally with enough tweaking I could see between 1 V and 5 V at the ADC 100 m away, and hopefully be able to reliably perceive a 0.1 V difference in signal.
Transmit using digital signals. Assuming I still use the SPI-based ADCs for connections to close sensors, I can use the I2C bus and put up to 8 ADCs right next to the sensor, 100 m away. I have looked at several RS485 chips and 1-Wire solutions. I have read about splitting the I2C into 4 unidirectional lines (NXP P82B96), and using I2C signal buffers, repeaters, but I'm starting to get in way over my head. I even looked into slowing the clock frequency, and trying to reduce the capacitance to reduce the RC time to go from 0 to 1, but just can't seem to find a cheap, easy, simple and reliable way to stretch the I2C bus 300+ feet away.
Given the ubiquity of the Pi sensing things, someone has had to have had this problem [Analog sensor 300+ feet away from the Pi]. The one other caveat is I'd like to keep the communication between a $12 analog sensor and $40 PI less than $20 per sensor, and have 16 sensors per Pi... and not involve soldering surface-mount IC's.