الثلاثاء، 27 فبراير 2018

تسجيل بيانات درجة الحرارة بواسطة اردوينو

المواد المطلوبة

Arduino Uno

DS3231 Real Time Clock
Mini SD card module
LM35 temperature sensor

في هذا المشروع،  نقوم بتسجيل قراءة اردوينو لدرجة الحرارة التي سوف تحصل على قيمة درجة الحرارة من مستشعر درجة الحرارة LM35 والوقت من وحدة الوقت الحقيقي DS3231 على مدار الساعة. ثم سنقوم بتخزين هذه القيم في ملف بطاقة sd  بعد ذلك، سوف نقوم بالوصول إلى هذا الملف من جهاز كمبيوتر وإنشاء مخطط لهذه القيم في ميكروسوفت إكسيل.




تربط  DS3231 مع اردوينو  على النحو التالي:

  • GND مع GND الاردوينو
  • VCC ل DS3231 مع 5فولت في الاردوينو 
  • SDA ل DS3231 مع A4 في الاردوينو 
  • SCL مع   A5 في اردوينو
ربط SD مع الاردوينو
CS يربط مع المنفذ 10 على الاردوينو
SCK يربط مع المنفذ 13 على الاردوينو
MOSI يربط مع المنفذ 11 على الاردوينو
MISO يربط مع المنفذ 12 على الاردوينو
VCC يربط مع المنفذ 5V على الاردوينو
GND  يربط مع المنفذ GND على الاردوينو

ربط متحسس الحرارة LM35 مع اردوينو

VCC يربط مع المنفذ 5V على الاردوينو
OUT يربط مع المنفذ A0 على الاردوينو
GND  يربط مع المنفذ GND على الاردوينو


كود الوقت

#include <DS3231.h>

DS3231  rtc(SDA, SCL);




void setup()

{  

  rtc.begin();

   rtc.setDOW(WEDNESDAY);     

  rtc.setTime(12, 0, 0);     

  rtc.setDate(1, 1, 2014);   

}




void loop()

{

}
الكود
#include <SD.h>

#include <SPI.h>

#include <DS3231.h>

File data_file;

DS3231  rtc(SDA, SCL);




const int lm35_pin = A0; 

int temperature;  

int chip_select_pin = 10;     //pin 53 for arduino mega 2560




void setup() {

  Serial.begin(9600);

  rtc.begin();  

  pinMode(lm35_pin, INPUT);

  pinMode(chip_select_pin, OUTPUT);

  if (SD.begin())

  {

    Serial.println("Initialization Successful. Ready to use");

  } else

  {

    Serial.println("Initialization failed. Check your pin connections or change your SD card");

    return;

  }

    

}




void loop() {

  temperature = analogRead(lm35_pin);

  temperature = (temperature*500)/1023;

  data_file = SD.open("test.txt", FILE_WRITE);

  if (data_file) {    

    Serial.print(rtc.getTimeStr());

    data_file.print(rtc.getTimeStr());

    Serial.print(",");

    data_file.print(",");    

    Serial.println(temperature);

    data_file.println(temperature);

    data_file.close();

  }

  

  else {

    Serial.println("error opening your SD card file. Try again");

  }

  delay(3000);

}


الاثنين، 26 فبراير 2018

السيطرة على عمل محرك باستخدام متحسس الحرارة + اردوينو

جعل مروحة  تدور تلقائيا عند درجة حرارة الغرفة تصل إلى درجة معينة.

المواد المطلوبة

اردوينو اونو 1

شاشة LCD 2*16
متحسس الحرارة والرطوبة DHT22
محرك تيار مستمر
بطارية 9 فولت
مقاومة متغيرة 10K
لوحة الربط

في هذه المقالة، وأنت تسير لمعرفة المزيد عن اردوينو التحكم في درجة الحرارة مروحة باستخدام استشعار DHT22 والتتابع. سوف نستخدم جهاز استشعار DHT22 للحصول على قيمة درجة الحرارة وسوف نقوم بطباعة هذه القيمة درجة الحرارة على شاشات الكريستال السائل. ثم سوف نقوم بفحص ما إذا كانت قيمة درجة الحرارة أكبر من 35 أم لا، إذا كانت درجة الحرارة ستكون أكبر من 35، ثم سيتم تفعيل التتابع وسوف تبدأ مروحة بالتدوير.


أولا وقبل كل شيء تربط  الشاشة الكرستالية مع اردوينو على النحو التالي:
اربط VSS مع الارضي
اربط VDD مع +5V
اربط V0 مع المقاومة المتغيرة ( الرجل الوسطي) الارجل الاخرى للمقاومة المتغيرة (على الجوانب) تربط احداها مع 5V والاخرى مع الارضي
اربط RS مع المنفذ 2 في الاردوينو
اربط R/W مع ارضي
اربط E مع المنفذ 3 في الاردوينو
اربط من D4 الى D7 مع المنافذ 4, 5, 6, 7
اربط المنفذ 15 مع 5V من خلال مقاومة 220ohm
اربط المنفذ 16 مع الارضي

يربط المرحل ( ريلاي) على النحو التالي

VCC مع 5V
IN مع المنفذ 9 في الاردوينو
GND مع الارضي
الطرف الاخر من المرحل يربط مع الموجب في البطارية والنقطة المشتركة للمرحل يربط مع النقطة NC الى السالب
كما ويربط المتحسس كما يلي
المنفذ 1 من المتحسس يربط مع VCC في الاردوينو
المنفذ 2 من المتحسس يربط مع المنفذ 8 في الاردوينو
المنفذ 4 يربط مع الارضي في الاردوينو



الكود
#include "DHT.h" #include "LiquidCrystal.h" LiquidCrystal lcd(7, 8, 9, 10, 11 ,12); #define DHTPIN 6 #define DHTTYPE DHT22 DHT sensor(DHTPIN, DHTTYPE); int relay_pin = 9; void setup() { lcd.begin(16,2); sensor.begin(); pinMode(relay_pin, OUTPUT); digitalWrite(relay_pin, HIGH); } void loop() { lcd.clear(); float t = sensor.readTemperature(); //reading the temperature from the sensor // Checking if the sensor is sending values or not if (isnan(t)) { lcd.print("Failed"); delay(1000); return; } lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); if (t > 35){ digitalWrite(relay_pin, LOW); lcd.setCursor(0,1); lcd.print("Fan is ON "); delay(10); } else{ digitalWrite(relay_pin, HIGH); lcd.setCursor(0,1); lcd.print("Fan is OFF "); } delay(2000); }