3

I have this "QinHeng Electronics HL-340 USB-Serial adapter" and a couple of DS18B20 temperature/humidity sensor but I can't get to read data using digitemp. Also tried with this

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> int main(int argc, char* argv[]) { printf("Hllp stpd"); struct termios serial; char inBuff[100]; char logBuff[100]; char *buffer; char *logPtr; int wcount = 0; int j; int fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY); FILE *log; if (fd == -1) { perror(argv[2]); return -1; } if (tcgetattr(fd, &serial) < 0) { perror("Getting configuration"); return -1; } //////////////////// Set up Serial Configuration //////////// serial.c_iflag = 0; serial.c_oflag = 0; serial.c_lflag = 0; serial.c_cflag = 0; serial.c_cc[VMIN] = 0; serial.c_cc[VTIME] = 10; serial.c_cflag = B9600 | CS8 | CREAD; fcntl(fd,F_SETFL,0); tcsetattr(fd, TCSANOW, &serial); // Apply configuration ////////////////////////////////////////////////////////////// int rcount; buffer = &inBuff[0]; logPtr = &logBuff[0]; while(1) { buffer = &inBuff[0]; memset(buffer,0,sizeof(inBuff)); logPtr = &logBuff[0]; memset(logPtr,0,sizeof(logBuff)); while( (rcount = read(fd,buffer,1)) > 0) { if (rcount < 0) { perror("Read"); return -1; } buffer++; } for(j=0;j<sizeof(inBuff);j++) { if(inBuff[j] == '+') { while(inBuff[j++] != '\r'){ *logPtr = inBuff[j-1];logPtr++; } *logPtr = '\r';logPtr++; *logPtr = '\n';logPtr++; } } printf("%s",logBuff); printf("\r\n"); log = fopen("log.txt","w"); fwrite(logBuff,1,sizeof(logBuff),log); fclose(log); } close(fd); } 

no success at all. Any hints?

4
  • Are you running it as root? Commented Feb 5, 2020 at 21:02
  • The DS18B20 has a 1 wire interface, why are you trying to use serial? Commented Feb 5, 2020 at 22:57
  • Hi @rmorelli74, Perhaps your 1-Wire driver is not that up to date. My answers to the following questions might help: (1) raspberrypi.stackexchange.com/questions/100203/…, (2) raspberrypi.stackexchange.com/questions/102078/…. Good luck and cheers. Ah, one more thing, I once ENABLED 1-Wire and installed DS18B20 driver, but then found serial/UART no longer worked. I disabled 1-Wire and found UART works again. So the two might not work together at the same time. Commented Feb 6, 2020 at 1:39
  • @CoderMike ...yep, I bought the wrong adapter. I want to connect two DS18B20 using usb for heat pump send/return water temperature monitoring. Commented Feb 7, 2020 at 1:10

1 Answer 1

3

You don't need any adapters to connect 2x DS18B20 temperature sensors to a Raspberry Pi. These sensors use the 1-wire interface which is built into the Pi. Only a resistor is required. The sensors can be connected in parallel and identified by a unique id.

https://thepihut.com/blogs/raspberry-pi-tutorials/18095732-sensors-temperature-with-the-1-wire-interface-and-the-ds18b20

enter image description here

4
  • 1
    I can't do this because both sensors Will serve monitoring for my heat pump send and return, they have cable extension and Raspberry Will be attached on the wall Commented Feb 8, 2020 at 11:46
  • 1
    Why can't you do this? I have 5 temperature sensors in parallel, 4 monitoring my hot water tank and 1 monitoring the pipe to my radiators. Commented Feb 8, 2020 at 11:55
  • 1
    With a breadboard? Commented Feb 8, 2020 at 17:40
  • 2
    No, breadboards are generally for testing. I’ve soldered connections and resistor onto veroboard. Commented Feb 8, 2020 at 20:18

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.