- Mga bagay na dapat tandaan bago simulan
- Kinakailangan ang Mga Bahagi
- Diagram ng Circuit
- Pag-set up ng SMTP2GO Server para sa pagpapadala ng Email
- Programming AVR Microcontroller Atmega16 at ESP8266
- Programming ATmega16 para sa Pagpapadala ng Email
- Pagprogram ng ESP8266 NodeMCU
Ang Atmega16 ay isang mababang gastos ng 8 bit microcontroller at mayroong higit na bilang ng mga GPIO kaysa sa dating bersyon ng mga microcontroller. Mayroon itong lahat ng mga karaniwang ginagamit na mga protocol ng komunikasyon tulad ng UART, USART, SPI at I2C. Malawak ang aplikasyon nito sa mga industriya ng robot, automobile at automation dahil sa malawak na suporta at pagiging simple ng pamayanan.
Hindi sinusuportahan ng Atmega16 ang anuman sa mga wireless na mga komunikasyon sa komunikasyon tulad ng Wi-Fi at Bluetooth na naglilimita sa mga lugar ng aplikasyon nito sa domain tulad ng IoT. Upang mapagtagumpayan ang limitasyong ito ang iba pang mga tagakontrol ay maaaring ma-interfaced na mayroong mga wireless na protokol. Mayroong bilang ng mga tagakontrol na sumusuporta sa mga wireless na protokol tulad ng malawakang ginagamit na ESP8266,
Ngayon ay ia- interface namin ang Atmega16 sa ESP8266 NodeMCU upang makipag-usap ito nang wireless sa pamamagitan ng internet. Ang ESP8266 NodeMCU ay malawakang ginagamit na module ng WiFi na may suporta sa pamayanan at madaling magagamit na mga aklatan. Gayundin ang ESP8266 NodeMCU ay madaling mai-program sa Arduino IDE. Ang ESP8266 ay maaaring ma-interfaced sa anumang microcontroller:
Sa tutorial na ito, ipapadala ang email gamit ang module na ESP8266 NodeMCU at Atmega16. Ang mga tagubilin ay ibibigay ng Atmega16 at kapag natanggap ng ESP8266 ang mga tagubilin, magpapadala ito ng isang email sa napiling tatanggap ng email. Ang ATmega16 at ESP8266 NodeMCU ay mag-uusap sa paglipas ng UART serial na komunikasyon. Kahit na ang anumang komunikasyon protocol ay maaaring magamit upang interface ATmega16 at ESP8266 NodeMCU tulad ng SPI, I2C o UART.
Mga bagay na dapat tandaan bago simulan
Tandaan na ang Atmega16 microcontroller na ginamit sa proyektong ito ay gumagana sa antas ng 5V na lohika samantalang ang ESP8266 NodeMCU ay gumagana sa 3.3V antas ng lohika. Ang mga antas ng lohika ng parehong mga microcontroller ay magkakaiba na maaaring maging sanhi ng ilang maling komunikasyon sa pagitan ng Atmega16 at ESP8266 NodeMCU o maaari ding mawalan ng data kung hindi mapanatili ang wastong antas ng lohika.
Gayunpaman matapos ang pagdaan sa mga datasheet ng parehong microcontroller, nalaman namin na maaari kaming mag-interface nang walang anumang antas ng paglipat ng antas ng lohika dahil ang lahat ng mga pin ng ESP8266 NodeMCU ay mapagparaya mula sa antas ng boltahe hanggang sa 6V. Kaya't mainam na magpatuloy sa antas ng 5V na lohika. Gayundin, ang datasheet ng Atmega16 ay malinaw na nagsasaad na ang antas ng boltahe sa itaas 2V ay isinasaalang-alang bilang Logic Level '1' at ang ESP8266 NodeMCU ay tumatakbo sa 3.3 V, nangangahulugan ito kung ang ESP8266 NodeMCU ay nagpapadala ng 3.3V kung gayon ang Atmega16 ay maaaring kunin bilang antas ng lohika na '1'. Kaya't magiging posible ang komunikasyon nang hindi gumagamit ng paglilipat sa antas ng lohika. Bagaman malaya kang gumamit ng antas ng shifter ng lohika mula 5 hanggang 3.3V.
Suriin ang lahat ng mga kaugnay na proyekto ng ESP8266 dito.
Kinakailangan ang Mga Bahagi
- ESP8266 NodeMCU Modyul
- Atmega16 Microcontroller IC
- 16Mhz Crystal Oscillator
- Dalawang 100nF Capacitor
- Dalawang 22pF Capacitor
- Push Button
- Jumper Wires
- Breadboard
- USBASP v2.0
- Led (Anumang Kulay)
Diagram ng Circuit
Pag-set up ng SMTP2GO Server para sa pagpapadala ng Email
Bago simulan ang programa kailangan namin ng isang server ng SMTP upang magpadala ng mail sa pamamagitan ng ESP8266. Mayroong maraming mga SMTP server na magagamit online. Dito, ang smtp2go.com ay gagamitin bilang SMTP server.
Kaya bago magsulat ng code, kakailanganin ang SMTP username at password. Upang makuha ang dalawang kredensyal na ito sundin ang mga hakbang sa ibaba kung saan sasakupin ang pag-set up ng SMTP server para sa matagumpay na pagpapadala ng mga email.
Hakbang 1: - Mag - click sa "Subukan ang SMTP2GO Libre" upang magparehistro sa isang libreng account.
Hakbang 2: - Ang isang window ay pop up, kung saan kailangan mong maglagay ng ilang kredensyal tulad ng pangalan, email id at password.
Hakbang 3: - Pagkatapos mag-sign up, makakatanggap ka ng isang kahilingan sa pag-activate sa ipinasok na Email. I-aktibo ang iyong account mula sa i-verify ang link sa email at pagkatapos ay mag-login gamit ang iyong email id at password.
Hakbang 4: - Kapag nag-log in ka, makakakuha ka ng iyong SMTP Username at SMTP Password. Tandaan o kopyahin ang mga ito sa iyong notepad para sa karagdagang paggamit. Matapos ang pag-click na ito sa 'tapusin'.
Hakbang 5: - Ngayon sa kaliwang access bar, mag-click sa "Mga Setting" at pagkatapos ay sa "Mga Gumagamit". Dito, maaari mong makita ang impormasyon tungkol sa SMTP Server at numero ng PORT. Karaniwan ito ay tulad ng sumusunod:
I-encode ang Username at Password
Ngayon kailangan nating baguhin ang Username at Password sa naka-encode na format na base64 na itinakda ang ASCII character. Para sa pag-convert ng Email at Password sa naka-encode na format na base64 gumamit ng isang website na tinatawag na BASE64ENCODE (https://www.base64encode.org/). Kopyahin ang naka-encode na username at password, para sa karagdagang paggamit:
Matapos matapos ang mga hakbang na ito magpatuloy para sa pagprogram ng ESP8266 NodeMCU at Atmega16 IC.
Programming AVR Microcontroller Atmega16 at ESP8266
Ang programming ay magsasama ng dalawang mga programa, isa para sa Atmega16 upang kumilos bilang nagpadala ng mga tagubilin at pangalawa para sa ESP8266 NodeMCU na kumilos bilang tatanggap ng mga tagubilin. Ang parehong mga programa ay ibinibigay sa pagtatapos ng tutorial na ito. Ginagamit ang Arduino IDE upang sunugin ang ESP8266 at USBasp programmer at ang Atmel Studio ay ginagamit upang sunugin ang Atmega16.
Ang isang pindutan na itulak at LED ay nakipag-interfaced sa Atmega16 upang kapag pinindot namin ang pindutan ng push ang Atmega16 ay magpapadala ng mga tagubilin sa NodeMCU at ang NodeMCU ay magpapadala ng email nang naaayon. Ipapakita ng LED ang katayuan ng paghahatid ng data. Kaya't simulan natin ang Programming Atmega16 at pagkatapos ay ang ESP8266 NodeMCU.
Programming ATmega16 para sa Pagpapadala ng Email
Magsimula sa pagtukoy sa dalas ng operating at isama ang lahat ng mga aklatan na kinakailangan. Ang ginamit na silid-aklatan ay kasama ng Atmel Studio Package.
# tukuyin ang F_CPU 16000000UL # isama ang # isama
Pagkatapos nito, ang baud rate ay dapat tukuyin upang makipag-usap sa ESP8266. Tandaan na ang rate ng baud ay dapat maging pareho para sa parehong mga tagapangasiwa ie Atmega16 at NodeMCU. Sa tutorial na ito, ang baudrate ay 9600.
#define BAUD_PRESCALE (((( F_CPU / (USART_BAUDRATE * 16UL))) - 1)
Ang dalawang rehistro ng UBRRL at UBRRH ay gagamitin upang mai-load ang mga halaga ng baud rate. Ang mas mababang 8-bit ng baud rate ay mai-load sa UBRRL at ang itaas na 8-bit ng baud rate ay mai-load sa UBRRH. Para sa pagiging simple, gumawa ng pagpapaandar ng UART na pagsasimula kung saan ang rate ng baud ay ipapasa ng halaga. Ang pagpapaandar ng UART na pagpapatupad ay isasama ang:
- Ang pagtatakda ng mga bitay na Paghahatid at Pagtatanggap sa rehistro ng UCSRB.
- Ang pagpili ng 8-bit na laki ng character sa pagrehistro ng UCSRC.
- Naglo-load ng mas mababa at itaas na mga piraso ng rate ng Baud sa rehistro ng UBRRL at UBRRH.
walang bisa UART_init (mahabang USART_BAUDRATE) { UCSRB - = (1 << RXEN) - (1 << TXEN); UCSRC - = (1 << URSEL) - (1 << UCSZ0) - (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); }
Susunod na hakbang ay ang pagse-set up ng pag-andar para sa paglilipat ng mga character. Kasama sa hakbang na ito ang paghihintay para sa walang laman na buffer upang matapos at pagkatapos ay i-load ang halaga ng char sa rehistro ng UDR. Ang char ay ipapasa sa pagpapaandar lamang.
walang bisa ang UART_TxChar (char c) { habang (! (UCSRA & (1 <
Sa halip na maglipat ng mga character, gumawa ng isang function upang magpadala ng mga string tulad ng sa ibaba.
walang bisa ang UART_sendString (char * str) { unsigned char s = 0; habang (str! = 0) { UART_TxChar (str); s ++; } }
Sa pangunahing () pagpapaandar, tawagan ang UART_init () upang simulan ang paghahatid. At gawin ang echo test sa pamamagitan ng pagpapadala ng TEST string sa NodeMCU.
UART_init (9600); UART_sendString ("TEST");
Simulang i-configure ang GPIO pin para sa LED at Push Button.
DDRA - = (1 << 0); DDRA & = ~ (1 << 1); PORTA - = (1 << 1);
Kung ang pindutan ng push ay hindi pinindot pagkatapos ay panatilihin ang LED naka-ON at kung ang Push Button ay pinindot pagkatapos Simulan ang paglilipat ng "SEND" utos sa NodeMCU at gawin ang LED naka-OFF.
kung (bit_is_clear (PINA, 1)) { PORTA - = (1 << 0); _delay_ms (20); } iba pa { PORTA & = ~ (1 << 0); _delay_ms (50); UART_sendString ("SEND"); _delay_ms (1200); }
Pagprogram ng ESP8266 NodeMCU
Kasama sa Programming NodeMCU ang pagtanggap ng utos mula sa Atmega16 at Pagpapadala ng Email gamit ang One SMTP server.
Una, isama ang WIFI library dahil gagamitin ang internet upang magpadala ng email. Tukuyin ang iyong WIFI ssid at password para sa matagumpay na koneksyon. Tukuyin din ang SMTP server.
# isama
Sa pag- andar ng setup () , Itakda ang rate ng baud na katulad sa rate ng bm ng Atmega16 bilang 9600 at kumonekta sa WIFI at ipakita ang IP address.
Serial.begin (9600); Serial.print ("Kumokonekta Sa:"); Serial.println (ssid); WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) { pagkaantala (500); Serial.print ("."); }
Sa pag- andar ng loop () , basahin ang mga tumatanggap na byte sa Rx pin at i-convert ito sa form na string.
kung (Serial.available ()> 0) { habang (Serial.available ()> 0 && index1 <6) { pagkaantala (100); inChar = Serial.read (); inData = inChar; index1 ++; inData = '\ 0'; } variable.toUpperCase (); para sa (byte i = 0; i <6; i ++) { variable.concat (String (inData)); } Serial.print ("variable ay ="); Serial.println (variable); Serial.print ("indata ay ="); Serial.println (inData); pagkaantala (20); } String string = String (variable);
Kung ang tumatanggap na utos ay naitugma pagkatapos ay magpadala ng email sa tatanggap sa pamamagitan ng pagtawag sa sendEmail () na pagpapaandar.
kung (string == "SEND") { sendEmail (); Serial.print ("Ipinadala ang mail sa:"); Serial.println ("Ang tatanggap"); Serial.println (""); }
Napakahalaga na i-setup ang SMTP server at nang hindi ginagawa ito, walang maipadala na mga email. Tandaan din na habang ang komunikasyon, itakda ang baud rate na katulad para sa parehong mga Controller.
Kaya't ito ay kung paano maaaring ma-interfaced ang ESP8266 sa AVR microcontroller upang paganahin ito para sa mga komunikasyon ng IoT. Suriin din ang gumaganang Video na ibinigay sa ibaba.