- Hal yang perlu diingat sebelum memulai
- Komponen Diperlukan
- Diagram Sirkuit
- Menyiapkan Server SMTP2GO untuk mengirim Email
- Pemrograman Mikrokontroler AVR Atmega16 dan ESP8266
- Pemrograman ATmega16 untuk Mengirim Email
- Pemrograman ESP8266 NodeMCU
Atmega16 adalah mikrokontroler 8 bit berbiaya rendah dan hadir dengan lebih banyak jumlah GPIO daripada versi mikrokontroler sebelumnya. Ia memiliki semua protokol komunikasi yang umum digunakan seperti UART, USART, SPI dan I2C. Ini memiliki aplikasi luas dalam industri robotika, mobil dan otomasi karena dukungan dan kesederhanaan komunitas yang luas.
Atmega16 tidak mendukung protokol komunikasi nirkabel seperti Wi-Fi dan Bluetooth yang membatasi area aplikasinya di domain seperti IoT. Untuk mengatasi batasan ini, pengontrol lain dapat dihubungkan yang memiliki protokol nirkabel. Ada sejumlah pengontrol yang mendukung protokol nirkabel seperti ESP8266 yang banyak digunakan,
Hari ini kami akan menghubungkan Atmega16 dengan ESP8266 NodeMCU untuk membuatnya berkomunikasi secara nirkabel melalui internet. ESP8266 NodeMCU adalah modul WiFi yang banyak digunakan dengan dukungan komunitas dan perpustakaan yang tersedia dengan mudah. ESP8266 NodeMCU juga mudah diprogram dengan Arduino IDE. ESP8266 dapat dihubungkan dengan mikrokontroler apa pun:
Dalam tutorial ini, email akan dikirim menggunakan modul ESP8266 NodeMCU dan Atmega16. Instruksi akan diberikan oleh Atmega16 dan ketika ESP8266 menerima instruksi, itu akan mengirim email ke penerima email yang dipilih. ATmega16 dan ESP8266 NodeMCU akan berkomunikasi melalui komunikasi serial UART. Meskipun protokol komunikasi apa pun dapat digunakan untuk menghubungkan NodeMCU ATmega16 dan ESP8266 seperti SPI, I2C atau UART.
Hal yang perlu diingat sebelum memulai
Perhatikan bahwa mikrokontroler Atmega16 yang digunakan dalam proyek ini bekerja pada level logika 5V sedangkan ESP8266 NodeMCU bekerja pada level logika 3.3V. Level logika dari kedua mikrokontroler berbeda yang dapat menyebabkan beberapa miskomunikasi antara NodeMCU Atmega16 dan ESP8266 atau juga dapat terjadi kehilangan data jika level logika yang tepat tidak dipertahankan.
Namun setelah melalui lembar data kedua mikrokontroler, kami menemukan bahwa kami dapat berinteraksi tanpa pergeseran level logika karena semua pin ESP8266 NodeMCU toleran dari level tegangan hingga 6V. Jadi tidak masalah melanjutkan dengan level logika 5V. Selain itu, datasheet Atmega16 dengan jelas menyatakan bahwa level tegangan di atas 2V dianggap sebagai Logic Level '1' dan ESP8266 NodeMCU berjalan pada 3.3 V, artinya jika ESP8266 NodeMCU mentransmisikan 3.3V maka Atmega16 dapat menganggapnya sebagai level logika '1'. Jadi komunikasi akan dimungkinkan tanpa menggunakan pergeseran level logika. Meskipun Anda bebas menggunakan pemindah tingkat logika dari 5 ke 3.3V.
Periksa semua proyek terkait ESP8266 di sini.
Komponen Diperlukan
- Modul NodeMCU ESP8266
- IC Mikrokontroler Atmega16
- Osilator Kristal 16Mhz
- Dua Kapasitor 100nF
- Dua Kapasitor 22pF
- Tekan tombol
- Kabel Jumper
- Papan tempat memotong roti
- USBASP v2.0
- Led (Warna Apa Pun)
Diagram Sirkuit
Menyiapkan Server SMTP2GO untuk mengirim Email
Sebelum memulai pemrograman, kita memerlukan server SMTP untuk mengirim email melalui ESP8266. Ada banyak server SMTP yang tersedia secara online. Di sini, smtp2go.com akan digunakan sebagai server SMTP.
Jadi sebelum menulis kode, nama pengguna dan kata sandi SMTP akan diminta. Untuk mendapatkan dua kredensial ini, ikuti langkah-langkah di bawah ini yang akan mencakup pengaturan server SMTP agar berhasil mengirim email.
Langkah 1: - Klik "Coba SMTP2GO Gratis" untuk mendaftar dengan akun gratis.
Langkah 2: - Sebuah jendela akan muncul, di mana Anda harus memasukkan beberapa kredensial seperti nama, id email dan kata sandi.
Langkah 3: - Setelah mendaftar, Anda akan menerima permintaan aktivasi pada Email yang dimasukkan. Aktifkan akun Anda dari tautan verifikasi di email dan kemudian login menggunakan id email dan kata sandi Anda.
Langkah 4: - Setelah Anda masuk, Anda akan mendapatkan Nama Pengguna SMTP dan Kata Sandi SMTP. Ingat atau salin ini ke notepad Anda untuk digunakan lebih lanjut. Setelah ini klik 'selesai'.
Langkah 5: - Sekarang di bilah akses kiri, klik "Pengaturan" dan kemudian "Pengguna". Di sini, Anda dapat melihat informasi mengenai Server SMTP dan nomor PORT. Biasanya sebagai berikut:
Encode Username dan Password
Sekarang kita harus mengubah Nama Pengguna dan Kata Sandi dalam format yang dikodekan base64 dengan kumpulan karakter ASCII. Untuk mengonversi Email dan Kata Sandi dalam format yang dikodekan base64, gunakan situs web yang disebut BASE64ENCODE (https://www.base64encode.org/). Salin nama pengguna dan kata sandi yang disandikan, untuk penggunaan lebih lanjut:
Setelah menyelesaikan langkah-langkah ini lanjutkan untuk pemrograman ESP8266 NodeMCU dan IC Atmega16.
Pemrograman Mikrokontroler AVR Atmega16 dan ESP8266
Pemrograman akan mencakup dua program, satu untuk Atmega16 untuk bertindak sebagai pengirim instruksi dan yang kedua untuk ESP8266 NodeMCU untuk bertindak sebagai penerima instruksi. Kedua program tersebut diberikan di akhir tutorial ini. Arduino IDE digunakan untuk membakar ESP8266 dan programmer USBasp dan Atmel Studio digunakan untuk membakar Atmega16.
Satu tombol tekan dan LED dihubungkan dengan Atmega16 sehingga ketika kita menekan tombol tekan Atmega16 akan mengirimkan instruksi ke NodeMCU dan NodeMCU akan mengirimkan email yang sesuai. LED akan menunjukkan status transmisi data. Jadi mari kita mulai Pemrograman Atmega16 dan kemudian ESP8266 NodeMCU.
Pemrograman ATmega16 untuk Mengirim Email
Mulailah dengan menentukan frekuensi operasi dan memasukkan semua perpustakaan yang diperlukan. Pustaka yang digunakan dilengkapi dengan Paket Atmel Studio.
#define F_CPU 16000000UL #include #include
Setelah ini, baud rate harus ditentukan untuk berkomunikasi dengan ESP8266. Perhatikan bahwa baud rate harus serupa untuk kedua pengontrol yaitu Atmega16 dan NodeMCU. Dalam tutorial ini, baudrate 9600.
# Tentukan BAUD_PRESCALE ((( F_CPU / (USART_BAUDRATE * 16UL))) - 1)
Kedua register UBRRL dan UBRRH akan digunakan untuk memuat nilai baud rate. Baud rate 8-bit yang lebih rendah akan dimuat di UBRRL dan baud rate 8-bit atas akan dimuat di UBRRH. Untuk mempermudah, buatlah fungsi inisialisasi UART dimana baud rate akan diteruskan dengan nilai. Fungsi inisialisasi UART akan mencakup:
- Pengaturan bit Transmisi dan Penerimaan di register UCSRB.
- Memilih ukuran karakter 8-bit dalam register UCSRC.
- Memuat bit bawah dan atas dari laju Baud di UBRRL dan register UBRRH.
batal UART_init (panjang USART_BAUDRATE) { UCSRB - = (1 << RXEN) - (1 << TXEN); UCSRC - = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); }
Langkah selanjutnya adalah mengatur fungsi untuk transmisi karakter. Langkah ini termasuk menunggu buffer kosong selesai dan kemudian memuat nilai karakter ke register UDR. Karakter akan diteruskan hanya dalam fungsi.
batal UART_TxChar (char c) { while (! (UCSRA & (1 <
Alih-alih mentransfer karakter, buatlah fungsi untuk mengirim string seperti di bawah ini.
batal UART_sendString (char * str) { unsigned char s = 0; sementara (str! = 0) { UART_TxChar (str); s ++; } }
Dalam fungsi main () , panggil UART_init () untuk memulai transmisi. Dan lakukan echo test dengan mengirimkan string TEST ke NodeMCU.
UART_init (9600); UART_sendString ("TEST");
Mulai konfigurasi pin GPIO untuk LED dan Tombol Tekan.
DDRA - = (1 << 0); DDRA & = ~ (1 << 1); PORTA - = (1 << 1);
Jika push button tidak ditekan maka LED tetap ON dan jika Push Button ditekan maka Start transmisi perintah “SEND” ke NodeMCU dan matikan LED.
if (bit_is_clear (PINA, 1)) { PORTA - = (1 << 0); _delay_ms (20); } lain { PORTA & = ~ (1 << 0); _delay_ms (50); UART_sendString ("SEND"); _delay_ms (1200); }
Pemrograman ESP8266 NodeMCU
Pemrograman NodeMCU mencakup penerimaan perintah dari Atmega16 dan Mengirim Email menggunakan One SMTP server.
Pertama, sertakan perpustakaan WIFI karena internet akan digunakan untuk mengirim email. Tentukan ssid dan kata sandi WIFI Anda untuk koneksi yang sukses. Tentukan juga server SMTP.
#include
Dalam fungsi setup () , Setel baud rate mirip dengan Atmega16 baud rate sebagai 9600 dan sambungkan ke WIFI dan tampilkan alamat IP.
Serial.begin (9600); Serial.print ("Menghubungkan Ke:"); Serial.println (ssid); WiFi.begin (ssid, kata sandi); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); }
Dalam fungsi loop () , baca byte penerima pada pin Rx dan konversikan ke bentuk string.
if (Serial.available ()> 0) { while (Serial.available ()> 0 && index1 <6) { delay (100); inChar = Serial.read (); inData = inChar; indeks1 ++; inData = '\ 0'; } variabel.toUpperCase (); untuk (byte i = 0; i <6; i ++) { variable.concat (String (inData)); } Serial.print ("variabel adalah ="); Serial.println (variabel); Serial.print ("indata is ="); Serial.println (inData); penundaan (20); } String string = String (variabel);
Jika perintah penerima cocok kemudian kirim email ke penerima dengan memanggil fungsi sendEmail ().
jika (string == "KIRIM") { sendEmail (); Serial.print ("Surat dikirim ke:"); Serial.println ("Penerima"); Serial.println (""); }
Sangat penting untuk mengatur server SMTP dan tanpa melakukan ini, tidak ada email yang dapat dikirim. Perhatikan juga bahwa saat berkomunikasi, setel laju baud serupa untuk kedua pengontrol.
Jadi beginilah ESP8266 dapat dihubungkan dengan mikrokontroler AVR untuk mengaktifkannya untuk komunikasi IoT. Juga periksa Video kerja yang diberikan di bawah ini.