- Необходими материали:
- Програмиране на PIC микроконтролера:
- Функции в библиотеката ESP8266:
- Примерна програма:
- Изход за симулация:
- Проверка на изхода:
- Добавяне на функции към библиотеката ESP8266:
В тази статия нека обсъдим как да свържем WIFI модул ESP8266 с микроконтролер PIC. Досега може би сте използвали модула ESP8266 като самостоятелен микроконтролер или сте го използвали с библиотеката Arduino. Но когато става въпрос за хардкор вградени системни проекти, трябва да знаем как да го използваме и с PIC микроконтролери. Това ще ви помогне да персонализирате вашите проекти в перспектива на дизайна и същевременно да ги направите евтини.
Модулите ESP8266 се доставят с фърмуер по подразбиране, зареден в него, поради което можем да програмираме модула с помощта на AT команди. Тези команди трябва да бъдат изпратени през сериен комуникационен канал. Този канал се установява между PIC и модула ESP8266 чрез използване на модула USART в микроконтролера PIC . Цялата работа ще бъде наблюдавана и докладвана на потребителя с помощта на 16x2 LCD дисплей. Следователно този урок предполага, че имате някои основни познания за модула USART в PIC, свързване на LCD с PIC и използване на AT команди в ESP8266. Ако не го направите, можете да се върнете към свързаните уроци, за да ги научите предварително.
Необходими материали:
За да завършите този урок, ще ви е необходим следният хардуер
- PIC16F877A
- 20MHz кристален осцилатор
- 7805
- LM317
- ESP8266
- 16 * 2 LCD дисплей
- Програмист на PicKit3
- Резистори (1K, 220ohm, 360ohm)
- Кондензатори (1uF, 0.1uF, 33pF)
- Джъмперни проводници
- 12V адаптер за захранване на PIC и ESP модула
Хардуер:
Пълната схема на проекта е показана тук по-долу
Схемите се състоят от две вериги на регулатора на напрежение, едната е + 5V регулатор, който се използва за захранване на PIC микроконтролера, а другата е 3.3V регулатор, който захранва модула ESP8266. + 5V се регулира чрез използване на 7805 (IC с линеен регулатор на напрежение). 3.3V се регулира с помощта на LM317 (променлив регулатор на напрежението). Модулът ESP8266 консумира много ток (~ 800mA), следователно, ако проектирате собствено захранване, уверете се, че може да произвежда толкова висок ток. Уверете се също, че заземяващите щифтове на PIC и модула ESP8266 са свързани заедно.
Така че сега знаем, че PIC работи на + 5V, а ESP8266 работи на 3.3V волта. За да установим USART комуникация между тези два модула, трябва да имаме схема от 5V - 3.3V логически преобразувател, както е показано на горната фигура. Тази схема не е нищо друго освен потенциален делител, който просто преобразува входящите + 5V в 3.3V. Това ще попречи на 3,3V допустимия RX щифт на ESP8266 да получи + 5V.
Направих модулите PIC и ESP на две отделни платформи, както е показано в тези уроци. По този начин мога да ги използвам универсално за още подобни проекти
- LED хардуер, използващ PIC
- Първи стъпки с ESP8266
Можете да следвате същото, да изградите своя собствена дъска във вашия стил или просто да свържете горната схема към макет.
Програмиране на PIC микроконтролера:
За да програмираме PIC микроконтролера да изпраща последователно “AT команди”, използвайки USART към модула ESP8266, трябва да използваме библиотека. Тази библиотека ще ви спести много главоболия, като използването на инструкционни модули ESP8266, за да проверите за всяка AT команда и след това да намерите начин да ги предадете на модула ESP. Тази библиотека е безплатен софтуер, първоначално разработен от Camil Staps, а по-късно е подобрен и модифициран от Circuit Digest, така че да може да се използва с нашия микроконтролер PIC16F877A. Можете да го изтеглите от тук
Библиотеката все още е в процес на разработка, но можете да използвате повечето важни AT команди във фърмуера ESP8266. Ако установите, че някоя от командите, от които се нуждаете, липсва, уведомете ме в раздела за коментари и ще се опитам да я добавя вместо вас. Този урок ще ви обясни всички команди (досега), които могат да бъдат използвани от тази библиотека. Освен това ще ви насочи да добавяте свои собствени функции към библиотеката.
Функции в библиотеката ESP8266:
- Initialize_ESP8266 (): Тази функция ще инициализира модула USART на PIC, за да комуникира с модула ESP8266. Той задава скорост на предаване на 115200 и подготвя Rx и Tx щифта на PIC за USART комуникация.
- _esp8266_putch (): Тази функция се използва за изпращане на единичен символ последователно към модула ESP8266. Например _esp8266_putch ('a') ще изпраща символа последователно към модула ESP.
- _esp8266_getch (): Тази функция се използва за получаване на един знак от модула ESP. Например, ако ESP отпечатва „OK“ и използваме char a = _esp8266_getch (). Тогава символът 'o' ще се съхранява в променливата a.
- ESP8266_send_string (): Тази функция е версията на низа на _esp8266_putch (). Той може да изпрати един пълен низ към модула ESP8266. Например ESP8266_send_string (“AT / r / n”) ще изпрати командата “AT” към модула ESP8266.
- esp8266_isStarted (): Използва се за проверка дали PIC може да комуникира с ESP модула. Изпраща командата „AT“ и изчаква „OK“, ако е получена, връща true, иначе връща false.
- esp8266_restart (): Нулира модула ESP8266 и връща true е нулирано успешно и връща false, ако не е успешно.
- esp8266_mode (): Използва се за задаване на режим на работа на модула ESP8266. Както знаем, той може да работи в три различни режима.
Режим на станцията |
|
Мек режим AP |
|
Станция и режим AP |
- esp8266_connect (): Позволява ви да се свържете с wifi сигнал. Например esp8266_connect (“home”, “12345678”) , ще позволи на вашия модул да се свърже с wifi сигнала на име home, чиято парола е 12345678.
- esp8266_disconnect (): Тази функция прекъсва връзката ви с модула от която и да е свързана преди това wifi връзка
- esp8266_ip (): Получава IP адреса и го връща. Използвайте тази функция, ако искате да знаете IP адреса на модула ESP8266.
- esp8266_start (): Тази функция се използва за стартиране на TCP или UDP комуникация. Например esp8266_start ( "TCP", "192.168.101.110", 80) . Ще стартира TCP мрежа в този IP и порт 80.
- esp8266_send (): Тази функция се използва за изпращане на информация към TCP / UDP мрежата. С помощта на тази команда ще бъде изпратен HTML скриптът. Тогава този скрипт ще се появи в IP адреса, в който комуникацията е била установена преди.
- esp8266_config_softAP (): Тази функция се използва за конфигуриране на softAP. Например esp8266_config_softAP („офис“, „12345678“); ще създаде Wifi сигнал с име office и за достъп до него трябва да се използва паролата 12345678.
- esp8266_get_stationIP (): Тази функция ще ви върне IP / MAC адреса на клиентите, които са свързани към вашия softAP.
Примерна програма:
Сега, след като разбрахме функциите на всяка команда в библиотеката, нека разгледаме малка примерна програма. В тази програма ще проверим дали връзката между ESP8266 и PIC е успешна и след това ще създадем WIFI мрежа (SoftAP) с предпочитано име и парола. Пълната програма и симулацията на същата ще бъдат обяснени за ваше разбиране.
Отново, ако не сте прочели нашия PIC взаимодействие с LCD и PIC USART урок, моля, прочетете, преди да продължите, защото само тогава това ще има смисъл за вас.
Тъй като тепърва започваме да свързваме PIC с ESP8266, използвах LCD, за да се уверя, че нещата работят правилно.
направете {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP не е намерен"); } докато (! esp8266_isStarted ()); // изчакайте, докато ESP изпрати обратно "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String („ESP е свързан“); __delay_ms (1500); Lcd_Clear ();
Когато изпратим “AT” към модула ESP8266, той отговаря с “OK”. Това ни гарантира, че модулът ESP8266 е свързан успешно. Функцията esp8266_isStarted () се използва за същото. Изпращаме сигнала AT от PIC и изчакваме, докато модулът ESP се оживи и ни изпрати ОК. Ако получим ОК, показваме, че “ESP е свързан” на LCD дисплея.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP зададен като AP"); __delay_ms (1500); Lcd_Clear ();
Горните редове на кода се използват за настройка на ESP модула да работи в режим „мека AP”. Функцията esp8266_mode (2); изпраща AT командите „AT + CWMODE = 3“ към модула и чака модулът да отговори с „OK“
/ * Конфигурирайте името и паролата на точката за достъп * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String („AP конфигуриран“); __delay_ms (1500); Lcd_Clear (); / * AP конфигуриран * /
Този сегмент от кода се използва за конфигуриране на softAP. Тук сме посочили SSID като „CircuitDigest”, а паролата като „619007123”. За да посочим, че процесът е завършен, ще изчакаме модулът да отговори с „OK“ и след това ще отпечатаме AP, конфигуриран на LCD екрана.
Това е всичко, което свързваме модула ESP8266 с PIC MCU и конфигурирахме softAP с име и парола по наш избор. Както обикновено, нека симулираме този код и да видим как работи.
Изход за симулация:
Използваме софтуера Proteus, за да симулираме изхода. Файлът за проектиране на същия може да бъде намерен в прикачения файл.
Тъй като нямаме модул ESP8266 в библиотеката на Proteus, ние използваме серийния терминал и отговаряме като потребител на PIC модула. След завършване на симулацията екранът ще изглежда по-долу
Изходът на нашия код се показва във виртуалния терминал. Пълната работа на симулацията ще бъде обяснена във видеото по-долу.
Проверка на изхода:
След като програмата бъде проверена с помощта на симулацията, я зарежете във вашия PIC микроконтролер. Направете връзките, както е показано в схемите по-горе (раздел Хардуер). Трябва да можете да проследявате напредъка си чрез LCD дисплея.
След като на LCD дисплея се каже, че AP е конфигуриран, можем да проверим това, като използваме настройките на WIFI в Телефон или Лаптоп. Моят лаптоп показва следния сигнал според нашата програма.
Това е, момчета, ние успешно свързваме модула ESP8266 с микроконтролера PIC. Това е много основен интерфейс и ако искате да правите някакви сложни проекти, използвайки ESP8266, може да се наложи да добавите свои собствени библиотеки или поне да добавите свои собствени функции. Повярвайте ми, много е лесно да го направя, ще дам кратка представа за същото.
Добавяне на функции към библиотеката ESP8266:
Добавянето на вашата собствена функция ще ви помогне да изпратите всяка команда “AT” към модула ESP8266. За да продължите с това, трябва да прочетете документацията за модула ESP8266. Можете директно да изпратите всяка AT команда, която намерите в това ръководство за набор от инструкции. Но винаги не забравяйте да добавите „/ r / n“ в края на всяка AT команда. Например, ако искате да установите множество връзки с вашия ESP модул. След това отворете документацията за набора инструкции и намерете нашата коя AT команда ще ви свърши тази работа. Тук командата “AT + CIPMUX = 1” ще ви позволи да установите множество връзки с вашия ESP модул.
Сега всичко, което трябва да направите, е да изпратите този “AP + CIPMUX = 1” към вашия модул ESP8266, като използвате серийния порт. Твърдият начин да направите това е чрез просто използване на командата
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Това ще работи, но не е най-добрият начин да го направите. Трябва да прочетете обратно какво отговаря вашият ESP8266 на вашата команда. В нашия случай той ще отговори с „ОК“. Затова трябва да прочетете входящите данни от модула ESP8266 и да потвърдите, че това е „ОК“. Също така можете да направите тази функция, където „1“ или „0“ могат да бъдат предадени като аргументи.
Продължете и се опитайте да направите свои собствени функции за библиотеката. Но ако имате нужда от помощ, моля, използвайте раздела за коментари и аз ще ви помогна.