• Stars
    star
    158
  • Rank 237,131 (Top 5 %)
  • Language
    C
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Maxim One Wire Bus driver for ESP32.

esp32-owb

This is a ESP32-compatible C component for the Maxim Integrated "1-Wire" protocol.

It is written for the idf.py target esp32, although it may work on other ESP-32 devices with minor modifications.

It is tested for version 4.4.4 and 5.0.1 of the ESP-IDF environment.

Legacy support for v2.1 is available on the ESP-IDF_v2.1 branch. This is no longer maintained.

Legacy support for v3.0-v3.3 and v4.1-beta1 is available on the ESP-IDF_v3.0-3.3_4.1-beta1 branch. This is no longer maintained.

Features

This library includes:

  • External power supply mode.
  • Parasitic power mode.
  • Static (stack-based) or dynamic (malloc-based) memory model.
  • No globals - support any number of 1-Wire buses simultaneously.
  • 1-Wire device detection and validation, including search for multiple devices on a single bus.
  • Addressing optimisation for a single (solo) device on a bus.
  • 1-Wire bus operations including multi-byte read and write operations.
  • CRC checks on ROM code.

This component includes two methods of bus access - delay-driven GPIO and RMT-driven slots. The original implementation used CPU delays to construct the 1-Wire read/write timeslots however this proved to be too unreliable. A second method, using the ESP32's RMT peripheral, results in very accurate read/write timeslots and more reliable operation.

Therefore I highly recommend that you use the RMT driver. The GPIO driver is deprecated and will be removed.

See documentation for esp32-ds18b20 for further information about parasitic power mode, including strong pull-up configuration.

Documentation

Automatically generated API documentation (doxygen) is available here.

Source Code

The source is available from GitHub.

License

The code in this project is licensed under the MIT license - see LICENSE for details.

Links

Acknowledgements

Thank you to Chris Morgan for his contribution of adding RMT peripheral support for more reliable operation.

Parts of this code are based on references provided to the public domain by Maxim Integrated.

"1-Wire" is a registered trademark of Maxim Integrated.

More Repositories

1

esp32-ds18b20-example

ESP32-compatible example for Maxim Integrated DS18B20 Programmable Resolution 1-Wire Digital Thermometer.
C
110
star
2

esp32-ds18b20

ESP32-compatible C library for Maxim Integrated DS18B20 Programmable Resolution 1-Wire Digital Thermometer.
C
100
star
3

esp32-rotary-encoder

ESP32-compatible rotary encoder driver
C
77
star
4

esp32-freqcount

ESP32 Frequency Counter using Pulse Counter and Remote Control modules
C
64
star
5

esp32-smbus

ESP32-compatible C library for the SMBus protocol
C
54
star
6

esp32-i2c-lcd1602-example

ESP32-compatible example for I2C-LCD1602 Display
C
52
star
7

esp32-i2c-lcd1602

ESP32-compatible C library for LCD1602 display via I2C backpack.
C
45
star
8

esp32-rotary-encoder-example

ESP32-compatible rotary encoder driver example
C
31
star
9

esp32-freqcount-example

ESP32-compatible example for esp32-freqcount component.
C
22
star
10

esp32-poolmon

Pool Monitoring Application for ESP32.
C
20
star
11

poolmon

Pool Temperature Monitoring Project
JavaScript
11
star
12

esp32-components

Top-level index for all my ESP32 components.
C
10
star
13

esp32-dco

Digitally Controlled Oscillator for the ESP32
C
8
star
14

ASPMA

Course work for Audio Signal Processing for Musical Applications
Python
6
star
15

x728ups

My own Python systemd service for the X728 Raspberry Pi UPS
Python
6
star
16

esp32-tsl2561-example

ESP32-compatible example for TSL2561 Light to Digital Converter
C
5
star
17

py3tree

A python implementation of the useful i3tree utility for the i3 tiling window manager.
Python
4
star
18

clion-docker-conan

Using CLion's Docker Toolchain workflow with Conan
2
star
19

PythonPackaging

My own guide for packaging python
Python
2
star
20

esp32-tsl2561

ESP32-compatible C library for TAOS TSL2561 Light-to-Digital Converter device
C
2
star
21

cpp-project-template

My take on a basic C++ new project template, with support for CMake, Conan, Boost, GTest & Pthreads.
CMake
2
star
22

basic-iot-rs

Basic Full-Stack IoT Rust Application
Rust
2
star
23

avr-i2c_slave

Basic I2C Slave for AVR
C
1
star
24

esp32-avr-i2c

ESP32 master communications over I2C to AVR slave
C
1
star
25

PythonPackagingDependency

See PythonPackaging.
Python
1
star
26

ML-Notes

Machine Learning notes
Python
1
star
27

esp32-utils

ESP32 Utility Component
C
1
star