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