- Ствари које треба запамтити пре почетка
- Компоненте потребне
- Кружни дијаграм
- Постављање СМТП2ГО сервера за слање е-поште
- Програмирање АВР микроконтролера Атмега16 и ЕСП8266
- Програмирање АТмега16 за слање е-поште
- Програмирање ЕСП8266 НодеМЦУ
Атмега16 је јефтини 8-битни микроконтролер и долази са већим бројем ГПИО-а од своје претходне верзије микроконтролера. Поседује све најчешће коришћене комуникационе протоколе попут УАРТ, УСАРТ, СПИ и И2Ц. Има широку примену у индустрији роботике, аутомобила и аутоматизације због широке подршке заједнице и једноставности.
Атмега16 не подржава ниједан протокол бежичне комуникације као што су Ви-Фи и Блуетоотх који ограничавају подручја његове примене у домену као што је ИоТ. Да би се превазишло ово ограничење, могу се повезати други контролери који имају бежичне протоколе. Постоји низ контролера који подржавају бежичне протоколе попут широко коришћене ЕСП8266,
Данас ћемо повезати Атмега16 са ЕСП8266 НодеМЦУ како би омогућио бежичну комуникацију путем Интернета. ЕСП8266 НодеМЦУ је широко коришћени ВиФи модул са подршком заједнице и лако доступним библиотекама. Такође је ЕСП8266 НодеМЦУ лако програмабилан са Ардуино ИДЕ. ЕСП8266 се може повезати са било којим микроконтролером:
У овом упутству е-пошта ће бити послата помоћу модула ЕСП8266 НодеМЦУ и Атмега16. Упутства ће дати Атмега16, а када ЕСП8266 прими упутства, послаће е-пошту одабраном примаоцу е-поште. АТмега16 и ЕСП8266 НодеМЦУ ће комуницирати путем УАРТ серијске комуникације. Иако се било који комуникацијски протокол може користити за повезивање АТмега16 и ЕСП8266 НодеМЦУ као што су СПИ, И2Ц или УАРТ.
Ствари које треба запамтити пре почетка
Имајте на уму да Атмега16 микроконтролер који се користи у овом пројекту ради на 5В логичком нивоу, док ЕСП8266 НодеМЦУ ради на 3.3В логичком нивоу. Логички нивои оба микроконтролера су различити, што може проузроковати погрешну комуникацију између Атмега16 и ЕСП8266 НодеМЦУ или може доћи до губитка података ако се не одржи одговарајући логички ниво.
Међутим, након проласка кроз листове оба микроконтролера, открили смо да можемо да се повежемо без икаквог померања нивоа логике, јер су сви пинови ЕСП8266 НодеМЦУ толерантни од нивоа напона до 6В. Дакле, у реду је ићи са 5В логичким нивоом. Такође, табела података Атмега16 јасно каже да се ниво напона изнад 2В сматра логичким нивоом '1', а ЕСП8266 НодеМЦУ ради на 3,3 В, то значи да ако ЕСП8266 НодеМЦУ одашиље 3,3 В, Атмега16 то може узети као логички ниво '1'. Дакле, комуникација ће бити могућа без употребе логичког померања нивоа. Иако можете слободно користити логички пребацивач нивоа са 5 на 3,3 В.
Овде погледајте све пројекте повезане са ЕСП8266.
Компоненте потребне
- ЕСП8266 НодеМЦУ модул
- Атмега16 микроконтролер ИЦ
- Кристални осцилатор од 16 МХз
- Два кондензатора од 100 нФ
- Два кондензатора од 22 пФ
- Тастер
- Јумпер Вирес
- Бреадбоард
- УСБАСП в2.0
- Лед (било која боја)
Кружни дијаграм
Постављање СМТП2ГО сервера за слање е-поште
Пре почетка програмирања потребан нам је СМТП сервер за слање поште путем ЕСП8266. На мрежи је доступно пуно СМТП сервера. Овде ће се смтп2го.цом користити као СМТП сервер.
Дакле, пре писања кода биће потребно СМТП корисничко име и лозинка. Да бисте добили ова два акредитива, следите кораке у наставку који ће обухватити подешавање СМТП сервера за успешно слање е-поште.
Корак 1: - Кликните на „Пробајте СМТП2ГО бесплатно“ да бисте се регистровали са бесплатним налогом.
Корак 2: - Појавиће се прозор у који треба да унесете неке акредитиве попут имена, ИД-а е-поште и лозинке.
Корак 3: - Након регистрације, на унету е-пошту добићете захтев за активацију. Активирајте свој налог путем везе за верификацију у е-пошти, а затим се пријавите користећи свој ИД е-поште и лозинку.
Корак 4: - Када се пријавите, добићете СМТП корисничко име и СМТП лозинку. Запамтите их или копирајте у свој бележник за даљу употребу. Након овога кликните на 'заврши'.
Корак 5: - Сада на левој приступној траци кликните на „Сеттингс“, а затим на „Усерс“. Овде можете видети информације о СМТП серверу и ПОРТ броју. Обично је следеће:
Кодирајте корисничко име и лозинку
Сада морамо променити корисничко име и лозинку у басе64 кодираном формату са АСЦИИ скупом знакова. За претварање адресе е-поште и лозинке у формат кодиран са басе64 користите веб локацију која се зове БАСЕ64ЕНЦОДЕ (хттпс://ввв.басе64енцоде.орг/). Копирајте кодирано корисничко име и лозинку за даљу употребу:
Након завршетка ових корака наставите са програмирањем ЕСП8266 НодеМЦУ и Атмега16 ИЦ.
Програмирање АВР микроконтролера Атмега16 и ЕСП8266
Програмирање ће обухватити два програма, један за Атмега16 који ће деловати као пошиљалац упутстава и други за ЕСП8266 НодеМЦУ као прималац упутстава. Оба програма дата су на крају овог водича. Ардуино ИДЕ се користи за сагоревање ЕСП8266 и УСБасп програмера, а Атмел Студио за спаљивање Атмега16.
Једно дугме и ЛЕД су повезани са Атмега16 тако да када притиснемо дугме Атмега16 ће послати упутства НодеМЦУ, а НодеМЦУ е-пошту у складу с тим. ЛЕД ће приказати статус преноса података. Па кренимо са програмирањем Атмега16, а затим и ЕСП8266 НодеМЦУ.
Програмирање АТмега16 за слање е-поште
Почните са дефинисањем радне фреквенције и укључивањем свих потребних библиотека. Библиотека која се користи долази са пакетом Атмел Студио.
#дефине Ф_ЦПУ 16000000УЛ # инцлуде # инцлуде
Након тога, мора се дефинисати брзина преноса да би се комуницирало са ЕСП8266. Имајте на уму да брзина преноса мора бити слична за оба контролера, тј. За Атмега16 и НодеМЦУ. У овом упутству, брзина преноса је 9600.
#дефине БАУД_ПРЕСЦАЛЕ ((( Ф_ЦПУ / (УСАРТ_БАУДРАТЕ * 16УЛ))) - 1)
Два регистра УБРРЛ и УБРРХ ће се користити за учитавање вредности брзине преноса. Доњи 8-битни брзине преноса ће се учитати у УБРРЛ, а горњи 8-битни преноса података ће се учитати у УБРРХ. Ради једноставности, направите функцију иницијализације УАРТ-а где ће се брзина преноса преносити по вредности. Функција УАРТ-ове иницијализације укључује:
- Постављање битова за пренос и пријем у регистру УЦСРБ.
- Одабир 8-битних величина знакова у регистру УЦСРЦ.
- Учитавање доњег и горњег бита брзине преноса у регистру УБРРЛ и УБРРХ.
воид УАРТ_инит (лонг УСАРТ_БАУДРАТЕ) { УЦСРБ - = (1 << РКСЕН) - (1 << ТКСЕН); УЦСРЦ - = (1 << УРСЕЛ) - (1 << УЦСЗ0) - (1 << УЦСЗ1); УБРРЛ = БАУД_ПРЕСЦАЛЕ; УБРРХ = (БАУД_ПРЕСЦАЛЕ >> 8); }
Следећи корак биће подешавање функције за пренос знакова. Овај корак укључује чекање да се заврши празни бафер и затим учитавање вредности цхар у УДР регистар. Цхар ће бити прослеђен само у функцији.
воид УАРТ_ТкЦхар (цхар ц) { вхиле (! (УЦСРА & (1 <
Уместо да преносите знакове, направите функцију за слање низова као доле.
воид УАРТ_сендСтринг (цхар * стр) { непотписан цхар с = 0; вхиле (стр ! = 0) { УАРТ_ТкЦхар (стр); с ++; } }
У главној () функцији позовите УАРТ_инит () да започнете пренос. И направите ехо тест слањем ТЕСТ низа на НодеМЦУ.
УАРТ_инит (9600); УАРТ_сендСтринг ("ТЕСТ");
Почните да конфигуришете ГПИО пин за ЛЕД и тастер.
ДДРА - = (1 << 0); ДДРА & = ~ (1 << 1); ПОРТА - = (1 << 1);
Ако се тастер не притисне, задржите ЛЕД лампицу УКЉУЧЕНУ, а ако се притисне тастер, започните слање наредбе „СЕНД“ на НодеМЦУ и искључите ЛЕД.
иф (бит_ис_цлеар (ПИНА, 1)) { ПОРТА - = (1 << 0); _делаи_мс (20); } елсе { ПОРТА & = ~ (1 << 0); _делаи_мс (50); УАРТ_сендСтринг ("ПОШАЉИ"); _делаи_мс (1200); }
Програмирање ЕСП8266 НодеМЦУ
Програмирање НодеМЦУ укључује пријем наредби од Атмега16 и слање е-поште помоћу једног СМТП сервера.
Прво, укључите ВИФИ библиотеку јер ће се Интернет користити за слање е-поште. Дефинишите свој ВИФИ ссид и лозинку за успешно повезивање. Такође дефинишите СМТП сервер.
#инцлуде
У функцији сетуп () , Подесите брзину преноса сличну брзини преноса Атмега16 као 9600 и повежите се на ВИФИ и прикажите ИП адресу.
Сериал.бегин (9600); Сериал.принт ("Повезивање са:"); Сериал.принтлн (ссид); ВиФи.бегин (ссид, лозинка); вхиле (ВиФи.статус ()! = ВЛ_ЦОННЕЦТЕД) { кашњење (500); Сериал.принт ("."); }
У функцији лооп () , прочитајте бајтове за пријем на Рк пину и претворите их у облик низа.
иф (Сериал.аваилабле ()> 0) { вхиле (Сериал.аваилабле ()> 0 && индек1 <6) { делаи (100); инЦхар = Сериал.реад (); инДата = инЦхар; индек1 ++; инДата = '\ 0'; } вариабле.тоУпперЦасе (); за (бајт и = 0; и <6; и ++) { вариабле.цонцат (Стринг (инДата)); } Сериал.принт ("променљива је ="); Сериал.принтлн (променљива); Сериал.принт ("индата ис ="); Сериал.принтлн (инДата); кашњење (20); } Стринг стринг = Стринг (променљива);
Ако се подудара команда за пријем, пошаљите е-пошту примаоцу позивањем функције сендЕмаил ().
иф (стринг == "ПОШАЉИ") { сендЕмаил (); Сериал.принт ("Маил сент то:"); Сериал.принтлн ("Прималац"); Сериал.принтлн (""); }
Веома је важно подесити СМТП сервер и без тога не можете слати е-пошту. Такође имајте на уму да током комуникације подесите брзину преноса сличну за оба контролера.
Дакле, на овај начин се ЕСП8266 може повезати са АВР микроконтролером како би се омогућио за ИоТ комуникацију. Такође проверите радни видео дат у наставку.