58 lines
2.5 KiB
Plaintext
58 lines
2.5 KiB
Plaintext
= Interfacing 1-Wire devices to the Pico
|
|
|
|
This example demonstrates how to use link:https://www.analog.com/en/technical-articles/guide-to-1wire-communication.html[1-Wire] devices with the Raspberry Pi Pico (RP2040).
|
|
1-Wire is an interface that enables a master to control several slave devices over a simple shared serial bus.
|
|
|
|
The example provides a 1-Wire library that is used to take readings from a set of connected link:https://www.analog.com/media/en/technical-documentation/data-sheets/ds18b20.pdf[DS18B20] 1-Wire temperature sensors. The results are sent to the default serial terminal connected via USB or UART as configured in the SDK.
|
|
|
|
The library uses a driver based on the RP2040 PIO state machine to generate accurate bus timings and control the 1-Wire bus via a GPIO pin.
|
|
|
|
_1-Wire(R) is a registered trademark of Maxim Integrated Products, Inc._
|
|
|
|
== Wiring information
|
|
|
|
Connect one or more DS18B20 sensors to the Pico as shown in the diagram and table below.
|
|
|
|
Connect GPIO 15 to 3V3(OUT) with a pull-up resistor of about 4k ohms.
|
|
|
|
[[pio_onewire_wiring-diagram]]
|
|
[pdfwidth=75%]
|
|
.Wiring diagram
|
|
image::pio_onewire.png[]
|
|
|
|
[[pio_onewire_connections-table]]
|
|
.Connections table
|
|
[options="header,footer"]
|
|
|==================================================
|
|
|Pico |pin |DS18B20 |pin / sensor wire
|
|
|GND |38 or equivalent |GND |1 / Black
|
|
|GPIO 15 |20 |DQ |2 / Yellow
|
|
|3V3(OUT)|36 |VDD |3 / Red
|
|
|==================================================
|
|
|
|
== Bill of materials
|
|
|
|
.A list of materials for the example circuit
|
|
[[pio_onewire_bom-table]]
|
|
[cols=3]
|
|
|===
|
|
| *Item* | *Quantity* | *Details*
|
|
| Breadboard | 1 | generic part
|
|
| Raspberry Pi Pico | 1 | https://www.raspberrypi.com/products/raspberry-pi-pico/
|
|
| DS18B20 | 3 | chip or wired sensor
|
|
| 3900 ohm resistor | 1 | generic part
|
|
| M/M jumper wire | 13 | generic part
|
|
|===
|
|
|
|
== List of files
|
|
[[pio_onewire_file-list]]
|
|
CMakeLists.txt:: CMake file to incorporate the example in the build tree.
|
|
onewire.c:: Source code for the example program.
|
|
ow_rom.h:: Header file with generic ROM command codes for 1-Wire devices.
|
|
ds18b20.h:: Header file with function command codes for the DS18B20 device.
|
|
onewire_library/:: Subdirectory containing the 1-Wire library and driver.
|
|
onewire_library/CMakeLists.txt:: CMake file to build the 1-Wire library and driver.
|
|
onewire_library/onewire_library.c:: Source code for the 1-Wire user functions.
|
|
onewire_library/onewire_library.h:: Header file for the 1-Wire user functions and types.
|
|
onewire_library/onewire_library.pio:: PIO assembly code for the 1-Wire driver.
|