Свежие комментарии
    Благодарности: денежное общество и мойка авто

    Глубокая модернизация. Была Lego Racers RC, стала Lego Racers Blynk.

    Первые 40 лет детства самые сложные в жизни мужчины.

    /правда жизни/

    Достались мне несколько конструкторов Lego с различными моторчиками, но без пультов управления. Один из них Lego Racers RC (номер 8475). Ну что же, будем делать из него Lego Racers Blynk ESP8266.

    Набор содержит блок управления в котором контроллер с мотором управления рулем, к блоку управления подключаются 2 детали — двигатели. Положение руля контролирует энкодер.

    Поскольку у ESP8266 мало выводов я дополнительно применил микросхему PCF8574, хотя в принципе достаточно было бы и существующих выводов, но я планировал добавить навесное оборудование типа датчика расстояния или оптических датчиков. Так же поставил магнитометр HMC5883, пока правда не придумал как его применить кроме вывода информации с него. В итоге получилась вот такая схема (на схеме нет магнитометра, но думаю не составит труда понять как он подключается)

    Внутренности.

    плату драйверов пришлось немного модернизировать чтобы запихать в корпус и питать esp8266, для этого были выпаяны все разъемы, снят радиатор, заменен преобразователь на 5 вольт преобразователем на 3,3 вольта (разъем 5 вольт выдает 3,3В), конденсатора заменены на танталовые smd. Через резистор 10K выведен светодиод в место куда вставлялась антенна.

    Энкодер у данного конструктора Lego формирует 3 бита, выводы 1,2,3 через резистор 10К подключены к 3,3В и когда внутри энкодера не замыкается на GND то формируется логическая единица, если замыкается на GND то формируется логический 0. Соответствие положению вала назначениям выводов

    При этом между положениями контакты не касаются GND, то есть получаем значение 1 1 1 или 7 в десятичной системе, а это значит надо учитывать это.

    Обозначу положение руля следующим образом: 0 — влево, 1 — 0,66 влево, 2 — 0,33 — влево, 3 — прямо, 4 — 0,33 право, 5 — 0,66 право, 6 — право.

    Энкодер подключен к выводам 0,1 и 2 PCF8574, я использовал библиотеку PCF8574

    Подключаем библиотеки, для управления машиной достаточно

    у меня установлен датчик HMC5883, подключаем ещё библиотеки для работы с этим датчиком

    и задаем переменные, для переменных для управления

    spoiler


    для датчиков

    spoiler


    Для управления используем несколько функций.

    три функции управляют движением руля.

    spoiler


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

    spoiler


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

    spoiler


    Это всё что необходимо для управления машиной (естественно за исключением основных функций: setup() и loop()), но у нас ещё предполагается измерять сигнал wi-fi, заряд батареи и данные магнитометра, добавляем соответствующие функции

    spoiler


    теперь нам надо заполнить функции setup и loop

    spoiler


    основной цикл

    spoiler


    Это всё что необходимо для управления, однако у нас нет ещё самого главного: интерфейса управления

    Blynk

    Самое простое это реализация управления через Blynk, нам надо подключить библиотеки, задать 3 переменные и написать всего пару строк.

    добавим подключение библиотек

    добавим переменные

    в функцию setup() добавим в начало

    в функцию loop() добавим в начало

    Теперь нам надо определиться с виджетами которые мы будем использовать.

    Для управления можно использовать несколько вариантов. самый пожалуй простой для управления это использования джойстика, недостатком является не полная скорость при поворотах, добавляем виждет «джойстик» со следующими параметрами.

    spoiler

    В скетч вставим виртуальный пин V1

    spoiler


    Заливаем скетч в ESP8266, запускаем и управляем машиной из приложения.

    Для отображения данных с датчиков думаю не возникнет проблем, используйте переменные: Sila, Batareya, mag_x, mag_y, mag_z, mag_k, главное переводите их в строку, например для вывода данных о батареи в виртуальный пин V0:

    Скетч управления машинкой можно скачать тут.

    Управляем через web интерфейс.

    Но что делать если в месте запуска отсутствует интернет? будем делать управление другим способом, управлять будем через web интерфейс, наша машина будет в качестве web сервера к которой мы будем подключаться.

    В свой скетч я добавил из 2-х источников скетчи, это скетч с конфигуратором настроек в EEPROM, сервер и клиент и скетч управления кораблем

    Скетч, который создает точку доступа и может подключаться к сети wi-fi можно скачать тут.

    После загрузки скетча на ESP8266 надо подключиться и настроить подключение к сети wi-fi, пароль SECRET плюс последние 4 символа мак адреса чипа, они так же последние в имени точки доступа. Настройка параметров подробно описано в этой статье.

    объединив все три в один я получил скетч управления машиной, который можно скачать тут.

    Поделиться в соц. сетях

    Опубликовать в Facebook
    Опубликовать в Google Buzz
    Опубликовать в Google Plus
    Опубликовать в LiveJournal
    Опубликовать в Мой Мир
    Опубликовать в Одноклассники
    Опубликовать в Яндекс

    Оставить комментарий