Telefon bimbit adalah penemuan revolusi abad ini. Ini terutama dirancang untuk membuat dan menerima panggilan & mesej teks, tetapi telah menjadi seluruh dunia setelah telefon pintar masuk ke dalam gambar. Dalam projek ini kita sedang membangun sistem automasi rumah, di mana seseorang dapat mengendalikan peralatan rumah tangga, menggunakan telepon berbasis GSM sederhana, hanya dengan mengirim SMS melalui telefonnya. Dalam projek ini, tidak ada telefon pintar yang diperlukan, hanya telefon GSM lama yang berfungsi untuk menghidupkan dan mematikan sebarang peralatan elektronik di rumah, dari mana sahaja. Anda juga boleh memeriksa beberapa lagi projek Automasi Rumah Tanpa Wayar di sini: Automasi Rumah Terkawal IR menggunakan Arduino, Automasi Rumah Terkawal Bluetooth bersama dengan Automasi Rumah Berasaskan DTMF, Automasi Rumah Terkawal PC menggunakan Arduino.
Penjelasan Kerja
Dalam projek ini, Arduino digunakan untuk mengawal keseluruhan proses. Di sini kami telah menggunakan komunikasi tanpa wayar GSM untuk mengawal perkakas rumah. Kami menghantar beberapa arahan seperti "# A.light on *", "# A.light off *" dan sebagainya untuk mengawal peralatan rumah AC. Setelah menerima arahan yang diberikan oleh Arduino melalui GSM, Arduino menghantar isyarat ke relay, untuk menghidupkan atau mematikan perkakas rumah menggunakan pemacu geganti.
Komponen Litar:
- Arduino UNO
- Modul GSM
- ULN2003
- Relay 5 volt
- Mentol dengan pemegang
- Menyambung wayar
- Papan roti
- LCD 16x2
- Bekalan kuasa
- Telefon bimbit
Di sini kita telah menggunakan awalan dalam rentetan perintah yang "#A.". Awalan ini digunakan untuk mengenal pasti bahawa arahan utama akan datang di sebelahnya dan * di hujung rentetan menunjukkan bahawa mesej telah berakhir.
Apabila kami menghantar SMS ke modul GSM dengan Mudah Alih, maka GSM akan menerima SMS itu dan mengirimkannya ke Arduino. Sekarang Arduino membaca SMS ini dan mengekstrak perintah utama dari rentetan yang diterima dan menyimpan dalam pemboleh ubah. Selepas ini, Arduino membandingkan rentetan ini dengan rentetan yang telah ditentukan. Sekiranya perlawanan berlaku, Arduino menghantar isyarat ke relay melalui pemandu relay untuk menghidupkan dan mematikan peralatan rumah. Dan hasil relatif juga mencetak pada LCD 16x2 dengan menggunakan perintah yang sesuai.
Di sini, dalam projek ini kami telah menggunakan 3 sifar watt untuk demonstrasi yang menunjukkan Kipas, Cahaya dan TV.
Berikut adalah senarai mesej yang kami hantar melalui SMS, untuk Menghidupkan dan Mematikan Kipas, Cahaya dan TV:
S.no. |
Mesej |
Operasi |
1 |
# A.fan di * |
Kipas AKTIF |
2 |
# A.fan off * |
Kipas MATI |
3 |
# A. lampu hidup * |
CAHAYA |
4 |
# A. matikan * |
Tutup lampu |
5 |
# A.tv di * |
TV HIDUP |
6 |
# A.tv mati * |
TV Mati |
7 |
# A.semua pada * |
Semua HIDUP |
8 |
# A.semua * |
Semua MATI |
Modul GSM:
Modul GSM digunakan dalam banyak alat komunikasi yang berdasarkan teknologi GSM (Sistem Global untuk Komunikasi Bergerak). Ia digunakan untuk berinteraksi dengan rangkaian GSM menggunakan komputer. Modul GSM hanya memahami perintah AT, dan dapat bertindak balas dengan sewajarnya. Perintah paling asas adalah "AT", jika GSM memberi respons OK maka ia berfungsi dengan baik jika tidak, ia bertindak balas dengan "KESALAHAN" Terdapat pelbagai perintah AT seperti ATA untuk menjawab panggilan, ATD untuk memanggil panggilan, AT + CMGR untuk membaca mesej, AT + CMGS untuk menghantar sms dan lain-lain. Perintah AT harus diikuti dengan Carriage return iaitu \ r (0D dalam hex), seperti "AT + CMGS \ r". Kita dapat menggunakan modul GSM menggunakan perintah berikut:
ATE0 - Untuk gema
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Nombor Mudah Alih"
>> Sekarang kita boleh menulis mesej kita
>> Selepas menulis mesej
Ctrl + Z menghantar pesanan pesanan (26 dalam perpuluhan).
ENTER = 0x0d dalam HEX
The SIM900 adalah lengkap Quad-band GSM / GPRS modul yang menyampaikan GSM / GPRS 850/900/1800 / 1900MHz prestasi untuk suara, SMS dan data dengan penggunaan kuasa yang rendah.
Huraian Litar
Sambungan litar automasi rumah berasaskan GSM ini cukup mudah, di sini paparan kristal cecair digunakan untuk memaparkan status perkakas rumah yang disambungkan secara langsung ke arduino dalam mod 4-bit. Pin data LCD iaitu RS, EN, D4, D5, D6, D7 disambungkan ke pin digital arduino nombor 6, 7, 8, 9, 10, 11. Dan pin Rx dan Tx modul GSM disambungkan secara langsung pada Tx dan Rx pin Arduino masing-masing. Dan modul GSM dikuasakan dengan menggunakan penyesuai 12 volt. Relay 5 volt SPDT 3 digunakan untuk mengawal LIGHT, FAN dan TV. Dan geganti disambungkan ke pin arduino nombor 3, 4 dan 5 melalui pemacu relay ULN2003 masing-masing untuk mengawal LIGHT, FAN dan TV.
Penerangan Kod
Dalam pengaturcaraan bahagian projek ini, pertama-tama dalam pengaturcaraan kami menyertakan perpustakaan untuk paparan kristal cair dan kemudian kami menentukan data dan pin kawalan untuk peralatan LCD dan rumah.
#sertakan
Selepas komunikasi bersiri ini diinisialisasi pada 9600 bps dan memberi arahan kepada pin terpakai.
persediaan tidak sah () {lcd.begin (16,2); Serial.begin (9600); pinMode (dipimpin, OUTPUT); pinMode (Kipas, OUTPUT); pinMode (Ringan, OUTPUT); pinMode (TV, OUTPUT);
Untuk menerima data secara bersiri, kami telah menggunakan dua fungsi satu adalah Serial. Tersedia yang memeriksa sama ada data bersiri akan datang dan yang lain adalah Serial.read yang membaca data yang datang secara bersiri.
sementara (Serial.available ()) {char inChar = Serial.read ();
Setelah menerima data secara bersiri, kami telah menyimpannya dalam rentetan dan kemudian menunggu Enter.
batal serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (dipimpin, TINGGI); kelewatan (1000); digitalWrite (dipimpin, RENDAH); sementara (Serial.available ()) {char inChar = Serial.read (); str = dalamChar; jika (dalamChar == '*') {temp = 1; kembali; }
Ketika Enter, program mulai membandingkan rentetan yang diterima dengan rentetan yang sudah ditentukan dan jika tali dipadankan maka operasi relatif dilakukan dengan menggunakan perintah yang sesuai yang diberikan dalam kod.
cek tidak sah () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, TINGGI); lcd.setCursor (13,1); lcd.print ("ON"); kelewatan (200); } lain jika (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, RENDAH); lcd.setCursor (13,1); lcd.print ("OFF"); kelewatan (200); }