- Başlamadan önce hatırlanması gerekenler
- Gerekli Bileşenler
- Devre şeması
- E-posta göndermek için SMTP2GO Sunucusunu Ayarlama
- AVR Mikrodenetleyici Atmega16 ve ESP8266'nın Programlanması
- E-posta Göndermek için ATmega16'yı Programlama
- ESP8266 NodeMCU'nun Programlanması
Atmega16, düşük maliyetli 8 bitlik bir mikro denetleyicidir ve önceki mikro denetleyici sürümünden daha fazla sayıda GPIO ile birlikte gelir. UART, USART, SPI ve I2C gibi yaygın olarak kullanılan tüm iletişim protokollerine sahiptir. Geniş topluluk desteği ve basitliği nedeniyle robotik, otomobil ve otomasyon endüstrilerinde geniş uygulamalara sahiptir.
Atmega16, IoT gibi etki alanındaki uygulama alanlarını sınırlayan Wi-Fi ve Bluetooth gibi hiçbir kablosuz iletişim protokolünü desteklemez. Bu sınırlamanın üstesinden gelmek için kablosuz protokollere sahip diğer kontrolörler arabirimlenebilir. Yaygın olarak kullanılan ESP8266 gibi kablosuz protokolleri destekleyen çok sayıda denetleyici vardır,
Bugün Atmega16 ile ESP8266 NodeMCU arasında arayüz oluşturarak internet üzerinden kablosuz iletişim kurmasını sağlayacağız. ESP8266 NodeMCU, topluluk desteği ve kolay erişilebilir kitaplıklar ile yaygın olarak kullanılan WiFi modülüdür. Ayrıca ESP8266 NodeMCU, Arduino IDE ile kolayca programlanabilir. ESP8266 herhangi bir mikrodenetleyici ile arayüzlenebilir:
Bu eğiticide, e-posta ESP8266 NodeMCU modülü ve Atmega16 kullanılarak gönderilecektir. Talimatlar Atmega16 tarafından verilecek ve ESP8266 talimatları aldığında, seçilen e-posta alıcısına bir e-posta gönderecektir. ATmega16 ve ESP8266 NodeMCU, UART seri iletişimi üzerinden iletişim kuracaktır. SPI, I2C veya UART gibi ATmega16 ve ESP8266 NodeMCU ile arayüz oluşturmak için herhangi bir iletişim protokolü kullanılabilir.
Başlamadan önce hatırlanması gerekenler
O Not ESP8266 NodeMCU 3.3V mantık seviyesinde çalışır oysa bu projede kullanılan Atmega16 mikrodenetleyici 5V mantık seviyesinde çalışır. Her iki mikrodenetleyicinin mantık seviyeleri farklıdır ve bu da Atmega16 ve ESP8266 NodeMCU arasında bazı yanlış iletişimlere neden olabilir veya uygun mantık seviyesi korunmazsa veri kaybı da olabilir.
Bununla birlikte, her iki mikrodenetleyicinin veri sayfalarından geçtikten sonra, ESP8266 NodeMCU'nun tüm pinleri 6V'a kadar voltaj seviyesinden toleranslı olduğu için herhangi bir mantık seviyesi kayması olmadan arayüz oluşturabileceğimizi gördük. Yani 5V mantık seviyesi ile devam etmek gayet iyi. Ayrıca, Atmega16'nın veri sayfası, 2V'nin üzerindeki voltaj seviyesinin Mantık Seviyesi '1' olarak kabul edildiğini ve ESP8266 NodeMCU'nun 3,3 V'ta çalıştığını açıkça belirtir; bu, ESP8266 NodeMCU'nun 3,3V iletmesi durumunda Atmega16'nın bunu mantık seviyesi '1' olarak alabileceği anlamına gelir. Böylece mantık seviyesi kaydırma kullanılmadan iletişim mümkün olacaktır. 5 ila 3.3V arası mantık seviyesi kaydırıcıyı kullanmakta özgürsünüz.
ESP8266 ile ilgili tüm projeleri buradan kontrol edin.
Gerekli Bileşenler
- ESP8266 NodeMCU Modülü
- Atmega16 Mikrodenetleyici IC
- 16Mhz Kristal Osilatör
- İki adet 100nF Kapasitör
- İki adet 22pF Kapasitör
- Butona basınız
- Atlama Telleri
- Breadboard
- USBASP v2.0
- Led (Herhangi Bir Renk)
Devre şeması
E-posta göndermek için SMTP2GO Sunucusunu Ayarlama
Programlamaya başlamadan önce, ESP8266 üzerinden posta göndermek için bir SMTP sunucusuna ihtiyacımız var. Çevrimiçi olarak kullanılabilen çok sayıda SMTP sunucusu vardır. Burada smtp2go.com, SMTP sunucusu olarak kullanılacaktır.
Bu nedenle, kodu yazmadan önce, SMTP kullanıcı adı ve şifresi gerekli olacaktır. Bu iki kimlik bilgisini almak için, e-postaları başarıyla göndermek için SMTP sunucusunu ayarlamayı kapsayan aşağıdaki adımları izleyin.
Adım 1: - Ücretsiz bir hesapla kayıt olmak için "SMTP2GO'yu Ücretsiz Deneyin" üzerine tıklayın.
Adım 2: - Ad, e-posta kimliği ve şifre gibi bazı kimlik bilgilerini girmeniz gereken bir pencere açılacaktır.
Adım 3: - Kaydolduktan sonra, girilen E-postada bir aktivasyon talebi alacaksınız. E-postadaki doğrulama bağlantısından hesabınızı etkinleştirin ve ardından e-posta kimliğinizi ve şifrenizi kullanarak oturum açın.
Adım 4: - Giriş yaptıktan sonra, SMTP Kullanıcı Adınızı ve SMTP Parolanızı alacaksınız. Daha sonra kullanmak için bunları hatırlayın veya not defterinize kopyalayın. Bundan sonra 'bitir'e tıklayın.
Adım 5: - Şimdi sol erişim çubuğunda, "Ayarlar" a ve ardından "Kullanıcılar" a tıklayın. Burada SMTP Sunucusu ve PORT numarası ile ilgili bilgileri görebilirsiniz. Genellikle aşağıdaki gibidir:
Kullanıcı Adı ve Parolayı Kodlayın
Şimdi, ASCII karakter setiyle base64 kodlanmış formatta Kullanıcı Adı ve Parolayı değiştirmemiz gerekiyor. E-posta ve Parolayı base64 kodlu biçimde dönüştürmek için BASE64ENCODE (https://www.base64encode.org/) adlı bir web sitesi kullanın. Daha sonra kullanmak için kodlanmış kullanıcı adını ve şifreyi kopyalayın:
Bu adımları tamamladıktan sonra ESP8266 NodeMCU ve Atmega16 IC'nin programlanması için ilerleyin.
AVR Mikrodenetleyici Atmega16 ve ESP8266'nın Programlanması
Programlama, biri talimatların göndericisi olarak görev yapması için Atmega16 için, diğeri ise ESP8266 NodeMCU'nun talimat alıcısı olarak davranması için iki program içerecektir. Her iki program da bu eğitimin sonunda verilmiştir. Arduino IDE, ESP8266 ve USBasp programcısını yazmak için kullanılır ve Atmel Studio, Atmega16'yı yazmak için kullanılır.
Bir düğme ve LED, Atmega16 ile arayüzlenmiştir, böylece basma düğmesine bastığımızda Atmega16, NodeMCU'ya talimatlar gönderecek ve NodeMCU buna göre e-posta gönderecektir. LED, veri aktarımının durumunu gösterecektir. O halde Atmega16 ve ardından ESP8266 NodeMCU Programlamaya başlayalım.
E-posta Göndermek için ATmega16'yı Programlama
Çalışma frekansını tanımlayarak ve gerekli tüm kitaplıkları dahil ederek başlayın. Kullanılan kütüphane Atmel Studio Paketi ile birlikte gelir.
#define F_CPU 16000000UL #include #include
Bundan sonra, ESP8266 ile iletişim kurmak için baud hızı tanımlanmalıdır. Baud hızının Atmega16 ve NodeMCU gibi her iki denetleyici için de benzer olması gerektiğini unutmayın. Bu eğitimde baud hızı 9600'dür.
#define BAUD_PRESCALE ((( F_CPU / (USART_BAUDRATE * 16UL))) - 1)
İki kayıt UBRRL ve UBRRH, baud hızı değerlerini yüklemek için kullanılacaktır. Daha düşük 8 bitlik baud hızı UBRRL'de yüklenir ve üstteki 8 bitlik baud hızı UBRRH'de yüklenir. Basitlik için, baud hızının değer tarafından geçileceği UART başlatma işlevini yapın. UART başlatma işlevi şunları içerecektir:
- UCSRB kaydında İletim ve Alım bitlerini ayarlama.
- UCSRC kaydında 8 bitlik karakter boyutlarının seçilmesi.
- UBRRL ve UBRRH kaydında Baud hızının alt ve üst bitlerinin yüklenmesi.
void UART_init (uzun USART_BAUDRATE) { UCSRB - = (1 << RXEN) - (1 << TXEN); UCSRC - = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); }
Sonraki adım, karakterleri iletmek için işlevi ayarlamak olacaktır. Bu adım, boş arabelleğin bitmesini beklemeyi ve ardından karakter değerini UDR yazmacına yüklemeyi içerir. Karakter yalnızca işlevde geçirilecektir.
void UART_TxChar (karakter c) { while (! (UCSRA & (1 <
Karakterleri aktarmak yerine, aşağıdaki gibi dizeleri göndermek için bir işlev yapın.
void UART_sendString (char * str) { unsigned char s = 0; while (str! = 0) { UART_TxChar (str); s ++; } }
In ana () işlevi, çağrı UART_init () iletimini başlatmak için. Ve TEST dizesini NodeMCU'ya göndererek yankı testi yapın.
UART_init (9600); UART_sendString ("TEST");
LED ve Basma Düğmesi için GPIO pinini yapılandırmaya başlayın.
DDRA - = (1 << 0); DDRA & = ~ (1 << 1); PORTA - = (1 << 1);
Basma düğmesine basılmazsa, LED'i AÇIK durumda tutun ve Basma Düğmesine basılırsa, NodeMCU'ya "GÖNDER" komutunu iletmeye başlayın ve LED'i KAPATIN.
eğer (bit_is_clear (PINA, 1)) { PORTA - = (1 << 0); _delay_ms (20); } başka { PORTA & = ~ (1 << 0); _delay_ms (50); UART_sendString ("GÖNDER"); _delay_ms (1200); }
ESP8266 NodeMCU'nun Programlanması
Programlama NodeMCU, Atmega16'dan komut alımını ve Tek SMTP sunucusu kullanarak E-posta Göndermeyi içerir.
İlk olarak, internet e-posta göndermek için kullanılacağı için WIFI kitaplığını ekleyin. Başarılı bağlantı için WIFI ssidinizi ve şifrenizi tanımlayın. Ayrıca SMTP sunucusunu da tanımlayın.
#Dahil etmek
In kurulum () fonksiyonu, Set WIFI ve ekran IP adresine 9600 olarak Atmega16 Baudrate'e benzer ve bağlantı baud hızı.
Serial.begin (9600); Serial.print ("Şuraya Bağlanıyor:"); Serial.println (ssid); WiFi.begin (ssid, şifre); while (WiFi.status ()! = WL_CONNECTED) { gecikme (500); Seri.baskı ("."); }
Gelen döngü () işlevi , alıcı Rx pinine bayt okuma ve dize formuna dönüştürmek.
eğer (Serial.available ()> 0) { while (Serial.available ()> 0 && index1 <6) { delay (100); inChar = Serial.read (); inData = inChar; index1 ++; inData = '\ 0'; } değişken.toUpperCase (); for (byte i = 0; i <6; i ++) { variable.concat (String (inData)); } Seri.print ("değişken ="); Serial.println (değişken); Serial.print ("indata is ="); Serial.println (inData); gecikme (20); } Dize dizesi = Dize (değişken);
Alma komutu eşleşirse , sendEmail () işlevini çağırarak alıcıya e-posta gönderin.
eğer (string == "GÖNDER") { sendEmail (); Serial.print ("E-postanın gönderildiği adres:"); Serial.println ("Alıcı"); Serial.println (""); }
SMTP sunucusunu kurmak çok önemlidir ve bunu yapmadan e-posta gönderilemez. Ayrıca iletişim sırasında, her iki kontrolör için de baud hızını benzer ayarlayın.
Dolayısıyla , ESP8266, IoT iletişimini etkinleştirmek için AVR mikro denetleyiciyle bu şekilde arabirimlenebilir. Ayrıca aşağıda verilen çalışma videosunu kontrol edin.