Оглавление:

Универсальный NearBot: 11 шагов (с изображениями)
Универсальный NearBot: 11 шагов (с изображениями)

Видео: Универсальный NearBot: 11 шагов (с изображениями)

Видео: Универсальный NearBot: 11 шагов (с изображениями)
Видео: " Универсальный солдат " - 2 ( Возвращение ) | боевик 1999 год 2024, Июль
Anonim
Image
Image

Это руководство покажет вам, как создать универсальный триггер робота, который может перемещать что-либо, например кнопку, переключатель или набор номера на различных устройствах, когда вы (со своим телефоном или маячком в кармане) находитесь рядом. Это означает, что он может автоматически открывать и повторно закрывать дверную защелку, когда * только вы * проходите мимо, отключать спринклерный клапан, чтобы вы могли пройти через воду невредимым, как своего рода пригородный Моисей, уменьшать громкость динамика, пока вы находитесь в гараже музыкальной группы, включите iPod, проиграв драматическую мелодию, или расскажите анекдот (твит Джейдена Смита?), пока вы находитесь в комнате, или поставьте фильм на паузу, когда встанете, чтобы сходить в туалет.

Этот проект не требует пайки или специальных инструментов

Если вам достаточно нравится это руководство, пожалуйста, проголосуйте за него в конкурсе Robotics 2017!

Шаг 1. Приобретите детали оборудования

Тебе понадобится:

  • NodeMCU v2 или V3
  • Сервомотор Micro 9G: бесплатная доставка на eBay или Aliexpress за 1,40 доллара США.
  • Перемычка Arduino соединяет мужчину с женщиной.
  • Кожух для NearBot - я использовал пластиковый ящик для металлолома, который я нашел.
  • Кабель для передачи данных Micro USB (лом телефонных деталей)
  • Источник питания USB (зарядное устройство для лома телефона)

Если у вас нет смартфона с функцией мобильной точки доступа, вам также понадобятся:

  • Модуль ESP-01 о бесплатной доставке за 2,50 доллара США на DealExtreme, GearBest, Ebay или Aliexpress.
  • 1 пара батареек AAA
  • двойной батарейный отсек AAA с переключателем

Шаг 2: Быстрый старт

Этот шаг содержит краткое руководство на случай, если вам понравятся подобные вещи. Остальная часть этого руководства идет шаг за шагом и добавляет более подробную информацию

// Список покупок: // микроконтроллер NodeMCU V3 (Lolin) ESP8266

// Серводвигатель SG90 9G

// USB Power Bank или сетевой USB-адаптер.

// Micro USB кабель для передачи данных / зарядки

// Перемычки типа "папа-мама" Arduino

//ПРЕЖДЕ ЧЕМ ТЫ НАЧНЕШЬ:

// 1. Если вы еще не загрузили Arduino IDE, получите ее бесплатно (пожертвование необязательно) по адресу:

// 2. откройте IDE Arduino (если вы еще не читали это в IDE Arduino!)…

// 3. Перейдите к файлам и нажмите на предпочтение в Arduino IDE…

// 4. скопируйте приведенный ниже код в Диспетчер дополнительных плат: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

// 5. нажмите ОК, чтобы закрыть вкладку настроек…

// 6. Перейдите в инструменты и доску, а затем выберите менеджера совета…

// 7. Перейдите к esp8266 от сообщества esp8266 и установите программное обеспечение для Arduino…

// 8. Вам может потребоваться загрузить и установить драйвер CH340, если вы не можете заставить NodeMCU взаимодействовать с вашей Arduino IDE:

// После завершения всего вышеуказанного процесса мы готовы запрограммировать наш микроконтроллер esp8266 NodeMCU с помощью Arduino IDE.

//9. Выберите NodeMCU V1.0 ESP12E из меню платы /

/ 10. Выберите используемый COM-порт.

// 11. выберите код (загрузите с www.makersa.ga) и нажмите кнопку «Загрузить». /

/ 12. Подключите сервопривод к NodeMCU с помощью перемычек. D0 для подачи сигнала, заземление на землю, + VCC на VO или 3 В. /

/ 13. Отрегулируйте рог сервопривода с помощью отвертки.

// 14. Отрегулируйте максимальную и минимальную степень перемещения с помощью кода.

// 15. Повторно загружайте в NodeMCU всякий раз, когда код обновляется.

// Возможно, вам будет важно выяснить, какая у вас версия NodeMCU. Вот руководство по сравнению:

frightanic.com/iot/comparison-of-esp8266-no… // Распиновка NodeMCU v1: https://frightanic.com/iot/comparison-of-esp8266-no… // Распиновка NodeMCU v2: https://frightanic.com/iot/comparison-of-esp8266-no… // Распиновка NodeMCU v3:

// Пояснение к буровым станкам:

// Изготовлен из микроконтроллера NodeMCU ESP8266, аккумулятора или источника питания USB и сервопривода SG90

// Вы можете использовать второй немодифицированный модуль esp8266 в качестве точки доступа маяка вместо смартфона, программирование не требуется.

Шаг 3. Получите компоненты программного обеспечения

Сначала вам нужно будет загрузить бесплатную Arduino IDE.

На момент написания этой статьи веб-редактор Arduino не работает с NodeMCU, поэтому вам придется вместо этого установить IDE на свой компьютер.

Вам также потребуется загрузить файлы NearBot с www. MakerSa.ga - Ссылка для загрузки файла для этого проекта указана на этом сайте.

Шаг 4: Установите драйверы и профили платы

Некоторая полезная информация
Некоторая полезная информация

Внутри загруженного и разархивированного ZIP-файла NearBot будут драйверы для модуля NodeMCU. Установите их на свой компьютер.

Если они вам не подходят, вы можете найти драйверы CH340G на сайте wemos.cc/downloads.

Ваш NodeMCU может не использовать чип CH340G, поэтому вам может потребоваться прокомментировать драйвер, который вы ищете, и я отвечу ссылкой для загрузки этого драйвера.

  1. Затем откройте Arduino IDE и перейдите в File PreferencesAdditional Boards Manager в Arduino IDE.
  2. Вставьте туда следующий код:
  3. Щелкните OK, чтобы закрыть вкладку предпочтений.
  4. Перейдите к инструментам и доске, а затем выберите менеджер доски.
  5. Перейдите к «esp8266 by esp8266 community» и установите программное обеспечение для Arduino.

После завершения всего вышеуказанного процесса мы готовы запрограммировать наш микроконтроллер esp8266 NodeMCU с помощью Arduino IDE!

Шаг 5. Полезная информация

Некоторая полезная информация
Некоторая полезная информация
Некоторая полезная информация
Некоторая полезная информация

Возможно, вам будет удобно выяснить, какая у вас версия NodeMCU. Вот руководство по сравнению:

frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/

Каждая версия имеет разное расположение выводов. Я купил версию v3 (Lolin), потому что она имеет выходные контакты 5 В для питания серводвигателя. В конечном итоге вместо этого я использовал выводы питания на 3 В для безопасности (выводы ввода / вывода NodeMCU не допускают 5 В), но вы можете использовать выводы 5 В, потому что технически эти типы серводвигателей рассчитаны на питание от 4,5 до 5 В.

Шаг 6: Загрузите код в NodeMCU

Загрузите код в NodeMCU
Загрузите код в NodeMCU
Загрузите код в NodeMCU
Загрузите код в NodeMCU
  1. Подключите NodeMCU к компьютеру с помощью любого кабеля micro USB.
  2. Откройте IDE Arduino и в разделе «Платы» выберите «ESP12E» и COM-порт для NodeMCU.
  3. В среде IDE перейдите в FileOpen и просмотрите zip-папку, ранее загруженную с makersa.ga, чтобы открыть скетч Arduino под названием «ProximityActuator013017DonovanMagryta.ino».
  4. Затем отредактируйте строку кода, содержащую это, чтобы добавить имя и пароль вашего маяка WiFi. Подробнее об этом ниже! Например:

const char * ssid = "mywifi"; // Поместите название вашей точки доступа в кавычки

const char * пароль = "mywifipassword"; // Поместите пароль вашей точки доступа в кавычки

Затем нажмите «загрузить», чтобы записать код на плату NodeMCU.

NearBot использует карманный WiFi-маяк, чтобы идентифицировать вас и оценить расстояние. Так же, как бесконтактные ключи, в некоторых новых автомобилях есть возможность отпирать дверь при приближении.

Вы можете использовать мобильную точку доступа на смартфоне в качестве маяка или использовать дешевый WiFi-модуль ESP-01, работающий от пары батареек AAA или небольшой литиевой батареи 3,7 В. Не нужно программировать ESP-01, он по умолчанию работает в стандартном режиме при включении. Принципиальная схема для этого показана на этом шаге.

Шаг 7: прикрепите сервопривод к NodeMCU

Вам потребуются перемычки, чтобы подключить сервопривод к NodeMCU V3.

Принципиальная схема проста.

Контакт D0 к сигналу в выводе (провод самого светлого цвета на сервоприводе. Обычно желтый или белый).

Контакт 3V или контакт VO к входному проводу 5V (второй самый светлый провод на сервоприводе, обычно красный или оранжевый).

Подключите GND к проводу заземления (провод самого темного цвета на сервоприводе, обычно коричневый или черный).

Шаг 8: точная настройка NearBot

Код преобразует мощность сигнала в оценку расстояния. Он надежно работает на расстояниях менее 2 метров или 6,5 футов. Поскольку это прямое преобразование, оно не так гладко для расстояний, превышающих 3 метра, как это могло бы быть при использовании лучшего метода расчета. Подробнее об этом позже.

Возможно, вы захотите отрегулировать положение сервопривода (маленькая белая ручка, которая движется). Для этого нужно просто открутить сервомеханизм с помощью отвертки и переустановить его.

Следующая часть - настроить максимальную и минимальную степень движения с помощью кода.

Это можно сделать, изменив числа, содержащиеся в строках, которые выглядят следующим образом:

myservo.write (10); // перемещает сервомеханизм на 10 градусов

Вы также можете настроить чувствительность уровня сигнала, изменив отрицательные числа в строках, которые выглядят следующим образом:

if (rssi> -30 && rssi <-5) {// Если уровень сигнала больше -30, и слабее -5. затем сделайте следующее…

Шаг 9: как это работает

  1. NearBot сначала подключается к точке доступа заранее, когда приближается пользователь.
  2. Он сканирует RSSI (уровень принимаемого сигнала) и преобразует его в приблизительное расстояние.
  3. Пока расстояние находится в указанном диапазоне, рычаг серводвигателя перемещается в положение 1.
  4. В противном случае серводвигатель перемещается в положение 2.

Когда я это тестировал, эта настройка RSSI (-50) перемещает сервопривод в положение 1, при этом расстояние от 0 до 1,5 метра с маяком ESP-01 или точкой доступа телефона в моем кармане.

RSSI обычно находится в диапазоне от -90 до -20, причем -20 является самой сильной силой сигнала.

Если вы откроете последовательный монитор Arduino IDE, когда NearBot подключен к компьютеру, он будет отображать мощность сигнала и точки запуска в реальном времени, чтобы вы могли получить удобную обратную связь.

Вот полный код:

//ПРЕЖДЕ ЧЕМ ТЫ НАЧНЕШЬ:

// 1. Если вы еще не загрузили Arduino IDE, получите ее бесплатно (пожертвование необязательно) по адресу: https://www.arduino.cc/en/Main/Software // 2. откройте IDE Arduino (если вы еще не читали это в IDE Arduino!)… // 3. Перейдите к файлам и щелкните предпочтение в Arduino IDE… // 4. скопируйте ссылку ниже в Диспетчере дополнительных плат: //https://arduino.esp8266.com/stable/package_esp8266com_index.json // 5. нажмите ОК, чтобы закрыть вкладку настроек… // 6. Перейдите к инструментам и доске, а затем выберите менеджер доски… // 7. Перейдите к esp8266 от сообщества esp8266 и установите программное обеспечение для Arduino… // 8. Вам может потребоваться загрузить и установить драйвер CH340, если вы не можете заставить NodeMCU взаимодействовать с вашей Arduino IDE: https://www.arduino.cc/en/Main/Software // Как только все вышеупомянутые процессы будут завершены, мы прочтите, чтобы запрограммировать наш микроконтроллер esp8266 NodeMCU с помощью Arduino IDE. Возможно, вы захотите выяснить, какая у вас версия NodeMCU. Вот руководство по сравнению: https://www.arduino.cc/en/Main/Software // Сделано из микроконтроллера NodeMCU ESP8266, батареи или источника питания USB и сервопривода SG90 // Вы можете использовать 2-й немодифицированный модуль esp8266 в качестве маяка. точка доступа вместо использования смартфона. // Цепь NearBot: // Вывод D0 на сигнальный провод сервопривода (провод самого светлого цвета) // Вывод 3V на провод сервопривода 5V (средний провод) (соединенный параллельно с кабелем USB или выводом VO на NodeMCU, если у вас V3. / / USB-питание к USB-разъему на NodeMCU // Вывод GND на провод заземления сервопривода (провод самого темного цвета) // Строки заметок начинаются с двух косых черт и игнорируются компьютерами. Примечания предназначены только для нас, людей! #Include #include // Может потребоваться для последовательной печати. #Include // Servo library #define D0 16 // Определяет контакты, чтобы упростить назначение контактов. #Define D1 5 // I2C Bus SCL (clock) #define D2 4 // I2C Bus SDA (данные) #define D3 0 #define D4 2 // То же, что и "LED_BUILTIN", но с инвертированной логикой #define D5 14 // SPI Bus SCK (clock) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (Последовательная консоль) #define D10 1 // TX0 (Последовательная консоль) Servo myservo; // Создаем сервообъект с именем myservo // Телефон или дополнительный модуль ESP8266 установлен в режим точки доступа точки доступа: const ch ar * ssid = ""; // Поместите имя вашей точки доступа в кавычки const char * password = ""; // Поместите пароль вашей точки доступа в кавычки void setup () {Serial.begin (115200); // устанавливает скорость последовательной передачи данных, чтобы микроконтроллер мог взаимодействовать с последовательным интерфейсом печати в Arduino IDE - вместо этого вам может потребоваться изменить ее на 9600! myservo.attach (D0); // подключает сервопривод на выводе D0, также известный как GPIO16, к сервообъекту - см. подробнее на: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write (10); // перемещает сервомеханизм на 10 градусов Serial.println ("Locked"); // выводим на монитор последовательного порта слово "Locked" WiFi.mode (WIFI_STA); // Устанавливает Wi-Fi в режим станции WiFi.begin (ssid, password); // Подключается к маяку точки доступа} void loop () {// Цикл выполняется снова и снова быстро if (WiFi.status ()! = WL_CONNECTED) {// Если Wi-Fi НЕ подключен, выполните следующие действия … Serial.println («Не удалось подключиться к Wi-Fi»); myservo.write (10); // Перемещает сервомеханизм на 10 градусов Serial.println ("Locked"); } else {// Если Wi-Fi подключен, выполните следующие действия… long rssi = WiFi. RSSI (); // Создает переменную с именем rssi и назначает ее функции, которая возвращает значение мощности сигнала маяка точки доступа Serial.print (rssi); // выводит значение rssi на монитор последовательного порта if (rssi> -50 && rssi <-5) {// Если уровень сигнала выше -50 и ниже -5. затем выполните следующее… myservo.write (170); // Повернуть сервомеханизм на 170 градусов Serial.println ("Unlocked"); } else {// Если указанные выше условия не выполняются, выполните следующие действия… myservo.write (10); // Поворачивает сервомеханизм назад на 10 градусов. Serial.println («Заблокировано»); }}}

Шаг 10: вы должны знать…

Заявление об ограничении ответственности:

Текущая версия кода NearBot надежно работает на расстояниях менее 2 метров или 6,5 футов. Кроме того, он становится менее точным, но все равно работает.

Это можно исправить, но на данный момент я не знаю, как это сделать. Я был бы рад, если бы кто-нибудь поработал со мной, чтобы я мог обновить эти инструкции более точным методом расчета расстояния!

Эти ссылки могут быть полезны: YouTuber CNLohr разработал прошивку для определения расстояния и положения для ESP8266 с ограниченным успехом:

Espressif разработал функцию определения расстояния Time of Flight, которая будет работать с Arduino IDE для ESP8266, но так и не выпустила ее:

Система позиционирования SubPos использует модули ESP8266 и расчет потерь пути, что я не знаю, как реализовать в Arduino IDE:

Я нашел пример на языке Java, но не знаю, как воспроизвести это IDE Arduino:

двойное расстояние = Math.pow (10.0, (((double) (tx_pwr / 10)) - rx_pwr - 10 * Math.log10 (4 * Math. PI / (c / frequency))) / (20 * mu));

Шаг 11: это все

Если вы создаете свой собственный NearBot, напишите «Я сделал это» в комментариях ниже!

Если у вас есть еще идеи, для чего использовать платформу Versatile NearBot, прокомментируйте свои идеи! Это могло бы стать отличным вдохновением для других пользователей инструктируемых материалов!

Если вам понравился этот урок, пожалуйста, подумайте о голосовании за него в конкурсах!

Рекомендуемые: