RaspberryPi和Arduino控制温室温度

树莓派给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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winlinvip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值