Ks0104 keyestudio EASY plug Analog Temperature Sensor

From Keyestudio Wiki
Revision as of 10:16, 7 August 2020 by Keyestudio (talk | contribs) (→‎Complete Code:)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
EASY plug Analog Temperature Sensor


Introduction

Are you still looking for a low-cost thermometer? Did you get one? Aha! Here it is! This EASY Plug analog temperature sensor is based on a thermistor. The resistance varies with surrounding temperature change.
It can measure temperature change in the surroundings and send the data to Arduino analog IO. Just need to convert the output data to degrees Celsius temperature by simple programming.
The sensor is convenient and cost effective, widely applied to gardening, home alarm system and other devices.  
This module should be used together with EASY plug control board.

Special Note:
The sensor/module is equipped with the RJ11 6P6C interface, compatible with our keyestudio EASY plug Control Board with RJ11 6P6C interface.
If you have the control board of other brands, it is also equipped with the RJ11 6P6C interface but has different internal line sequence, can’t be used compatibly with our sensor/module.



Specification

  • Sensor type: Analog
  • Working voltage: 5V
  • Temperature range: -55℃~315℃
  • High quality connector


Technical Details

  • Dimensions: 38mm*20mm*18mm
  • Weight: 4.2g


Connect It Up

Connect the EASY Plug analog temperature sensor to control board using an RJ11 cable. Then connect the control board to your PC with a USB cable.
thumb

Sample Code

Copy and paste below code to Arduino IDE and upload.

void setup()
{Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop()
{int sensorValue = analogRead(A1);
Serial.println(sensorValue);
 delay(1);
}


We can see that the analog value is changing according to the surrounding temperature change. But it’s not very obvious.
Let’s solve this by using the following equation.
The value read from the serial port has little difference to normal temperature. eg. The temperature right now is about 25℃.

#include <math.h>
void setup()
{
   Serial.begin(9600);
}
void loop()
{
  double val=analogRead(1);
  double fenya=(val/1023)*5;
  // Ohm’s law r/100=fenya/(3.3-fenya)
  double r=(5-fenya)/fenya*4700;// divider resistance 4.7K,4.7K resistor to ground
  //double r=fenya/(5-fenya)*10000;//divider resistance10K,thermistor to ground
  Serial.println( 1/(  log(r/10000) /3950 + 1/(25+273.15))-273.15);//3950 is the value B of thermistor
  delay(1000);
}


What You Should See

Done uploading the code, open the serial monitor and set the baud rate to 9600, the temperature value will display on the Arduino’s serial monitor.
thumb


Complete Code:

(display the temperature by 1602 LCD display module)

#include <math.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
float value;
void setup()
{
  Serial.begin(9600);
  lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Temperature:");
}
void loop()
{
  double val=analogRead(1);
  double fenya=(val/1023)*5;
  // Ohm’s law r/100=fenya/(3.3-fenya)
  double r=(5-fenya)/fenya*4700;// divider resistance 4.7K,4.7K resistor to ground
  //double r=fenya/(5-fenya)*10000;//divider resistance10K,thermistor to ground
  Serial.println( 1/(  log(r/10000) /3950 + 1/(25+273.15))-273.15);//3950 is the value B of thermistor
  value =  1/(  log(r/10000) /3950 + 1/(25+273.15))-273.15;
  if(value<10)
  {
  lcd.setCursor(0,1);
  lcd.print(value);
  lcd.setCursor(4,1);
  lcd.print("C    ");
  }
  if(value>=10)
  {
  lcd.setCursor(0,1);
  lcd.print(value);
  lcd.setCursor(5,1);
  lcd.print("C    ");
  }
  delay(1000);
}


thumb

Resources

Download link:

https://fs.keyestudio.com/KS0104


Buy from