by Rebecca Houlihan
BeagleBone Black temperature sensor. via Paul Pinault
Here is a quick hack to interface a temperature sensor to a BeagleBone Black unit.
I choose to use a Microship TCN75AVOA component. This SMS component is not really easy to use for prototyping but feasible. This components have a unit cost < 1€ and operate at 5V or 3.3V (as for BeagleBone). A Dip8 version exists. The communication with the CPU is numerical based on a two wire connection type I2C. It measures from -40°C to +125°C on 8b + 4b decimal with +/- 1°C precision.
GPIO1_28 (gpio60) is used for SDA (Data), GPIO1_16 (gpio48) is used for SCL (Clock).
A0, A1, A2 are used to indicate the sub address of the chip.
I used 10K Pull-up resistor and 3.3V VDD.
For implementation, we may have different way to interface an I2C component with Linux, really beautiful, integrated and so on. But … I prefer the basic way and will give you some peace of bash code to do it.
The principle is to generate the bus signals by manually changing the values on the SDA & SCL wires.
SCL use is simple, it is an output GPIO used for clock signal.
SDA use is different : it can be an input or an output and for each octet transmitted from the BBB, the sensors will send a ACK/NACK bit to be read.
Basically, each frame starts with a start message, then have the 7b I2C device address + 1 bit operation (read or write), confirmed by an ACK from this device. It can be followed by a 8b register address or a 16b read or write.