- Необхідні матеріали:
- Програмування мікроконтролера PIC:
- Функції в бібліотеці ESP8266:
- Зразок програми:
- Висновок для моделювання:
- Вихідна перевірка:
- Додавання функцій до бібліотеки ESP8266:
У цій статті ми обговоримо, як взаємодіяти модуль WIFI ESP8266 з мікроконтролером PIC. До цього часу ви могли використовувати модуль ESP8266 як самостійний мікроконтролер або, можливо, використовували його з бібліотекою Arduino. Але, коли мова заходить про жорсткі вбудовані системні проекти, ми повинні знати, як використовувати їх і з мікроконтролерами PIC. Це допоможе вам налаштувати свої проекти з точки зору дизайну, і в той же час зробити їх дешевими.
Модулі ESP8266 постачаються із завантаженою в нього прошивкою за замовчуванням, отже, ми можемо програмувати модуль за допомогою команд AT. Ці команди повинні надсилатися через послідовний канал зв'язку. Цей канал встановлюється між PIC та модулем ESP8266 за допомогою модуля USART у мікроконтролері PIC . Вся робота буде контролюватися і повідомлятися користувачеві за допомогою РК-дисплея 16x2. Отже, у цьому посібнику передбачається, що ви маєте деякі базові знання про модуль USART у PIC, взаємодію РК з PIC та використання команд AT у ESP8266. Якщо ви цього не зробите, ви можете повернутися до пов'язаних навчальних посібників, щоб вивчити їх заздалегідь.
Необхідні матеріали:
Для завершення цього підручника вам знадобиться наступне обладнання
- PIC16F877A
- Кристалічний генератор 20 МГц
- 7805
- LM317
- ESP8266
- 16 * 2 РК-дисплей
- Програміст PicKit3
- Резистори (1 К, 220 Ом, 360 Ом)
- Конденсатори (1 мкФ, 0,1 мкФ, 33 пФ)
- Провід перемички
- 12 В адаптер для живлення модулів PIC та ESP
Обладнання:
Повна схема проекту наведена тут нижче
Принципова схема складається з двох схем регулятора напруги, один - це регулятор + 5 В, який використовується для живлення мікроконтролера PIC, а інший - регулятор 3,3 В, який живить модуль ESP8266. + 5 В регулюється за допомогою 7805 (ІС лінійного регулятора напруги). 3,3 В регулюється за допомогою LM317 (регулятор змінної напруги). Модуль ESP8266 споживає багато струму (~ 800 мА), отже, якщо ви проектуєте власний блок живлення, переконайтеся, що він може подавати такий високий струм. Також переконайтеся, що штирі заземлення PIC та модуля ESP8266 з'єднані між собою.
Отже, тепер ми знаємо, що PIC працює на + 5 В, а ESP8266 працює на напрузі 3,3 В. Для встановлення зв'язку USART між цими двома модулями нам потрібно мати схему логічного перетворювача 5 В - 3,3 В, як показано на малюнку вище. Ця схема є не що інше, як потенційний дільник, який просто перетворює вхідні + 5 В в 3,3 В. Це запобіжить допустимому виходу RX 3,3 В ESP8266 від + 5 В.
Я створив модулі PIC та ESP на двох окремих платформах, як показано у цих посібниках. Таким чином я можу використовувати їх універсально для більш подібних проектів
- Світлодіодне обладнання з використанням PIC
- Початок роботи з ESP8266
Ви можете слідувати тому ж, або побудувати власну дошку у своєму стилі, або просто підключити вищезазначену схему до макетної дошки.
Програмування мікроконтролера PIC:
Для того, щоб запрограмувати мікроконтролер PIC послідовно відправляти “AT-команди” за допомогою USART до модуля ESP8266, ми повинні використовувати бібліотеку. Ця бібліотека заощадить вам багато клопоту, наприклад, використання модулів інструкцій ESP8266 для перевірки кожної команди AT, а потім знайде спосіб передати їх модулю ESP. Ця бібліотека - безкоштовне програмне забезпечення, спочатку розроблене Camil Staps, а пізніше воно було вдосконалене та модифіковане Circuit Digest, щоб його можна було використовувати з нашим мікроконтролером PIC16F877A. Ви можете завантажити його тут
Бібліотека все ще розробляється, але ви можете використовувати більшість важливих команд AT у прошивці ESP8266. Якщо ви виявите, що будь-яка потрібна команда відсутня, повідомте мене про це в розділі коментарів, і я спробую додати її для вас. Цей посібник пояснить вам усі команди (на даний момент), якими можна скористатися через цю бібліотеку. Далі також допоможе вам додати власні функції до бібліотеки.
Функції в бібліотеці ESP8266:
- Initialize_ESP8266 (): Ця функція ініціалізує модуль USART ПІК для зв'язку з модулем 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 (): Дозволяє підключатися до сигналу Wi-Fi. Наприклад, esp8266_connect (“home”, “12345678”) , дозволить вашому модулю підключатися до сигналу wifi з іменем home, пароль якого 12345678.
- esp8266_disconnect (): Ця функція відключає ваш модуль від будь-якого з'єднання Wi-Fi, яке було раніше підключено
- 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”); створить сигнал Wi-Fi з назвою office, і для доступу до нього слід використовувати пароль 12345678.
- esp8266_get_stationIP (): Ця функція поверне вам IP / MAC-адресу клієнтів, які підключені до вашого softAP.
Зразок програми:
Тепер, коли ми зрозуміли функції кожної команди в бібліотеці, давайте розглянемо невеликий приклад програми. У цій програмі ми перевіримо, чи зв’язок між ESP8266 та PIC вдалим, а потім створимо мережу WIFI (SoftAP) із бажаним іменем та паролем. Повна програма та її моделювання будуть пояснені для Вашого розуміння.
Знову ж таки, якщо ви не читали наш підручник з PIC з РК-дисплеєм та підручником для PIC USART, будь ласка, прочитайте, перш ніж продовжувати, оскільки лише тоді це матиме для вас сенс.
Оскільки ми тільки починаємо взаємодіяти PIC з ESP8266, я використав РК-дисплей, щоб переконатися, що все працює належним чином.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP не знайдено"); } while (! 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 оживе, і надішлемо нам нормально. Якщо ми отримуємо ОК, ми показуємо, що на EК-дисплеї «ESP підключено».
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP встановлено як AP"); __delay_ms (1500); Lcd_Clear ();
Наведені вище рядки коду використовуються для налаштування модуля ESP в режимі "м'якої точки доступу". Функція 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, налаштований на РК-екран.
Ось зараз, ми зв’язали модуль ESP8266 з мікроконтролером PIC і налаштували softAP із вибраним нами іменем та паролем. Як зазвичай, давайте змоделюємо цей код і подивимось, як він працює.
Висновок для моделювання:
Ми використовуємо програмне забезпечення Proteus для імітації вихідних даних. Файл дизайну для того самого можна знайти у додатку.
Оскільки у нас немає модуля ESP8266 у бібліотеці Proteus, ми використовуємо послідовний термінал і відповідаємо як користувач на модуль PIC. Екран моделювання після завершення буде виглядати нижче
Висновок нашого коду відображається у віртуальному терміналі. Повна робота моделювання буде пояснена у відео нижче.
Вихідна перевірка:
Як тільки програма буде перевірена за допомогою моделювання, скиньте її у свій мікроконтролер PIC. Встановіть з'єднання, як показано на схемі вище (розділ Апаратне забезпечення). Ви повинні мати можливість відстежувати свій прогрес за допомогою РК-дисплея.
Як тільки на РК-дисплеї буде сказано, що точка доступу налаштована, ми можемо перевірити це, скориставшись налаштуваннями 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" можуть бути передані як аргументи.
Вперед і спробуйте створити власні функції для бібліотеки. Але якщо вам потрібна допомога, будь ласка, скористайтеся розділом коментарів, і я вам допоможу.