back to top

PicoBricks ile Akıllı Sera Projesi

Akıllı Sera Projesi

Bu projemizde Picobricks ile IoT teknolojisine sahip bir akıllı sera yapacağız. PicoBricks ile birlikte ESP8266 Wifi modülü kullanacağız. Bu sayede bir bitkiyi internet üzerinden takip edebileceğiz.

İçerik Listesi

  • Detaylar ve Algoritma
  • Bileşenler
  • Devre Şeması
  • Yapım Aşaması
  • MicroBlocks Kodları
  • MicroPython Kodları
  • Arduino C Kodları

Detaylar ve Algoritma

Hazırlayacağımız akıllı serada bir toprak nem sensörü ve DHT11 sıcaklık ve nem sensörü kullanacağız. Seranın hemen dış kısmında bir su deposu ve pompa bulunacaktır. Ayrıca Picoboard da hemen seranın dışında uygun bir yere yerleştirilecektir.

PicoBricks başlatıldığında ESP8266 modülü sayesinde wifi ile bağlantı sağlanır. Böylece aynı Wifi ağına bağlanan bir akıllı telefon ile IP adresini girdiğimizde serayı kontrol edebileceğimiz bir web sayfası karşımıza çıkar. Bu sayede seranın nem ve sıcaklık değerlerini görüntüleyebilir ve hatta istersek sulama yapabiliriz.

Bileşenler

1x Pompa

1x Toprak Nemi Sensörü

1x ESP8266 Modülü

PicoBricks Akıllı Sera Kiti

Jumper Kablolar

Kolay Bağlantı Kablolar

Devre Şeması

Devre Şeması

Yapım Aşaması

Sera kiti içerisindeki SR-2 kodlu kısımdan modeiln zeminini ayırın.

SR-3 parçasındaki orta parçaları seranın zeminine yapıştırın.

Seranın iç kısımdaki duvarlarını SR-4 kısmından söküp zemine bağlayın.

SR-1 ve SR-3’teki kemerleri çıkarıp zemin üzerine yerleştirin.

Toprak koyulacak dikdörtgen alanı streç film kullanarak kapatın. Ve o alana boşluk kalmayacak şekilde toprak doldurun.

SR-4 parçalarını sera üzerindeki çentiklere yerleştirin.

Geriye kalan iki ince düz SR-4 parçasını alt taraftan seranın her iki yanında bulunan deliklerden geçirin. Bu alanın daha sağlam olmasını sağlar.

MicroBlocks Kodları

MicroPython Kodları

import utime
import uos
import machine
from machine import Pin, ADC
from picobricks import DHT11
from utime import sleep

dht_sensor = DHT11(Pin(11))
smo_sensor = ADC(27)
m1 = Pin(22, Pin.OUT)
m1.low()
print("Machine: \t" + uos.uname()[4])
print("MicroPython: \t" + uos.uname()[3])

uart0 = machine.UART(0, baudrate=115200)
print(uart0)

def Connect_WiFi(cmd, uart=uart0, timeout=5000):
    print("CMD: " + cmd)
    uart.write(cmd)
    utime.sleep(7.0)
    Wait_ESP_Rsp(uart, timeout)
    print()

# ... [rest of the functions]

while True:
    res = ""
    res = Rx_ESP_Data()
    utime.sleep(2.0)
    if '+IPD' in res:
        # ... [rest of the conditions]

    utime.sleep(4.0)
    Send_AT_Cmd('AT+CIPCLOSE=' + connection_id + '\r\n')
    utime.sleep(3.0)
    recv_buf = "" 
    print('Waiting For connection...')
</code>

Arduino C Kodları

#include
#define RX0
#define TX1

#define LIMIT_TEMPERATURE 30
#define DHTPIN 11
#define DHTTYPE DHT11
#define smo_sensor 27
#define motor 22
#define DEBUG true
DHT dht(DHTPIN,DHTTYPE);
int connectionId;

void setup(){
  Serial1.begin(115200);
  dht.begin();
  pinMode(smo_sensor,INPUT);
  pinMode(motor,OUTPUT);
  sendData("AT+RST\r\n",2000,DEBUG); 
  // ... [rest of the setup]

}

void loop(){
  if(Serial1.find("+IPD,")){
    delay(300);
    connectionId = Serial1.read()-48;
    String serialIncoming = Serial1.readStringUntil('\r');
    // ... [rest of the loop]

  }
}

String sendData(String command, const int timeout, boolean debug){
  String response ="";
  Serial1.print(command);
  long int time = millis();
  while((time + timeout) > millis()){
    while(Serial1.available()){
      char c = Serial1.read();
      response += c;
    }
  }
  if(debug){
    Serial.print(response);
  }
  return response;
}

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz