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?

4

1 Answer 1

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
3
  • I assumed 1-wire is 1-wire. It is not the Dallas 1-wire protocol and reading it as a DHT22 worked perfectly. Commented Jul 9, 2019 at 12:06
  • 1-Wire is 1-Wire. It is a Dallas trademarked protocol. However there are several one wire protocols. Misleading advertising by Aosong.
    – joan
    Commented Jul 9, 2019 at 12:14
  • Ah, it’s clear to me now. Thanks! For some reason I assumed the protocol is always standard on the 1-wire system. It’s like assuming the protocol over ethernet will always be http. Commented Jul 9, 2019 at 12:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.