2

I'm having trouble getting a 1-wire sensor to be detected on my Raspberry Pi Model 3 B+. The sensor is this temperature and humidity sensor.

I have wired the red wire to 3.3V, the black wire to ground and the yellow wire to GPIO4 (physical pin 7). I have also connected a 4.7k resistor from 3.3V to GPIO4.

I have enabled 1-wire in raspi-config, and my /boot/config.txt has the dtoverlay=w1-gpio line enabled (uncommented).

The kernel modules seem to be loaded correctly:

pi@raspberrypi:~ $ lsmod | grep w1
w1_gpio                16384  0
wire                   45056  1 w1_gpio

I'm running Raspbian 9 (Stretch) and my kernel version is:

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

My pin configuration is:

pi@raspberrypi:~ $ gpio readall

 +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | OUT  | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 1 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+

However, no devices get detected:

pi@raspberrypi:/sys/bus/w1/devices $ ls -la
total 0
drwxr-xr-x 2 root root 0 Jul  8 13:23 .
drwxr-xr-x 4 root root 0 Jul  8 13:03 ..
lrwxrwxrwx 1 root root 0 Jul  8 13:23 w1_bus_master1 -> ../../../devices/w1_bus_master1

pi@raspberrypi:/sys/bus/w1/devices/w1_bus_master1 $ cat w1_master_slaves
not found.

I have scoped the line on GPIO4 and I do get the initial low going pulse followed by data, as expected :

GPIO4 line

Does anyone have any idea what I can try next? Or what might be going wrong?

Edrean Ernst
  • 123
  • 4

1 Answers1

2

I doubt that is a 1-wire (Dallas) bus device.

If it's manufactured by Aosong it's much more likely to use their one wire protocol (as used in their DHTxx series of temperature and humidity sensors).

The Chinese datasheet confirms it uses the 40-bit Aosong one wire format (you can cut&paste the Chinese glyphs into Google translate).

Either disable the 1-wire bus on GPIO 4 or connect the device data pin (and pull-up to 3V3) to a different GPIO.

Then run some DHTxx software on that GPIO.

I would suggest you try my software which auto detects the common types of DHTxx.

http://abyz.me.uk/rpi/pigpio/examples.html#pdif2_DHTXXD

TO BUILD

gcc -Wall -pthread -o DHTXXD test_DHTXXD.c DHTXXD.c -lpigpiod_if2

TO RUN

sudo pigpiod # start the pigpio daemon

./DHTXXD -g17 # one reading from DHT connected to GPIO 17

./DHTXXD -g14 -i3 # read DHT connected to GPIO 14 every 3 seconds
joan
  • 71,852
  • 5
  • 76
  • 108