One Wire Bricklet

Features

  • 1-wire communication with any 1-wire capable device

  • Offers high-level commands (bus search, reset, write, read, write command)

  • Supports 3.3V, 5V and external supply voltage

  • Supports up to 64 1-wire devices simultaneously

Description

The One-Wire Bricklet can be used to communicate with any 1-wire capable device.

The API uses a set of high-level commands (bus search, reset, write, read, write command). Each command will give immediate status feedback for easy error detection.

Up to 64 devices can be connected to the bus and used at the same time.

A jumper can be used to switch between 3.3V, 5V or an external supply voltage for the connected 1-wire devices.

An example application would be to read the temperature of a MAX31820 1-wire ambient temperature sensor.

This Bricklet ist not galvanically isolated to the Tinkerforge system. This means that there is a direct electrical connection between the terminals of the Bricklet and the rest of the system. Dependent of the application this can lead to undesired connections, ground loops or short circuits. These problems can be prevented by using the Bricklet together with a Isolator Bricklet.

Technical Specifications

Property

Value

Current Consumption

35mW (7mA at 5V)

Maximum Bus Size

64

Supported Voltage

3.3V, 5V and external supply

Commands

bus search, reset, write, read, write command

Dimensions (W x D x H)

30 x 30 x 14mm (1.18 x 1.18 x 0.55")

Weight

6.5g

Resources

Connectivity

You can connect any 1-Wire device to the VCC/DAT/GND (voltage, data, ground) pins.

The jumper can be used to switch the supply voltage applied to VCC between 3.3V and 5V. If the jumper is set to NC, you can connect an external power supply to VCC. If you want to use an external power supply, you can not put the jumper on the 3.3V/5V pin headers.

One Wire Bricklet connectivity

Example: MAX31820

The following example uses Python to read the temperature of a MAX31820 temperature sensor with the API of the One Wire Bricklet:

ow.write_command(0, 0x4E)     # WRITE SCRATCH PAD
ow.write(0x00)                # ALARM H (unused)
ow.write(0x00)                # ALARM L (unused)
ow.write(0x7F)                # CONFIGURATION: 12 bit mode

while True:
    ow.write_command(0, 0x44) # CONVERT T (start temperature conversion)
    time.sleep(1)             # Wait for conversion to finish

    ow.write_command(0, 0xBE) # READ SCRATCH PAD

    t_low = ow.read().data    # Read LSB
    t_high = ow.read().data   # Read MSB

    print('Temperature: {0} °C'.format((t_low | (t_high << 8)) / 16.0))

Test your One Wire Bricklet

To test a One Wire Bricklet you need to have Brick Daemon and Brick Viewer installed. Brick Daemon acts as a proxy between the USB interface of the Bricks and the API bindings. Brick Viewer connects to Brick Daemon. It helps to figure out basic information about the connected Bricks and Bricklets and allows to test them.

Connect the One Wire Bricklet to a Brick with a Bricklet Cable and connect a 1-wire device to the Bricklet.

If you connect the Brick to the PC over USB, you should see a new tab named "One Wire Bricklet" in the Brick Viewer after a moment. Select this tab. If everything went as expected you can now use Brick Viewer to communicate with a connected 1-wire device.

One Wire Bricklet in Brick Viewer

After this test you can go on with writing your own application. See the Programming Interface section for the API of the One Wire Bricklet and examples in different programming languages.

Case

A laser-cut case for the One Wire Bricklet is available.

Case for One Wire Bricklet

The assembly is easiest if you follow the following steps:

  • Screw spacers to the Bricklet,

  • screw bottom plate to bottom spacers,

  • build up side plates,

  • plug side plates into bottom plate and

  • screw top plate to top spacers.

Below you can see an exploded assembly drawing of the One Wire Bricklet case:

Exploded assembly drawing for One Wire Bricklet

Hint: There is a protective film on both sides of the plates, you have to remove it before assembly.

Programming Interface

See Programming Interface for a detailed description.

Language

API

Examples

Installation

C/C++

API

Examples

Installation

C/C++ for Microcontrollers

API

Examples

Installation

C#

API

Examples

Installation

Delphi/Lazarus

API

Examples

Installation

Go

API

Examples

Installation

Java

API

Examples

Installation

JavaScript

API

Examples

Installation

LabVIEW

API

Installation

Mathematica

API

Examples

Installation

MATLAB/Octave

API

Examples

Installation

MQTT

API

Examples

Installation

openHAB

API

Examples

Installation

Perl

API

Examples

Installation

PHP

API

Examples

Installation

Python

API

Examples

Installation

Ruby

API

Examples

Installation

Rust

API

Examples

Installation

Shell

API

Examples

Installation

Visual Basic .NET

API

Examples

Installation

TCP/IP

API

Modbus

API