RPi3 DHT22 fedora-arm/raspbian
Üdv!
Próbálom a $subjectet összehozni.
* DHT22
* RPi3 GPIO
A próbapanelon a DHT22-nek a hozzá kapott ellenállást az 1-2 láb közé tettem.
Az RPi3 GPIO-jára a fenti kép alapján kötöttem:
01 pin: DHT22 3.3V power (láb 1)
07 pin: DHT22 DATA (láb 2) # <---- ez a GPIO_04 pin
09 pin: DHT22 GND (láb 4)
A fedora-arm lsmod kimenete:
# lsmod
Module Size Used by
gpio_keys 16384 0
fuse 98304 3
gpio 16384 0
nand 57344 1 gpio
nand_ecc 16384 1 nand
nand_ids 12288 1 nand
mtd 61440 2 gpio,nand
ip6t_rpfilter 16384 1
ip6t_REJECT 16384 2
nf_reject_ipv6 16384 1 ip6t_REJECT
xt_conntrack 16384 15
ip_set 40960 0
nfnetlink 16384 1 ip_set
ebtable_broute 16384 1
bridge 122880 1 ebtable_broute
stp 16384 1 bridge
llc 16384 2 bridge,stp
ebtable_nat 16384 1
ip6table_mangle 16384 1
ip6table_security 16384 1
ip6table_raw 16384 1
ip6table_nat 16384 1
nf_conntrack_ipv6 16384 9
nf_defrag_ipv6 24576 1 nf_conntrack_ipv6
nf_nat_ipv6 16384 1 ip6table_nat
iptable_mangle 16384 1
iptable_security 16384 1
iptable_raw 16384 1
iptable_nat 16384 1
nf_conntrack_ipv4 16384 8
nf_defrag_ipv4 16384 1 nf_conntrack_ipv4
nf_nat_ipv4 16384 1 iptable_nat
nf_nat 24576 2 nf_nat_ipv6,nf_nat_ipv4
nf_conntrack 106496 6 nf_conntrack_ipv6,nf_conntrack_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_ipv4,nf_nat
ebtable_filter 16384 1
ebtables 24576 3 ebtable_filter,ebtable_nat,ebtable_broute
ip6table_filter 16384 1
ip6_tables 24576 5 ip6table_mangle,ip6table_filter,ip6table_security,ip6table_raw,ip6table_nat
smsc95xx 32768 0
usbnet 40960 1 smsc95xx
mii 16384 2 usbnet,smsc95xx
vc4 86016 1
drm_kms_helper 151552 2 vc4
dwc2 163840 0
drm 319488 4 vc4,drm_kms_helper
fb_sys_fops 16384 1 drm_kms_helper
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
udc_core 49152 1 dwc2
sysimgblt 16384 1 drm_kms_helper
bcm2835_dma 20480 0
bcm2835_rng 16384 0
bcm2835_wdt 16384 0
leds_gpio 16384 0
nfsd 319488 1
auth_rpcgss 61440 1 nfsd
nfs_acl 16384 1 nfsd
lockd 90112 1 nfsd
grace 16384 2 nfsd,lockd
sunrpc 319488 7 auth_rpcgss,nfsd,nfs_acl,lockd
mmc_block 40960 4
sdhci_iproc 16384 0
sdhci_pltfm 16384 1 sdhci_iproc
sdhci 49152 2 sdhci_pltfm,sdhci_iproc
mmc_core 139264 3 sdhci,mmc_block,sdhci_iproc
pwm_bcm2835 16384 0
i2c_bcm2835 16384 0
A tesztelő cpp kód (fedora-arm codeblocks lefordítja hiba nélkül):
#include < iostream >
#include < iomanip >
#include < sstream >
#include < string >
#include < ctime >
#include < csignal >
#include "pi_dht_read.h"
using namespace std;
const int TYPE = AM2302; // DHT22
const int PIN = 4; // GPIO_04 PIN number
void signalHandler(int signum)
{
cout << "Interrupt signal (" << signum << ") received! " << endl;
exit(signum);
}
int main()
{
signal(SIGTERM, signalHandler);
float rh, temp;
stringstream s_rh, s_temp;
int res;
struct timespec end, current;
struct tm date;
char format[] = "%Y-%m-%d %H:%M:%S.";
char buf[21];
string timestamp;
while (true) {
clock_gettime(CLOCK_MONOTONIC, &end);
end.tv_sec += 5;
clock_gettime(CLOCK_REALTIME, ¤t);
localtime_r(¤t.tv_sec, &date);
strftime(buf, sizeof buf, format, &date);
timestamp = buf;
timestamp.append(to_string(current.tv_nsec).substr(0, 3));
int i = 0;
do {
res = pi_dht_read(TYPE, PIN, &rh, &temp);
sleep_milliseconds(1000);
i++;
} while (res != DHT_SUCCESS && i < 4);
s_rh.str(string());
s_temp.str(string());
if (rh!=0)
s_rh << setprecision(1) << fixed << rh;
else
s_rh << "NULL";
if (temp!=0)
s_temp << setprecision(1) << fixed << temp;
else
s_temp << "NULL";
cout << "'" << timestamp << "' " << s_rh.str() << " %RH " << s_temp.str() << " degC [" << i << "]" << endl;
clock_gettime(CLOCK_MONOTONIC, ¤t);
// waiting a while...
}
return 0;
}
Futtatáskor nem kapok eredményt vissza (NULL). Mit felejtek el?
(Ez korábban Pi2-n /raspbian/ ment szépen.)
Vagy RPi3 nem fog így menni?
- Tovább (RPi3 DHT22 fedora-arm/raspbian)
- 3472 megtekintés