আরডুইনো অটোমেটিক স্কুল / কলেজ বেল সিস্টেম

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





এই পোস্টে আমরা আরডুইনো, 16 x 2 ডিসপ্লে এবং রিয়েল টাইম ক্লক মডিউলটি ব্যবহার করে একটি স্বয়ংক্রিয় স্কুল বেল / কলেজ বেল সিস্টেম তৈরি করতে যাচ্ছি। আপনি এই প্রকল্পটি আপনার পছন্দসই ঘন্টা এবং মিনিটে দিনে ১ times বার বাজানোর জন্য প্রোগ্রাম করতে পারেন। বেলের রিংয়ের দৈর্ঘ্য কয়েক সেকেন্ডের মধ্যে প্রোগ্রাম করা যেতে পারে।

কোডিং ছাড়া সহজ সংস্করণটি খুঁজছেন? এটা নাও এখানে



ওভারভিউ

সেই দিনগুলি হয়ে গেল, যখন একটি স্কুলের একটি পিয়ন যখন 'টিন টিনের টিন' বাজত এবং শিক্ষার্থীরা উড়ন্ত রঙের সাথে স্কুল প্রবেশের বাইরে দৌড়ে যায়। কয়েক মিনিট আগে পিয়ন যখন শেষ ঘন্টাটি বেজেছিল তখন কেউ কেউ আরও সুখী হতে পারে।

15 থেকে 20 বছর আগে এই দৃশ্য ছিল, তবে এখন সমস্ত স্কুল-কলেজ কঠোরভাবে সময়সীমা বেধে রয়েছে এবং ঘন্টাগুলি স্বয়ংক্রিয়ভাবে সজ্জিত।



লেখকের দ্রুত শৈশব / কিশোর হুড মনে রাখবেন:

আমার প্রাথমিক ও মাধ্যমিক বিদ্যালয়ের সময় আমি যে ডিজিটাল ঘড়িটি পরিধান করতাম সেটি 1 সেকেন্ডের যথার্থতার সাথে স্কুলের বেল সিস্টেমের সাথে সিঙ্ক্রোনাইজ হয়েছিল।

বেল বাজানোর পরে আমি 'চিৎকার করে বলছি 5 সেকেন্ডের মধ্যে বেজে যাবে' সমস্ত শিক্ষার্থী আমাকে অবাক করে তাকিয়ে রইল, প্রায় প্রতিদিনই এটি ঘটে। কোনও দিন আমি এবং আমার নিকটতম বন্ধুরা 10, 9, 8, 7… গণনা শুরু করি ... শেষ বেলটির আগে।

আমার সমস্ত বন্ধুবান্ধব বলে যে এটি একটি যাদু কব্জি ঘড়ি, তবে তারা স্কুলটির ঘণ্টাটি স্বয়ংক্রিয়ভাবে চালিত হয়েছে এমন একটি সাধারণ সত্য বুঝতে পারেনি। হাঃ হাঃ হাঃ!!

আমরা আরডুইনো ব্যবহার করে এরকম একটি স্কুল / কলেজের বেল বানাতে যাচ্ছি।

আরডুইনো সংযোগে প্রদর্শিত হবে

আরডুইনো সংযোগের প্রদর্শনটি আমরা সাধারণত যেগুলি তারে থাকি তার থেকে কিছুটা আলাদা, এখানে ব্যবহৃত পিনগুলি 9, 8, 7, 6, 5 এবং 4। পিন 2 এবং 3 এর মাধ্যমে হার্ডওয়্যার বিঘ্নিত হিসাবে ব্যবহৃত হয় বোতাম ধাক্কা

10 কে ব্যবহার করুন সম্ভাবনাময় জন্য বৈপরীত্য সামঞ্জস্য প্রদর্শন ।

আরডুইনো স্কুলের বেল এলসিডি

আরডুইনো ব্যবহার করে স্বয়ংক্রিয় স্কুল / কলেজ বেল সিস্টেম

বেল এবং রিলে সংযোগ সম্পর্কিত বিস্তারিত তথ্য:

আরডুইনো সহ স্কুল বেল টাইমার সার্কিট

আপডেট: এসসিএলে A5 এবং এসডিএতে A4 (এসিেকে থেকে A4 নয়)

রিয়েল টাইম ক্লক মডিউল

দ্য রিয়েল টাইম ক্লক মডিউল দীর্ঘ শক্তি কাটা পরেও সময়ের ট্র্যাক রাখে। বেলটি চালু এবং বন্ধ করার জন্য একটি 9 ভি রিলে সরবরাহ করা হয়।

রিলে জুড়ে বিপরীত পক্ষপাত্রে দয়া করে একটি 1N4007 ডায়োড সংযুক্ত করুন (যা স্কিম্যাটিকায় প্রদর্শিত হয়নি) যা রিলে থেকে ক্ষতিকারক উচ্চ ভোল্টেজ ব্যাক EMF শোষণ করবে।

সার্কিটটি ব্যবহার করে ক 9V / 500mA প্রাচীর অ্যাডাপ্টার

কিছু পরিস্থিতিতে বেল ম্যানুয়ালি পরিচালনার জন্য তিনটি পুশ বোতাম একটি সরবরাহ করা হয়। 'প্রস্থান' বোতামটি টিপলে বেলটি নিজে হাতে বাজানোর পরে ঘণ্টা বন্ধ হয়ে যাবে stop

'বেল অক্ষম করুন বোতাম' চিরকালের জন্য ঘন্টাটি অক্ষম করে দেবে। বেলটি পুনরায় সক্ষম করতে 'প্রস্থান করুন' বোতামটি টিপুন।

আরটিসি মডিউলে কীভাবে সময় সেট করবেন:

আরটিসি লাইব্রেরি ডাউনলোড করুন:
লিঙ্ক: github.com/PauulStoffregen/DS1307RTC

-------------------------------------------------- ---------------
টাইমলিবড ডাউনলোড করুন:
github.com/PaulStoffregen/Time
-------------------------------------------------- ----------------

প্রোগ্রাম আপলোড করুন

নীচে প্রোগ্রামটি আপলোড করুন যা আরটিসি-তে সময় নির্ধারণ করবে

//----------------------------------------------------//
#include
#include
#include
int P=A3 //Assign power pins for RTC
int N=A2
const char *monthName[12] = {
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
}
tmElements_t tm
void setup() {
pinMode(P,OUTPUT)
pinMode(N,OUTPUT)
digitalWrite(P,HIGH)
digitalWrite(N,LOW)
bool parse=false
bool config=false
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true
}
}
Serial.begin(9600)
while (!Serial) // wait for Arduino Serial Monitor
delay(200)
if (parse && config) {
Serial.print('DS1307 configured Time=')
Serial.print(__TIME__)
Serial.print(', Date=')
Serial.println(__DATE__)
} else if (parse) {
Serial.println('DS1307 Communication Error :-{')
Serial.println('Please check your circuitry')
} else {
Serial.print('Could not parse info from the compiler, Time='')
Serial.print(__TIME__)
Serial.print('', Date='')
Serial.print(__DATE__)
Serial.println(''')
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec
if (sscanf(str, '%d:%d:%d', &Hour, &Min, &Sec) != 3) return false
tm.Hour = Hour
tm.Minute = Min
tm.Second = Sec
return true
}
bool getDate(const char *str)
{
char Month[12]
int Day, Year
uint8_t monthIndex
if (sscanf(str, '%s %d %d', Month, &Day, &Year) != 3) return false
for (monthIndex = 0 monthIndex <12 monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break
}
if (monthIndex >= 12) return false
tm.Day = Day
tm.Month = monthIndex + 1
tm.Year = CalendarYrToTm(Year)
return true
}
//----------------------------------------------------//

কোড আপলোড করার পরে, সিরিয়াল মনিটরটি খুলুন, এটি বলবে যে সময় নির্ধারিত।
উপরের পদক্ষেপটি সফলভাবে সম্পাদিত হয়ে গেলে পরবর্তীটিতে এগিয়ে যান।
এখন আরডুইনোতে নীচের কোডটি আপলোড করুন।

প্রধান প্রোগ্রাম কোড:

//------------Program developed by R.GIRISH------------//
#include
#include
#include
#include
#include
LiquidCrystal lcd(9, 8, 7, 6, 5, 4)
int i = 0
int H = 0
int M = 0
int S = 0
int setting_value
const int bell = 10
const int P = A3
const int N = A2
const int setting_address = 0
const int over_ride_off = 11
boolean bell_status = true
boolean Over_ride = true
//------------------- Set Bell Timings from hours 1 to 23 hrs -------------------//
//---- 1st bell ------//
const int h1 = 0 //hours
const int m1 = 0 //Minutes
//---- 2nd bell ------//
const int h2 = 0
const int m2 = 0
//---- 3rd bell ------//
const int h3 = 0
const int m3 = 0
//---- 4th bell ------//
const int h4 = 0
const int m4 = 0
//---- 5th bell ------//
const int h5 = 0
const int m5 = 0
//---- 6th bell ------//
const int h6 = 0
const int m6 = 0
//---- 7th bell ------//
const int h7 = 0
const int m7 = 0
//---- 8th bell ------//
const int h8 = 0
const int m8 = 0
//---- 9th bell ------//
const int h9 = 0
const int m9 = 0
//---- 10th bell ------//
const int h10 = 0
const int m10 = 0
//---- 11th bell ------//
const int h11 = 0
const int m11 = 0
//---- 12th bell ------//
const int h12 = 0
const int m12 = 0
//---- 13th bell ------//
const int h13 = 0
const int m13 = 0
//---- 14th bell ------//
const int h14 = 0
const int m14 = 0
//---- 15th bell ------//
const int h15 = 0
const int m15 = 0
//---- 16th bell ------//
const int h16 = 0
const int m16 = 0
//--------------- bell ring lenght in seconds -------//
const int Lenght = 3 //in seconds
//-------------------------- -------------------------//
void setup()
{
lcd.begin(16, 2)
pinMode(P, OUTPUT)
pinMode(N, OUTPUT)
pinMode(bell, OUTPUT)
pinMode(over_ride_off, INPUT)
digitalWrite(P, HIGH)
digitalWrite(N, LOW)
digitalWrite(over_ride_off, HIGH)
attachInterrupt(0, over_ride, RISING)
attachInterrupt(1, bell_setting, RISING)
if (EEPROM.read(setting_address) != 1)
{
bell_setting()
}
}
void loop()
{
tmElements_t tm
lcd.clear()
if (RTC.read(tm))
{
H = tm.Hour
M = tm.Minute
S = tm.Second
lcd.setCursor(0, 0)
lcd.print('TIME:')
lcd.print(tm.Hour)
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
if (EEPROM.read(setting_address) == 1)
{
if (H == 0 && M == 0 && S == 0)
{
digitalWrite(bell, LOW)
}
if (H == h1 && M == m1 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h2 && M == m2 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h3 && M == m3 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h4 && M == m4 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h5 && M == m5 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h6 && M == m6 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h7 && M == m7 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h8 && M == m8 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h9 && M == m9 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h10 && M == m10 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h11 && M == m11 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h12 && M == m12 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h13 && M == m13 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h14 && M == m14 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h15 && M == m15 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
if (H == h16 && M == m16 && S == 0)
{
for (i = 0 i {
digitalWrite(bell, HIGH)
delay(1000)
}
digitalWrite(bell, LOW)
i = 0
}
}
delay(1000)
}
void over_ride()
{
lcd.clear()
while (Over_ride)
{
digitalWrite(bell, HIGH)
lcd.setCursor(0, 0)
lcd.print('Press Exit to')
lcd.setCursor(0, 1)
lcd.print('Stop the bell!!!')
if (digitalRead(over_ride_off) == LOW)
{
Over_ride = false
digitalWrite(bell, LOW)
}
}
Over_ride = true
}
void bell_setting()
{
setting_value = 0
EEPROM.write(setting_address, setting_value)
lcd.clear()
while (bell_status)
{
lcd.setCursor(0, 0)
lcd.print('Bell is Disabled')
lcd.setCursor(0, 1)
lcd.print('Press Exit.')
if (digitalRead(over_ride_off) == LOW)
{
bell_status = false
}
}
bell_status = true
setting_value = 1
EEPROM.write(setting_address, setting_value)
}
//------------Program developed by R.GIRISH------------//

উপরের কোডটি আপলোড করার পরে আপনাকে ডিসপ্লেতে কয়েক ঘন্টা সময় দেখতে হবে।

এটি প্রোগ্রামের কোডটি শেষ করে।

এই স্বয়ংক্রিয় বেল সিস্টেমটি কীভাবে ব্যবহার করবেন:

সম্পূর্ণ হার্ডওয়্যার সেটআপ দিয়ে এটি করুন।

1. প্রথমে 'টাইম সেটিং' কোডটি আপলোড করুন এবং সিরিয়াল মনিটরটি খুলুন।
২. মূল প্রোগ্রামটিতে রিলে এখানে ট্রিগার করা দরকার এমন সময় নির্ধারণ করুন।

//---- 1st bell ------//
const int h1 = 0 //hours
const int m1 = 0 //Minutes
//---- 2nd bell ------//
const int h2 = 0
const int m2 = 0
//---- 3rd bell ------//
const int h3 = 0
const int m3 = 0
//---- 4th bell ------//
const int h4 = 0
const int m4 = 0

H h1 1 থেকে 23 ঘন্টা এবং এম 1 থেকে 0 থেকে 59 মিনিটের মধ্যে সেট করুন।
H এইচ 1 থেকে এইচ 16 এবং এম 1 থেকে এম 16 ​​এর সমান।
You আপনি উদাহরণস্বরূপ কিছু বেল ছাড়ার মান এইচ = 0 এবং এম = 0 অক্ষম করতে চাইলে শূন্যটি সেই নির্দিষ্ট বেলটি অক্ষম করবে।

৩. বেলটি চালু এবং বন্ধ সময়ের জন্য সময় দৈর্ঘ্যটি এখানে সেট করুন:

// --------------- বেল রিং সেকেন্ডে দৈর্ঘ্য ------- //
কনট ইন্টি দৈর্ঘ্য = 3 // সেকেন্ডে

ডিফল্টরূপে মানটি 3 সেকেন্ডের জন্য সেট করা হয়। যখন নির্ধারিত সময় উপস্থিত হয় রিলে 3 সেকেন্ডের জন্য চালু করা হবে এবং বন্ধ হবে। আপনার প্রয়োজন হলে এটি পরিবর্তন করুন।

৪) আরডুইনোতে পরিবর্তিত কোড আপলোড করুন।
5. বেলটি অক্ষম করতে 'বেল অক্ষম করুন বোতাম' টিপুন। পুনরায় সক্ষম করতে 'প্রস্থান করুন' বোতামটি টিপুন।
The. বেলটি নিজে বাজানোর জন্য 'ম্যানুয়াল বেল সুইচ' টিপুন এবং বেল টিপুন 'প্রস্থান' বন্ধ করতে।

এটি প্রকল্পটি শেষ করে, যদি আপনার এই প্রকল্পের বিষয়ে কোনও প্রশ্ন থাকে তবে নির্দ্বিধায় মন্তব্য বিভাগে প্রকাশ করুন।




পূর্ববর্তী: ব্যাটারি ছাড়াই এই মশারি ব্যাট তৈরি করুন পরবর্তী: কীভাবে একটি আরএফআইডি ভিত্তিক উপস্থিতি সিস্টেম তৈরি করবেন