开源中文网

您的位置: 首页 > 树莓派 > 正文

RaspberryPi和Arduino控制温室温度

来源: csdn博客  作者: win_lin

树莓派给Aruduino供电,通过PL2303芯片USB转TTL串口通信。检测温室的温度,如果低于19度,就加热。通过串口控制Arduino,Arduino控制继电器打开陶瓷加热灯的开关加热。

Arduino的代码如下:
void setup() {

  pinMode(3, OUTPUT);
  Serial.begin(115200);
}

char v;
void loop() {
  // read from serial,
  // when got nothing, delay 1s and retry, write S to serial(Standby).
  // when 30s got nothing, close heater, write C to serial(Close).
  // when got H means open heater, write H to serial(Heating).
  // when got C means close heater, write C to serial(Close).
  v = -1;

  // got nothing.
  for (int i = 0; i < 30; i++) {
    if (Serial.available() <= 0) {
      Serial.print('S');
      delay(1000);
      continue;
    }
    v = Serial.read();
    break;
  }

  // close when retry exceed.
  if (v == -1) {
    Serial.print('C');
    digitalWrite(3, LOW);
    return;
  }

  // got specified command.
  if (v == 'H') {
    Serial.print('H');
    digitalWrite(3, HIGH);
    return;
  }
  Serial.print('C');
  digitalWrite(3, LOW);
}

如果没有明确的要加热,就不加热。通过串口指定需要加热。

接线图如下:

接线图

USB转串口PL2303接线: 
VCC5V,接Arduino的VIN,给Arduino供电。 
GND,接Arduino的GND,供电和通信用。 
RX,接Arduino的TX,通信用。 
TX,接Arduino的RX,通信用。

温度传感器DHT11接线: 
VCC5V,接PI的2引脚(VCC5V)。 
GND,接PI的6引脚(Ground)。 
DATA,接PI的12引脚(GPIO18,GPIO_GEN1)。

继电器接线: 
+,接Arduino的5V,Arduino给继电器供电。 
-,接Arduino的GND,接地。 
S,信号,接Arduino的3号数字引脚。

采集到温度小于预期时,通过串口给Arduino发送H指令。 
代码参考:https://github.com/winlinvip/raspi-tools/blob/master/greenhouse.py

最后的图:

green-house

END

Tags:温室 温度
相关文章列表:
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明