Chat
Danh mục
Mạch bể cá thông minh Arduino nano, Wifi 8266, Blynk,

Mạch bể cá thông minh Arduino nano, Wifi 8266, Blynk,

Số lượng:
Thêm vào giỏ
Mạch bể cá thông minh Arduino nano, Wifi 8266, Blynk, đã được thêm vào giỏ hàng



1.NGUYÊN LIỆU CẦN CHUẨN BỊ:

Data cần lấy trong báo cáo:

- Blynk Là gì?

- Giao tiếp chuẩn 1 dây là gì? (giao tiếp DHT11)

- Giao tiếp I2C là gì? (giao tiếp màn hình LCD)

- Giao tiếp UART? (giao tiếp giữ Arduino và Node MCU)

- Analog là gì ? (dữ liệu cảm biến đọc được)



SƠ ĐỒ NGUYÊN LÝ:



·         Khối nguồn: sử dụng điện áp 12V DC từ Adapter, sau đó dùng module LM2596 để giảm áp 5V cung cấp cho toàn hệ thống.

·         Khối hiển thị: sử dụng màn hình LCD 20x4 và module LCD I2C để giao tiếp với Arduino và hiển thị tất cả thống số.

·         Khối công suất: Sử dụng Module L9110 để điều khiển 2 động cơ bơm, và buzzer 5V để báo nước đầy.

·         Khối cảm biến: Sử dụng cảm biến DHT11, độ đục chất lỏng, cảm biến PH, Phao nước… để gửi dữ liệu về Arduino xử lí.

·         Khối xử lí trung tâm: Đọc và sử lí tất cả dữ liệu từ cảm biến trả về và xuất ra màn hình, điều khiển bơm và giao tiếp gửi dữ liệu sang Node MCU.

·         Khối gửi dữ liệu lên internet: Nhận data từ Arduino Nano và xử lí tách chuỗi. Sau đó gửi các giá trị lên Blynk Server để app đọc được data. 


CODE:

#include <DHT.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <SoftwareSerial.h>

SoftwareSerial Serial2(2,3);

#include <Servo.h>

Servo servo;

#define phao 5 // D5

#define coi 6 // D6

#define DHTPIN 4  // D4 

#define PHSensor A0

#define doduc A1

#define motorin A2 // on: high

#define motorout A3 // on: low

#define pump 7 //

 

LiquidCrystal_I2C lcd(0x27, 16, 2);

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

 

int bom, chedo;

float PH;

int h, t, value;

unsigned long int avgValue;

float b;

int buf[10], temp;

String A,B,C,D;

 

byte abc[]={

  B00111,

  B00101,

  B00111,

  B00000,

  B00000,

  B00000,

  B00000,

  B00000};

 

 

 

void Sensor() {

  h = dht.readHumidity();

  t = dht.readTemperature();

  value= map(analogRead(doduc),0,1023,0,100);

 

 if ( value>98){

  value= 98;

  }

 

 if (digitalRead(pump) == 1 && value> 85) {

    digitalWrite(motorin, 1);

    lcd.setCursor(13, 0);

    lcd.print("OFF");

  }

 else if (digitalRead(pump) == 0 || value <85) {

    digitalWrite(motorin, 0);

    lcd.setCursor(13, 0);

    lcd.print("ON ");

  }

 

  for (int i = 0; i < 10; i++) //lấy mẫu của 10 lần

  {

    buf[i] = analogRead(PHSensor);

    delay(10);

  }

  for (int i = 0; i < 9; i++) //sắp xếp giá trị từ nhỏ đến lớn

  {

    for (int j = i + 1; j < 10; j++)

    {

      if (buf[i] > buf[j])

      {

        temp = buf[i];

        buf[i] = buf[j];

        buf[j] = temp;

      }

    }

  }

  avgValue = 0;

  for (int i = 2; i < 8; i++)               //Lấy số trung bình của 6 lần đo

    avgValue += buf[i];

  float phValue = (float)avgValue * 5.0 / 1024 / 6;   //Chuyển từ Analog sang milivol

  PH = 3.5 * phValue;                  //Chuyển Milivol sang độ PH

 

 

  A=String(value);

  B=String(t); 

  C=String(h);

  D=String(PH);

  A+=B;

  A+=C;

  A+=D;

  lcd.setCursor(4, 1);

  lcd.print(value);

  lcd.setCursor(12, 1);

  lcd.print(t);

  lcd.setCursor(3, 0);

  lcd.print(PH, 1);

 

 

}

void mucnuoc() {

  if (digitalRead(phao) == 1 ) {

    digitalWrite(coi, 0);

    digitalWrite(motorout, 0);

 

  }

 else {

    digitalWrite(coi, 1);

    digitalWrite(motorout, 1);

 

  }

 

 

 

}

 

 

void setup()

{

  Serial.begin(9600);

  Serial2.begin(9600);

  servo.attach(12);

  servo.write(90);

  lcd.init();

  lcd.backlight();

  lcd.createChar(0,abc);

  pinMode(coi, OUTPUT);

  pinMode(motorin, OUTPUT);

  pinMode(motorout, OUTPUT);

  pinMode(phao, INPUT_PULLUP);

  pinMode(pump, INPUT);

  pinMode(doduc, INPUT_PULLUP);

  digitalWrite(coi, 0);

  digitalWrite(motorin, 1);

  dht.begin();

  lcd.setCursor(0, 0);

  lcd.print("     De tai:    ");

  lcd.setCursor(0, 1);

  lcd.print("Be Ca Thong Minh");

  delay(5000);

  lcd.setCursor(0, 0);

  lcd.print("Nguyen Hoai Nam ");

  lcd.setCursor(0, 1);

  lcd.print("Mssv: 2202180036");

  delay(5000);

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("PH:      Bom:OFF");

  lcd.setCursor(0, 1);

  lcd.print("NTU:   %  T:   C");

  lcd.setCursor(14, 1);

  lcd.write(abc);

}

void loop()

{

 

Sensor();

mucnuoc();

Serial2.println(A);

Serial.println(A);

delay(1000);

 

}


( Nguyên lý + Code chuẩn) Link Mediafire
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút  hiện ra ở góc phải phía trên, nhấn vào để đến trang download
------------------------------------------------------------------------------------
DV1 - NHẬN VẼ MẠCH - LẬP TRÌNH 8051/ARDUINO/STM LẤY TRONG NGÀY 

BẤM XEM CÁCH ĐẶT HÀNG TẠI ĐÂY




-----------------------------------------------------------------------------------

DV2 - Mua linh kiện về làm mạch nhanh - Miễn phí Ship





DV3 - Kênh youtube chia sẻ kiến thức điện tử thực hành ngay


DV4 - Kênh cộng đồng Facebook Điện Tử ChipKool




CÔNG TY ECHIPKOOL - UY TÍN - CHẤT LƯỢNG - NHANH CHÓNG - BẢO MẬT