Додому Програми Управління ардуїно wifi. Arduino: управління пристроями зі смартфона для чайників

Управління ардуїно wifi. Arduino: управління пристроями зі смартфона для чайників

Передавати прошивки, оновлення та інші дані шляхом паяльника та проводів – не найкраще рішення для Ардуїно. Однак мікроконтролери для arduino wi-fi коштують недешево, та й потреба в них є далеко не завжди, чому користувачі воліють їх не використовувати у своїх проектах без потреби.

Але черговий китайський продукт захопив ринок, wi-fi jammer esp8266 своїми руками можна приєднати до плати Ардуїно або іншої системи, і ви отримаєте стабільне з'єднання з низкою інших переваг. Так давайте розберемося з arduino uno wi-fi, і чи варто купувати даний модуль, а також, що взагалі являє собою подібний мікроконтролер на wi-fi ардуїно.

Доступні Wi-Fi модулі для Arduino

Зараз більшість користувачів Ардуїно вже не турбується про ціну подібних девайсів, хоча ще 3 роки тому arduino wi-fi модуль вважався розкішшю. Все це завдяки wi-fi jammer esp8266, виробники якого ввели на ринок зовсім новий продукт, що вражає своєю функціональністю і, водночас є досить дешевим, що внесло вагомий внесок і створило конкуренцію в цьому напрямку.

Таким чином, arduino wi-fi esp8266 зараз вважається найдоступнішим модулем на ринку, як і всі його побратими. Так, ціна на закордонних майданчиках стартує від 2-х доларів, що дозволяє пачками закуповувати дані модулі та не перепрошувати їх тисячу разів, перепаюючи контакти, щоб зберегти працездатність.

Спочатку даний wi-fi модуль Ардуїно використовувався, в основному, як arduino wi-fi shield, так як був найбільш дешевим варіантом і нічим не поступався оригінальному. Пристрій справді практично легендарний, адже вагомих мінусів за його вартість не знайти. Є безліч бібліотек, у тому числі і користувацьких, а також підтримує роботу через Serial шини та найпростіші АТ та АТ+ команди. Завдяки цьому жодної семантики горезвісного С99, як це часто буває з іншими сторонніми мікроконтролерами, вивчати не потрібно.

Відповідно навіть новачок розбереться за секунди, а професіонал зможе застосувати вже заготовлені бібліотеки. Серед інших переваг відзначається:

  1. Процесор на 160 МГц, але він 32-бітний, що накладає певний відбиток на продуктивність. Але варто пам'ятати, що модуль все ж таки застосовується у зв'язці з платами Ардуїно, які самі по собі ріжуть високі частоти і з'їдають більшу частину ресурсів невідомо для чого.
  2. Виробник, який випустив wi-fi модуль esp8266, цікаві проекти на цьому не закінчив і зараз є ціла лінійка мікроконтролерів перевіреної якості.
  3. Сучасні стандарти захисту. Звичайно, WPA і WPA2 вже давно не настільки безпечні, як хотілося б, але їхня наявність не може не тішити в такому дешевому контролері.
  4. 16 портів виведення, у тому числі 10-бітний, що дозволяє поекспериментувати із платою.

Що ще важливіше, з коробки на вас чекає постійна пам'ять до 4 мегабайт, залежно від типу плати, а це в рази полегшує роботу з великими бібліотеками і навіть деякими медіа-файлами. Адже на більшості плат Ардуїно і 1 мегабайт вважається недозволеною розкішшю.

Характеристики esp8266 wi-fi безумовно радують, особливо в порівнянні з його дорожчими конкурентами, але у користувача, який не мав раніше досвіду з даними платами, виникне питання про те, як його підключити. Справа в тому, що модуль має набагато більше пінів, ніж звикли бачити новачки, а відповідно у тих починається паніка. Однак якщо розібратися в ситуації, то насправді в цьому немає нічого складного. Достатньо запастися припоєм та паяльником і просто почитати інструкцію.

Як підключити Wi-Fi модуль до Arduino

Давайте розглянемо підключення esp8266 esp 12e і що таке esp8266 міст wi-fi uart. Адже саме підключення та налаштування модуля викликають найбільше запитань.


Насамперед визначтеся, яка версія мікроконтролера у вас на руках. У першій вбудовуються світлодіоди біля пінів, а на другій, яку почали випускати нещодавно, сигнальні вогні знаходяться біля антени.

Перед підключенням варто підвантажити останню прошивку, що дозволяє збільшувати швидкість обміну пакетами до 9600 одиниць інформації на секунду. А перевіряти з'єднання ми через кабель usb-ttl і відповідний термінал від CoolTerm.


Піни для підключення вищеописаного кабелю стандартні, а ось живлення йде через 3.3 вольтовий пін з Ардуїно. Важливо пам'ятати, що максимальну силу струму, яку подає плата, неможливо поставити вище 150 мА, а esp8266 esp 07 та esp8266 witty cloud wi-fi модуль для arduino вимагають 240 Ма.

Однак, якщо іншого джерела струму немає, можете використовувати стандартний варіант від Ардуїно, але потужність плати постраждає. Хоча, при не сильному завантаженні, достатньо 70 мА, будьте готові до раптових перезавантажень мікроконтролера в пікові моменти навантаження і пишіть софт відповідно, щоб він фільтрував і розбивав файли, не перевантажуючи плату.


Ще один варіант підключення нижче. Важливо – контакти RX-TX з'єднуються перехрестям. Так як рівні сигналів модуля ESP8266 3.3В, а Arduino 5В нам потрібно використовувати резистивний дільник напруги для перетворення рівня сигналу.

Прописуємо Wi-Fi модуль в Arduino

Як відомо, при належному досвіді можна і шилд esp8266 ex 12e сполучити зі смартфоном, але у новачків і прописка esp8266 esp 12 у системі Ардуїно викликає труднощі. Насправді достатньо підключити модуль та перевірити його працездатність, скинувши кілька штатних команд АТ через меню налагодження.

Наприклад, можна додати миготіння штатним світлодіодом (для схеми підключення вище):

#define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000) ;)

Як тільки плата підтвердить, що бачить мікроконтролер у системі, можна розпочинати повноцінну роботу з ним. Однак варто зазначити, що якщо сама плата Ардуїно використовується в проекті лише для підключення даного контролера - це ірраціонально.

Достатньо USB-UART перетворювача, тому що esp8266 не використовує «мозки» ардуїно, а своєї флеш-пам'яті йому вистачить для зберігання пари базових бібліотек і прошивок. Відповідно, витрачатися зайвий раз на допоміжну плату немає сенсу, якщо ви можете просто підпаяти його до перетворювача і далі використовувати в проекті. При цьому, підключивши допоміжне джерело живлення і не турбуючись, що дані перестануть передаватися в найвідповідальніший момент через нестачу потужності системи.

Важливе зауваження! Для останньої схеми скетч завантажуємо Arduino як зазвичай, але так як модуль ESP8266 підключений до контактів 0 і 1, програмування стає неможливим. Компілятор показуватиме помилку. Від'єднайте дроти ESP8266 від контактів 0 і 1, зробіть програмування, а потім поверніть контакти на місце і натисніть кнопку скидання в Arduino.

Мікросхема ESP8266 – один із найпопулярніших інструментів для організації бездротового зв'язку у проектах розумного будинку. За допомогою бездротового контролера можна організовувати зв'язок за інтерфейсом WiFi, забезпечуючи проектам Arduino вихід в інтернет та можливість дистанційного керування та збору даних. На основі ESP8266 створені такі популярні плати як WeMos та NodeMcu, а також величезна кількість саморобних проектів. У цій статті, ми дізнаємося, що являє собою ESP82266, які бувають її різновиди, як працювати з ESP8266 в середовищі Arduino IDE.

ESP8266 – мікроконтролер з інтерфейсом WiFi, який може виконувати програми з флеш-пам'яті. Пристрій було випущено в 2014 році китайською фірмою Espressif і практично відразу стало популярним.

Контролер недорогий, має невелику кількість зовнішніх елементів і має такі технічні параметри:

  • Підтримує Wi-Fi протоколи 802.11 b/g/n з WEP, WPA, WPA2;
  • Має 14 портів введення і виведення, SPI, I2C, UART, 10-біт АЦП;
  • Підтримує зовнішню пам'ять до 16 МБ;
  • Необхідне живлення від 2,2 до 3,6 В, споживаний струм до 300 мА залежно від вибраного режиму.

Важливою особливістю є відсутність користувальницької енергонезалежної пам'яті на кристалі. Програма виконується від зовнішнього SPI ПЗУ за допомогою динамічного завантаження необхідних елементів програми. Доступ до внутрішньої периферії можна отримати не з документації, а з набору бібліотек API. Виробником вказується приблизна кількість ОЗП – 50 кБ.

Особливості плати ESP8266:

  • Зручне підключення до комп'ютера через USB кабель, живлення від нього ж;
  • Наявність вбудованого перетворювача напруги 3,3В;
  • Наявність 4 Мб флеш-пам'яті;
  • Вбудовані кнопки для перезавантаження та перепрошивки;
  • Всі порти виведені на плату на два гребінки з кроком 2,5 мм.

Сфери застосування модуля ESP8266

  • Автоматизація;
  • Різні системи для розумного будинку: Бездротове керування, бездротові розетки, керування температурою, доповнення до сигналізаційних систем;
  • Мобільна електроніка;
  • ID мітки;
  • Дитячі іграшки;
  • Mesh-мережі.

Розпинування esp8266

Існує безліч різновидів модуля ESP8266. На малюнку представлені деякі з них. Найбільш популярним варіантом є ESP 01.

Виконання програми потрібно встановити станом портів GPIO0, GPIO2 і GPIO15, коли закінчується подача живлення. Можна виділити 2 важливі режими – коли код виконується з UART (GPIO0 = 0, GPIO2 = 1 та GPIO15 = 0) для перепрошивки флеш-карти і коли виконується із зовнішньої ПЗУ (GPIO0 = 1, GPIO2 = 1 та GPIO15 = 0) у штатному режимі.

Розпинування для ESP01 зображено на зображенні.

Опис контактів:

  • 1 – земля, 8 – харчування. По документації напруга подається до 3,6 У – це важливо врахувати під час роботи з Ардуїно, яку зазвичай подають 5 У.
  • 6 - RST, необхідна для перезавантаження мікроконтролера при подачі на нього низького логічного рівня.
  • 4 – CP_PD, також використовується для переведення пристрою в режим енергозбереження.
  • 7 та 0 – RXD0 та TXD0, це апаратний UART, необхідний для перепрошивки модуля.
  • 2 – TXD0, до цього контакту підключається світлодіод, який загоряється за низького логічного рівня на GPIO1 і передачі даних по UART.
  • 5 – GPIO0, порт введення та виведення, також дозволяє перевести пристрій у режим програмування (при підключенні порту до низького логічного рівня та подачі напруги) .
  • 3 – GPIO2, порт введення та виведення.

Основні відмінності Ардуїно від ESP8266

  • ESP8266 має більший обсяг флеш-пам'яті, при цьому ESP8266 відсутня енергонезалежна пам'ять;
  • Процесор ESP8266 швидше, ніж у Ардуїно;
  • Наявність Wi-Fi у ESP8266;
  • ESP8266 споживає більше струму, ніж для Ардуїно;

Програмування ESP8266 в Arduino IDE

Програмний комплект розробника esp8266 включає:

  • Компілятор із пакету GNU Compiler Collection.
  • Бібліотеки, стеки протоколів WiFi, TCP/IP.
  • Засіб завантаження інформації у програму контролера.
  • Операційна IDE.

Спочатку модулі ESP8266 поставляються із прошивкою від фірми-виробника. З її допомогою можна керувати модулем із зовнішнього мікроконтролера, реалізовувати роботу з Wi-Fi як з модемом. Також існує багато інших готових прошивок. Деякі з них дозволяють настроювати роботу модуля за допомогою WEB-інтерфейсу.

Можна програмувати із середовища Arduino IDE. За її допомогою можна легко писати скетчі та завантажувати їх у ESP8266, прошивати ESP8266, при цьому не потрібно сама плата Ардуїно. Arduino IDE підтримує усі види модулів ESP8266.

На даний момент для ESP8266 можна реалізувати такі функції:

  • Основні функції мови Wiring. Керувати портами GPIO можна так само, як і пінами на платі Ардуїно: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) дозволяє вважати значення АЦП. За допомогою команди analogWrite (pin, value) можна підключити ШІМ на потрібному виході GPIO. При value=0 ШІМ відключається, максимальне значення досягає константи, що дорівнює 1023. За допомогою функцій attachInterrupt, detachInterrupt можна виконувати переривання на будь-якому порту GPIO, крім 16.
  • Таймінг та delay. Використовуючи команди millis та micros можна повернути мс та мкс, які пройшли з моменту старту. Delay дозволяє призупинити виконання програми на потрібний час. Також функція delay(…) дозволяє підтримувати нормальну роботу Wi-Fi, якщо у скетчі є великі елементи, які виконуються більше 50 мс. Yield() – аналог функції delay(0).
  • Serial та Serial1 (UART0 та UART1). Робота Serial на ESP8266 аналогічна роботі на Ардуїно. Запис та читання даних блокують виконання коду, якщо FIFO на 128 байт та програмний буфер на 256 байт заповнені. Об'єкт Serial користується апаратним UART0, для нього можна встановити піни GPIO15 (TX) і GPIO13 (RX) замість GPIO1 (TX) і GPIO3 (RX). Для цього після функції Serial.begin(); потрібно викликати Serial.swap();. Аналогічно Serial1 використовує UART1, котрий працює на передачу. Необхідний пін для цього GPIO2.
  • Макрос PROGMEM. Його робота аналогічна роботі в Ардуїно. Дозволяє переміщати дані read only і рядкові незмінні у flash-пам'ять. При цьому ESP8266 не зберігаються однакові константи, що призводить до додаткової витрати флеш-пам'яті.
  • I2C. Перед початком роботи із шиною I2C вибираються шини з допомогою функції Wire.pins(int sda, int scl).
  • SPI, OneWire – повністю підтримуються.

Використання esp8266 для зв'язку Ардуїно WiFi

Перед підключенням до Ардуїно важливо пам'ятати, що у ESP8266 напруга живлення не може бути вищою за 3,6, у той час як на паті Ардуїно напруга дорівнює 5 В. З'єднувати 2 мікроконтролери потрібно за допомогою резистивних дільників. Перед підключенням модуля потрібно ознайомитися з розпинанням обраного ESP8266. Схема підключення для ESP8266-01 представлена ​​малюнку.

3,3 В з Ардуїно – на Vcc&CH_PD на модулі ESP8266, Земля з Ардуїно – до землі з ESP8266, 0 – TX, 1 – RX.

Для підтримки стабільної роботи ESP8266 необхідне джерело постійної напруги на 3,3 В та максимальний струм 250 мА. Якщо живлення походить від USB-TTL-конвертера, можуть виникати проблеми та збої в роботі.

Робота з бібліотекою Wi-Fi для ESP8266 схожа на бібліотеку для звичайного шилда. Є кілька особливостей:

  • mode(m) – вибір одного з трьох режимів: клієнт, точка доступу або обидва режими одноразово.
  • softAP(ssid) – необхідний створення відкритої точки доступу.
  • softAP(ssid, password) – створює точку доступу з паролем, який має складатися не менше ніж із 8 знаків.
  • WiFi.macAddress(mac) та WiFi.softAPmacAddress(mac) – визначає МАС адресу.
  • WiFi.localIP() та WiFi.softAPIP() – визначення IP адреси.
  • printDiag(Serial); – дозволять дізнатись дані про діагностику.
  • WiFiUDP – підтримка передачі та прийому multicast пакета в режимі клієнта.

Робота виконується за таким алгоритмом:

  • Підключення USB-TTL до USB та ESP.
  • Запустити Arduino IDE.
  • Вибрати в меню інструменти потрібний порт, плату, частоту та розмір flash-пам'яті.
  • Файл - Прімери - ESP8266WiFi - WiFiWebServer.
  • Записати в скетчі SSID та пароль мережі Wi-Fi.
  • Почати компіляцію та завантаження коду.
  • Дочекайтеся закінчення процесу прошивки, від'єднайте GPIO0 від землі.
  • Поставити швидкість 115 200.
  • З'явиться підключення, буде записано IP-адресу.
  • Відкрити браузер, ввести в адресному рядку номер IP/gpio/1
  • Переглянути монітор порту, якщо до виходу GPIO2 підключено світлодіод, він повинен спалахнути.

NodeMCU на базі esp8266

NodeMCU – це платформа, що базується на базі модуля esp8266. Використовується для керування схемою на відстані за допомогою інтернету через Wi-Fi. Плата малогабаритна, компактна, коштує дешево, на лицьовій стороні є роз'єм для USB. Поруч кнопки для налагодження та перезавантаження мікроконтролера. Також встановлений чіп ESP8266. Напруга живлення – від 5 до 12, бажано подавати більше 10 В.

Великою перевагою плати є її мале енергоспоживання. Нерідко їх використовують у схемах з автономним харчуванням. На платі розташовано лише 11 портів загального призначення, з них деякі мають спеціальні функції:

  • D1 та D2 – для інтерфейсу I2C/TWI;
  • D5-D8-для інтерфейсу SPI;
  • D9, D10 – для UART;
  • D1-D10 – можуть працювати як ШІМ.

Платформа має сучасне API для апаратного введення та виведення. Це дозволяє скоротити кількість дій під час роботи з обладнанням та при його налаштуванні. За допомогою прошивки NodeMCU можна використовувати весь робочий потенціал для швидкої розробки пристрою.

WeMos на базі esp8266

WeMos – ще один вид платформи, що базується на базі мікроконтролера esp8266. Відповідно є Wi-Fi модуль, підтримується Arduino IDE, є роз'єм для зовнішньої антени. Плата має 11 цифрових входів/виходів, які (крім D0) підтримують interrupt/pwm/I2C/one-wire. Максимальна напруга живлення досягає 3,3 В. Також на платформі є USB роз'єм. Аналоговий вхід 1 з максимальною напругою 3,2В.

Для роботи з модулем потрібно встановити драйвер CH340 та налаштувати Ардуїно IDE під ESP8266. Для цього потрібно в меню налаштування у рядку «додаткове посилання для менеджера плат» додати адресу http://arduino.esp8266.com/stable/package_esp8266com_index.json.

Після цього потрібно знайти пакет ESP8266 і встановити його. Потім потрібно вибрати в меню інструменти мікроконтролер Wemos D1 R2 та записати потрібний скетч.

Висновки по ESP8266

За допомогою плат на основі мікросхеми ESP8266 ви можете додати у свої проекти можливості великого інтернету, зробивши їх набагато інтелектуальнішими. Дистанційне керування, збирання та аналіз даних на сервері, обробка голосу та робота із зображенням – все це стає доступним, коли ми підключаємо наш проект по WiFi до інтернету. У наступних статтях ми докладно розглянемо, як можна програмувати пристрої на базі esp8266, а також приділимо увагу таким популярним платам як WeMos та NodeMcu.

Частина 1. Підготовка ESP8266

Навіщо ця стаття? На хабре вже є ряд статей про використання ESP у різних конфігураціях, але чомусь без подробиць про те, як саме все підключається, прошивається та програмується. Типу «я взяв ESP, дві пальчикові батарейки, DHT22, закинув у коробку, потряс годинник і термометр готовий!». У результаті виходить дивно: ті, хто вже працюють з ESP не бачать у зробленому нічого незвичайного, а ті, хто хоче навчитися - не розуміють з чого почати. Тому я вирішив написати докладну статтю про те, як підключається та прошивається ESP, як його пов'язати з Arduino та зовнішнім світом і які проблеми мені траплялися на цьому шляху. Посилання на Aliexpress наводжу лише для уявлення порядку цін та зовнішнього вигляду компонентів.

Отже, у мене було два мікроконтролери, сім різних сенсорів, п'ять джерел живлення, температурний датчик DHT22 і безліч проводків всіх сортів і кольорів, а також безліч опорів, конденсаторів і діодів. Не те щоб усе це було необхідно для термометра, але якщо вже почав займатися мікроелектронікою, то стає важко зупинитися.


живлення

Для роботи ESP8266 потрібна напруга 3.3В і струм не нижче 300мА. На жаль, Arduino Uno не в змозі забезпечити такий струм, як не в змозі забезпечити його і перехідники USB-UART (програматори) типу FT232RL – їхня межа близько 50мА. А отже, доведеться організувати окреме харчування. І краще б, щоб Arduino теж працював від 3.3В, щоб уникнути проблем типу «я подав п'ятивольтовий сигнал на виведення RX модуля ESP, чому пахне паленою пластмасою?».

Є три рішення.

2. Купити готовий модуль із регулятором напруги, що знижує 5В до 3.3В. Мабуть, це найзручніший варіант.

3. Зібрати модуль самому із регулятора AMS1117 та одного танталового конденсатора на 22мкФ.

Я вибрав третій пункт, оскільки мені часто потрібно 3.3В, я жадібний, і я люблю вбудовувати регулятори прямо в блоки живлення.

З AMS1117 все просто: якщо покласти його текстом нагору, то напруга на ногах росте зліва направо: 0(Gnd), 3.3В (Vout), 5В (Vin).
Між нулем і виходом потрібен танталовий конденсатор на 22мкФ (так за інструкцією, що якщо поставити електролітичний - я не перевіряв). У танталового SMD-конденсатора плюс там, де смужка. Трохи жахливого паяння зовсім не призначених для такого варварства SMD-компонентів і:

Обов'язково перевіряйте вихідну напругу. Якщо воно значно менше 3.3В (наприклад, 1.17В) - дайте регулятору охолонути після паяння та перевірте контакти. Якщо поставите конденсатор більше, ніж 22мкФ, то мультиметр може показати вищу напругу.

Чому саме AMS1117? Він широко використовується. Його ви можете знайти майже скрізь, навіть у Arduino Uno, як правило, стоїть AMS1117-5.0.
Якщо ви знаєте щось подібних габаритів і ціни, ще простіше у використанні - напишіть, будь ласка.

Важливий момент. Не знаю вже чому, але AMS1117 вкрай примхливо ставиться до якості з'єднань. Контакти мають бути надійними. Краще – пропаяні. Інакше він на тестах видає 3.3В, але під навантаженням нічого не видає.

Підключення ESP8266

Я вибрав модель 07, оскільки має чудовий металевий екран, який працює як захист від наведень, механічних впливів і як радіатор. Останнє забезпечує різницю між модулем, що згорів, і просто нагрівся. Крім того є гніздо під зовнішню антену.

Щоб чіп запустився, потрібно з'єднати VCC і CH_P через резистор 10кОм. Якщо такого немає, то згодиться будь-який з діапазону 1-20кОм. Крім того, саме модель 07 ще вимагає, щоб GPIO15 (найближчий до GND) був «на землі» (цього на картинці не видно, тому що з'єднання з іншого боку).

Тепер беремо перехідник USB-UART, перемикаємо його на 3.3В та підключаємо RX до TX, TX до RX та GND до «землі» (у мене без цього передача нестабільна). Якщо ви не можете переключити на 3.3В, можна використовувати найпростіший резисторний дільник напруги: з'єднайте ESP RX з TX перехідника через опір в 1кОм, а ESP RX з «землею» через 2кОм. Існує маса складніших і надійніших способів зв'язати 3.3В і 5В, але в даному випадку і так зійде.

І з'єднуємося на швидкості 9600 за потрібним COM-портом (можна подивитися в диспетчері пристроїв).

Я використовую SecureCRT, Putty теж підійде, а поціновувачі Лінукса і так знають, що робити і де дивитися.

(AT+RST перезавантажує чіп)

Якщо нічого не відбувається – вимкніть – увімкніть живлення, якщо все одно нічого не відбувається – перевірте відповідність TX/RX, спробуйте переставити їх місцями або припаяти до чіпа.

Іноді чіп у ході знущань експериментів зависає і тоді його треба знеструмити, у тому числі відключивши і перехідник (наприклад, витягнувши його з USB), оскільки чіпу вистачає навіть крихта живлення, щоб вперто тупити і не працювати.

Іноді фокуси з перехідником вішають порт USB. Можна як тимчасове рішення використовувати інший USB-порт, але взагалі краще перезавантажити комп'ютер.

Іноді змінюється номер COM-порту. Під Linux це можна вирішити за допомогою udev.

Якщо замість тексту надходить сміття, перевірте налаштування швидкості. Деякі старі чіпи працюють на 115 200.

На старті чіп нагрівається, але якщо він реально гарячий і продовжує грітися – відключайте та перевіряйте всі з'єднання. Щоб на корпус не попадало +3.3В, щоб 5В до нього взагалі нікуди не приходили, щоб земля перехідника була з'єднана з землею чіпа. Моделі з металевим екраном дуже важко спалити (але немає нічого неможливого), а на моделі без екранів скаржаться, мовляв, навіть невелика помилка може стати останньою в житті чіпа. Але це я не перевіряв.

Прошивка

Мій вибір - NodeMCU. У неї проблеми з пам'яттю та підтримкою заліза, але це багаторазово окупається простотою коду та легкістю налагодження.

Також будуть потрібні NodeMCU flasher і LuaLoader (останнє - опціонально, є й інші клієнти для роботи з цією прошивкою).

Вимикаємо чіп. Підключаємо GPIO0 до землі та включаємо чіп:

Якщо нічого не відбувається і поля AP MAC/STA MAC порожні – перевірте ще раз, щоб GPIO0 був на землі.
Якщо прошивка почалася, але зависла - подивіться в закладці Log, у мене чомусь конкретно цей чіп відмовився прошиватися на FT232RL, зате без проблем прошився на PL2303HX на швидкості 576000. PL2303HX у вказаному варіанті не має перемикання на 3.3В, щоб ним користуватися потрібно відкрити пластиковий корпус і перепаяти провід з 5V на 3.3V, є варіанти з п'ятьма виходами: 3.3, 5, TX, RX, Gnd.


Зверніть увагу: STA MAC змінився. Підозрюю, що flasher його неправильно показував, але потрібна перевірка.

Для економії сил і нервів можна взяти готовий чи напівготовий варіант.

Є одноразові адаптери із зручним розведенням.
Є

Як і багато інших саморобкіни, я регулярно використовую мікроконтролери AVR для будь-яких різних аматорських виробів. А завдяки концепції «Arduino» ці вироби тепер набувають ще й елегантного вигляду. Справді, за якісь 300-400 рублів ми отримуємо мініатюрну багатошарову плату з маскою, шовкографією та з повністю розведеною на ній периферією для мікроконтролера (причому у SMD виконанні!). Я вже не кажу про всілякі модулі цієї ж «Arduino» серії: датчики, контролери, дисплеї і цілі набори, так потрібної нам додаткової периферії. І знову ж таки також недорогих і в прекрасному виконанні. Практично вже немає необхідності щось розводити і допаювати на «колінці».

Але всі ці різноманітні аматорські вироби вимагають природно, попереднього програмування.Та й надалі при різних удосконаленнях, постійно доводиться ці вироби перепрошувати. Зрозуміло, що зручніше робити це дистанційно, ніж постійно тягати їх до звичайного програматора. Взагалі, завдяки тій же платформі Arduino, варіантів і тут багато: Bluetooth, ZigBee, радіоканал з вашим особистим протоколом, IR, і навіть Wi-Fi. Всі вони дозволяють налагодити бездротовий контакт із вашим мікроконтролером. Але ж ми зупинимося на останньому варіанті. Основних причин тут чотири:

1: сучасно, інтернет речей!

2: бездротовий роутер є в кожній квартирі, реєструй у домашній мережі свої пристрої та вуаля!

3: ваші вироби здійснюють революційний стрибок у своєму розвитку; мало того, що їх можна програмувати на відстані, вони тепер ще й самі можуть спілкуватися з навколишнім світом: електронний годинник самостійно беруть точний час з вартових NTP-серверів, виконавчі пристрої управляються з іншого кінця міста або країни, реєструючі девайси зберігають накопичені дані в хмара і т.д. і т.п.

4: є чудова серія мікросхем ESP8266, на якій не дуже легко все це реалізувати.

Далі, у цій статті на прикладі механічної руки на сервоприводах - буде розібрано та продемонстровано віддалене програмування та обмін даними з ПК (або будь-чого) з пристроями на базі AVR мікроконтролерів. Відразу хочу зазначити, що всі програми наведені надалі є чисто демонстраційними і жодної комерційної цінності не мають. Тому претензії, на кшталт, чому програматор такий кастрований і мало функціональний чи чомусь немає додаткових сервісів, які є скрізь, не приймаються. Оскільки коди відкриті, будь-який бажаючий може допиляти їх на свій розсуд, мені ж для роботи поки вистачає і таких.

Передбачається, що читач вже знайомий і з Arduino модулями (шилдами) і з підключенням і прошивкою ESP8266. Насправді в Мережі викладено величезну кількість матеріалів, які роз'яснюють ази роботи з цими девайсами і мені не хотілося б тут повторюватися. Для новачків наприкінці статті є перелік корисних посилань щодо цих питань, де можна знайти купу інформації, чому це все у вас не працює. За своїм досвідом колишнього інженера електронника можу відповідально заявити, що 99% неполадок зводиться до наступного:

1. Погані контакти. Оскільки "Arduino" шилди, мають на увазі комутацію з один одним через дроти виду "тато-мама", а не через пайку, то дуже часто щось, де-небудь, та відходить. Перевіряйте. Та й взагалі, як кажуть, електроніка це наука про контакти.

2. Проблеми із харчуванням. Не подавайте 5 вольт живлення туди, де потрібно 3.3. Іноді з ESP8266 від цього йде дим. Хоча з іншого боку, логічні сигнали від п'ятивольтових пристроїв вона перетравлює без проблем.

3. Проблеми із достатньою потужністю харчування. ESP8266 має підлу натуру і іноді може споживати майже триста міліампер, хоча до цього могла задовольнятися і тридцятьма. Відповідно кволий стабілізатор 3.3 вольт плати «Arduino», до якого ви анітрохи не сумніваєтеся, її підключили, відразу просідає до мікроскопічних значень. А ви не можете зрозуміти, чому воно, то працює, то ні.

4. Плутанина з висновками. Завжди перевіряйте, які сигнали куди йдуть. Приймач RXD повинен з'єднуватися з передавачем TXD, як і TXD з RXD, але MOSI має з'єднуватися з MOSI, а MISO з MISO тощо.

5. Не розраховуйте на внутрішньосхемні резистори, що підтягують, в ESP8266, завжди підтягуйте висновки до нуля або живлення, через 5-10 кілоомні зовнішні резистори, а не просто перемичкою. Інакше можете у кращому випадку отримати небачений досі струм споживання, а потім нюхати неприємний запах горілого пластику.

6. Косяки програмного забезпечення. Оскільки ПЗ для індивідуальних користувачів пишеться такими ж ентузіастами, то періодично вилазять глюки самих прошивок і баги при оновленні версій цих прошивок. Лікується повзанням за відповідними форумами, іноді навіть англомовними. Деякі товариші навіть стверджували, що і сама мікросхема ESP сира як погода в Пітері, але з іншого боку існує також думка, що з 2014 року (року її першого випуску) ситуація з цим кардинально покращилася (на відміну від погоди).

7. Загадкові глюки. Це рідкісне, але знервоване явище. У мене, наприклад, не шилося віддалено один «Arduino» пристрій. Точніше шилося але з помилками. Але шилося без помилок, якщо на ньому висів шлейф від програматора (але без самого програматора). "АГА", сказав я собі і припаяв конденсатор 15 пФ, між виведенням передачі даних та виведенням синхронізації. Все запрацювало. Та день убив.

Отже, давайте почнемо з найпростішого. У нас є механічна кінцівка MechArm (але не така яку зібрав Говард Воловітс) зроблена в Китаї і персональний комп'ютер з Windows. Завдання - віддалена прошивка програми та керування її з комп'ютера.


Для управляючого контролера візьмемо симпатичну мініатюрну хустку Arduino Nano з каменем ATmega328P. Ця плата чудово впихається всередину механічної руки.


Тепер визначимося яким чином ми її програмуватимемо. Існують три основні способи найбільш підходящих для віддаленої прошивки: через інтерфейс SPI, через вбудований завантажувач через порт JTAG.

Найпростіший варіант, це, звичайно, вбудований завантажувач (бутлоадер). Це заздалегідь прописана у FLASH пам'ять, програма, яка за певним протоколом отримує код, (припустимо за найпростішим UART) і спеціальними командами записує його в місце розташування програми, що завантажується. Так працює, наприклад, сам завантажувач ARDUINO IDE. Після скидання або старту, завантажувач чекає певний час дані на прийом і якщо не чекає починає виконання програми з нульової адреси. Якщо дані надходять, він пише їх у програмну секцію. Після наступного скидання завантажена програма починає виконуватись. У деталях, можливо, я неточно описав, але суть саме така. У результаті нам потрібно лише три висновки для програмування: приймач RTD, скидання RESET та земля GND. Взагалі використовується ще й передавач TRD для верифікації записаної програми, але для простих демонстраційних додатків (не для атомної електростанції) перевірку можна опустити.

Сам завантажувач пишеться мовою асемблера, є приклади простих завантажувачів у даташитах AVR. Можна розкопати вже завантажувач, якщо він у відкритому доступі і просто використовувати його в готовому вигляді, якщо відомий протокол по якому він працює. Єдиний нюанс, що для цього потрібно налаштувати AVR у спеціальний режим, шляхом прошивки спеціальних ф'юз-бітів, що робиться звичайним програматором, а потім їм зашити сам завантажувач на згадку про мікроконтролера (тобто без програматора один раз все одно не обійтися).

Другий варіант, це програмування за послідовним інтерфейсом SPI. Тут вже внутрішнього завантажувача немає, а програмуємо ми, надсилаючи спеціальні команди і потім дані, за вищезгаданим інтерфейсом. Тут у нас завантажувач вже зовнішній, але його все одно треба писати. При передачі використовуються на додаток до RESET і GND вже чотири додаткові висновки MOSI, MISO - дані, SLK синхронізація, СS - вибір кристала. Але взагалі також можна прибрати MISO та СS. Дані тільки прийматимуться (верифікації програми тоді не буде), а кристал у нас і так лише один.

Кожен підхід має свої плюси та мінуси (а JTAG я взагалі не розглядав, оскільки життя людське коротке). Але в результаті я схилився до SPI, оскільки на асемблері писати було ліньки, а відкритих готових завантажувачів я не знайшов (просто добре не шукав).

Для побудови бездротового каналу я, як уже говорилося, вибрав дуже широко відому зараз мікросхему ESP8266 - мікроконтролер, а точніше цілий SoC (System-on-Chip) китайського виробника Espressif з інтерфейсом Wi-Fi. Крім Wi-Fi він відрізняється можливістю виконувати програми із зовнішньої флеш-пам'яті. А саме для власного проекту я взяв ESP8266-07 з 512 Кб пам'яті на борту.


Взагалі годиться будь-яка ESP8266, де є зайві ноги для реалізації SPI. Тому найпростіша ESP8266-01 нам не підійде, тому що у неї розведено зовсім мало ніжок для портів вводу-виводу. Але з іншого боку різниця в ціні на них менше ста карбованців, а доступні вони однаково. Ну і великі налагоджувальні плати з ESP, де для зручності розведена купа периферії, нам теж не годяться, тому що не влазять, туди куди ми їх хочемо впхнути в нашу механічну руку.

Глобальна суть ідеї загалом була такою. З комп'ютера на ESP без проводів по WI-FI (в рамках вашої домашньої мережі) передається тіло програми, що завантажується в мікроконтролер. А ESP вже по проводах з використанням інтерфейсу SPI записує цю програму безпосередньо у FLASH пам'ять мікроконтролера. Потім природно скидає його та дає можливість завантаженій програмі виконуватись. Крім того, у ESP повинен бути незалежний блок, який управляє ще й обміном даними з мікроконтролером, тому що ми хочемо не лише програмувати, а й ще обмінюватися з ним даними. Зокрема, для проекту з MechArm, після запису програми, ми ще передаємо сигнали керування сервоприводами, щоб привести цю руку в рух. Тому на ESP нам бажано підняти TCP сервер для передачі програми і UDP сервер для управління MechArm. Відповідно ці сервери приєднуються до домашньої мережі та уважно слухають, чи немає там охочих завантажити новий код у MechaArm чи помахати комусь нею.

Так-то, я знайшов у Мережі, прошивки вже дозволяють виробляти програмування AVR повітрям, але там головна проблема в тому, що для чого іншого цю прошивку використовувати вже не можна. А нам хотілося б після програмування та спілкуватися з AVR також віддалено.

Яке програмне забезпечення ми будемо використовувати:

Для ПК, я писав все на JAVA, середу IntelliJ IDEA. Але в принципі, можна на будь-чому, нам там головне написати клієнт, який буде відправляти програму для прошивки AVR на ESP8266.

Самі програми для AVR я пишу в ATMEL STUDIO, мовою С, рідко на асемблері. Скетчі Arduino не використовую принципово, будь-яка необхідна бібліотека пишеться за годину інший, причому з повним розумінням її роботи. Я пробував скетчі, але поки у вас немає на AVR операційної системи, скетчі так і відбиратимуть у друга периферію і регулярно глючити. Та сама IDE Arduino в порівнянні з ATMEL STUDIO, звичайно, річ дуже примітивна. Але тут питання, звичайно, спірне, гуманітаріям та школярам веселіше і простіше буде, напевно, зі скетчами.

Для програмування ESP8266 використав прошивку NodeMCU, а програми писав мовою Lua. Ні, я б із задоволенням писав би на Java і на С, але їх на ESP немає. Luа мова у застосуванні до нашого завдання не складний, освоїти його пара дрібниць. А для завантаження програм та їх налагодження на ESP, я взяв IDE ESPlorer . Вітчизняний безкоштовний продукт (але можете зробити автору donation), який звичайно не порівняти з середами згаданими вище, але як то кажуть дарованому коневі… Але щоб користуватися ESPlorer і писати на LUA, нам спочатку необхідно змінити в мікросхемі ESP8266 базову прошивку (поставляється від виробника) на нову. У цьому підприємстві допоможе програма NODE MCU PyFlasher. У сенсі допоможе її перепрошити. А саму прошивку ми самі створимо і отримаємо в руки на сайті творців: NodeMCU. А детальніше про цей процес ви можете прочитати

Все дуже доступно та зрозуміло. До базових бібліотек додаємо підтримку SPI та бітові операції (у LUA у нашому випадку бітові операції перевантажені і від них мало користі). Багато в прошивку бібліотек пхати не слід, тому що через наявність різноманітного софту на ESP8266 залишається зовсім мало пам'яті, якісь жалюгідні 20 кБ.

Звичайно, ви можете просто взяти готову прошивку, яких багато вже бовтається в Інтернеті, але не рекомендую. Хоча б тому, що на деяких немає підтримки бітових операцій (а вони нам потрібні) і немає регулювання швидкості передачі даних SPI.
Відповідно, вони передаються за умовчанням зі швидкістю 40 МГц поділені на якийсь невеликий коефіцієнт і тому AVR їх перетравлювати не встигає.

Кому ліньки створювати прошивку можете завантажити мою з хмари.

Тепер у нас є прошивка і нам треба завантажити її в ESP8266 замість базової. Для цього нам знадобиться найпростіший адаптер USB – UART.


Приєднуємо ніжки TXD до RXD, а RXD до TXD, робимо спільну землю, але не використовуємо, як здавалося, зручний виведення живлення 3.3 на адаптері. Найчастіше ESP8266 просадить його геть-чисто. Тому запитуємо її окремо. Потім переводимо ESP в режим програмування (GP0 на землю, якщо хтось забув) і запускаємо NODE MCU PyFlasher.

Головне, не забудьте стерти флеш-пам'ять (yes, wipes all data), інакше залежно від версії прошивки після програмування в пам'яті може залишитися непотрібне сміття, яке в свою чергу сипатиме сміття в консоль при подальшій роботі. До цього я використовував софт, де не було опції стерти заздалегідь пам'ять, мучився страшно, тому що нічого не працювало. А скринька просто відкривалася, тільки правда на англомовному форумі творців NODE MCU.

Здобувши потрібну прошивку ми тепер можемо писати і налагоджувати програми на мові LUA (там ще MicroPython, але я ним не користувався) використовуючи при цьому дуже зручні API від NODE MCU. Запускаємо вже згаданий раніше ESPlorer.

Також налаштовуємо його до роботи з ESP8266, встановлюємо параметри послідовного з'єднання. Все досить просто та багаторазово викладено в Інтернеті.

Тепер пишемо програму на LUA, яку потім завантажимо в ESP8266:

Завантажувач Lua для AVR, що записується в ESP8266

функція InstrProgrammingEnable () -- instruction for MC "enable programming" p=0 while p<31 do p=p+1 pin=8 gpio.write(pin, gpio.LOW) spi.send(1, 0xAC,0x53) read = spi.recv(1, 8) spi.send(1,0,0) gpio.write(pin, gpio.HIGH) if (string.byte(read)== 83) then print("connection established") p=33 if(p==31) then print("no connection") end end end end функція ProgrammingDisable () pin=2--END OF ESET FOR MK gpio.mode(pin, gpio.INPUT) pin=8 gpio.mode(pin, gpio.INPUT) pin=5-CLK MASTER for SPI gpio.mode(pin, gpio. INPUT) pin=6--MISO MASTER для SPI gpio.mode(pin, gpio.INPUT) pin=7--MOSI MASTER для SPI gpio.mode(pin, gpio.INPUT) end функція ProgrammingEnable () pin=2-- RESET FOR MK gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.LOW) pin=2--POZITIV FOR 4MSEC RESET FOR MK gpio.mode(pin, gpio.OUTPUT) gpio .write(pin, gpio.HIGH) tmr.delay(4) gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.LOW) tmr.delay(25000) end функція InstrFlashErase() pin=8 gpio.write(pin, gpio.LOW) spi.send(1,0xAC,0x80,0,0) gpio.write(pin, gpio.HIGH) tmr.delay(15000) pin=2--RESET FOR MK gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.HIGH) tmr.delay(20000) gpio.write(pin, gpio.LOW) print("FLASH is erased") InstrProgrammingEnable() end функція InstrStorePAGE(H, address, data) pin=8 gpio.write(pin, gpio.LOW) spi.send(1,H,0,address,data) gpio.write(pin, gpio.HIGH) tmr.delay(500) end function InstrWriteFLASH(page_address_low,page_address_high) pin=8 gpio.write(pin, gpio.LOW) spi.send(1,0x4C,page_address_high,page_address_low,0) gpio.write(pin, gpio.HIGH) tmr.delay(5000)- іноді не прописуються флеш при малих затримок end функція Programming (payload) pin=8--CS MASTER для SPI gpio.mode(pin, gpio.OUTPUT, gpio.PULLUP) pin=4--LED LIGHTS ON LOW gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio. LOW) print(string.len(payload)) page_count = 7 -- пишемо 1 кілобайт for k =0 ,page_count ,1 do--quantity of pages for i=0 , 127, 2 do-- -1 address = i/ 2 data=payload:byte(i+1+128*k) if data == nil then data = 0xff end payload:byte(i+1+1+128*k) if data == nil then data = 0xff end InstrStorePAGE(0x48,address,data) -- tmr.delay(100) end page_address_low=bit.band(k ,3 )*64 -- 3 це двійкове 11 page_address_high=k/4+frame1024*2 tmr.delay(1000) InstrWriteFLASH(page_address_low,page_address_high) tmr.wdclr() end pin=4--. OUTPUT) gpio.write(pin, gpio.HIGH) end --MAIN BLOCK wifi.setmode(wifi.STATION) --wifi.sta.config("ім'я мережі","пароль") -- set SSID і password of access point station_cfg=() tmr.delay(30000) station_cfg.ssid=" ім'я мережі" tmr.delay(30000) station_cfg.pwd="пароль" tmr.delay(30000) wifi.sta.config(station_cfg) tmr.delay(30000) wifi.sta.connect() tmr.delay(10 (wifi.sta.status()) print(wifi.sta.getip()) while (wifi.sta.status()~=1) до if(wifi.sta.status()==5) then break end end sv=net.createServer(net.TCP,30) tmr.delay(100) print("SERVER READY") sv:listen(4000,функція(c) c:on("receive", function(c, payload) print (payload) if (payload =="program\r\n") then c:send("ready\r\n") print("ready for program\r\n") spi.setup(1, spi.MASTER , spi.CPOL_LOW, spi.CPHA_LOW, spi.DATABITS_8,320,spi.FULLDUPLEX) ProgrammingEnable () tmr.delay(100) InstrProgrammingEnable () tmr.delay(100) InstrFlashErase() 0mr0 -номер переданого фреймов st=net.createServer(net.TCP,30) st:listen(4001,function(c) c:on("receive", function(c, payload) tmr.wdclr() frame1024=frame1024+1 end) end) end if (payload =="data\r\n") then c:send("ready\r\n") print("ready for data\r\n") srv= net.createServer(net.UDP) tmr.delay(1000) pin=10 gpio.write(pin, gpio.HIGH) uart.setup(0,9600,8,0,1,0) srv:listen(5000) srv :on("receive", function(srv, pl) pl=pl*1 --print(pl) uart.write(0,pl) end end if (payload =="stop\r\ n") then if(st~=nil) then st:close() frame1024=0 ProgrammingDisable () print("stop program") end if(srv~=nil) then srv:close() print("stop data" ) end end end) end) end)


Де відповідні функції виконують такі дії:

function InstrProgrammingEnable ()- Переводить мікроконтролер в режим програмування спеціальною командою, що відправляється по SPI.

функція ProgrammingEnable ()– просто ресетимо AVR на 25 мс перед початком програмування

функція ProgrammingDisable ()– після закінчення програмування, переводимо висновки SPI ESP8266 в неактивний стан, щоб вони не заважали нам при виконання коду на мікроконтролері (раптом вони там використовуються)

функція InstrFlashErase()– затираємо флеш-пам'ять на мікроконтролер перед початком програмування. Навіщо це треба пояснювати, не треба.

функція InstrStorePAGE(H, address, data)– за цією командою у внутрішній буфер мікроконтролера записується байт програми. Але це ще не сам флеш запис, тому що флеш пишеться тут посторінково по 128 байт.

function InstrWriteFLASH(page_address_low,page_address_high)- А ось це вже запис флеш і вона вимагає часу, зверніть увагу на тимчасову затримку 5000 мкс.

функція Programming (payload)- Найбільша і важлива функція використовує і перераховані вище функції. Вона бере програму, що передається, шматками по 1024 байт, ділить їх на байтики і формує для них адреси, а потім відправляє в мікроконтролер у внутрішній буфер і через кожен 128 байт ініціалізує запис флеш. Потім бере наступний кілобайт коду і повторює операцію, природно зі зміщенням на адресах, щоб писати далі, а не затирати записане. Спочатку, я намагався пересилати програми повністю, але при перевищенні шести кілобайт в ESP8266 просто закінчується доступна пам'ять і вона вилітає. Один кілобайт виявився найзручнішою одиницею, бо акуратно ділиться на частини і зручно передається TCP (нам же треба його з комп'ютера ще отримати). Більший розмір теж не потрібен, TCP, самі знаєте, в поточній версії обмежує пакет, що передається, в 1500 чи байт (але у мене передавався чомусь 1440, начебто).

Як би нічого складного, але кілька підводних камінців довелося подолати.

Реєструємось у бездротовій мережі.

Створюємо спочатку TCP сервер, який слухає три команди:

1. “program” (програмуватимемо),

2. “data” (змінюватимемося даними),

3. ”stop” (все припиняємо).

Якщо ми програмуємо, то спочатку ініціалізуємо SPI і створюємо ще один TCP сервер, який вистачає дані (код програми, що прошивається) покилобайтно і викликає під них функції програмування мікроконтролера. Я розумію, що виглядає безглуздо створювати другий сервер, але це необхідність, бо місцеве API підтримує створення тільки одного сокету, а нам необхідно розділяти команди ”program” та “data” власне з даними, що передаються, бо на око вони не різняться, там байти і тут байти.

Якщо ж ми хочемо не програмувати, а обмінюватися даними, надсилаючи їх у нашому випадку в мікроконтролер, то спочатку відправляємо по TCP рядок ”data”. У відповідь на це буде створено вже UDP сервер (я нагадаю, що ми керуємо динамічно механічною рукою і нам затримки з формуванням TCP пакетів не потрібні, та взагалі відправляти один байт цілим TCP кадром моветон). А UDP дейтаграми у нас будуть маленькими і формуватимуться швидко.

Після ініціалізується UART, і кожен байт, що приймається в бездротовому вигляді, відправляється вже по проводу TXD на мікроконтролер, який зобов'язаний, буде там прошита відповідна програма, його прийняти. Обмін даними в іншому напрямку організувати також не складно, але я поки що його не реалізовував.

Ну і по команді ”stop” вищезгадані сервери (крім найпершого) закривають з'єднання і найголовніший сервер знову переходить у стан очікування команд ”program” та “data”.

Оскільки SPI інтерфейс програмно емулюється в ESP8266, то порти введення-виводу для сигналів CS, CLK, MISO, MOSI, RESET (для AVR), можете використовувати будь-які доступні, а не ті, що вказані в завантажувачі. Крім того, виявилося, що CS і MISO в принципі теж можна в цьому випадку обірвати, працюватиме і без них. Ну і один висновок задіюється на вбудований в плату ESP8266 світлодіод, щоб блимав іноді і показував, що програма ще жива.

Перевірок на помилки запису не робиться (за винятком першого запиту до AVR, але ця інформація просто виводиться на консоль), EEPROM не програмується, більше 32 Кб не шиється - коротше ще над чим попрацювати. Швидкість обміну SPI приблизно 115 Кбіт, за кілька секунд все прошивається, приблизно, як у звичайного послідовного програматора типу ISP500).

Беріть код, вписуйте свої мережі та паролі, компілюйте на ESplorer, обзывайте його “init” (щоб запускався під час рестарту) та відправляйте на ESP8266. Має працювати. У сенсі працювати бездротовим програматором, як мінімум.

Ми тепер займемося керуючою стороною – персональним комп'ютером.

По суті, нам потрібно взяти файл формату HEX, на який перетворюються ваші програми, написані в середовищі ATMEL STUDIO і відправити його WI-FI на відомий нам порт сокету (в даному випадку 4000). Невелика проблема в тому, що нам потрібний двійковий файл BIN для пересилки, а ATMEL STUDIO тішить нас тільки HEXом. Виходу тут два; або перевести його у формат BIN спеціальною програмою конвертером типу WinHex або зробити це самим у своїй програмі. Я поки не зробив, але начебто це не складно, там треба відрізати заголовок і зробити щось ще.

У результаті програму-завантажувач я написав на JAVA (переважно тому, що більше ні на чому не вмію), працюючи в просто прекрасному та безкоштовному середовищі IntelliJ IDEA. У ній створюється TCP клієнт, який шукає сервер, запущений на ESP8266. Якщо знаходить, то зв'язується з ним і відправляє файл розташований за такою-то адресою. Код нижче.

Завантажувач файлів на JAVA, що працює на стороні ПК

import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.List; public class Net ( public static void main(String args) ( new Http_client(4000); )) class Http_client extends Thread ( int port; String s; String Greetings_from_S; Http_client(int port)( this.port = port; start(); ) public void run() Але взагалі, дізнається зі спілкування з роутером // краще зробити його статичним, роутери це вміють try (Socket socket = new Socket ("192.168.1.113", port)) )), true), pw.println("program"); ​​// Greetings with SERVER System.out.println("program"); br.readLine(); System.out.println(Greetings_from_S); bis = New BufferedInputStream(New FileInputStream(file)), byte data = New Byte; int residy = data.length%1024; for (int i = 0; i< frames;i++) { for (int k = 0; k< (1024); k++) { data_buffer[k] = data; } sendingChunk(data_buffer); } byte data_buffer2= new byte; for (int i = 0; i < residy;i++) { data_buffer2[i] = data; } sendingChunk(data_buffer2); pw.println("stop");// System.out.println("stop program"); } catch (Exception e) { System.out.println(e); } } } catch (Exception e) { System.out.println(e); } } public void sendingChunk (byte data_buffer){ try (Socket socket = new Socket("192.168.1.113", 4001)){ BufferedOutputStream bos = new BufferedOutputStream((socket.getOutputStream())); bos.write(data_buffer); bos.flush(); System.out.println(data_buffer.length); } catch (Exception e) { System.out.println(e); } } }


Тут звичайно навкручено зайвого, всякі ready, в принципі не потрібні. Якщо вже TCP з'єднання встановлено, воно встановлено. Єдина проблема була в тому, що файл ніяк не хотів вирушати рівними шматками по 1024 байт, як мені потрібно було, хоча я і явно вказував розмір. Мабуть, там якийсь фінальний буфер недоступний з JAVA, і він відправляє пакети розміром, яким йому хочеться, що для приймальної сторони абсолютно неприйнятно. Спочатку я пробував зробити затримку, щоб буфер втомлювався чекати на наступні шматки і відправляв як є. Але затримка стала працювати, коли досягла 10 секунд, що мені якось здалося забагато на один кілобайт, що передається.

Але потім я помітив, що чомусь перший шматок завжди йде рівний, який був замовлений, а вже з другого починається непередбачувана вакханалія. Тому я зробив так, щоб клієнт відкривав з'єднання, відправляв порцію коду 1024 байт і закривав з'єднання. І так поки не вирушить весь файл. Все успішно запрацювало.

Єдине для запуску необхідно поставити на комп'ютер середовище виконання JAVA. Але я зазвичай запускаю відразу з IntelliJ IDEA, бо там у консолі завжди видно, що відбувається (але і тут середовище JAVA потрібне). Хоча, звичайно, розумно треба зробити GUI. Тобто віконце, де випадає шлях до файлу, можливість міняти там же у вікні номери портів та й інші потрібні речі. І все це зібрати у вигляді файлу, що виконується.

А таперіча, як казав Коровйов, повернемося громадяни, що до механічної кінцівки MechArm, що була згадана на самому початку. У нас тепер є можливість її запрограмувати віддалено, а потім нею покерувати. Перейдемо до програми управління за мікроконтролера.

В даному випадку нам необхідно контролювати чотири сервоприводи. Ось таких.


Такий привід керується прямокутними імпульсами періоду 20 мс (50Гц) з коефіцієнтом заповнення від 2 до 4 відсотків. Тобто 2% це повний поворот в один бік, 4% в інший. Завдання для вбудованого в AVR ШИМ.

Один сервопривід використовується для руху вправо-ліворуч; другий він – від себе; третій вгору-вниз; четвертий – сама клешня, яка має стискатися та розтискатися. Все написано на С і відкомпільовано до файлу HEX в ATMEL STUDIO. Дещо дивний вид програми пов'язаний з тим, що спочатку рука управлялася з клавіатури прив'язаної проводами до мікроконтролера. Але дроти вчорашній день, треба еволюціонувати далі.

Можна, звичайно, використовувати скетчі для сервоприводів від ”ARDUINO”, але мені вони не сподобалися. Самому писати цікавіше. До того ж, всі чотири сервоприводи повинні працювати одночасно, а не в мультиплексованому режимі, коли ШІМ перемикається на кожен сервопривід по черзі. Бо гравітацію ніхто не скасовував і піднята вгору кінцівка, моментально опуститься, якщо на відповідний сервопривід перестануть надходити імпульси, що управляють. Я не впевнений, що ”ARDUINO” скетч забезпечує одночасний режим роботи для чотирьох серво. А ось самі ми цілком можемо написати програму, яка відповідає потрібним вимогам. Та й взагалі за відсутності операційної системи, яка відокремлює ягнят від козлищ, застосування скетчів, що конкурують за периферійні пристрої мікроконтролера (а ми навіть і не знаємо заздалегідь якісь) справа надто багопродуктивна.

Ось сам код, який ми записуємо в Arduino Nano через ESP8266-07.

Програма для керування MechArm для мікроконтролера AVRmega328P

#define F_CPU 16000000 #include #include // Цілі цифри #include #include // математика # include //стандартне введення-виведення #include #include #include //стандартні можливості #define UART_BAUD_RATE 115200 // лічильник Т1 задає часовий інтервал 20мс #define COUNTER1_OFF TCCR1B=0b00000000 // CS02 CS01 CS00 - 000 - вимкнено; 001 без дільника; 010 з дільником 8; 011-64; 100 -256; 101 -1024 #define COUNTER1_ON TCCR1B=0b00000011 // лічильник Т0 задає ширину керуючого імпульсу для серво РВ0 і РВ1 #define COUNTER0_OFF TCCR0B=0b00000000 // CS02 CS01 CS00 - 0 001 без дільника; 010 з дільником 8; 011-64; 100 -256; 101 -1024 #define COUNTER0_ON TCCR0B=0b00000100 // лічильник Т2 задає ширину керуючого імпульсу для серво РB2(PD6) і РВ3(PD7) #define COUNTER2_OFF TCCR2B=0b00000000 //0 CS0 001 без дільника; 010 з дільником 8; 011-64; 100 -256; 101 -1024 #define COUNTER2_ON TCCR2B=0b00000110 volatile uint16_t period_20ms; volatile uint8_t State_of_keyboard; volatile uint8_t start_position; volatile int8_t number_servo; ISR(USART_RX_vect)// переривання для UART ( State_of_keyboard=UDR0; return; ) ISR(TIMER0_COMPA_vect)// серво РВ0 ширина керуючого імпульсу ( PORTB &=~(1<<0); TIMSK0&=~(1<
Суть програми зрозуміла з тексту та коментарів. Ми використовуємо лічильник Т1 для зразкового періоду 20 мс і лічильники Т0, Т2 для видачі ШИМ сигналів на чотири лінії порту введення-виведення, благо кожен з цих двох лічильників може працювати на два пристрої.
У програмі встановлюються початкові положення сервоприводів через завантаження рахункових регістрів OCR0A, OCR0B, OCR2A, OCR2B. Також вводяться константи обмежувачі, оскільки нам не завжди потрібний розмах 180 градусів. Ну і далі, за перериванням від UART, програма ловить число відправлене ESP8266 (від 1 до 8) і переводить його в команду для відповідного сервоприводу. Приводів чотири, кожен працює у двох напрямках, тому цілих чисел від одного до восьми цілком вистачає. Як тільки число вибрано, вміст вищезгаданих регістрів лічильників або інкрементується або декрементується відповідно змінюючи шпаруватість керуючого імпульсу і кут повороту вибраного сервоприводу. Ті приводи, які ми не вибирали, зберігають старе значення кута повороту (оскільки вміст відповідних регістрів хоч і оновлювався, але не змінювався) і продовжують утримувати механічну руку в колишньому положенні.

Тепер нам залишилося лише написати керуючу програму, вибачте за тавталогію, для керування механічною рукою вже безпосередньо з комп'ютера з WI-FI.
Код також написаний на JAVA, але трохи облагороджений. З'явився GUI та можливість редагувати номери портів та мережеву адресу ESP8266.

Що там відбувається зрозуміло з віконця. Текст програми я тут не наводжу (він доступний на

У процесі вивчення та проектування все більш складних проектів приходить час, коли виникає потреба та бажання навчитися працювати з таким поширеним видом зв'язку як WiFi. Так як саме такий вид зв'язку може дозволити комфортно створити єдину мережу для ваших розумних домашніх пристроїв і керувати ними, наприклад, з мобільного телефону, планшета або комп'ютера, тобто створити справжнісінький розумний будинок, який обійдеться вам в десятки разів дешевше, ніж купувати готові рішення у магазині. Застосування WiFi звичайно не обмежується на цьому і прикладів використання цього виду зв'язку настільки багато, що перераховувати їх немає сенсу, і якщо Ви потрапили на цю сторінку, значить, використання WiFi вам вже навіщось знадобилося, залишилося лише розібратися, як правильно з ним працювати .

Розбиратися ми будемо на основі найдешевшого та найпопулярнішого WiFi модуля ESP8266-01. Купити модуль WiFi ESP8266-01 можна у нас на сайті.

Один із головних плюсів такого модуля це наявність пам'яті та свого мікроконтролера на платі, що дозволяє працювати йому самостійно, завантаживши скетч безпосередньо в сам модуль.

Модифікацій WiFi модуля ESP8266 насправді досить багато і перераховувати їх тут ми не будемо, навчившись працювати з одним, Ви без проблем зможете почати працювати з іншими. Хочеться відразу відзначити, що робота з WiFi може здатися досить не простим заняттям, і якщо у Вашому багажі мало закінчених проектів, краще поки що відмовитися від WiFi зв'язку і використовувати у своїх проектах радіозв'язок, робота з яким набагато простіше для розуміння. По роботі з WiFi модулями створюють цілі спільноти та тематичні форуми, що вкотре доводить наскільки більшості людей важко відразу розібратися з цим видом зв'язку, а перечитуючи всю інформацію, у більшості людей просто опускаються руки. Швидше за все, і мені не вдасться всю важливу інформацію вмістити в рамках лише однієї цієї статті, та й немає в цьому сенсу, інакше вийде чергова плутанина. Я спробую піти шляхом суворої послідовності найважливіших моментів, щоб Ви змогли почати розуміти принцип роботи цього виду зв'язку і далі просто розвивати самостійно свої навички в цьому напрямку.

І так, давайте приступимо і для початку розберемо висновки WiFi модуля ESP8266-01.

VCC- живлення модуля від 3V до 3.6V

GND- Земля.

RST- Висновок Reset, що відповідає за перезавантаження модуля.

CH_PD- "chip power-down" під час подачі живлення на нього активізується робота модуля.

TX- Передача даних (UART інтерфейс)

RX- прийом даних (UART інтерфейс)

GPIO0

GPIO2- порт введення/виведення загального призначення

Висновки GPIO0 і GPIO2 - це такі самі цифрові висновки, з якими ми працюємо на платах Arduino для взаємозв'язку з різними датчиками, і застосовуються вони у разі реалізації самостійної роботи на внутрішньому мікроконтролері WiFi модуля ESP8266-01.

Для надійного живлення модуля ESP8266-01 використовуйте зовнішнє стабілізоване джерело живлення на 3.3V і краще не намагайтеся брати живлення від своєї плати Arduino, оскільки модуль споживає струм до 215mA і це може погано закінчитися для вашої плати. Де взяти стабілізоване джерело живлення на 3.3V сподіваюся вам не проблема, інакше вам явно ще рано займатися даним модулем. Мені, наприклад, подобається використовувати для швидкого збору схем на макетних платах такий модуль живлення 3.3V і 5.0V YWRobot, який дозволяє швидко отримати стабілізовану напругу на 3.3V або 5V на відповідних доріжках живлення макетної плати.

Підключаємо плюс (+) від нашого джерела живлення 3.3V VCCмодуля ESP8266-01, а мінус (-) джерела живлення підводимо до висновку GND. У такому стані на модулі ввімкнеться червоний світлодіод, що сигналізує про правильне підключення живлення. Для того, щоб модуль активізувався, необхідно також з'єднати плюс (+) джерела живлення з висновком CH_PDмодуля ESP8266-01 і бажано це зробити одразу через резистор 10кОм. Тепер, коли ми включимо живлення, на модулі повинен спалахнути червоний світлодіод і кілька разів швидко мигнути синій світлодіод. Якщо у вас так все і відбувається, значить все добре, ви правильно все приєднали і ваш робочий модуль. В іншому випадку ще раз перевірте підключення, або замініть модуль, оскільки він, швидше за все, не робочий.

Йдемо далі. Для роботи з WiFi модулем ESP8266 нам потрібний перехідник USB-UART. Перехідники бувають різні, наприклад: FT232RL, CP2102, PL2303. Але ми припустимо, що у вас немає таких перехідників, і як перехідник USB-UART будемо використовувати плату Arduino. Я використовуватиму для цього плату Arduino NANO, а ви можете використовувати будь-яку іншу наявну у вашому розпорядженні. Підключення на будь-якій платі один на один ідентичне. Здійснюємо підключення згідно з наступною схемою.

Розгляньмо, що ми тут зробили. Відразу зверніть увагу, що ми замкнули перемичкою на платі Arduino висновки RSTі GND. Така маніпуляція відключає мікроконтролер і дозволяє зробити з нашої плати Arduino справжнісінький перехідник USB-UART.

Оскільки WiFi модуль ESP8266-01 ми живимо від окремого зовнішнього джерела живлення, не забуваймо, що ми повинні завжди з'єднувати між собою землю всіх джерел живлення в наших проектах. Тому ми з'єднуємо висновок GNDплати Arduino із землею (-) нашого зовнішнього джерела живлення 3.3V призначеного для живлення модуля ESP8266-01.

Висновок TXвашої плати Arduino з'єднуємо з виводом TXмодуля ESP8266-01 По цій лінії передаватимуться дані від WiFi модуля до плати Arduino. Хто знайомий з UART інтерфейсом, може задуматися: "Але як так? Скрізь вчили, що TX повинен з'єднуватися з RX. TX передає інформацію, а RX приймає". І Ви будете праві. Все правильно завжди TX з'єднується з RX, але саме у випадку, коли ми робимо з Arduino перехідник UART, необхідно підключати пристрої безпосередньо. Вважайте це винятком із правил.

Лінію RXвашої плати Arduino підключаємо так само прямо до лінії RXмодуля ESP8266-01 По цій лінії передаватиметься інформація від плати Arduino на плату WiFi модуля. Але робимо це з'єднання через так званий дільник напруги, що складається з двох резисторів номіналами 1кОм та 2кОм. Зменшити напругу на цій лінії за допомогою двох резисторів (дільника напруги) нам необхідно, тому що плата Arduino передає логічний сигнал напругою 5V, а модуль WiFi працює з напругою 3.3V. Для перетворення логічного сигналу ми могли б використовувати спеціальну хустку перетворювача логічних рівнів, що було б звичайно правильніше, але знову ж таки припустимо, що у вас її немає, і нам довелося піти більш простим шляхом і зробити це за допомогою дільника напруги.

Все необхідне для подальшої роботи ми поки що підключили, але у нас залишаються не задіяні ще 3 висновки ( GPIO0, GPIO2і RST) на WiFi модулі ESP8266-01. Для стабільної роботи WiFi модуля нам необхідно ці висновки, що залишилися не задіяні, підтягнути до плюсової (+) лінії живлення модуля через резистори в 10кОм.

Це позбавить нас різних перешкод (наведень) і зробить роботу модуля стабільною. Краще це робити одразу. В іншому випадку не дивуйтеся, що ваш модуль постійно перевантажується, видає не зрозумілу інформацію або взагалі не хоче працювати. Використовувати резистори, що підтягують, на незадіяних висновках мікроконтролера повинно бути, як правило, якщо хочете стабільної роботи у ваших проектах.

І знову перевіряємо працездатність модуля WiFi ESP8266-01. Включаємо живлення і дивимося, щоб спалахнув червоний світлодіод і кілька разів мигнув синій. Якщо так все відбувається, значить відмінно, йдемо далі. В іншому випадку перевіряємо правильність з'єднань, а також якість усіх контактів. Може бути просто банальна ситуація, коли десять разів всі перевірили ще раз і переконалися, що все правильно підключили, але включаючи модуль, бачите, що синій світлодіод поводиться не адекватно, постійно горить, постійно блимає або взагалі ні на що не реагує. Це може статися через поганий контакт на якійсь лінії. Наприклад, збираючи схему на макетній платі, якийсь із резисторів нещільно сидить на своєму місці і це викликає перешкоди. Перевіряйте якість з'єднань. Модуль дуже чутливий. Не нехтуйте цим. Це часта причина нестабільної роботи.

Загалом, із підключенням ми закінчили. Зараз нам необхідно підготувати програму Arduino IDE для роботи з модулем WiFi ESP8266-01. Для цього нам треба завантажити та встановити в Arduino IDE необхідний архів з бібліотеками, прикладами та платами ESP, який згодом дозволить нам заливати скетчі прямо в мікроконтролер модуля ESP8266-01, змінювати прошивку тощо. В рамках цієї статті нам, швидше за все, ці налаштування і не знадобляться, але мені здається, що після того, як ми розібралися з підключенням модуля, порядок дій буде правильним, якщо ми відразу завантажимо все необхідне для роботи з Arduino IDE. Тут усе просто просто.

Запускаємо програму Arduino IDEта переходимо в меню "Файл" - "Налаштування"

У вікні у верхньому полі пишемо "esp8266". У результаті у вікні у нас залишиться лише необхідна прошивка. При натисканні на прошивку з'явиться кнопка "Встановлення". Натискаємо на кнопку "Встановлення"і чекаємо, доки все встановиться. Архів досить великий, близько 150 мегабайт, тож доведеться почекати.

Після закінчення встановлення. Перезавантажуємо Arduino IDE та бачимо, як з'явилися нові плати ESP у меню "Інструменти" - "Плати". На цьому все. З налаштуванням Arduino IDE ми закінчили. Поки що нам ці налаштування не потрібні, але в подальшій роботі нам без них не обійтися.

Усі ми підключили та підготувалися, тепер можемо почати розбиратися з управлінням. Насправді зараз буде продовження перевірки та налаштування модуля за допомогою AT команд і без цього ні як не обійтися. WiFi модулі реалізовані так, що все спілкування з ними відбувається за допомогою так званих команд AT, які зашиті в прошивці модуля. Ми не будемо тут перераховувати всі AT команди, їх досить багато і якщо захочете все ретельно вивчити, можете легко їх знайти в інтернеті. А ми будемо використовувати зараз лише найнеобхідніші для початку роботи.

І так підключаємо нашу плату Arduino через USB кабель до комп'ютера. А зовнішнє джерело живлення, яке живить WiFi модуль ESP8266-01поки що включати не треба. Запускаємо програму Arduino IDE, вибираємо в меню "Інструменти" нашу плату Arduino, у моєму випадку це Arduino NANO, а ви вибираєте свою. Також не забуваємо вибрати порт до якого підключена наша Ардуїнка. Сподіваюся все це ви розумієте та робити вмієте.

Відкриваємо моніторинг порту "Інструменти" - "Монітор порту". Вибираємо швидкість порту 74880 (на такій швидкості відбувається запуск модуля) та ліворуч у списку вибираємо "NL & CR"

Ось тепер підключаємо зовнішнє джерело живлення, яке живить наш WiFi модуль. Після цього ви повинні побачити в моніторі порту приблизно таку інформацію.

Тут ми бачимо деяку інформацію щодо нашого WiFi модуля (швидкість, кількість пам'яті на борту і т.д.). Отримана інформація може відрізнятись залежно від версії прошивки WiFi модуля. Не будемо на цьому звертати увагу. Важливе інше. Внизу ми бачимо набір безглуздих символів, це означає, що швидкість порту (74880 бод), яку ми виставили, підходить тільки для початкового завантаження модуля, щоб побачити цю інформацію, але ця швидкість не підходить для нормального спілкування з WiFi модулем.

Щоб підібрати правильну швидкість порту, просто змінювати швидкість порту і посилати в порт (поле зверху і кнопка відправити) символи ATпоки не отримаємо відповідь ОК. Якщо Ви спробуєте прямо зараз надіслати символи ATв порт на швидкості 74880, то отримуватимете чергові один-два безглузді символи у відповідь.

Спробуйте відразу виставити швидкість 115 200 бод і надіслати команду AT. Найчастіше модулі прошиті на цю швидкість.

Ось таку картину ви повинні побачити у моніторі порту. Якщо все одно у відповідь надійшов незрозумілий набір символів, знижуйте швидкість і повторюйте відправку ATкоманди, поки у відповідь не повернеться ОК. Якщо ви перепробували всі швидкості і не досягли правильної відповіді, то вам не пощастило і модуль прошитий прошивкою з нестандартною швидкістю. Тоді залишається лише перепрошити модуль нормальною прошивкою, але це тема окремої статті.

Сподіваюся, що все добре і правильну швидкість ви підібрали. До речі, якщо ви спробуєте вимкнути і знову включити WiFi модуль, після того як підібрали правильну швидкість, то вже замість тієї самої початкової інформації, яка коректно відображалася на швидкості 74880 бод, ви навпаки побачите безладний набір символів, але в кінці ви побачите слово "ready" ". Але у нас є можливість переглянути цю первинну інформацію в нормальному вигляді на правильній швидкості, для цього необхідно програмно перезавантажити модуль за допомогою AT-команди AT+RST.

Щоб дізнатися про версію прошивки вашого WiFi модуля ESP8266-01, необхідно в монітор порту відправити команду AT+GMRі у відповідь ви отримаєте приблизно таку інформацію:

WiFi модуль ESP8266-01 може працювати як у режимі точки доступу, так і в режимі клієнта. Щоб дозволити модулю працювати відразу у всіх режимах, надішліть до монітора порту команду AT+CWMODE=3і у відповідь ви повинні отримати ОК.

Команда AT+CWLAPдозволить переглянути всі WiFi точки доступу, які бачить в даний момент ваш модуль. Мій модуль, наприклад, бачить на даний момент у зоні свого покриття лише три WiFi точки доступу. Відповідь має бути приблизно такою:

Наприклад, ми знаємо пароль до третьої точки доступу і щоб підключитися до неї виконуємо команду AT+CWJAP="ім'я","пароль", у моєму випадку ця команда виглядає AT+CWJAP="dsl_unlim_512_home","11111111", на що отримуємо успішну відповідь:

Параметри команди записуються на флеш пам'ять WiFi модуля ESP8266-01, і якщо ми вимкнемо модуль і знову увімкнемо, він автоматично підключиться до цієї точки доступу. Дивіться випадково у команді не допустіть прогалину, інакше отримайте у відповідь ERROR. Необхідно звернути увагу на те, що в останніх версіях прошивки рекомендують використовувати команду AT+CWJAP_CUR, тобто команда виглядатиме AT+CWJAP_CUR="ім'я", "пароль".Якщо раптом ми забули, до якої точки доступу підключено наш модуль, необхідно надіслати команду AT+CWJAP?або AT+CWJAP_CUR?і у відповідь отримаємо ту точку доступу, до якої підключений модуль WiFi на даний момент.

З підключенням та початковим налаштуванням WiFi модуля ESP8266-01ми розібралися. Модуль працює та готовий для реалізації ваших подальших проектів. Розібрати всі можливі приклади роботи з даним модулем у рамках однієї статті просто неможливо і ми цим займемося в наступних статтях. А для тих, хто не дуже товаришує з програмуванням, але дуже хоче швидше почати керувати своїми проектами за допомогою WiFi, рекомендую познайомити з конструктором WiFi проектів RemoteXY. Цей сайт допоможе вам без особливих труднощів створити інтерфейс управління для вашого мобільного телефону або планшета і за допомогою нього керувати своїм пристроєм, до якого ви підключите WiFi модуль.

Нове на сайті

>

Найпопулярніше