Raspberrypi Current and Temperature Sensor Adaptor
A current sensor and temperature adaptor for your Raspberrypi. It connects to the GPIO connector and provide data via serial interface. An Atiny85 mcu run the board and can be re-programmed easily with your Arduino IDE.
There are several options for logging and viewing the data. Python or Emoncms or anything able to read a serial port.
There are currently four models of the board.
- 1 single CT
- 1 CT and 1 temperature sensor.
- 2 CT and 1 temperature sensor.
- 3 CT.

Technical Specifications
Designed for AC current only.
Current Sensor
Recommended sensor: SCT-013-000 50mA/100A
Burden Resistor: 18Ohm
Connector: 3.5mm Jack
Default Voltage for power calculation: 240V (can be modified in firmware)
Temperature Sensor
Connector: 3.5mm Jack
The intended temperature sensor is the DS18B20 which can be configure in either parasite or normal mode.
The connection to a 3.5mm jack connector is shown below.
View the data from Linux terminal
The sketch to return the data in csv format is provided below. Make sure the OUTPUT_AS_CSV variable is set to true in the sketch.
The output from the adaptor board will be like
current_power,temperature*1000
Then on the Raspberrypi you can issue the commands
$ stty -F /dev/ttyAMA0 raw speed 9600 $ cat /dev/ttyAMA0
The terminal should then show something like this below
pi@raspberrypi ~ $ cat /dev/ttyAMA0 46,19464 47,19464 45,19464 47,19464
First figure being the power in Watts and second being the temperature*1000.
View the data with Python
Using the same sketch as mentioned above a python script can be used to work with the data. The example script below will be a good starting point.
First of all make sure you have python-serial package installed
$ sudo apt-get install python-serial
Then copy the following into an executable file and run it.
#!/usr/bin/python import serial ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) ser.open() try: while 1: response = ser.readline() z = response.split(",") if len(z)>=2: print "Power 1: %s Watts" % z[0] print "Power 2: %s Watts" % z[1] print "Temperature: %s Degrees" % z[2][:-2] except KeyboardInterrupt: ser.close()
The above example is for the board with 2CT and 1 temperature sensor. See here for the python example using the board with three CT sensors.
Log the data with EMONCMS
To record and view data on Emoncms the Adaptor must emulate a RFM12Bpi unit. i.e. What will be sent to the Raspberrypi serial port will look as if it was sent by the RFM12Bpi.
For this you should use the Linux distribution recommended by EOM for the Raspberry emonbase.
The sketch is provided below. Make sure the OUTPUT_AS_CSV is set to false in the sketch.
Program the Attiny85
The onboard mcu can be re-programmed to your needs. This link is a tutorial to upload Arduino sketches to the Attiny85.
The board does not have any SPi port. The chip will have to be removed from the board manually.
Files
Sketch for ATtiny85. Remember to modify the OUTPUT_AS_CSV variable to choose between csv or emoncms output.
Note. Power caculation is based on a voltage of 240V.