EmbDev.net

Forum: µC & Digital Electronics "Problem Reading Temperature from DHT11 Sensor via RS485 Between Raspberry Pi 4 and Raspberry Pi Pic


von Rıdvan Ç. (rdvan)


Rate this post
useful
not useful
I want to read the temperature data from the DHT11 sensor connected to 
the Pico using RS485 between Raspberry Pi 4 and Raspberry Pi Pico. I use 
the following code for this, but when I use it like this, I can send 
data from Raspberry Pi without any problems. However, when I send data 
from Raspberry Pi Pico, if I assume the temperature is 25, sometimes I 
can read this value from Raspberry Pi and sometimes I can't. I tried to 
adjust the correct time with Time.sleep() but I couldn't succeed. How 
can I solve this?


Raspberry Pi Code
1
import serial
2
import time
3
4
RS485 = serial.Serial('/dev/serial0', baudrate=9600, timeout=1)
5
6
7
def send_data(data):
8
    ser = serial.Serial('/dev/serial0', baudrate=9600, timeout=1)
9
    ser.write(data.encode())
10
    print("data sent")
11
12
13
temperature = 0
14
while True:
15
    data_to_send = "xtemperature"
16
    time.sleep(1)
17
    send_data(data_to_send)
18
    time.sleep(1)
19
    
20
    while True:
21
        
22
        received_data = RS485.readline().rstrip()
23
        received_data = received_data.decode('utf-8')
24
        print(received_data)
25
        time.sleep(1)
26
        received_value = int(received_data)  
27
        if 0 <= received_value <= 70:
28
            temperature=received_value
29
            break
30
    
31
    break
32
print("TEMPERATURE : ",temperature)


Raspberry Pi Pico Code
1
from machine import Pin
2
3
import time
4
from dht import  DHT11
5
6
uart_tx = machine.Pin(4)  # TX pin: GPIO 0
7
uart_rx = machine.Pin(5)  # RX pin: GPIO 1
8
9
10
uart = machine.UART(1, baudrate=9600, tx=uart_tx, rx=uart_rx)
11
12
13
14
def response():
15
    received_data = uart.read()
16
    try:
17
        received_string = received_data.decode('utf-8').strip()
18
        print("DATA :")
19
        print(received_string)
20
        if received_string:
21
            if received_string[0] == 'x':
22
                pin = Pin(15,Pin.IN,Pin.PULL_UP)
23
                d = DHT11(Pin(15))
24
                d.measure()
25
                T = d.temperature()
26
                x=0
27
                while x<150:
28
                    x=x+1
29
                    T=d.temperature()
30
                    send_data = str(T)
31
                    data = (send_data + "\r\n")
32
                    time.sleep(1)
33
                    uart.write(data.encode('utf-8'))
34
                    print("data sent")
35
                    print(data)
36
                    
37
                return received_string
38
            
39
    except UnicodeError:
40
        pass
41
    return ""
42
43
44
while True:
45
    if uart.any():
46
        incoming_data = response()
47
        print(incoming_data)

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.