[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~

2017-08-091.3万
精华项目
AI 快速预览详细 收起
本教程介绍了如何使用DS18B20防水温度传感器和Arduino Nano制作一个可爱的洗澡伴侣。该项目包括一个定时器和温度传感器,通过LED显示水温是否合适。硬件清单包括RGB LED模块、DFRduino Nano 3.0、LR44纽扣电池盒、micro USB数据线和DS18B20防水温度传感器套件。最终效果是一个可爱的猫咪形状的装置,能够监测水温和计时。难度适中,适合家长和孩子一起完成。
[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图1





我不得不承认,洗澡可以大大帮助放松。 而且我更偏爱热水浴,无论是夏天还是冬天。 但是当无法估计水温是否合适时,可能会令人烦恼。 除此之外,当我们大部分人在浴缸中享受自己时,我们都需要一个计时器。所以我决定制作这样一个BATHING COMPANION。卡通形象来自RIPNDIP。
[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图2
步骤1.  设计和材料准备

所需物料清单:
        some PMMA, and some wire

我们需要两个功能:
I.   一个定时器(我总是会呆在浴室化太多时间来思考人生。。。Orz)
II.  温度传感器(我不想再总是做这样的动作)
[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图3
解决方案
I.    我用Arduino IDE做了一个计时器,并用LED来提醒你时间。
II.   我将防水DS18B20传感器作为“猫尾”来测量温度,并用通过用LED在猫脸显示“腮红’’来告知使用者水温是否合适。

另外我们还需要一个盒子来装这些传感器



设计草图:

[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图4





步骤2.    电路设计及连接 & 代码




[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图5


[/code][mw_shl_code=c,true]
#include <OneWire.h>
#include <RGBLED.h>

RGBLED myled = RGBLED(9,10,11);
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

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

int ledPin = 9;                // Connect LED on pin 9, or use the onboard one
int KEY = 3;                 // Connect Touch sensor on Digital Pin 3

void setup(){
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);      // Set ledPin to output mode
  pinMode(12, OUTPUT);
  pinMode(KEY, INPUT);       //Set touch sensor pin to input mode
}

void loop(){
  float temperature = getTemp();
  Serial.println(temperature);
  
  delay(100); //just here to slow down the output so it is easier to read
  
   
   if(temperature >= 30) {      //Read Touch sensor signal
        digitalWrite(12, LOW);
        digitalWrite(ledPin, HIGH);   // if Touch sensor is HIGH, then turn on
     }
   else if(digitalRead(KEY)==HIGH){
    delay(1800000);
    digitalWrite(12, LOW);
    digitalWrite(11, HIGH);
    delay(20000);
    }
   else{
        digitalWrite(ledPin, LOW);    // if Touch sensor is LOW, then turn off the led
     }
}

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 = 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;
  
}

[/mw_shl_code]

步骤3.    结构设计

        我希望解构尽可能简洁。因此,我模仿树莓派等MCU保护壳的做法,用激光切割亚克力制作了一个外壳。


[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图6


然后用手钻打孔,用螺丝固定

[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图7

[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图8



步骤4.  整体组装


[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图9


[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图10
[防水 DS18B20 传感器套件 教程_2] 陪你洗澡的洗澡喵~图11

Hint: 可以调节螺丝,以确保外壳可以收容“猫尾’’

自己尝试一下咯!!





创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
诩
所以,这个真的可以给猫咪洗澡?
miaoichi
miaoichi
厉害了 顶一个
Forgotten
Forgotten
视频视频
Frankie34
Frankie34
作者
回复Forgotten
_______________________________
川山甲的壳
川山甲的壳
漂亮,还能这么玩
Frankie34
Frankie34
作者
回复川山甲的壳
多谢,抬爱~
- 没有更多了 -