http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&feed=atom&action=history
ESP32:Примеры/Машинка-робот как точка доступа с дистанционным WiFi-управлением - История изменений
2024-03-29T02:11:35Z
История изменений этой страницы в вики
MediaWiki 1.40.0
http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&diff=8160108&oldid=prev
Myagkij в 05:26, 18 июня 2023
2023-06-18T05:26:01Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 09:26, 18 июня 2023</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Строка 1:</td>
<td colspan="2" class="diff-lineno">Строка 1:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{ESP32 панель перехода}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{ESP32 панель перехода}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Перевод от Сubewriter}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Перевод от Сubewriter}}</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Myagkij-редактор}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Myagkij-редактор}}</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">{{Черновик}}</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Машинка-робот как точка доступа с дистанционным WiFi-управлением=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Машинка-робот как точка доступа с дистанционным WiFi-управлением=</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l333">Строка 333:</td>
<td colspan="2" class="diff-lineno">Строка 330:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">{{ads}}</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l340">Строка 340:</td>
<td colspan="2" class="diff-lineno">Строка 335:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{Навигационная таблица/<del style="font-weight: bold; text-decoration: none;">Телепорт</del>}}</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Навигационная таблица/<ins style="font-weight: bold; text-decoration: none;">Портал/ESP32</ins>}}</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:ESP32]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:ESP32]]</div></td></tr>
</table>
Myagkij
http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&diff=7738402&oldid=prev
EducationBot в 15:55, 23 мая 2023
2023-05-23T15:55:35Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 19:55, 23 мая 2023</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l18">Строка 18:</td>
<td colspan="2" class="diff-lineno">Строка 18:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>По умолчанию [[SSID]] для [[ESP32]] – это '''«ESP32-Robot»''', а пароль – '''«123456789»'''. Вы, впрочем, можете поменять их в строчках ниже:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>По умолчанию [[SSID]] для [[ESP32]] – это '''«ESP32-Robot»''', а пароль – '''«123456789»'''. Вы, впрочем, можете поменять их в строчках ниже:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS<del style="font-weight: bold; text-decoration: none;">" enclose="div</del>"></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>const char* ssid = "ESP32-Robot";</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>const char* ssid = "ESP32-Robot";</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>const char* password = "123456789";</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>const char* password = "123456789";</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l25">Строка 25:</td>
<td colspan="2" class="diff-lineno">Строка 25:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>В блоке [[setup()]] появляется новый фрагмент, задающий [[ESP32]] в качестве точки доступа.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>В блоке [[setup()]] появляется новый фрагмент, задающий [[ESP32]] в качестве точки доступа.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS<del style="font-weight: bold; text-decoration: none;">" enclose="div</del>"></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// Подключаемся к WiFi-сети</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// Подключаемся к WiFi-сети</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// при помощи заданных выше SSID и пароля: </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// при помощи заданных выше SSID и пароля: </div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l114">Строка 114:</td>
<td colspan="2" class="diff-lineno">Строка 114:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Код==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Код==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS<del style="font-weight: bold; text-decoration: none;">" enclose="div</del>"></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>/*********</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>/*********</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Руи Сантос</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> Руи Сантос</div></td></tr>
</table>
EducationBot
http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&diff=2301210&oldid=prev
Myagkij в 17:38, 30 мая 2022
2022-05-30T17:38:44Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 21:38, 30 мая 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l333">Строка 333:</td>
<td colspan="2" class="diff-lineno">Строка 333:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{ads}}</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{ads}}</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><references /></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{Навигационная таблица/Телепорт}}</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:ESP32]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Категория:ESP32]]</div></td></tr>
</table>
Myagkij
http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&diff=2298283&oldid=prev
Myagkij в 16:07, 5 мая 2022
2022-05-05T16:07:01Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 20:07, 5 мая 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l83">Строка 83:</td>
<td colspan="2" class="diff-lineno">Строка 83:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Схема==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Схема==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{<del style="font-weight: bold; text-decoration: none;">Спойлер</del>|На этой схеме изображена 36-контактная версия платы [[ESP32 DEVKIT DOIT V1]], поэтому если у вас какая-то другая модель, обязательно сверьтесь с ее распиновкой.}}</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{<ins style="font-weight: bold; text-decoration: none;">Примечание1</ins>|На этой схеме изображена 36-контактная версия платы [[ESP32 DEVKIT DOIT V1]], поэтому если у вас какая-то другая модель, обязательно сверьтесь с ее распиновкой.}}</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[File:wifi_robot_esp32_1.PNG|center]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[File:wifi_robot_esp32_1.PNG|center]]</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l333">Строка 333:</td>
<td colspan="2" class="diff-lineno">Строка 333:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=См.также=</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{ads}}</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Внешние ссылки=</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
</table>
Myagkij
http://wikihandbk.com/ruwiki/index.php?title=ESP32:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BA%D0%B0-%D1%80%D0%BE%D0%B1%D0%BE%D1%82_%D0%BA%D0%B0%D0%BA_%D1%82%D0%BE%D1%87%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D1%81_%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC_WiFi-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC&diff=41830&oldid=prev
Myagkij: /* Подключаемся к точке доступа ESP32 */
2019-03-02T16:22:20Z
<p><span dir="auto"><span class="autocomment">Подключаемся к точке доступа ESP32</span></span></p>
<p><b>Новая страница</b></p><div>{{ESP32 панель перехода}}<br />
<br />
{{Перевод от Сubewriter}}<br />
{{Myagkij-редактор}}<br />
<br />
{{Черновик}}<br />
<br />
=Машинка-робот как точка доступа с дистанционным WiFi-управлением=<br />
<br />
В примере [[ESP32:Примеры/Машинка-робот с дистанционным WiFi-управлением|Машинка-робот с дистанционным WiFi-управлением]] мы рассказали о том, как построить машинку-робота с дистанционным управлением, но для нее обязательно требуется беспроводное подключение к [[WiFi-роутер]]у.<br />
<br />
Это значит, что если вы захотите взять робота в парк, там его тоже нужно будет подключить к беспроводной сети (что не очень удобно). Решение этой проблемы – сделать из [[ESP32]] точку доступа. После этого вам уже не нужно будет подключаться к [[роутер]]у, чтобы управлять роботом. <br />
<br />
Чтобы настроить [[ESP32]] в качестве точки доступа, нам понадобится та же цепь, но другой скетч.<br />
<br />
== Задаем SSID и пароль ==<br />
<br />
По умолчанию [[SSID]] для [[ESP32]] – это '''«ESP32-Robot»''', а пароль – '''«123456789»'''. Вы, впрочем, можете поменять их в строчках ниже:<br />
<br />
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"><br />
const char* ssid = "ESP32-Robot";<br />
const char* password = "123456789";<br />
</syntaxhighlight><br />
<br />
В блоке [[setup()]] появляется новый фрагмент, задающий [[ESP32]] в качестве точки доступа.<br />
<br />
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"><br />
// Подключаемся к WiFi-сети<br />
// при помощи заданных выше SSID и пароля: <br />
Serial.print("Setting AP (Access Point)...");<br />
// "Настраиваем точку доступа..."<br />
// Если вы хотите, чтобы ваша точка доступа была открытой,<br />
// удалите параметр «password» из метода ниже:<br />
WiFi.softAP(ssid, password);<br />
<br />
IPAddress IP = WiFi.softAPIP();<br />
Serial.print("AP IP address: "); // "IP-адрес точки доступа"<br />
Serial.println(IP);<br />
server.begin();<br />
</syntaxhighlight><br />
<br />
Другие части кода (в частности, касающиеся веб-страницы) очень похожи на те, что использовались в скетче, где [[ESP32]] не служит точкой доступа, а сама подключается к WiFi-сети.<br />
<br />
Загрузив код, перезагрузите [[ESP32]]. Монитор порта должен оставаться открытым, чтобы [[ESP32]] напечатала в нем свой [[IP-адрес]].<br />
<br />
[[File:esp32_wifirobot_ip_address_serail_port_1.PNG|center]]<br />
<br />
В моем случае это '''«192.168.4.1»''' – сохраните его (позже он еще понадобится).<br />
<br />
== Подключаемся к точке доступа ESP32 ==<br />
<br />
Убедитесь, что на [[ESP32]] запущен скетч точки доступа, затем с любого устройства(смартфон, ноутбук, обычный ПК, планшет) выполните поиск точки доступа '''«ESP32-Robot»'''.<br />
<br />
[[File:esp32_wifirobot_connect_to_ap_1.PNG|center]]<br />
<br />
И используя пароль '''«123456789»''' подключитесь к ней.<br />
<br />
[[File:esp32_wifirobot_connect_to_ap_2.PNG|center]]<br />
<br />
Откройте [[браузер]] и впишите в его адресной строке [[IP-адрес]], который узнали ранее (у меня это '''«192.168.4.1»'''). В результате должна загрузиться вот такая веб-страница:<br />
<br />
[[File:esp32_wifirobot_connect_to_ap_3.PNG|center]]<br />
<br />
Переместите ползунок, чтобы задать скорость, а затем понажимайте на кнопки, чтобы поуправлять роботом. Он должен реагировать точно так же, как если бы на [[ESP32]] был загружен код из примера [[ESP32:Примеры/Машинка-робот с дистанционным WiFi-управлением|Машинка-робот с дистанционным WiFi-управлением]], где она подключается к [[роутер]]у, а не сама служит точкой доступа (как сейчас).<br />
<br />
Но у этой новой веб-страницы есть свои отличия:<br />
* Значение ползунка не показывается;<br />
* Веб-страница будет обновляться каждый раз, когда вы будете нажимать на кнопки (тем самым делая [[HTTP-запрос]]).<br />
<br />
== Необходимое оборудование ==<br />
<br />
* Плата [[ESP32]] – 1 шт.<br />
* Набор для шасси (можно сделать своими руками + два DC-мотора) – 1 шт.<br />
* [[Драйвер моторов]] [[L298N]] – 1 шт.<br />
* [[Пауэрбанк]] (портативный зарядник) – 1 шт.<br />
* [[AA-батарейки]] (1.5 вольт) – 4 шт.<br />
* [[Керамические конденсаторы]] на [[100 нФ]] – 2 шт.<br />
* [[Движковый переключатель типа SPDT]] (один полюс, два направления) – 1 шт.<br />
* Провода-перемычки ;<br />
* Контактная или печатная макетная плата – 1 шт.<br />
* Лента-липучка («репейник») – 1 шт.<br />
<br />
==Схема==<br />
<br />
{{Спойлер|На этой схеме изображена 36-контактная версия платы [[ESP32 DEVKIT DOIT V1]], поэтому если у вас какая-то другая модель, обязательно сверьтесь с ее распиновкой.}}<br />
<br />
[[File:wifi_robot_esp32_1.PNG|center]]<br />
<br />
Начинаем с подключения [[ESP32]] к драйверу моторов. Для размещения [[ESP32]] и построения цепи можно воспользоваться либо небольшой контактной, либо печатной макетной платой. В таблице ниже показано, с помощью каких контактов [[ESP32]] и драйвер моторов [[L298N]] необходимо подключить друг к другу.<br />
<br />
{| class="wikitable" style="margin:0 auto"<br />
|-<br />
! Драйвер моторов [[L298N]] !! [[ESP32]]<br />
|-<br />
| IN1 || GPIO27<br />
|-<br />
| IN2 || GPIO26<br />
|-<br />
| ENA || GPIO14<br />
|-<br />
| IN3 || GPIO33<br />
|-<br />
| IN4 || GPIO25<br />
|-<br />
| ENB || GPIO32<br />
|}<br />
<br />
После этого подключите оба мотора к клеммникам драйвера моторов [[L298N]]. В целях ослабления скачков напряжения мы рекомендуем припаять к плюсовому и минусовому контактам каждого мотора [[керамический конденсатор]] на [[100 нФ]] (как показано на схеме выше).<br />
<br />
Кроме того, можно припаять движковый переключатель к красному проводу, идущему от батареек. Благодаря ему вы сможете включать/отключать питание, идущее к моторам и драйверу моторов.<br />
<br />
Наконец, запитайте моторы при помощи четырех АА-батареек, подключив их к портам питания драйвера моторов. Так как наш робот должен быть портативным, [[ESP32]] будет питаться от пауэрбанка. Прикрепите его к шасси, например, при помощи ленты-липучки.<br />
<br />
==Код==<br />
<br />
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"><br />
/*********<br />
Руи Сантос<br />
Более подробно о проекте на: http://randomnerdtutorials.com <br />
*********/<br />
<br />
// Загружаем библиотеку для WiFi:<br />
#include <WiFi.h><br />
<br />
// В двух строчках ниже пишем SSID и пароль для своей WiFi-сети:<br />
const char* ssid = "ESP32-Robot";<br />
const char* password = "123456789";<br />
<br />
// Создаем объект сервера и задаем ему порт «80»:<br />
WiFiServer server(80);<br />
<br />
// Переменная для хранения HTTP-запроса:<br />
String header;<br />
<br />
// Мотор 1:<br />
int motor1Pin1 = 27; <br />
int motor1Pin2 = 26; <br />
int enable1Pin = 14; <br />
<br />
// Мотор 2:<br />
int motor2Pin1 = 33; <br />
int motor2Pin2 = 25; <br />
int enable2Pin = 32;<br />
<br />
// Переменные для свойств ШИМ:<br />
const int freq = 30000;<br />
const int pwmChannel = 0;<br />
const int resolution = 8;<br />
int dutyCycle = 0;<br />
<br />
// Переменные для расшифровки HTTP-запроса GET:<br />
String valueString = "0";<br />
int pos1 = 0;<br />
int pos2 = 0;<br />
<br />
void setup() {<br />
Serial.begin(115200);<br />
<br />
// Переключаем контакты моторов в режим «OUTPUT»:<br />
pinMode(motor1Pin1, OUTPUT);<br />
pinMode(motor1Pin2, OUTPUT);<br />
pinMode(motor2Pin1, OUTPUT);<br />
pinMode(motor2Pin2, OUTPUT);<br />
<br />
// Задаем настройки для ШИМ-канала:<br />
ledcSetup(pwmChannel, freq, resolution);<br />
<br />
// Подключаем ШИМ-канал 0 к контактам ENA и ENB,<br />
// т.е. к GPIO-контактам для управления скоростью моторов: <br />
ledcAttachPin(enable1Pin, pwmChannel);<br />
ledcAttachPin(enable2Pin, pwmChannel); <br />
<br />
// Генерируем ШИМ-сигнал для контактов ENA и ENB<br />
// с коэффициентом заполнения «0»:<br />
ledcWrite(pwmChannel, dutyCycle);<br />
<br />
// Подключаемся к WiFi-сети<br />
// при помощи заданных выше SSID и пароля: <br />
Serial.print("Setting AP (Access Point)...");<br />
// "Настраиваем точку доступа..."<br />
// Если вы хотите, чтобы ваша точка доступа была открытой,<br />
// удалите параметр «password» из метода ниже:<br />
WiFi.softAP(ssid, password);<br />
<br />
IPAddress IP = WiFi.softAPIP();<br />
Serial.print("AP IP address: "); // "IP-адрес точки доступа"<br />
Serial.println(IP);<br />
<br />
server.begin();<br />
}<br />
<br />
void loop(){<br />
WiFiClient client = server.available(); // Запускаем прослушку <br />
// входящих клиентов.<br />
<br />
if (client) { // Если подключился <br />
// новый клиент,<br />
Serial.println("New Client."); // печатаем в монитор порта <br />
// сообщение об этом.<br />
String currentLine = ""; // Создаем строку<br />
// для хранения данных,<br />
// пришедших от клиента.<br />
while (client.connected()) { // Запускаем цикл while(), <br />
// который будет работать,<br />
// пока клиент подключен.<br />
if (client.available()) { // Если у клиента<br />
// есть байты, которые<br />
// можно прочесть,<br />
char c = client.read(); // считываем байт<br />
Serial.write(c); // и печатаем его <br />
// в мониторе порта.<br />
header += c;<br />
if (c == '\n') { // Если полученный байт – <br />
// это символ новой строки.<br />
// Если мы получили два символа новой строки подряд,<br />
// то это значит, что текущая строка пуста.<br />
// Это конец HTTP-запроса клиента, поэтому шлём ответ:<br />
if (currentLine.length() == 0) {<br />
// HTTP-заголовки всегда начинаются с кода ответа<br />
// (например, «HTTP/1.1 200 OK») и данных о типе контента,<br />
// чтобы клиент знал, что получает,<br />
// а после этого пишем пустую строчку:<br />
client.println("HTTP/1.1 200 OK");<br />
client.println("Content-type:text/html");<br />
client.println("Connection: close");<br />
// "Соединение: отключено"<br />
client.println();<br />
<br />
// Включаем и выключаем GPIO-контакты:<br />
if (header.indexOf("GET /forward") >= 0) {<br />
Serial.println("Forward"); // "Вперед"<br />
digitalWrite(motor1Pin1, LOW);<br />
digitalWrite(motor1Pin2, HIGH); <br />
digitalWrite(motor2Pin1, LOW);<br />
digitalWrite(motor2Pin2, HIGH);<br />
} else if (header.indexOf("GET /left") >= 0) {<br />
Serial.println("Left"); // "Влево"<br />
digitalWrite(motor1Pin1, LOW); <br />
digitalWrite(motor1Pin2, LOW); <br />
digitalWrite(motor2Pin1, LOW);<br />
digitalWrite(motor2Pin2, HIGH);<br />
} else if (header.indexOf("GET /stop") >= 0) {<br />
Serial.println("Stop"); // "Стоп"<br />
digitalWrite(motor1Pin1, LOW); <br />
digitalWrite(motor1Pin2, LOW); <br />
digitalWrite(motor2Pin1, LOW);<br />
digitalWrite(motor2Pin2, LOW); <br />
} else if (header.indexOf("GET /right") >= 0) {<br />
Serial.println("Right"); // "Вправо"<br />
digitalWrite(motor1Pin1, LOW); <br />
digitalWrite(motor1Pin2, HIGH); <br />
digitalWrite(motor2Pin1, LOW);<br />
digitalWrite(motor2Pin2, LOW); <br />
} else if (header.indexOf("GET /reverse") >= 0) {<br />
Serial.println("Reverse"); // "Назад"<br />
digitalWrite(motor1Pin1, HIGH);<br />
digitalWrite(motor1Pin2, LOW); <br />
digitalWrite(motor2Pin1, HIGH);<br />
digitalWrite(motor2Pin2, LOW); <br />
}<br />
// Показываем веб-страницу:<br />
client.println("<!DOCTYPE HTML><html>");<br />
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");<br />
client.println("<link rel=\"icon\" href=\"data:,\">");<br />
// При помощи CSS задаем стиль кнопок. <br />
// Попробуйте поэкспериментировать <br />
// с атрибутами «background-color» и «font-size»,<br />
// чтобы стилизовать кнопки согласно своим предпочтениям:<br />
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");<br />
client.println(".button { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: #4CAF50;");<br />
client.println("border: none; color: white; padding: 12px 28px; text-decoration: none; font-size: 26px; margin: 1px; cursor: pointer;}");<br />
client.println(".button2 {background-color: #555555;}</style></head>");<br />
<br />
// Веб-страница: <br />
client.println("<p><a href=\"/forward\"><button class=\"button\" onclick=\"moveForward()\">FORWARD</button></a></p>");<br />
client.println("<div style=\"clear: both;\"><p><a href=\"/left\"><button class=\"button\" onclick=\"moveLeft()\">LEFT </button></a>");<br />
client.println("<a href=\"/stop\"><button class=\"button button2\" onclick=\"stopRobot()\">STOP</button></a>");<br />
client.println("<a href=\"/right\"><button class=\"button\" onclick=\"moveRight()\">RIGHT</button></a></p></div>");<br />
client.println("<p><a href=\"/reverse\"><button class=\"button\" onclick=\"moveReverse()\">REVERSE</button></a></p>"); <br />
client.println("<input type=\"range\" min=\"0\" max=\"100\" step=\"25\" id=\"motorSlider\" onchange=\"motorSpeed(this.value)\" value=\"" + valueString + "\"/>");<br />
<br />
client.println("<script> function motorSpeed(pos) { ");<br />
client.println("var xhr = new XMLHttpRequest();"); <br />
client.println("xhr.open('GET', \"/?value=\" + pos + \"&\", true);"); <br />
client.println("xhr.send(); } </script>");<br />
<br />
client.println("</html>");<br />
<br />
// Пример запроса: «GET /?value=100& HTTP/1.1»;<br />
// Он задает коэффициент заполнения ШИМ на 100%:<br />
if(header.indexOf("GET /?value=")>=0) {<br />
pos1 = header.indexOf('=');<br />
pos2 = header.indexOf('&');<br />
valueString = header.substring(pos1+1, pos2);<br />
// Задаем скорость мотора:<br />
if (valueString == "0") {<br />
ledcWrite(pwmChannel, 0);<br />
digitalWrite(motor1Pin1, LOW); <br />
digitalWrite(motor1Pin2, LOW); <br />
digitalWrite(motor2Pin1, LOW);<br />
digitalWrite(motor2Pin2, LOW); <br />
}<br />
else { <br />
dutyCycle = map(valueString.toInt(), 25, 100, 200, 255);<br />
ledcWrite(pwmChannel, dutyCycle);<br />
Serial.println(valueString);<br />
} <br />
} <br />
// HTTP-ответ заканчивается еще одной пустой строкой:<br />
client.println();<br />
// Выходим из цикла while():<br />
break;<br />
} else { // Если получили символ новой строки,<br />
// очищаем переменную «currentLine»<br />
currentLine = "";<br />
}<br />
} else if (c != '\r') { // Если получили что-либо,<br />
// кроме символа возврата каретки,<br />
currentLine += c; // добавляем эти данные<br />
// в конец переменной «currentLine»<br />
}<br />
}<br />
}<br />
// Очищаем переменную «header»:<br />
header = "";<br />
// Отключаем соединение:<br />
client.stop();<br />
Serial.println("Client disconnected."); // "Клиент отключился."<br />
Serial.println("");<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
=См.также=<br />
<br />
=Внешние ссылки=<br />
<br />
<references /><br />
<br />
[[Категория:ESP32]]</div>
Myagkij