General

[Waterproof DS18B20 Sensor Kit tutorial_1] DIY: auto AC for your pet fish

userHead Account cancelled 2017-08-02 14:58:16 3920 Views0 Replies
The sweat came out in a fine dew on my forehead when I left a room with AC and get outdoor yesterday. It just came up to my mind that my pet fish may need their own auto AC since I would go for a trip some day. So I DIY an AC through Waterproof DS18B20 Digital Temperature Sensor from DFrobot. It suits every rectangular fishbowl and costs little power.

Here is a tutorial for anybody new here to build such a device from 0 to 1.
Image
Required Hardware:

DFRduino UNO R3 similar as Arduino UNO R3

USB Cable A-B for Arduino Uno/Mega

Waterproof DS18B20 Sensor Kit

Brushless DC Fan For Nozzle

2x2A DC Motor Shield for Arduino

Wall Adapter Power Supply 12VDC

some PMMA, and some wire

Image

STEP1 Deal with all the hardware connection
Image
Image
(NO SOLDERING REQUIRED)


Connect the DS18B20 Digital Temperature Sensor to PIN2



STEP2 Install Arduino IDE
Open the next URL and pick the correct version for your machine.
https://www.arduino.cc/en/Main/Software

STEP3 Add Library through this button.
Image


STEP4 Connect the board to your device with wire and load your
code(Hint: choose the port and the board to load)
Image
Code: Select all

#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
int E1 = 5;   
int M1 = 4;
int E2 = 6;                         
int M2 = 7;

//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2

void setup(void) {
  Serial.begin(9600);
  pinMode(4, OUTPUT);   
  pinMode(7, OUTPUT); 
}

void loop(void) {
  
  int value =0;
  float temperature= getTemp();
  Serial.println(temperature);
  delay(100);
  
  if(temperature > 25.00)
{ 
  digitalWrite(M1,HIGH);   
  digitalWrite(M2, HIGH);       
  analogWrite(E1, 255);   //PWM
  analogWrite(E2, 255);   //PWM
  delay(30);
} 
else{ 
  digitalWrite(M1,LOW);   
  digitalWrite(M2, LOW);       
  analogWrite(E1, 0);   //PWM
  analogWrite(E2, 0);   //PWM
  delay(30);
} 
 //just here to slow down the output so it is easier to read
  
}


float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
  return TemperatureSum;
  
}




STEP5 Decorate your project and make it suitable for the size of the fishbowl

Image

Image



Image
Image
Check it yourself!!!

Leave your pet fish a ‘coolest’ summer ever.