Final 2025 BCKBOOK
Final 2025 BCKBOOK
PROJECT REPORT
ON
“Agro-Vision”
:: Submitted by ::
Mr. Bhaskar Premdas Jadhav
Mr. Aniket Abhijeet Deshmukh
Mr. Tukaram Ananda Kadam
Mr. Pratik Ganpatrao Gaikwad
:: Guided by ::
Mr. Phule J. S
:: Department of ::
COMPUTER ENGINEERING
:: Guided by ::
Mr. Phule J. S
( ) (Mr. Phule J. S)
Head of Department Project Guide
( )
Principal
Department of Computer Engineering
VISION MISSION
The Department of Computer Department of Computer
Engineering will be one of the Engineering will be role model for
National leaders, catering Computer Engineers by:
dynamic IT knowledge to serve 1. Exposing the learners to latest
society and the globe at large. tools and technologies in the field
of Computer, hardware and
ि वB थTय ां न म ि हती व तांũy न software.
ीय नतृȕ च एक भ ग िसल. स धन
ि वȯ थTय ां न ि शकवण.
2. Providing fruitful learning
environment, enhancing problem
solving skills amongst the
learners, to make them successful.
२. ि वB Ț ōच यश4 ीस ठी
कVन w ां lj मधील Ůʲ
करण..
3. Support society by
participating in and extending
technological services.
३. सम ज ल ल गण “य सांगणकीय
त ांि ũक सव पुरवून सम ज च
आध र बनण.
PROJECT APPROVAL SHEET
Following team has done the appropriate work related to the “Agro_Vision ”
in partial fulfillment for the award of diploma in Computer Engineering of
“MSBTE” and is being submitted to Gramin Technical And Management
Campus, Vishnupuri, Nanded.
Team:
Mr. Bhaskar Premdas Jadhav
Date: 24/04/2024
Place: Nanded.
( ) ( )
1. Smart Irrigation :
The water pump operations are automated using real-time data from pH, soil
moisture, temperature, humidity, & solar intensity sensors. This ensures crop/plants
get the right amount of water while saving resources. under different environmental
conditions.
3. Animal detection :
The system uses sensors to detect pest movements & trigger alarms, safeguarding
crops from damage caused by pests feeding on them.
4 System Design 12 - 27
4.1 Design Document 12
4.2 ER-Diagram 13
4.3 Data Flow Diagram 14
4.4 Flow Chart Diagram 16
4.5 Activity Diagram 18
4.6 Use Case Diagram 20
4.7 Block Diagram & circuit Digram 23-27
7 Advantages 87-89
7.1 Advantages 87
9 References 92
Agro_Vision 2024-25
CHAPTER 1
INTRODUCTION
1.1 AIM OF THE PROJECT
The main aim of this project improves productivity in agriculture by integrating sensors, Monitor
Real-time data through a user-friendly application.
In the project analysis phase, we scrutinize agricultural challenges and opportunities, gathering real-
time data through user friendly application. The system will utilize sensors to monitor soil moisture,
temperature, humidity, nutrients which is present in soil.
The scope of the project is increasing productivity in agriculture industry by using AI & Iot technology
integrating sensors through monitor real time data in a user-friendly application i.e. Monitor
temperature of soil, humidity, moisture, nutrients which is present in soil.
1.4 OBJECTIVES
• It takes the analysis of sensor measurements of nutrients in the soils using an AI to
examine data & suggest the fertilizer recommended for crops for healthy growth &
improvement
• Save water by wearing an intelligent irrigation system adjusts to the soil and the weather
• Track On Motion Sensors to detect pests early which stops from eating crops. Empower
farmers with knowledge and tools.
• Provide an app to the farmers in which they can monitor their farm and take quick
decision
• To help farmers waste less and manage resources better so that we have sustainable
farming
1.5 FEATURES
1. Real-Time d Monitoring
✓ Continuously monitor Temp, pH, Humidity, Soil Moisture , NPK.
1.6 MODULE
➢ Hardware Modules:
1. Arduino Mega
2. Sensors
3. Relay Module
4. Water pump
5. Breadboard
6. Jumper wires
➢ Software Modules:
➢ Arduino IDE (used for microcontroller programming)
➢ Python (works on AI models and for data processing)
➢ Tools for Mobile Applications Development (like Flutter, React native)
➢ MySQL, Firebase (Database Management Systems)
One of the most difficult tasks is that, the selection of the software, once system requirement is
known is determining whether a particular software package fits the requirements. After initial
selection further security is needed to determine the desirability of particular software compared
with other candidates. This section first summarizes the application requirement question and
then suggests more detailed comparisons.
• Arduino Mega
• Soil moisture
• Relay Module
• Water module
• Breadboard
• Jumper Wire
• Aurdino uno
• Npk sensor
• Temptuare sensor
• Humidity Sensor
• LDR sensor
• Raindrop sensor
• Bulb
• Pir sensor
• Buzzer
• Waterpump
CHAPTER 2
LITERATURE SURVEY
2.1 INTRODUCTION
This project aims to develop AgroVision, an affordable, intelligent, and automated smart
agriculture solution tailored to the needs of farmers in both rural and semi-urban regions. It
focuses on enhancing traditional farming practices by integrating sensors with IoT
technology to monitor vital environmental parameters such as soil moisture, temperature,
humidity, and animal movement. Through real-time data collection and mobile connectivity,
AgroVision automates irrigation, improves decision-making, and strengthens crop
protection. It is designed to be scalable, energy-efficient, and easy to use, making precision
farming accessible to small and marginal farmers. The ultimate goal is to increase crop yield,
conserve resources like water, and reduce manual effort—ushering in a more sustainable
and technology-driven agricultural ecosystem.
Conventional farming relies heavily on human intuition and manual labor, making it inefficient
in terms of time, water use, and resource management. IoT-based smart agriculture systems
revolutionize this by using sensors, controllers, and cloud technologies to automate tasks such
as irrigation and monitoring. These systems provide real-time insights into soil and
environmental conditions, allowing timely interventions and optimized resource usage.
Many existing smart farming systems only monitor basic parameters and often require constant
internet connectivity. They may be expensive, making them inaccessible to small farmers.
Furthermore, these solutions typically lack integrated security features like animal detection,
real-time mobile alerts, and offline control options, limiting their effectiveness and adaptability
in rural scenarios.
AgroVision solves these issues by offering a compact, modular system using affordable
hardware such as Arduino Mega, soil moisture sensors, DHT11, PIR sensors, and a 4-channel
relay for pump control. The system operates with or without internet and provides mobile-based
updates and alerts through Firebase. It also includes features like local alerting (buzzer) and
manual override through Serial Monitor—making it practical, reliable, and field-ready.
2.3 Attachment
CHAPTER 3
SYSTEM REQUIREMNT SPECIFICATIONS
The entire system is projected with a physical diagram which specifics the actual storage
parameters that are physically necessary for any database to be stored on to the disk. The overall
systems existential idea is derived from this diagram.
The relation upon the system is structure through a conceptual ER-Diagram, which not only
specifics the existential entities but also the standard relations through which the system exists
and the cardinalities that are necessary for the system state to continue.
meet the needs of its users and stakeholders.
• Arduino Mega
• Soil moisture
• Relay Module
• Water module
• Breadboard
• Jumper Wire
➢ Programming Languages:
1. Dart:
• Description:
✓ Primary language for Flutter.
✓ Object-oriented, with robust async programming features.
• Role:
✓ Implements UI logic and Firebase integration in the app.
✓ Handles data fetching, state management, and visual updates.
3. Firebase Library:
• Description:
✓ Library that allows Arduino devices to communicate with Google Firebase.
✓ Supports real-time database operations like read, write, and update.
• Role:
✓ Stores sensor readings like TDS, temperature, turbidity, and pH.
✓ Allows real-time monitoring of water quality through the mobile application.
2. Arduino IDE:
• Description:
✓ IDE for writing, compiling, and uploading code to Arduino boards.
• Role:
✓ Interface for developing and debugging microcontroller firmware.
✓ Uses serial monitor for real-time sensor output testing.
CHAPTER 4
SYSTEM DESIGN
1.1 DESIGN DOCUMENT
The entire system is projected with a physical diagram which specifics the actual storage
parameters that are physically necessary for any database to be stored on to the disk. The overall
systems existential idea is derived from this diagram.
The relation upon the system is structure through a conceptual ER-Diagram, which not only
specifics the existential entities but also the standard relations through which the system exists
and the cardinalities that are necessary for the system state to continue.
1.2 ER-DIAGRAM
The entity Relationship Diagram (ERD) depicts the relationship between the data objects.
The ERD is the notation that is used to conduct the date modeling activity the attributes of each
data object noted is the ERD can be described resign a data object descriptions.
➢ Components of ER Diagrams:
✓ Entities: Entities are objects or concepts in the real world that are represented in the
database. They can be tangible objects like a person or car, or abstract concepts like a
company or course.
✓ Attributes: Attributes are properties or characteristics of entities. They describe the
features or details of an entity.
✓ Relationships: Relationships define how entities are connected to each other. They
describe the associations or interactions between entities. Relationships can be one-to-
one, one-to-many, or many-to-many.
✓ Diamonds: Diamonds represent relationships between entities in an ER diagram. They
illustrate how entities are connected or associated with each other. The diamond shape
typically contains a label describing the nature of the relationship
✓ Lines: Lines connecting entities to the diamond represent the relationship between
them. The direction of the lines indicates the direction of the relationship, and
cardinality notations near the lines specify how many instances of one entity are related
to how many instances of another entity.
✓ Rectangles: Rectangles represent entities in an ER diagram. Each entity is depicted as
a rectangle, and its name is usually written inside the rectangle.
✓ Ellipses: Ellipses represent attributes in an ER diagram. Attributes describe the
information flow. Higher level DFDs show a broader view of the system, while lower-
level DFDs provide more detailed insights into the system's processes and data flows.
The primary purpose of activity diagrams is to model and analyze the workflow or business
processes within a system. They enable stakeholders to visualize the sequence of activities,
decisions, and parallel activities involved in accomplishing a particular task or achieving a
specific goal. By representing these processes graphically, activity diagrams
Use case is a description of set of sequence of actions that a system performs that yields an
observable result of value to a particular actor. A use case is used to structure the behavioral
things in a model. A use case is realized by collaboration. Graphically a use case is rendered
as an ellipse with solid lines, usually including only its name, as shown below.
Place order
✓ Relationships:
Dependency is a semantic relationship between two things in which a change to one thing
may affect the semantics of the other thing. Graphically, a dependency is rendered as a dashed
line, possibly directed, and occasionally including a label. As in below.
Dependency
Fig.4.5(b) Dependency
0….1 *
Association
Fig.4.5(c) Association
Generalization
Fig.4.5(d) Generalization
Actor
Circuit Digrams:
By analysing sensor measurements of nutrients in the soils, the system uses an AI to examine data
suggest the fertilizer recommended for crops for a healthy growth & improvement.
his system utilizes sensor measurements to analyze the levels of essential soil nutrients (NPK –
Nitrogen, Phosphorus, Potassium). By leveraging Artificial Intelligence, it interprets the data to assess
soil fertility and diagnose nutrient deficiencies. Based on this analysis, it intelligently recommends the
appropriate type and amount of fertilizer needed for optimal crop growth. This approach not only
enhances crop yield and health but also promotes efficient use of resources, supporting sustainable
agriculture practices.
The water pump operations are automated using real-time data from pH, soil moisture, temperature,
humidity, & solar intensity sensors. This ensures crop/plants get the right amount of water while saving
resources. under different environmental conditions.
The smart irrigation system automates water pump operations using real-time data from multiple
sensors, including pH, soil moisture, temperature, humidity, and solar intensity. By continuously
monitoring these environmental conditions, the system ensures that crops and plants receive the
optimal amount of water when needed. This intelligent approach conserves water, enhances plant
health, and adapts to changing weather and soil conditions for efficient and sustainable farming
The system employs motion sensors to detect the presence and movement of pests or animals near
the crops. When activity is detected, it automatically triggers an alarm or alert mechanism to deter
intrusions. This real-time response helps protect crops from damage caused by pests feeding on
them, ensuring better yield and reducing the need for manual monitoring.
This system automates the operation of farm electrical appliances, helping optimize energy
usage and reduce power wastage. It intelligently controls devices like lights and motors based on
real-time conditions and schedules. Additionally, it sends notifications to the farmer indicating
whether appliances, such as lights, are turned on or off, ensuring better monitoring and control
from anywhere
CHAPTER 5
SYSTEM IMPLEMENTATION
5.1 SOFTWARE CODE:
import 'package:flutter/material.dart';
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_database/firebase_database.dart';
import 'firebase_options.dart';
// Screens
import 'package:vision/login/login.dart';
import 'package:vision/splashscreen.dart';
import 'package:vision/otp_verification.dart';
import 'package:vision/DashboardScreen.dart';
import 'package:vision/crophealth.dart';
import 'package:vision/smartirr.dart';
import 'package:vision/animaldetect.dart';
import 'package:vision/appliacontrol.dart';
import 'package:vision/chat_screen.dart';
import 'package:vision/schemes_page.dart'; // Government Schemes Page
FirebaseFirestore firestore = FirebaseFirestore.instance;
final databaseRef = FirebaseDatabase.instance.ref();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(const AgroVisionApp());
}
class AgroVisionApp extends StatelessWidget {
const AgroVisionApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
initialRoute: '/',
routes: {
'/': (context) => const SplashScreen(),
'/login': (context) => const LoginPage(),
'/otp': (context) => const OTPVerificationPage(),
'/home': (context) => const HomeScreen(),
'/chat': (context) => ChatScreen(),
'/schemes': (context) => SchemesPage(), // Govt Schemes route
},
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int _currentIndex = 0;
final PageController _pageController = PageController();
final List<Widget> _screens = [
const DashboardScreen(),
const CropHealthScreen(),
const SmartIrrigationScreen(),
const AnimalDetectionScreen(),
const ApplianceControlScreen(),
SchemesPage(), // Govt Schemes Page
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("AgroVision"),
backgroundColor: Colors.green[800],
actions: [
IconButton(
onTap: () {
// Implement navigation or function
},
),
ListTile(
leading: const Icon(Icons.chat),
Importz'package:animated_splash_screen/animated_splash_screen.dart';
import 'package:vision/frontpage.dart';
import 'package:flutter/material.dart';
class SplashScreen extends StatelessWidget {
const SplashScreen({super.key});
@override
Widget build(BuildContext context) {
return AnimatedSplashScreen(
duration: 4000,
backgroundColor: Colors.white,
splash: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: 200, // Adjust height as needed
child: Image.network(
"blob:https://manage.wix.com/f491cd97-456d-4d6c-a749-f373dba6f375",
fit: BoxFit.contain, ), ),
const SizedBox(height: 20), // Adds spacing
const Text(
'Empowering Farmers with Smart Solutions for a Sustainable Future.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Colors.green,
fontStyle: FontStyle.italic,
), ), ], ),
nextScreen: const FrontPage(), // Ensure this class exists
splashIconSize: 300,
); }}
import 'package:flutter/material.dart';
import 'package:vision/login/login.dart';
import 'package:vision/login/registration.dart';
class FrontPage extends StatefulWidget {
const FrontPage({super.key});
@override
State<FrontPage> createState() => _FrontPageState();
}
class _FrontPageState extends State<FrontPage>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<Offset> _slideAnimation;
late Animation<double> _fadeAnimation;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 800),
);
_slideAnimation = Tween<Offset>(
begin: const Offset(0, 1),
end: Offset.zero,
).animate(CurvedAnimation(parent: _controller, curve: Curves.easeOut));
_fadeAnimation = CurvedAnimation(parent: _controller, curve: Curves.easeIn);
_controller.forward();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: [
FadeInImage(
placeholder: const AssetImage('assets/placeholder.jpg'),
image: const NetworkImage(
'https://static.vecteezy.com/system/resources/previews/046/305/742/non_2x/indian-
farmer-showing-smartphone-technology-concept-vector.jpg',
),
fadeInDuration: const Duration(seconds: 2),
fit: BoxFit.cover,
width: 390,
height: 500,
),
const SizedBox(height: 10),
FadeTransition(
opacity: _fadeAnimation,
child: const Text(
'YOU can easily operate',
style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold),
),
),
FadeTransition(
opacity: _fadeAnimation,
child: const Text(
'From Smartphone',
style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold),
),
),
const SizedBox(height: 10),
FadeTransition(
opacity: _fadeAnimation,
child: const Text(
'The No.1 App for the Farming Sector',
style: TextStyle(fontSize: 16, color: Colors.green),
),
),
const SizedBox(height: 10),
SlideTransition(
position: _slideAnimation,
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const RegistrationPage(),
),
);
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.green,
padding:
const EdgeInsets.symmetric(horizontal: 30, vertical: 10),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
),
child: const Text(
'Register',
style: TextStyle(fontSize: 20, color: Colors.white),
),
),
),
const SizedBox(height: 10),
SlideTransition(
position: _slideAnimation,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Already have an account?'),
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const LoginPage(),
),
);
},
child: const Text(
'Log in',
style: TextStyle(
color: Colors.green,
fontWeight: FontWeight.bold,
),
),
),
FrontPage code output
),
),
],
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:vision/otp_verification.dart';
import 'registration.dart';
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
final TextEditingController _usernameController = TextEditingController();
final TextEditingController _passwordController = TextEditingController();
bool _obscurePassword = true;
Future<void> _login() async {
String username = _usernameController.text;
String password = _passwordController.text;
if (username == '[email protected]' && password == 'Pass1234') {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setBool('isLoggedIn', true);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => OTPVerificationPage()),
);
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Invalid username or password')),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
// Background Image
GT&MC – Department of Computer Engineering. Page 39
Agro_Vision 2024-25
Positioned.fill(
child: Image.network(
'https://th.bing.com/th/id/OIP.DjudtImYiLWN0axt_dgVuAHaE8?w=244&h=180&c=7&r=0
&o=5&dpr=1.3&pid=1.7', // Add an agriculture-themed image
fit: BoxFit.cover,
),
),
// Gradient Overlay
Positioned.fill(
child: Container(
color: Colors.black.withOpacity(0.3),
),
),
// Login Card
Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Card(
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
child: Padding(
padding: const EdgeInsets.all(25),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"LOGIN",
style: GoogleFonts.poppins(
fontSize: 26,
fontWeight: FontWeight.bold,
color: Colors.green.shade700,
),
),
const SizedBox(height: 20),
// Username Field
TextField(
controller: _usernameController,
decoration: InputDecoration(
labelText: "User ID",
prefixIcon:
const Icon(Icons.person, color: Colors.green),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
),
),
),
const SizedBox(height: 15),
// Password Field
TextField(
controller: _passwordController,
obscureText: _obscurePassword,
decoration: InputDecoration(
labelText: "Password",
prefixIcon:
const Icon(Icons.lock, color: Colors.green),
suffixIcon: IconButton(
icon: Icon(
_obscurePassword
? Icons.visibility_off
: Icons.visibility,
color: Colors.green,
),
onPressed: () {
setState(() {
_obscurePassword = !_obscurePassword;
});
},
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
),
),
),
const SizedBox(height: 15),
// Login Button
ElevatedButton(
onPressed: _login,
style: ElevatedButton.styleFrom(
backgroundColor: Colors.green.shade700,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
padding: const EdgeInsets.symmetric(
vertical: 15, horizontal: 100),
),
child: const Text(
"Login",
style: TextStyle(fontSize: 18, color: Colors.white),
),
),
const SizedBox(height: 10),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
const RegistrationPage()),
);
},
child: const Text("Register",
style: TextStyle(color: Colors.green)),
),
TextButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("Forgot Password Clicked!")),
);
},
child: const Text("Forgot Password?",
style: TextStyle(color: Colors.green)),
],
),
],
), LoginPage code output
),
),
),
),
],
),
);
}
}
import 'package:flutter/material.dart';
class DashboardScreen extends StatefulWidget {
const DashboardScreen({super.key});
@override
_DashboardScreenState createState() => _DashboardScreenState();
}
class _DashboardScreenState extends State<DashboardScreen> {
double temperature = 35.0; // Example sensor value
double soilMoisture = 20.0;
bool isAnimalDetected = false;
bool isPowerAvailable = false;
Map<String, bool> alerts = {};
@override
void initState() {
super.initState();
checkAlerts();
}
void checkAlerts() {
alerts.clear();
if (temperature > 30) {
alerts["High Temperature: $temperature°C! Take precautions."] = true;
}
if (soilMoisture < 30) {
alerts["Low Soil Moisture: $soilMoisture%! Consider irrigation."] = true;
}
if (isAnimalDetected) {
alerts["Animal Detected! Check farm security."] = true;
}
if (!isPowerAvailable) {
alerts["Farm Power Issue: Light might be OFF."] = true;
}
setState(() {});
}
void dismissAlert(String alert) {
setState(() {
alerts.remove(alert);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.green[50],
appBar: AppBar(
title: const Text("Smart Agriculture Dashboard"),
backgroundColor: Colors.green,
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Important Alerts & Warnings",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.redAccent),
),
const SizedBox(height: 10),
alerts.isEmpty
? const Center(
child: Text(
" No alerts. Everything is fine!",
style: TextStyle(fontSize: 16, color: Colors.green),
),
)
: Expanded(
child: ListView.builder(
itemCount: alerts.length,
itemBuilder: (context, index) {
String alert = alerts.keys.elementAt(index);
return Dismissible(
key: Key(alert),
direction: DismissDirection.endToStart,
onDismissed: (direction) => dismissAlert(alert),
background: Container(
color: Colors.green,
alignment: Alignment.centerRight,
padding: const EdgeInsets.only(right: 20.0),
child: const Icon(Icons.check, color: Colors.white),
),
child: Card(
color: Colors.white,
margin: const EdgeInsets.symmetric(vertical: 5),
child: ListTile(
leading:
const Icon(Icons.warning, color: Colors.red),
title: Text(
alert,
style: const TextStyle(
fontSize: 16, fontWeight: FontWeight.w500),
),
trailing: IconButton(icon:
const Icon(Icons.done, color: Colors.green),
onPressed: () => dismissAlert(alert),
),
),
),
);
},
),
),
],
),
),
);
}
}
import 'package:flutter/material.dart';
class CropHealthScreen extends StatefulWidget {
const CropHealthScreen({super.key});
@override
_CropHealthScreenState createState() => _CropHealthScreenState();
}
class _CropHealthScreenState extends State<CropHealthScreen> {
// NPK values (example data)
int nitrogen = 20; // Example N value
int phosphorus = 30; // Example P value
int potassium = 40; // Example K value
// Soil sensor data (example data)
int soilMoisture = 60; // Example soil moisture value
double phLevel = 6.5; // Example pH value
double temperature = 25.0; // Example temperature in Celsius
double humidity = 55.0; // Example humidity value
int _selectedIndex = 0; // Track selected tab (0 for NPK, 1 for Soil Sensors)
String getFertilizerSuggestion() {
if (nitrogen < 50) {
return "Low Nitrogen: Use organic compost or manure.";
} else if (phosphorus < 40) {
return "Low Phosphorus: Use bone meal or rock phosphate.";
} else if (potassium < 50) {
return "Low Potassium: Use wood ash or potassium sulfate.";
} else {
return "Nutrients are balanced. No fertilizer needed.";
}
}
// Method to handle soil sensor display
Widget _buildSoilSensorCard(String name, String value, Color color) {
return Card(
child: ListTile(
leading: Icon(Icons.grass, color: color, size: 30),
title: Text(name, style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Text("Value: $value"),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Crop Health"),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Toggle between NPK and Soil Sensor modules
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
ElevatedButton(
onPressed: () {
setState(() {
_selectedIndex = 0; // NPK module
});
},
child: Text("NPK"),
),
SizedBox(width: 10),
ElevatedButton(
onPressed: () {
setState(() {
_selectedIndex = 1; // Soil Sensors module
});
},
child: Text("Soil Sensors"),
),
],
),
const SizedBox(height: 20),
: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text("Soil Sensor Readings",
style: TextStyle(
fontSize: 22, fontWeight: FontWeight.bold)),
const SizedBox(height: 10),
_buildSoilSensorCard(
"Soil Moisture", "$soilMoisture%", Colors.green),
_buildSoilSensorCard("pH Level", "$phLevel", Colors.blue),
_buildSoilSensorCard(
"Temperature", "$temperature°C", Colors.orange),
_buildSoilSensorCard(
"Humidity", "$humidity%", Colors.purple),
],
),
],
),
),
);
}
Widget _buildNutrientCard(String name, int value, int minValue, Color color) {
return Card(
child: ListTile(
leading: Icon(Icons.grass, color: color, size: 30),
title: Text(name, style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Text("Value: $value"),
trailing: Text(
value < minValue ? "Low" : "Normal",
style: TextStyle(
color: value < minValue ? Colors.red : Colors.green,
fontWeight: FontWeight.bold,
),
),
),
);
}
import 'package:flutter/material.dart';
class SmartIrrigationScreen extends StatefulWidget {
const SmartIrrigationScreen({super.key});
@override
_SmartIrrigationScreenState createState() => _SmartIrrigationScreenState();
}
class _SmartIrrigationScreenState extends State<SmartIrrigationScreen> {
// Sample sensor data
double soilMoisture = 75.0;
double temperature = 30.0;
double humidity = 60.0;
String lightIntensity = "High";
double raindropSensor = 0.0;
bool isWaterOn = false;
// Toggle the irrigation status
void toggleIrrigation() {
setState(() {
isWaterOn = !isWaterOn;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Smart Irrigation Dashboard")),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Smart Agriculture Dashboard",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.green),
),
const SizedBox(height: 16),
Expanded(
child: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
children: [
_buildSensorCard("Soil Moisture", "$soilMoisture%",
Icons.water, Colors.blue),
_buildSensorCard("Temperature", "$temperature°C",
Icons.thermostat, Colors.red),
_buildSensorCard(
"Humidity", "$humidity%", Icons.cloud, Colors.teal),
_buildSensorCard("Light Intensity", lightIntensity,
Icons.wb_sunny, Colors.orange),
_buildSensorCard(
"Raindrop Sensor",
raindropSensor == 0.0 ? "No Rain" : "Rain Detected",
raindropSensor == 0.0 ? Icons.grain : Icons.beach_access,
raindropSensor == 0.0 ? Colors.blueGrey : Colors.blue),
],
),
),
const SizedBox(height: 20),
Center(
child: ElevatedButton.icon(
onPressed: toggleIrrigation,
style: ElevatedButton.styleFrom(
backgroundColor: isWaterOn
? Colors.green
: Color.fromARGB(255, 164, 32, 140), // Change color ),
icon: Icon(Icons.water_drop, color: Colors.white, size: 24),
label: Text(
isWaterOn ? "Turn Off Irrigation" : "Turn On Irrigation",
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.white),
),),),],),),);}
Widget _buildSensorCard(
String title, String value, IconData icon, Color iconColor) {
return Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
elevation: 4,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, size: 40, color: iconColor),
const SizedBox(height: 8),
Text(title, style: const TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 4),
Text(value,
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: iconColor)),
],
),
),
);
}
}
import 'package:flutter/material.dart';
class AnimalDetectionScreen extends StatefulWidget {
const AnimalDetectionScreen({super.key});
@override
_AnimalDetectionScreenState createState() => _AnimalDetectionScreenState();
}
class _AnimalDetectionScreenState extends State<AnimalDetectionScreen> {
bool isAnimalDetected = false; // PIR sensor state
bool isBuzzerOn = false; // Buzzer state
@override
void initState() {
super.initState();
_simulateAnimalDetection(); // Simulate PIR sensor behavior
}
// Function to simulate PIR sensor detecting movement
void _simulateAnimalDetection() {
Future.delayed(const Duration(seconds: 3), () {
setState(() {
isAnimalDetected = true;
isBuzzerOn = true; // Buzzer turns ON when an animal is detected
});
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text(" Animal Detected! Buzzer is ON."),
duration: Duration(seconds: 3),
backgroundColor: Colors.red,
),
);
// Reset detection after 5 seconds
Future.delayed(const Duration(seconds: 5), () {
setState(() {
isAnimalDetected = false;
isBuzzerOn = false;
});
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Animal Detection"),
backgroundColor: Colors.brown.shade700,
),
body: Center(
child: Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
elevation: 5,
color: isAnimalDetected ? Colors.red[200] : Colors.white,
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
isAnimalDetected ? Icons.warning : Icons.check_circle,
size: 80,
color: isAnimalDetected ? Colors.red : Colors.green,
),
const SizedBox(height: 10),
const Text(
"Animal Detection Status",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 10),
Text(
isAnimalDetected ? " Animal Detected!" : " No Animals Nearby",
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
import 'package:flutter/material.dart';
class ApplianceControlScreen extends StatefulWidget {
const ApplianceControlScreen({super.key});
@override
_ApplianceControlScreenState createState() => _ApplianceControlScreenState();
}
class _ApplianceControlScreenState extends State<ApplianceControlScreen> {
double ldrValue = 450; // Simulated LDR sensor value
bool isLightOn = false;
@override
void initState() {
super.initState();
_checkLdrSensor();
}
// Function to check LDR sensor value and determine if light is ON or OFF
void _checkLdrSensor() {
setState(() {
isLightOn = ldrValue > 500; // Assume light is ON if LDR value > 500
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Appliance Control"),
backgroundColor: Colors.green.shade700,
),
body: Center(
child: Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
elevation: 5,
color: isLightOn ? Colors.green[200] : Colors.white,
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Icon(
Icons.lightbulb,
size: 80,
color: isLightOn ? Colors.green : Colors.grey,
),
const SizedBox(height: 10),
const Text(
"Farm Light Status",
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
const SizedBox(height: 10),
Text(
isLightOn ? "ON" : "OFF",
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
color: isLightOn ? Colors.green[800] : Colors.red),
),
const SizedBox(height: 10),
Text(
"LDR Sensor Value: $ldrValue",
style: TextStyle(fontSize: 16, color: Colors.grey[700]),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () {
setState(() {
ldrValue = ldrValue > 500 ? 400 : 600; // Toggle LDR value
_checkLdrSensor();
});
},
child: const Text("Simulate Light Change"),
),
],
),
),
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
enum Language { english, hindi, marathi }
Language currentLanguage = Language.english;
class SchemesPage extends StatelessWidget {
final List<Map<String, dynamic>> schemes = [
{
'title': {
'english': 'PM-KISAN (Pradhan Mantri Kisan Samman Nidhi)',
'hindi': 'प्रध नमांत्री िकस न सम्म न िनिध योजन ',
'marathi': 'पांतप्रध न िकस न सन्म न िनधी योजन '
},
'description': {
'english': '₹6000/year for eligible farmers in 3 installments.',
'hindi': 'प त्र िकस नोां को ₹6000 प्रित वर्ष तीन िकश्ोां में।',
'marathi': 'प त्र शतकऱय ांन ₹6000 दरवर्ी तीन हप्त् ांत िदल ज त.'
},
'steps': {
'english': [
'Go to https://pmkisan.gov.in',
'Click on “Farmer Corner” → “New Farmer Registration”',
'Enter Aadhaar, choose state, fill form',
'Upload documents & submit'
],
'hindi': [
'https://pmkisan.gov.in पर ज एां ',
'“Farmer Corner” → “New Farmer Registration” क्लिक करें ',
'आध र दजष करें , र ज्य चुनें, फॉमष भरें ',
'दस्त वज िपलोड करें और सबिमट करें '
],
'marathi': ['https://pmkisan.gov.in ल भट द्य ',
'“Farmer Corner” → “New Farmer Registration” क्लिक कर ',
'आध र ट क , र ज्य िनवड , फॉमष भर ',
]
},
'documents': {
'english': ['No document required'],
'hindi': ['कोई दस्त वज़ आवश्यक नहीां'],
'marathi': ['कोणतही क गदपत्र आवश्यक न हीत']
},
'url': 'https://mahafood.gov.in'
},
{
'title': {
'english': 'Mahatma Jyotiba Phule Shetkari Karjmukti Yojana',
'hindi': 'मह त्म ज्योितब फुल िकस न कजषम फी योजन ',
'marathi': 'मह त्म फुल शतकरी कजषमुक्ती योजन '
},
'description': {
'english': 'Loan waiver up to ₹2 lakh for small/marginal farmers.',
'hindi': 'सीम ांत िकस नोां क िलए ₹2 ल ख तक की कजष म फी।',
'marathi': 'सीम ांत शतकऱय ांस ठी ₹2 ल ख पयंत कजषम फी.'
},
'steps': {
'english': [
'Go to nearest agriculture office',
'Submit loan documents and Aadhaar',
'Wait for verification and approval'
],
'hindi': [
'नजदीकी कृिर् क य षलय ज एां ',
'कजष और आध र दस्त वज़ जम करें ',
'सत्य पन और मांज़ूरी की प्रतीक्ष करें '
],
'marathi': [
'जवळच्य कृर्ी क य षलय त ज ',
'कज षच व आध र क गदपत्र द्य ',
'सत्य पन आिण मांजुरीची व ट पह '
]
},
'documents': {
'english': ['Loan Document', 'Aadhaar Card', 'Bank Passbook'],
'hindi': ['कजष दस्त वज़', 'आध र क डष ', 'बैंक प सबुक'],
'marathi': ['कजष क गदपत्र', 'आध र क डष ', 'बँक प सबुक']
},
'url': 'https://krishi.maharashtra.gov.in'
},
{
'title': {
'english': 'Baliraja Chetna Abhiyan',
'hindi': 'बलीर ज चतन ििभय न',
'marathi': 'बळीर ज चतन ििभय न'
},
'description': {
'english': 'Support program for farmers in distress.',
'hindi': 'सांकटग्रस्त िकस नोां क िलए सह यत क यषक्रम।',
'marathi': 'िडचणीत िसलल्य शतकऱय ांस ठी मदत क यषक्रम.'
},
'steps': {
'english': [
'Approach village officer or talathi',
'Submit farmer distress details',
'Get counselling and support'
],
'hindi': [
'ग ांव ििधक री य तल ठी स सांपकष करें ',
'िकस न सांकट िववरण जम करें ',
'सल ह और सह यत प्र प्त करें '
],
'marathi': [
'ग व ििधक री िकांव तल ठी य ांच्य कड ज ',
'शतकरी िडचणीची म िहती द्य ',
'समुपदशन व मदत िमळव '
]
},
'documents': {
'english': ['Farmer ID', 'Aadhaar Card', 'Application Form'],
'hindi': ['िकस न आईडी', 'आध र क डष ', 'आवदन पत्र'],
'marathi': ['शतकरी ओळखपत्र', 'आध र क डष ', 'िजष फॉमष']
},
'url': 'https://aaplesarkar.mahaonline.gov.in'
}
];
return map['marathi']!;
default:
return map['english']!;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
currentLanguage == Language.hindi
? 'सरक री योजन एां '
: currentLanguage == Language.marathi
? 'श सकीय योजन '
: 'Government Schemes',
),
actions: [
PopupMenuButton<Language>(
onSelected: (Language lang) {
currentLanguage = lang;
(context as Element).reassemble();
},
itemBuilder: (context) => [
PopupMenuItem(value: Language.english, child: Text('English')),
PopupMenuItem(value: Language.hindi, child: Text('िहांदी')),
PopupMenuItem(value: Language.marathi, child: Text('मर ठी')),
],
),
],
),
body: ListView.builder(
itemCount: schemes.length,
itemBuilder: (context, index) {
final scheme = schemes[index];
return Card(
margin: EdgeInsets.all(10),
elevation: 4,
child: ExpansionTile(
title: Text(getText(scheme['title'])),
subtitle: Text(getText(scheme['description'])),
children: [
Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
currentLanguage == Language.hindi
? 'आवदन कैस करें :'
: currentLanguage == Language.marathi
? 'िजष कस कर व :'
: 'How to Apply:',
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
...getSteps(scheme['steps']).map((step) => Padding(
padding: const EdgeInsets.symmetric(vertical: 2),
child: Text("• $step"),
)),
SizedBox(height: 12),
Text(
currentLanguage == Language.hindi
? 'आवश्यक दस्त वज़:'
: currentLanguage == Language.marathi
? 'आवश्यक क गदपत्र:'
: 'Required Documents:',
style: TextStyle(fontWeight: FontWeight.bold),
),
...getDocs(scheme['documents']).map((doc) => Padding(
padding: const EdgeInsets.symmetric(vertical: 2),
child: Text("• $doc"),
)),
SizedBox(height: 10),
Align(
alignment: Alignment.centerRight,
child: ElevatedButton.icon(
icon: Icon(Icons.open_in_browser),
label: Text(
currentLanguage == Language.hindi
? 'आवदन करें '
: currentLanguage == Language.marathi
? 'िजष कर '
: 'Apply',
),
onPressed: () => _launchURL(scheme['url']),
),
)
],
),
)
],
),
);
},
),
);
}
}
CHAPTER 6
TESTING & DEBUGGING STRATEGIES & TEST CASES
6.1 TESTING
Psychology of Testing
• System Testing
The philosophy behind testing is to find errors. Test cases are devised with
this in mind. A strategy employed for system testing is code testing.
This strategy examines the logic of the program. To follow this method, we
developed some test data that resulted in executing every instruction in the
program and module i.e. every path is tested. Systems are not designed as entire
nor are they tested as single systems. To ensure that the coding is perfect two types
of testing is performed or for that matter is performed or that matter is performed
or for that matter is performed on all systems.
Unit testing focuses verification effort on the smallest unit of software i.e. the
module. Using the detailed design and the process specifications testing is done
to uncover errors within the boundary of the module. All modules must be
successful in the unit test before the start of the integration testing begins.
In this project each service can be thought of a module. There are so many
modules like Login, HWAdmin, MasterAdmin, Normal User, and PManager.
Giving different sets of inputs has tested each module. When developing the
module as well as finishing the development so that each module works without
any error. The inputs are validated when accepting from the user.
In this application developer tests the programs up as system. Software units in a
system are the modules and routines that are assembled and integrated to form a
specific function. Unit testing is first done on modules, independent of one another
to locate errors. This enables to detect errors. Through this errors resulting from
interaction between modules initially avoided.
6.4.2 Link Testing
Link testing does not test software but rather the integration of each module in
system. The primary concern is the compatibility of each module. The
Programmer tests where modules are designed with different parameters, length,
type etc.
Here the entire software system is tested. The reference document for this process is
the requirements document, and the goal os to see if software meets its
requirements.
Here entire ‘ATM’ has been tested against requirements of project and it is
checked whether all requirements of project have been satisfied or not.
TC_SID_004 Verify the "Soil Title: "Soil A section with the Pass Pass
Moisture" Moisture", title "Soil Moisture"
display section. Icon: Water and a water wave
waves icon is visible.
TC_CH_005 Verify the "Soil Sensors" Tab Label: "Soil A tab labeled "Soil Sensors" Pass Pass
tab is present and not Sensors", State: is visible and not visually
selected. Not Selected/Inacti indicated as the currently
ve selected tab.
TC_CH_006 Verify the "Soil Nutrient Text: "Soil The Pass Pass
Levels" sub-heading is Nutrient Levels" sub-heading "Soil Nutrient
present. Levels" is visible below
the tabs.
TC_CH_007 Verify the Nitrogen (N) Nutrient: "Nitrogen (N)" with a leaf Pass Pass
level display. "Nitrogen (N)", icon, "Value : 20", and
Value Label: "Low" indicator are
"Value :", displayed.
Value: "20",
Status: "Low"
TC_CH_008 Verify the Phosphorus (P) Nutrient: "Phosphorus (P)" with a Pass Pass
level display. "Phosphorus (P)", droplet icon, "Value : 30",
Value Label: and "Low" indicator are
"Value displayed.
:", Value: "30",
Status: "Low"
TC_AD_003 Verify the Alert Message: A card with the Pass Pass
"Animal "! Animal message "!
Detected! Detected! Animal Detected!
Check farm Check farm Check farm
security." alert security.", Icon: security." and a
is displayed. Yellow yellow exclamation
Exclamation icon is visible.
TC_AD_005 Verify the alert Icon: Red A red triangle icon Pass Pass
icon within the Triangle with with an exclamation
"Check farm Exclamation mark is present
security" alert Mark within the alert card.
card.
TC_AD_009 Verify the Icon: Paw print, The paw print icon Pass Pass
"Animal State: in the bottom
Detect" icon in Highlighted/Acti navigation bar is
the bottom ve visually highlighted
navigation bar or indicated as the
is active screen.
highlighted/acti
ve.
TC_AD_010 Verify the first Appearance: The first icon Pass Pass
icon in the Resembles a visually represents
bottom dashboard or a dashboard or
navigation bar. home home.
TC_AD_012 Verify the third Appearance: The third icon Pass Pass
icon in the Resembles visually represents
bottom water waves water waves.
navigation bar.
TC_AD_013 Verify the fifth Appearance: The fifth icon Pass Pass
icon in the Resembles visually represents
bottom leaves or plant leaves or plant
navigation bar. growth growth.
TC_AD_014 Verify the sixth Appearance: The sixth icon Pass Pass
icon in the Resembles a visually represents
bottom speech bubble a speech bubble or
navigation bar. or chat icon chat icon.
z
TC_AD_006 Verify the "Animal Notification A red banner with the Pass Pass
Detected! Alarm Message: "! message "! Animal
Triggered." Animal Detected!
notification banner Detected! Alarm Triggered." is
is displayed. Alarm displayed at the
Triggered.", bottom.
Color: Red
TC_AD_007 Verify the alert icon Icon: Yellow icon is present within the Pass Pass
within the "Alarm Exclamation "Alarm Triggered"
Triggered" notification banner.
notification banner.
TC_AD_009 Verify the "Animal Icon: Paw The paw print icon in the Pass Pass
Detect" icon in the print, State: bottom navigation bar is
bottom navigation Highlighted/A visually highlighted or
bar is cti ve indicated as the
highlighted/acti active screen.
ve.
TC_AD_010 Verify the first icon Appearance: The first icon visually Pass Pass
in the bottom Resembles a represents a dashboard or
navigation bar. dashboard or home.
home
TC_AD_011 Verify the second Appearance: The second icon visually Pass Pass
icon in the bottom Resembles a represents a vehicle or
navigation bar. vehicle or tractor.
tractor
TC_AD_012 Verify the third icon Appearance: The third icon visually Pass Pass
in the bottom Resembles represents water waves.
navigation bar. water waves
TC_AD_013 Verify the fifth icon Appearance: The fifth icon visually Pass Pass
in the bottom Resembles represents leaves or plant
navigation bar. leaves or growth.
plant growth
TC_AD_014 Verify the sixth icon Appearance: The sixth icon visually Pass Pass
in the bottom Resembles a represents a speech
navigation bar. speech bubble or chat icon.
bubble or
chat icon
TC_AD_015 timestamp Format: Time A timestamp in the format Pass Pass
displayed in the (HH:MM HH:MM AM/PM (e.g.,
top-left corner. AM/PM) "2:03
PM") is visible in the top-
left
corner.
TC_AD_016 Verify the status Icons: Standard status bar icons Pass Pass
bar icons Wi-Fi/Mobile for connectivity and
(connectivity, signal, battery are visible.
battery, etc.) are Battery
present. indicator
TC_AD_017 Verify the absence Context: The alerts displayed are Pass Pass
of specific Indian Animal generic ("Animal
animal alerts (if not detection for Detected") and do not
applicable). a farm in specifically mention
India, animals common only to
Specific India (if no such specific
animals: alerts are intended).
TC_AD_018 Verify the color Colors: The colors used for alerts Pass Pass
consistency of Red/Yellow and the critical notification
alerts and for alerts, are consistent with the
notifications. Red for design.
critical
notification
TC_AD_019 Verify the text Font size, The alert messages are Pass Pass
formatting and color, clearly formatted and
readability of alert emphasis easy to read.
messages. (e.g., bolding)
TC_AD_020 Verify the overall Arrangement: The title, alerts, and Pass Pass
layout and visual Title top, bottom navigation are
hierarchy of the Alerts arranged in a clear and
elements. centered, logical visual hierarchy.
Navigation
bottom
CHAPTER 7
ADVANTAGES
➤AutomatedDataCollection
With built-in sensors, all farm data is collected automatically. This removes the need for manual
checks, saving time and reducing errors. It ensures accurate and continuous updates without depending
on human effort.
➤Cloud-BasedDataStorage
Sensor readings are sent directly to Firebase Cloud, where they are stored securely and can be accessed
anytime. This allows farmers to view past records, analyze trends, and plan better for future farming
activities.
➤MobileAppAccess
The user-friendly Android app lets farmers check real-time data, control pumps, and get alerts right on
their phones. Whether in the field or at home, they stay connected with their farm and can act quickly
if needed.
➤EarlyAlertsandCropProtection
AgroVision gives instant alerts through buzzers and app notifications for threats like animal movement
or unusual conditions. This early warning system helps protect crops from pests, water stress, or
environmental harm.
➤Low-CostandFarmer-Friendly
The system is built using affordable parts like Arduino boards and basic sensors. It’s budget-friendly,
making it suitable even for small farmers or rural areas with limited resources.
➤EasytoUseInterface
The app is simple to understand and easy to navigate. It uses color codes, live graphs, and buttons that
even people with little tech experience can manage comfortably.
➤VisualDataInsights
AgroVision doesn’t just show numbers – it gives graphs and trend lines that help farmers understand
what’s happening over time. This helps in planning irrigation, fertilization, and managing soil health
effectively.
➤HelpsGovernment&AgricultureSchemes
The system can support public and private farming programs by offering transparent and trackable
monitoring. It reduces the need for manual field visits and promotes digital agriculture in rural areas.
➤CustomSettingsforDifferentCrops
Farmers can set their own thresholds for sensors based on crop type, soil condition, and climate. This
makes AgroVision flexible and useful for many different types of crops and farming practices.
➤PortableandExpandableDesign
AgroVision’s design is simple, light, and modular. It can be moved between fields and upgraded easily
with new sensors or software features without major hardware changes.
➤WorksWithoutInternetTemporarily
Even if the internet goes down, the system keeps storing data locally. Once it reconnects, it uploads
everything automatically, making it reliable even in areas with weak or no network.
➤ProtectsEnvironmentandResources
By using just the right amount of water and fertilizer, AgroVision helps in avoiding waste and
preventing damage to the soil. It also reduces the risk of waterlogging and over-irrigation.
➤UsefulforStudentsandResearch
AgroVision is a great learning tool for students studying agriculture, environment, or electronics. It
helps them understand real-world applications of IoT and smart farming.
➤SupportsSustainableDevelopmentGoals(SDGs)
AgroVision supports the goal of “Zero Hunger” by helping farmers grow healthier crops and use
resources wisely. It’s a step toward modern, eco-friendly, and tech-driven farming for all.
CHAPTER 8
CONCLUSION AND RECOMMENDATIONS
8.1 CONCLUSION
Agrovision is a smart and affordable farming system built to help farmers take better care of their
crops using real-time information. With problems like unpredictable weather, poor soil quality, and
water shortage, there’s a growing need for technology that makes farming easier and more efficient.
Agrovision meets this need by combining useful sensors, automatic controls, and a mobile app that
gives farmers full control from anywhere.
The system uses different sensors to check soil moisture, temperature, humidity, ph, sunlight, and
nutrients (NPK). It also includes animal detection to protect crops and can turn pumps or lights on/off
automatically. This saves water, power, and labor. Farmers get all this information on their phones,
with clear alerts, graphs, and options to control devices remotely. The system is easy to use, even for
farmers with little experience in technology.
Agrovision bridges the gap between traditional and smart farming. It's designed to grow over time with
more features like automatic fertilizer systems and AI-based pest prediction. Overall, agrovision helps
farmers grow healthier crops, save resources, and move toward smarter and more sustainable
agriculture.
AgroVision: A Smart Agriculture Monitoring System can be further developed into a more
advanced and intelligent platform. By integrating newer technologies and enhancing current
capabilities, the system can provide broader and deeper support for modern, sustainable, and
efficient farming practices.
1.AdvancedSmartSensorIntegration
Future versions of AgroVision can use more accurate and self-calibrating sensors to collect
real-time data on soil nutrients, pH, temperature, moisture, and environmental conditions.
This will improve precision in decision-making and enhance crop health monitoring.
2.AutomatedNutrientDispensingSystem
By integrating AI-driven fertilizer dispensers, the system can automatically apply the right
amount and type of nutrients based on real-time data analysis. This minimizes manual errors,
saves resources, and ensures optimal plant nutrition.
3.CentralizedFarmDashboardwithIoT&CloudIntegration
The system can be upgraded to support cloud connectivity, enabling farmers to access sensor
data, control devices, and receive alerts from a centralized dashboard. This would allow for
the management of multiple fields or greenhouses from any location.
4.AI-BasedCropDiseaseandPestPrediction
Machine learning can be introduced to analyze historical and real-time data to predict
potential pest infestations or disease outbreaks. Early warnings will help farmers take timely
actions to protect crops and reduce losses.
CHAPTER 9
REFERENCES
Website
5. www.androidtutorials.com
6. www.javatpoint.com
7. www.progchamp.com
8. https://www.emarketinginstitute.org/
9. https://www.restolabs.com/
Books:
STATE LEVEL DIPEX 2025 COMPETITION – RUNNER-UP AWARD AND SPONSORSHIP RECOGNITION
We proudly secured the runner-up position at the state level DIPEX 2025 competition for our
innovative project, AgroVision: Smart Agriculture System. The project was recognized for its
practical impact and technical excellence. As a result, it received sponsorship support and was
honored with an official certificate of achievement (attached below). This milestone reflects the
project's potential in addressing real-world agricultural challenges through sustainable technology.