3dsjs

智能监控系统

Automated Monitoring System

2024-03-27 01:59:00

使用说明

  1. 所有模型资源均由用户上传分享,内容来源于网络公开资源
  2. 侵权投诉:通过抖音私信 @jobsfan 联系我们(需附版权证明),24小时内处理
  3. 模型将通过邮件发送(5分钟内自动发货),感谢理解带宽压力
关于费用

我们是爱好者共建社区,为维持服务器成本,每个模型收取微量费用(仅覆盖基础开支)。我们承诺最低成本运营,感谢您的支持!

扫码手机访问
抖音私信 @jobsfan

Summary

Introducing an innovative automated monitoring system designed to revolutionize how you care for your plants! This system combines advanced sensor technology with Arduino control to ensure optimal plant health with minimal effort.

Designed and developed by Sadeel Alhaleeq, Hala Mukheimer (halamuk), Zaid Aladwan (zaidadwan). Special thanks to DOTJO for the guidance and support through the creation of this project.

Print Settings

  • Printer brand:

    Creality

  • Printer:

    Ender 3

  • Rafts:
    Doesn't Matter
  • Supports:
    Yes
  • Resolution:
    0.32
  • Infill:
    20
  • Filament brand:

    fillamentum

  • Filament color:

    Green, Yellow, Black

  • Filament material:

    PLA

  • Notes:

    0.8mm nozzle

Standards

Overview and Background

Introducing an innovative automated monitoring system designed to revolutionize how you care for your plants! This system combines advanced sensor technology with Arduino control to ensure optimal plant health with minimal effort.

Lesson Plan and Activity

.

Materials Needed

.

Skills Learned

  • Slicing
  • 3d printing
  • 3d design
  • coding

Challenges

Printer configuration

We attempted to modify the printer settings due to printing issues encountered.

Electronics

Circuit Design

Our project accomplishes the following tasks using the these components:

  1. Monitoring soil moisture and activating the water pump if the moisture is below a certain threshold value. For this functionality we used the soil moisture connected to an analog input, which provides a continuous range of values, allowing for more precise measurement and analysis of soil moisture levels. Analog sensors usually require an analog-to-digital converter (ADC) to interface with a microcontroller like Arduino.

  2. Checking the water tank level: we used the water level detection sensor connected to an analog pin, which allows us to deal with the water pumping according to the amount of water in thetank. Moreover if the water in the tank is above 50%, a green LED lights up, a yellow one if between 50% and 20%, and finally a red one with a buzzer if below 20%. This also stops the water pumping until the tank is filled up with water above the 20% limit.

  3. We also track the humidity and temperature using a DHT11 sensor.

  4. All the data is displayed on an LCD.

  5. For the water pump, we connected it to a relay rather than a h-bridge, for we only need an on/off situation for the motor and not a bidirectional functionality.

Notes:

  1. We used analog pins but as the functionality of a digital pin.
  2. An ADC is needed for the interfacing of the moisture sensor with the arduino.
  3. The code is attached below in Appendix A.

Design

Design details and the material we have used

  • Water Tank:

Design Description: The water tank is hexagonal in shape, chosen to enhance impact resistance and structural stability.

Material: While ABS or PETG were preferred for their waterproof and durable properties, PLA will be utilized due to availability constraints.

Features: M3 screw mounts have been incorporated for attaching the water level sensor securely. Additionally, a mount for the OLED screen has been added to the design.

  • Plant Container ModificaEon:

Design: The exisEng plant container will be modified to include a cover for securely mounEng the temperature sensor.

Material: PLA will be used for its suitability in 3D prinEng, despite the iniEal preference for acrylic.

Features: The cover will provide a designated space for posiEoning the temperature sensor near the plant roots, ensuring accurate readings.

  • Waterproof Electronics Enclosure:

Design: The enclosure is designed to be waterproof, featuring Eght seals and gaskets to prevent water penetraEon and protect electronic components.

Material: PLA will be used instead of preferred materials like ABS or PETG due to availability constraints.

Features: The enclosure is designed to accommodate all electronic components in an organized manner, ensuring efficient use of space and ease of assembly.

  • System Base:

Design Description: The base is designed to accommodate all the printed parts, including the water tank, box, and electronics enclosure.

Material: PLA will be utilized due to availability constraints, although ABS or PETG were preferred for their durability.

Features: Specifically tailored to securely hold and organize all components of the automated monitoring system, ensuring stability and functionality. Designed in two parts to fit the printer size.

More details about the project

Features:

-Water tank with water level sensor for easy monitoring of water levels.
-Moisture sensor to gauge soil moisture and trigger watering as needed.
-Arduino board processes sensor data and controls watering system.
-Three LED indicators (blue, yellow, red) signify water tank levels and watering status.
-LCD screen displays real-time temperature and humidity readings for environmental monitoring.
-OLED display provides visual feedback on the water level in the tank.
-Integrated buzzer alerts users when the water level is critically low.
-Powered by a rechargeable battery with an on/off switch for convenience.
Instructions:
-Simply fill the water tank and switch on the system. The Arduino board will continuously monitor water levels and soil moisture. Based on sensor readings:

-If the water tank is above 50% full, the blue LED will illuminate, and watering will occur if soil moisture is low.
-If the water tank is between 20% and 50% full, the yellow LED will indicate moderate water levels and trigger watering as needed.
-If the water tank falls below 20%, the red LED will illuminate, and watering will be halted to conserve water. The buzzer will also sound an alert.

-The LCD screen provides temperature and humidity readings for environmental monitoring.
-The OLED display shows the current water level in the tank.

Applications:
Ideal for home gardening, indoor plant care, and automated irrigation systems. Suitable for hobbyists, enthusiasts, and professionals seeking efficient and sustainable plant maintenance solutions.

Code

include

include

include

include

include

define SCREEN_WIDTH 128 // OLED display width, in pixels

define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

DFRobot_DHT11 DHT;

define DHT11_PIN 5

// Define water level thresholds
const int highThreshold = 50; // Water level above this is considered high
const int lowThreshold = 20; // Water level below this is considered low

int sensor_pin = A0; // Soil Moisture Sensor input at Analog PIN A0
int relayPin = 6;
int buzzer = A2;
int rled = 4;
int gled = 3;
int yled = 2;
int water_level = A1;
bool isWatering = false;

const int tankWidth = 40; // Width of the tank
const int tankHeight = 40; // Height of the tank
const int tankX = 44; // X-coordinate of the tank
const int tankY = 12; // Y-coordinate of the tank

void setup() {
lcd.begin(16, 2);
pinMode(sensor_pin, INPUT);
pinMode(water_level, INPUT);
pinMode(relayPin, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(rled, OUTPUT);
pinMode(gled, OUTPUT);
pinMode(yled, OUTPUT);
digitalWrite(relayPin, LOW);
// Initialize the I2C communication
Wire.begin();

// Initialize the OLED display with the I2C address 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}

// Clear the display buffer
display.clearDisplay();
}

void loop() {

DHT.read(DHT11_PIN);

// Display temperature and humidity
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(DHT.temperature);
lcd.print((char)223);
lcd.print("C");

lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(DHT.humidity);
lcd.print("%");

// Read water level sensor
int waterLevel = analogRead(water_level);

// Calculate water level percentage - 563
int waterLevelPercent = map(waterLevel, 259, 600, 0, 100);

// Clear previous display
display.clearDisplay();

// Draw tank outline
display.drawRect(44, 12, tankWidth, tankHeight, WHITE);

// Calculate water level indicator position
int waterLevelY = map(waterLevel, 0, 1023, 12 + tankHeight, 12);

// Draw water level indicator
display.fillRect(tankX, waterLevelY, tankWidth, tankY + tankHeight - waterLevelY, WHITE);

// Display water level percentage
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Water Level: ");
display.print(waterLevelPercent);
display.println("%");

// Display updates
display.display();

// Turn off all LEDs and buzzer
digitalWrite(gled, LOW);
digitalWrite(yled, LOW);
digitalWrite(rled, LOW);
digitalWrite(buzzer, LOW);

// Check water level and control LEDs, buzzer, and pump
if (waterLevelPercent > highThreshold) {
digitalWrite(gled, HIGH); // Green light if above 50%
digitalWrite(buzzer, LOW);
} else if ((waterLevelPercent <= highThreshold) && (waterLevelPercent > lowThreshold)) {
digitalWrite(yled, HIGH); // Yellow light if between 20 and 50%
digitalWrite(buzzer, LOW);
} else {
digitalWrite(rled, HIGH); // Red light if below 20%
// Blink red LED and sound alarm
for (int i = 0; i < 5; i++) {
digitalWrite(rled, HIGH);
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(rled, LOW);
digitalWrite(buzzer, LOW);
delay(500);
}
// Turn off water pump
digitalWrite(relayPin, HIGH);
}

// Check soil moisture and turn on the pump if it's low

int moistureLevel = analogRead(sensor_pin);
if ((moistureLevel < 500 && !isWatering && waterLevelPercent > lowThreshold)) {
digitalWrite(relayPin, LOW);
isWatering = true;
lcd.print("Watering plant in progress");
delay(100);
} else if (((moistureLevel > 700) && isWatering) || ((waterLevelPercent < lowThreshold)&& isWatering)) {
digitalWrite(relayPin, HIGH);
isWatering = false;
}
//To display MOISTURE
// delay(3000);
// Clear previous display
display.clearDisplay();
//MAP IT TO PERCENTAGE
int moisturePercent = map(moistureLevel, 0, 1023, 100, 0);
// Display moisture
lcd.setCursor(0, 0);
lcd.print("Moisture: ");
//lcd.print(moisturePercent);
lcd.print(moistureLevel);

// Delay before refreshing the display
delay(50);

lcd.noAutoscroll();
lcd.clear();
}

Tags

智能监控系统
朋友,你觉得上面这个模型,属于下面的哪个分类?
必须全中文,且长度不超过15

相关内容

猜你喜欢