Sistem Bel Sekolah / Perguruan Tinggi Arduino Otomatis

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membuat sistem bel sekolah / perguruan tinggi otomatis menggunakan Arduino, tampilan 16 x 2 dan modul jam waktu nyata. Anda dapat memprogram proyek ini untuk membunyikan bel hingga 16 kali sehari pada jam dan menit pilihan Anda. Panjang bel berbunyi dapat diprogram dalam hitungan detik.

Mencari versi yang lebih sederhana tanpa coding? Mengerti SINI



Gambaran

Lewatlah sudah hari-hari, ketika seorang prajurit di sekolah membunyikan bel 'timah timah' dan para siswa berlari keluar dari pintu masuk sekolah dengan warna-warna cerah. Beberapa orang mungkin menjadi lebih bahagia ketika petugas keamanan membunyikan bel terakhir beberapa menit sebelumnya.

Ini adalah skenario 15 hingga 20 tahun yang lalu, tetapi sekarang semua sekolah dan perguruan tinggi terikat dengan waktu dan loncengnya otomatis.



Masa kecil / remaja penulis ingat:

Selama sekolah dasar dan menengah, jam tangan digital yang saya pakai disinkronkan dengan sistem bel sekolah dengan presisi 1 detik.

Saya akan berteriak “bel akan berbunyi dalam 5 detik” setelah bel berbunyi semua siswa menatap saya dengan heran, ini terjadi hampir setiap hari. Pada suatu hari saya dan teman dekat saya mulai menghitung mundur 10, 9, 8, 7… .. sebelum bel terakhir.

Semua teman saya mengatakan itu adalah jam tangan ajaib, tetapi mereka tidak menyadari satu fakta sederhana bahwa bel sekolah itu otomatis. LOL !!

Kami akan membuat satu bel sekolah / perguruan tinggi menggunakan Arduino.

Tampilan ke Koneksi Arduino

Tampilan ke koneksi Arduino sedikit berbeda dari yang biasanya kami sambungkan, pin 9, 8, 7, 6, 5 dan 4 digunakan di sini. Pin nomor 2 dan 3 digunakan sebagai interupsi perangkat keras melalui tekan tombol .

Gunakan 10K potensiometer untuk mengatur kontras untuk layar .

LCD bel sekolah Arduino

Sistem Bel Sekolah / Perguruan Tinggi Otomatis Menggunakan Arduino

Informasi Detail Mengenai Koneksi Bel dan Relai:

sirkuit pengatur waktu bel sekolah dengan Arduino

UPDATE: A5 ke SCL dan A4 ke SDA (Bukan A4 ke SCK)

Modul Jam Waktu Nyata

Itu Jam waktu nyata modul melacak waktu bahkan setelah pemadaman listrik yang lama. Relai 9V disediakan untuk menghidupkan dan mematikan bel.

Harap sambungkan dioda 1N4007 dalam bias balik melintasi relai (yang tidak ditunjukkan dalam skema) yang akan menyerap EMF balik tegangan tinggi yang berbahaya dari relai.

Nyalakan sirkuit menggunakan a Adaptor dinding 9V / 500mA .

Tiga tombol tekan disediakan satu untuk mengoperasikan bel secara manual dalam beberapa situasi. Menekan tombol 'keluar' akan menghentikan bel setelah membunyikan bel secara manual.

'Tombol nonaktifkan bel' akan menonaktifkan bel selamanya. Untuk mengaktifkan kembali bel tekan tombol 'Keluar'.

Cara mengatur waktu ke modul RTC:

Unduh perpustakaan RTC:
Tautan: github.com/PaulStoffregen/DS1307RTC

-------------------------------------------------- ---------------
Unduh timeLib.h:
github.com/PaulStoffregen/Time
-------------------------------------------------- ----------------

Unggah Program

Unggah program di bawah ini yang akan mengatur waktu ke RTC

//----------------------------------------------------//
#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
}
//----------------------------------------------------//

Setelah mengunggah kode, buka monitor serial, itu akan mengatakan bahwa waktu telah diatur.
Setelah langkah di atas diselesaikan dengan sukses, lanjutkan ke langkah berikutnya.
Sekarang unggah kode di bawah ini ke Arduino.

Kode Program Utama:

//------------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------------//

Setelah mengupload kode di atas, Anda akan melihat waktu dalam jam di layar.

Itu menyimpulkan kode program.

Cara menggunakan sistem bel otomatis ini:

Lakukan ini dengan pengaturan perangkat keras lengkap.

1. Unggah kode 'pengaturan waktu' terlebih dahulu dan buka monitor serial.
2. Dalam program utama, atur waktu di mana relai perlu dipicu di sini.

//---- 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

• Atur h1 dalam jam dari 1 hingga 23 jam dan m1 dalam menit dari 0 hingga 59.
• Sama untuk h1 sampai h16 dan m1 sampai m16.
• Jika Anda ingin menonaktifkan beberapa bel meninggalkan nilai h = 0 dan m = 0 misalnya: h5 = 0 dan m5 = 0, nol akan menonaktifkan bel tersebut.

3. Atur lama waktu nyala dan mati bel, disini:

// --------------- panjang dering bel dalam hitungan detik ------- //
const int Lenght = 3 // dalam hitungan detik

Secara default, nilai ditetapkan selama 3 detik. Ketika waktu yang ditetapkan tiba menyampaikan akan dihidupkan selama 3 detik dan mati. Ubah ini jika Anda perlu.

4. Unggah kode yang dimodifikasi ke Arduino.
5. Untuk menonaktifkan bel tekan 'tombol menonaktifkan bel'. Untuk mengaktifkan kembali tekan tombol 'Exit'.
6. Untuk membunyikan bel secara manual tekan “saklar bel manual” dan untuk menghentikan bel tekan “keluar”.

Itu menyimpulkan proyek, jika Anda memiliki pertanyaan tentang proyek ini, silakan ungkapkan di bagian komentar.




Sepasang: Bangun Kelelawar Nyamuk ini tanpa Baterai Berikutnya: Cara Membuat Sistem Absensi Berbasis RFID