/*Mô phỏng quá trình giám sát nước nuôi tôm
sau khi cảm biến nhận được dữ liệu về chất lượng nước đến khi kết thúc quá trình
Đèn xanh lá và đèn đỏ thể hiện chất lượng các thông số (Xanh lá=tốt, Đỏ=chưa tốt)
04 thông số theo đèn xanh lá từ trái qua phải:
Nhiệt độ - Độ pH - Mặn độ - Oxy hòa tan
Đèn xanh lam thể hiện các đối tượng điều khiển (Sáng: Đang vận hành, Tối: Đang nghỉ).
04 đối tượng điều khiển theo đèn xanh lam từ trái qua phải:
Quạt nước - Van xa nước 1 - Van xả nước 2 - Máy khuếch tán bọt mịn.
Các bước mô phỏng:
Nhập giá trị thông số cảm biến đọc được từ nước.
Vi điều khiển đánh giá chất lượng và hiện thị chất lượng tốt/chưa tốt.
Nếu chưa tốt, vi điều khiển sẽ điều khiển đối tượng điều khiển cho đến khi tốt.
Điều kiện lý tưởng của các thông số nước:
Nhiệt độ: <=30 độ C
Độ pH: 7.5-8.5
Mặn độ: 5-15ppt
Oxy hòa tan: >=5mg/L
1 giây trong mô phỏng tương đương 1 phút trên thực tế
*/
#define temp_bad 13 //Nhiệt độ
#define temp_good 12
#define pH_bad 11 //Độ pH
#define pH_good 10
#define salinity_bad 9 //Mặn độ
#define salinity_good 8
#define DO_bad 7 //Oxy hòa tan
#define DO_good 6
#define quat_nuoc 5 //Quạt nước
#define van_xa_nuoc_1 4 //Van xả nước 1
#define van_xa_nuoc_2 3 //Van xả nước 2
#define khuech_tan 2 //Máy khuếch tán bọt mịn
//Thông số giám sát
float temperature; //độ C
float pH;
float salinity; //ppt(parts per thousand)
float DO; //mg/L
void setup() {
for(int i=13; i>1; i--){
pinMode(i, OUTPUT);
}
//Nhập thông số giám sát đầu vào
temperature = 33.1; //11 phút để trở nên lý tưởng
pH = 6.4; //6 phút để trở nên lý tưởng
salinity = 29.3; //8 phút để trở nên lý tưởng
DO = 5.5; //lý tưởng
}
void loop() {
//Kiểm tra chất lượng nhiệt độ
if(temperature <=30){
digitalWrite(temp_good, HIGH);
digitalWrite(temp_bad, LOW);
digitalWrite(quat_nuoc, LOW);
}
else{
digitalWrite(temp_good, LOW);
digitalWrite(temp_bad, HIGH);
digitalWrite(quat_nuoc, HIGH);
temperature-=0.3; //Giảm 0.3 độ sau 1 phút
}
//Kiểm tra chất lượng độ pH
if(7.5<= pH && pH <=8.5){
digitalWrite(pH_good, HIGH);
digitalWrite(pH_bad, LOW);
digitalWrite(van_xa_nuoc_1, LOW);
}
else{
digitalWrite(pH_good, LOW);
digitalWrite(pH_bad, HIGH);
digitalWrite(van_xa_nuoc_1, HIGH);
if(7.5> pH){
pH+=0.2; //Tăng 0.2 pH sau 1 phút
}
if(pH >8.5){
pH-=0.2; //Giảm 0.2 pH sau 1 phút
}
}
//Kiểm tra chất lượng mặn độ
if(5<= salinity && salinity <=15){
digitalWrite(salinity_good, HIGH);
digitalWrite(salinity_bad, LOW);
digitalWrite(van_xa_nuoc_2, LOW);
}
else{
digitalWrite(salinity_good, LOW);
digitalWrite(salinity_bad, HIGH);
digitalWrite(van_xa_nuoc_2, HIGH);
if(5> salinity){
salinity+=2; //Tăng 2ppt sau 1 phút
}
if(salinity >15){
salinity-=2; //Giảm 2ppt sau 1 phút
}
}
//Kiểm tra chất lượng Oxy hòa tan
if(5<= DO){
digitalWrite(DO_good, HIGH);
digitalWrite(DO_bad, LOW);
digitalWrite(khuech_tan, LOW);
}
else{
digitalWrite(DO_good, LOW);
digitalWrite(DO_bad, HIGH);
digitalWrite(khuech_tan, HIGH);
DO+=1; //tăng 1mg/L sau 1 phút
}
delay(1000); //Tượng trưng cho 1 phút trong thực tế
}