processor Posted February 14, 2019 Share Posted February 14, 2019 hi freinds i'm trying to use a dht22 to read temperature and humidity , with Armbian 5.65 (stretch) 4.14.78-sunxi and orenge pi zero orange pi state like this /etc/modules-load.d/modules.conf #gpio sunxi #gc2035 wire wl-sunxi wl-gpio wl-therm #sunxi-cir #xradio_wlan g_serial #xradio_wlan i2c -dev /etc/default/cpufrequtils ENABLE=true MIN SPEED=6000000 MAX_SPEED=1200000 GOVERNOR=interactive /boot/armbianEnv.txt verbosity=1 logo=disabled console=both disp_mode=1920x1080p60 overlay prefix=sun8i-h3 overlays=usbhost2 usbhost3 12c0 wl-gpio rootdev=WID=55cee3e8-79d6-4dd3-ab14-99274fo626cb rootfstype=ext4 param wl_pin=PA10 param wl_pin int_pullup=1 usbstorageguirks=0x2537:0x1066:u,0x2537:0x1068:u and im trying with this code https://www.piprojects.xyz/temperature-sensor-orange-pi-python-code/ and https://community.home-assistant.io/t/extend-dht-sensor-for-orange-pi/39838 from pyA20.gpio import gpio from pyA20.gpio import port #import RPi.GPIO as GPIO import dht22 import time import datetime # initialize GPIO #gpio.setwarnings(False) #gpio.setmode(GPIO.BCM) PIN2 = port.PA6 gpio.init() #gpio.cleanup() # read data using pin 14 instance = dht22.DHT22(pin=PIN2) while True: result = instance.read() if result.is_valid(): print("Last valid input: " + str(datetime.datetime.now())) print("Temperature: %.2f C" % result.temperature) print("Humidity: %.2f %%" % result.humidity) time.sleep(1) dht22 work correct with raspberry and rasbian also test ds18b20 with orange pi and work good but i need humidity sensor i dont know what's the problem??!! Thanks for any help Link to comment Share on other sites More sharing options...
StuxNet Posted February 14, 2019 Share Posted February 14, 2019 You have a problem with the dht22 working. You never specify what the problem actually is. What's the error code you're getting? Ima go ahead and take a wild guess that you don't initiate a configuration for that port. put the following after gpio.init() PIN2 =gpio.setcfg(PIN2, gpio.OUTPUT) Link to comment Share on other sites More sharing options...
processor Posted February 14, 2019 Author Share Posted February 14, 2019 i dont have any error the output is nothing and "time.sleep(1)" is runs. the code is here https://github.com/ionutpi/DHT22-Python-library-Orange-PI 44 minutes ago, StuxNet said: PIN2 =gpio.setcfg(PIN2, gpio.OUTPUT) defined in >>dht22.py in class DHT22 import time from pyA20.gpio import gpio from pyA20.gpio import port #import RPi class DHT22Result: 'DHT22 sensor result returned by DHT22.read() method' ERR_NO_ERROR = 0 ERR_MISSING_DATA = 1 ERR_CRC = 2 error_code = ERR_NO_ERROR temperature = -1 humidity = -1 def __init__(self, error_code, temperature, humidity): self.error_code = error_code self.temperature = temperature self.humidity = humidity def is_valid(self): return self.error_code == DHT22Result.ERR_NO_ERROR class DHT22: 'DHT22 sensor reader class for Raspberry' __pin = 0 def __init__(self, pin): self.__pin = pin def read(self): gpio.setcfg(self.__pin, gpio.OUTPUT) # send initial high self.__send_and_sleep(gpio.HIGH, 0.05) # pull down to low self.__send_and_sleep(gpio.LOW, 0.02) # change to input using pull up #gpio.setcfg(self.__pin, gpio.INPUT, gpio.PULLUP) gpio.setcfg(self.__pin, gpio.INPUT) gpio.pullup(self.__pin, gpio.PULLUP) # collect data into an array data = self.__collect_input() # parse lengths of all data pull up periods pull_up_lengths = self.__parse_data_pull_up_lengths(data) # if bit count mismatch, return error (4 byte data + 1 byte checksum) if len(pull_up_lengths) != 40: return DHT22Result(DHT22Result.ERR_MISSING_DATA, 0, 0) & .... Link to comment Share on other sites More sharing options...
StuxNet Posted February 14, 2019 Share Posted February 14, 2019 Got this same wrapper, as well as others to work on an NPiNeo and an OPiZ recently (defining outside ) but you're right it's prolly redundant. I got it working using this wrapper (forked/updated within 1 year opposed to 2yr on the one u link to) https://github.com/jingl3s/DHT11-DHT22-Python-library-Orange-PI and the following script. What happens when you print(instance) after it's defined? from pyA20.gpio import gpio from pyA20.gpio import port import dht import time import datetime # initialize GPIO temPin = port.PG11 trigPin = port.PG7 gpio.init() gpio.setcfg(trigPin, gpio.OUTPUT) # read data using pin 14 instance = dht.DHT(pin=temPin, sensor=22) def tempOut(): celToFar = result.temperature * 1.8 + 32 print("Last valid input: " + str(datetime.datetime.now())) print("Celsius: {0:0.1f} C".format(result.temperature)) print("Fahrenheit: {0:0.1f} F".format(celToFar)) print("Humidity: {0:0.1f} %%".format(result.humidity)) print("\n") def trigPinState(trigPin): trigState = gpio.input(trigPin) # What is state of trigger pin? if trigState == 0: #Then it's low return 'Low: %s' % trigState elif trigState == 1: # then its high return 'High: %s' % trigState else: print('error!) while True: result = instance.read() if result.is_valid(): tempOut() if celToFar < 75: gpio.output(trigPin, gpio.HIGH) elif celToFar > 75: gpio.output(trigPin, gpio.LOW) time.sleep(.2) Link to comment Share on other sites More sharing options...
processor Posted February 14, 2019 Author Share Posted February 14, 2019 thanks your answer i changed gpio like # initialize GPIO temPin = port.PA13 trigPin = port.PA14 when run program , say error root@orangepizero:-/orangepi_PC_gpio_py113/MiT22-Python-library-Orange-PI# sudo python dht3 .py File ''dht3 . py a , line 32 print ( ' error ! ) Synt axError : EOL while scanning string literal edit line 32 ('error!') and then root@orangepizero:-/DHT22-master# sudo python dht3.py Last valid input: 2018-10-28 20:52:24.470819 Celsius: 26.5 C Fahrenheit: 79.7 F Humidity: 45.2 %% Traceback (most recent call last): File 'dht3.py', line 38, in <module> if celToFar < 75: NameError: name 'celToFar' is not defined i have question what's trigPin and what to do this pin? Link to comment Share on other sites More sharing options...
StuxNet Posted February 15, 2019 Share Posted February 15, 2019 The script I gave you was a very loose example and it includes things I was using for my specific project. Things that you don't necessarily need to use for your own. trigPin in this situation is just an 'empty' pin that I use as an LED trigger. If temperature is above X, turn on LED. If temp below X, turn LED off. If you just want a temp and humidity readout, remove every function, set pins how you'd like and just print tempOut() Then go here: https://www.codecademy.com/learn/learn-python Or here: https://www.codewars.com/?language=python Or here: https://www.youtube.com/watch?v=apACNr7DC_s Link to comment Share on other sites More sharing options...
Recommended Posts