top of page

عبدالرحمن سمير سندي

abdulrhmain19@gmail.com

للدخول على موقع المهندس المشرف على المشروع قم بالضغط على صورته

م. ايمن كيفي

akaifi@cte.edu.sa

المقدمه


اقدم لكم مشروعي هذا و هو عبارة عن حساس حرارة و رطوبة و حساس ضوئي تتم قرائتها عن طريق شاشة رقمية و يمكن قراءة المعطيات عن طريق الجوال من موقع
Thingspeake
و المشروع هذا متواجد بكثرة في المحميات الزراعية لقياس نسبة الضوء و الحرارة و  الرطوبة  داخل المحمية ويفدنا كثير لمعرفة طقوس المحمية لانه يستخدم بتقنيه ال

(WI FI)

العناصر المستخدمة في الدائرة

Arduino المبرمج

هي قطعه لربط وبرمجه العناصر المستخدمه

RResistance مقاومة ضوئية

وهو عنصر استشعار شدة الاضاءه

ESP8266

الاتصال عن بعد (WIFI) 

وهو عبارة عن قطعه الكترونيه مبرمجة للاتصال بمودم ونقل البيانت المستقبل الى موقع 

(Thingspeake)

DHT11

 حساس استشعار الحراره والرطوبه

LCD 16*2

 شاشه عرض المعلومات (LCD)

ودرجات قياس الحساسات

ملاحظة 

لتفاصيل اكثر قم بالضغط على الصورة

للرغبة في الحصول على القطع اضغط هنا

Resistance مقاومه متغيره

وهو عنصر الكتروني يستختم للتحكم في شده اضاءه الشاشه

تركيب و توصيل العناصر و تجربتها على التست بورد 

<---- المكتبات 

<---- تعريفات الثوابت 

<---- تعريفات المخارج و المداخل لعناصر المكتبات

<----  تعريفات المتغيرات 

اعداد صحيحه و اعداد حقيقيه و اعداد ثنائية

<---- الدالة الرقمية تقرأ لمرة واحدة

<---- الاتصال بالواي فاي 

<---- دالة الإشعال

str= تعريف كتابة او الرموز

<---- دالة إرسال البيانات

إرسال العنوان 

و عدد الرموز

و التحديث

 الاكواد اللازمة لتشغيل المشروع مع شرحها

#include <SoftwareSerial.h>
#include <dht.h>
#include <LiquidCrystal.h>

#define SSID "r"
#define PASSWORD ""
#define API_KEY "Q9N5R2LS1PKE4NO7"
#define DHT11_PIN 2

dht DHT;
SoftwareSerial ser(3, 4);
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

float humi, temp, light;
byte send_time = 60;
bool error_system;

void setup() {
Serial.begin(9600);
ser.begin(9600);
lcd.begin(16, 2);

lcd.print("Conneting to WIFI");
if(join_SSID(SSID, PASSWORD)){Serial.println("SSID Joined");}
else {Serial.println("ERROR Joining SSID");}
}

void loop() {
if(DHT.read11(DHT11_PIN) == DHTLIB_OK){humi = DHT.humidity; temp = DHT.temperature;}
light = analogRead(A0)*100.0/1023.0;

if(send_time >= 60){
if(send_data(humi, temp, light)){Serial.println("DATA Sent"); error_system = false;}
else {error_system = true;}
lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 0);
lcd.print(humi, 1); lcd.print(" "); lcd.print(temp, 1); lcd.print(" "); lcd.print(light, 1);
lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1);
if(error_system){lcd.print("Data not sent");}
else {lcd.print("Data sent");}
send_time = 0;
}

send_time++;
delay(1000);
}



bool join_SSID(String _SSID, String _PASSWORD){
String Str;
bool check, error;
byte count;

Str += "AT+CWJAP=";
Str += "\"";
Str += _SSID;
Str += "\",\"";
Str += _PASSWORD;
Str += "\"";
ser.println(Str);
check = true; count = 0;
while(check){
if(ser.find("OK")){check = false; error = false;}
else if(ser.find("ERROR")){ser.println(Str);}
count++;
if(count > 5){check = false; error = true;}
delay(1000);
}
if(error){return false;}
else {return true;}
}

bool send_data(float data1, float data2, float data3){
String GET = "GET /update?api_key=", cipsend = "AT+CIPSEND=";
bool check, error;
byte count;
char buf[100];

GET += API_KEY;
GET += "&field1=";
GET += String(data1);
GET += "&field2=";
GET += String(data2);
GET += "&field3=";
GET += String(data3);

ser.println("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80");
Serial.println("Sending AT+CIPSTART");
check = true; count = 0;
while(check){
if(ser.find("OK")){check = false; error = false;}
else if(ser.find("ALREADY CONNECTED")){check = false; error = false;}
else {ser.println("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80");}
count++;
if(count > 5){check = false; error = true;}
delay(1000);
}

if(error){Serial.println("ERROR Sending AT+CIPSTART"); return false;}
else {
Serial.println("Sending AT+CIPSEND");
cipsend += String(GET.length()+5); ser.println(cipsend);
check = true; count = 0;
while(check){
if(ser.find("OK")){check = false; error = false;}
else {ser.println(cipsend);}
count++;
if(count > 5){check = false; error = true;}
delay(1000);
}

if(error){Serial.println("ERROR sending AT+CIPSEND"); return false;}
else {
Serial.println("Sending DATA");
ser.flush();
ser.println(GET);
ser.println(GET);
while(ser.find("busy")){}
ser.println("AT+CIPCLOSE");
if(error){Serial.println("ERROR sending DATA"); return false;}
else {return true;}
}
}
}

لتحميل الكود انقر على هذه الصورة

<---- دالة التكرار

Fritizing الرسمة النظريه ببرنامج الـ 

Fritizing الرسمة العملية ببرنامج الـ 

مرحلة التصوير

نقوم بوضع البورد مع الرسمة داخل جهاز التصوير و تستغرق هذة العملية 120 ثانية تقريبا

مرحلة الإظهار

وهي تأتي بعد مرحلة التصوير والتي نقوم فيها بوضع البورد في الماء و مضاف عليه كلوريد الحديد لازالة اللون الاخضر من البورد.

مرحلة التحميض

نقوم بوضع البورد بعد اظهاره في الحمض لكي تزيل القطعه النحاسية عن البورد , و تستغرق هذة العملية 15 دقيقة تقريبا

تركيب العناصر وتجربتها

تكلفة المشروع بالكامل 785 ريال سعودي

لتفاصيل اكثر عن برمجة الاردوينو قم بتحميل كتاب اردوينو ببساطة عن طريق الضغط على الصورة 

فيديو تعليمي عن الاردوينو من شرح المهندس ايمن كيفي

 ارجو ان اكون قد وفقت في شرح مشروعي هذا و الذي اتمنى ان اكون وفقت فيه و في شرحه و ان يكون جهد 15 اسبوع بالنجاح راجيا من المولى عز وجل التوفيق و النجاح

و السلام مسك الختام 

الشكل النهائي

فيديو توضيحي لتشغيل المشروع بالكامل + الشكل النهائي

Follow

©2016 by Sensors. Proudly created with Wix.com

bottom of page