Temp sensors

Hi, I am looking to run 4 temp sensors from different locations; to be sure, is there a shield that will allow 4+ temp inputs? Just starting to think about how I can put this together. Is it possible to have the sensors connect remotely?

Thanks

No need for a shield. These temp sensors https://www.adafruit.com/products/165 are easy to use and not expensive.

I like Jeenodes https://moderndevice.com/product/jeenode-v6-kit/ for wireless. I am currently using one outside and one inside for a weather station.

How far are these four locations? What temperature range? What accuracy? Are you measuring air, water, soil, oil or other things?

Personally, for 4 "wireless" sensors, I would maybe aim for low power ATTiny85 chips with 433Mhz Tx?

The 433Mhz Tx can be turned "on and off", the sensors can be DS1820, TMP3x type or whatever. The Attiny85 does have a 1.1V REF apparently, so a 3.3V battery operated design with Watchdog sleeping may be a nice low power wireless sensor?

Here is my code for a DS1820 sensor being read on an ATtiny85.
I will be using these for a seed propagator. Want 4 of them so I can have varied areas at different temperatures in the tray.

Hope to add a wire between the Attiny85’s as a SoftwareSerial so they can communicate with one another and also to a “master” with a bluetooth module so I can be sad enough to grab the data with my phone.

#include <OneWire.h> 


//D4 = LED
//D0 = DS1820 Data line

 
OneWire TemperatureSensor(0);  // Dallas one wire data buss pin, a 4.7K resistor pullup is needed
byte led=4;

void blink_tens(byte tens){
    for (byte i=0;i<tens;i++){
  digitalWrite(led,1);
    delay (500);
    digitalWrite(led,0);
    delay (150);
    }
}

void blink_units(byte units){
    for (byte i=0;i<units;i++){
  digitalWrite(led,1);
    delay (250);
    digitalWrite(led,0);
    delay (100);
    }
}


void setup() {
  // put your setup code here, to run once:
for(byte i=0;i<50;i++){
  
 digitalWrite(led,1);
 delay(50);
 digitalWrite(led,0);
}
}

void loop() {
  
  byte i;
  byte data[12];
  int16_t raw;
  int celsius;
  
    TemperatureSensor.reset();       // reset one wire buss
    TemperatureSensor.skip();        // select only device
    TemperatureSensor.write(0x44);   // start conversion
 
    while (!TemperatureSensor.read()){ // WHILE there is no data to read (waiting for conversion), turn the LED On to show it is waiting for a conversion.
digitalWrite(led,1);
    }      
   digitalWrite(led,0);
   
    TemperatureSensor.reset();
    TemperatureSensor.skip();
    TemperatureSensor.write(0xBE);   // Read Scratchpad
    
    for ( i = 0; i < 9; i++) {       // 9 bytes
      data[i] = TemperatureSensor.read();
    }
 
    // Convert the data to actual temperature
    raw = (data[1] << 8) | data[0];
    celsius = (int)raw / 16.0;
    
 delay(1000);   
 blink_tens(celsius/10);
 delay(500);
 blink_units(celsius%10);

delay(3000);
}

liudr:
How far are these four locations? What temperature range? What accuracy? Are you measuring air, water, soil, oil or other things?

I want to take skin temperature readings throughout the day wirelessly. I am completely green to all of this but I am exhilarated by the responses of technical know-how and offers of assistance.

Johnny010:
Here is my code for a DS1820 sensor being read on an ATtiny85.
I will be using these for a seed propagator. Want 4 of them so I can have varied areas at different temperatures in the tray.

Hope to add a wire between the Attiny85’s as a SoftwareSerial so they can communicate with one another and also to a “master” with a bluetooth module so I can be sad enough to grab the data with my phone.

#include <OneWire.h> 

//D4 = LED
//D0 = DS1820 Data line

OneWire TemperatureSensor(0);  // Dallas one wire data buss pin, a 4.7K resistor pullup is needed
byte led=4;

void blink_tens(byte tens){
   for (byte i=0;i<tens;i++){
 digitalWrite(led,1);
   delay (500);
   digitalWrite(led,0);
   delay (150);
   }
}

void blink_units(byte units){
   for (byte i=0;i<units;i++){
 digitalWrite(led,1);
   delay (250);
   digitalWrite(led,0);
   delay (100);
   }
}

void setup() {
 // put your setup code here, to run once:
for(byte i=0;i<50;i++){
 
digitalWrite(led,1);
delay(50);
digitalWrite(led,0);
}
}

void loop() {
 
 byte i;
 byte data[12];
 int16_t raw;
 int celsius;
 
   TemperatureSensor.reset();       // reset one wire buss
   TemperatureSensor.skip();        // select only device
   TemperatureSensor.write(0x44);   // start conversion

while (!TemperatureSensor.read()){ // WHILE there is no data to read (waiting for conversion), turn the LED On to show it is waiting for a conversion.
digitalWrite(led,1);
   }      
  digitalWrite(led,0);
 
   TemperatureSensor.reset();
   TemperatureSensor.skip();
   TemperatureSensor.write(0xBE);   // Read Scratchpad
   
   for ( i = 0; i < 9; i++) {       // 9 bytes
     data[i] = TemperatureSensor.read();
   }

// Convert the data to actual temperature
   raw = (data[1] << 8) | data[0];
   celsius = (int)raw / 16.0;
   
delay(1000);  
blink_tens(celsius/10);
delay(500);
blink_units(celsius%10);

delay(3000);
}

This is fantastic!! Thanks very much!