Collegamento su connettore EXP2 - GPIO 27.
Occorre impostare in pullup il GPIO 27.
Editare file : sudo nano /boot/overlays/dht22.dts
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2708";
fragment@0 {
target = <&gpio>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&my_pins>;
my_pins: my_pins {
brcm,pins = <27>; /* gpio no. */
brcm,function = <0>; /* 0:in, 1:out */
brcm,pull = <2>; /* 2:up 1:down 0:none */
};
};
};
};
Lanciare il comando per compilare il dtbo:
sudo dtc -@ -I dts -O dtb -o /boot/overlays/dht22.dtbo /boot/overlays/dht22.dts
Questo un esempio per impostare con stesso file dts i GPIO della scheda come pullup, pulldown, input o output.
# =========================================================
# Esempio per impostare più GPIO nel DTS
# =========================================================
# GPIO Type Pull Type
# 7 Input pulldown
# 8 Output pulldown
# 9 Input pullup
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2708";
fragment@0 {
target = <&gpio>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&my_pins>;
my_pins: my_pins {
brcm,pins = <7 8 9>; /* gpio no. */
brcm,function = <0 1 0>; /* 0:in, 1:out */
brcm,pull = <1 1 2>; /* 2:up 1:down 0:none */
};
};
};
};
Ora modificare il file con il comando sudo nano /boot/config.txt
Inserire nell'ultima riga:
# DHT22 device_tree_overlay=overlays/dht22.dtbodevice_tree_overlay=overlays/dht22.dtbo
Ed effettuare il reboot.
sudo reboot
Collegamenti tra il sensore e la CM3 Panel.

Esempio in Node Red, installare node-red-contrib-dht-sensor

Invece di utilizzare Node Red, ora descrivo l'utilizzo in Python. Installazione dei pacchetti necessari:
sudo apt-get update sudo python -m pip install --upgrade pip setuptools wheel sudo pip install Adafruit_DHT git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo python setup.py install
Creare lo script dht22.py
nano /home/pi/dht22.py
#!/usr/bin/python
# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import sys
import Adafruit_DHT
if len(sys.argv) == 2:
sensor = 22
pin = sys.argv[1]
else:
print('Usage: sudo ./dht22 ')
sys.exit(1)
# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
# Un-comment the line below to convert the temperature to Fahrenheit.
# temperature = temperature * 9/5.0 + 32
# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
print('Read:{0:0.1f}:{1:0.1f}'.format(temperature, humidity))
else:
print('Error reading.')
sys.exit(1)
2018 Ⓒ TanzoLab