Светодиодные лампы из деталей люминесцентных ламп

От предыдущих хозяев досталась лампа на кухне, устроенная в фальшь потолке из пяти трубок по 18 Ватт. Со временем трубки стали перегорать, а затем начали портиться и сами лампы. Оказалось, что трубки и лампы не очень-то дешёвые, да и свет нам от них не очень нравился. Решил переделать их на светодиодные, максимально используя подручные материалы.

Сами модули заказал на Aliexpress, четыре штуки по 30 Ватт, со встроенными блоками питания. Их пришлось подождать, зато на переделку ушло буквально пара часов.

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

Одна рейка в паре крепится к потолку на “родное” посадочное место, сверлить новых дырок не надо. Вся проводка также взята от старых ламп. По моему, получилось дёшево и сердито. Посмотрим сколько проработает.

Светодиодная ёлка с подарками, управляемая по Wi-Fi.

Введение

Мой сын Алексей предложил сделать ёлку из светодиодов, для украшения прихожей. Естественно, чтобы она мигала. Ну, папа подумал, подумал… Сделали на ESP8266 (в варианте ESP-201), разноцветных светодиодов, мощных транзисторов (добытых из балластов люминесцентных ламп), сопротивлений, пары разъёмов от флоповодов.
Алексей помогал припаивать светодиоды, Николаю поручили написать программу в среде Arduino, с простенькой веб страничкой для загрузки новых “мелодий”.

Железо

Сначала прикинули с ребёнком рисунок ёлочки и подарков на листе бумаги. Набросали черновой вариант разводки шин питания. Из-за выбранной схемы подключения (см. ниже), общей шиной является +5В (а не земля).

Внимание! Разные светодиоды имеют разное падение напряжение и рассчитаны на разный максимальный ток. Для ограничения тока через светодиод проще всего использовать сопротивление. Поскольку у нас напряжение питания для светодиодов было порядка 5.4 Вольт, можно было некоторые светодиоды (на которых падает < 2.5 Вольт) ставить в пары последовательно. Это увеличивает эффективность схемы (меньше энергии рассеивается на сопротивлении).
Для расчёта сопротивлений можно использовать онлайн калькуляторы.

Для основы вырезали картонку из коробки для пиццы.

Для припаивания ножек светодиодов к железной проволоке использовали флюс, без него припаять трудно. Рассчитанные сопротивления подпаяли сразу к светодиодным блокам. Вышло немного аляповато, зато быстро и наглядно. Чтобы сделать конструкцию модульной, т.е. чтобы “дисплей” можно было отсоединять от платы, отдельные элементы припаял к разъёмам от флоппи дисководов, срезанных с шлейфа проводов компьютерного блока питания.

Для управления используется ESP8266, купленный в варианте ESP-201. (Для тех, кто не знает что это такое ESP8266, можно посмотреть здесь. Грубо говоря, это Arduino с встроенным Wi-Fi. Модули ESP-201 можно приобрести на Aliexpress за ~150р).
Разумеется ESP8266 не может напрямую питать такие мощные нагрузки, поэтому я использовал NPN транзисторы подключенные по схеме с общим эмиттером. Ниже приведена принципиальная схема (на три группы светодиодов). Резисторы R1-R3 нужны для работы самого контроллера, R4-R6 для ограничения тока на выходах контроллера через базы транзисторов, R7-R9 для ограничения тока на светодиодах. Номиналы последних не указаны, поскольку зависят от количества, характеристик и схемы подключения светодиодов (см. онлайн калькулятор выше). В принципе, R1-R6 можно выбирать в широком диапазоне (1к – 20к). При слишком маленьких значениях можно спалить контроллер, при слишком больших не откроется транзистор. Транзисторы выпаял из балластов для люминесцентных ламп (имеющихся в наличии в связи с плановой заменой освещения) и старого компьютерного блока питания.

Схему я сначала собирался спаять на макетной плате для пайки, но с первого раза не получилось. И поскольку время поджимало, использовал макетную плату с гнёздами. К транзисторам припаял трёх штыревые разъёмы.
Внимание! Транзисторы не должны соприкасаться корпусами.
Для преобразования 5 Вольт в 3.3 Вольта, необходимые для контроллера, я использовал готовый миниатюрный преобразователь. Он поддерживает ток до 800мА, что достаточно для контроллера.
Основной блок питания – зарядка от какого-то почившего гаджета, выдающая 5.4 Вольта на 1.850 Ампера. Разъём питания я использовал аналогичные используемым во многих игрушках для зарядки аккумуляторов. Для включения/выключения – микро переключатель.
Вот картинки от использованных компонентов:

Для окончательной сборки “дисплея”, я закрыл заднюю часть второй картонкой и сделал подставку с помощью проволочных “ножек”. Макетная плата размещается внизу и заодно делает конструкцию более устойчивой.

Софт

Для программирования использовалась среда Arduino настроенная для ESP8266. Более подробно на гитхабе. Программа основана на примере стандартного веб сервера. Разбирает POST от формы и на основе значения аргумента, в цикле, настаивает цифровые выходы контроллера. Контроллер подключен в домашнюю Wi-Fi сеть и настроить системы можно с любого компьютера или смартфона.

Коля придумал длинную “мелодию”, которую пока и оставили. Видео есть на Facebook.

Учебный проект: записываем анимацию на карточки метро

Этот проект мы сделали совместно с моим сыном Николаем. Я помог на начальной стадии со сборкой устройства, программированием на Python занимался Николай.

Железо

Проект сделан на Raspberry Pi B+, NFC датчике от ELECHOUSE на базе чипа PN532, LED матрице 8*8 на базе MAX7219.

RaspberryPiBplus
PN532-7 matrix

Матрица подключена по интерфейсу SPI, для работы использовались библиотеки из этого проекта. NFC датчик также был подключен по SPI, только уже эмулированному на цифровых пинах. Для работы с ним использовались библиотеки от аналогичного модуля от Adafruit.

MiFare Ultralight

Как известно, Московский метрополитен использует бесконтактные карточки Mifare для прохода на станции. Разумеется, тема чтения/записи таких билетов широко известна в узких кругах. Мы тоже начали со считывания и вывода в консоль количества оставшихся поездок. Но поскольку метро мы часто не пользуемся, дублировать метрошный девайс для отображения аналогичной информации было как-то не интересно.
Изучив теорию в популярной форме, мы заинтересовались возможностью записи на карточки и использования их просто как носителей информации. Вообще на карточках Ultralight есть 12 блоков по 4 байта, доступных для записи. На наших билетах нам удалось перезаписывать нижние 8 блоков по 4 байта, т.е. всего 32 байта.

Софт

В качестве полезного упражнения я подал идею записывать на карточки простенький мультфильм для LED матрицы. Таким образом поднося разные карточки к считывателю, можно проигрывать разные анимации. Первоначальная идея была записывать 4 полных кадра. Николай усовершенствовал систему заменив последний кадр на управляющую последовательность, описывающую, как показывать оставшиеся три кадра (повторения, паузы и т.д.).

1Программа на Python’e разрабатывалась под Windows, с использованием IDE JetBrains PyCharm.  На Raspberry была установлен стандартный Raspbian (Jessy), из специальных настроек – был разрешён SPI. Доступ к Raspberry был только по SSH (SuperPutty), SFTP (Filezilla). Так что заодно оттачивалось мастерство работы в shell 🙂

Выводы

Использованные метрополитеновские карточки это интересный ресурс, особенно для недорогих проектов в кружках, лагерях и т.д.

С течение времени у нас появлялись и другие идеи использования карточек в играх, например:

  • В играх типа монополии можно сделать “настоящие” кредитки.
  • В играх с карточками, где у героев есть разные способности, можно автоматически рассчитывать результат сражения.
  • Чипы из карточек можно прикреплять к внешне одинаковым предметам для идентификации.
  • Уникальные неперезаписываемые идентификаторы карточек можно использовать для доступа в помещения, открытия ящиков с вещами и т.п.

Возможно что-то из этого мы и сами сделаем, на то они и каникулы 🙂

Часы с “сетевым” временем из ESP8266, LED матриц, зарядки от сотового и коробки от конфет.

Надоело постоянно подстраивать время на настольных часах в спальне. Едва ли не самые важные часы в квартире постоянно уходили и вообще сбрасывались при отключении электричества.
Решил сделать собственные часы, подключенные к сети по Wi-Fi и получающие время по NTP.

Железо

В качестве управляющего модуля я выбрал ESP8266, для которого уже была заточенная Arduino IDE и некоторый опыт разработки.
1 matrixДля разработки и отладки использовал удобную SDK плату для ESP8266. Несколько LED матриц 8*8 были в наличии. Собирался в них поиграть с детьми, поэтому заказывал с запасом. Матрицы используют микросхему MAX7219 для управления светодиодами. Информация передаётся последовательно, и возможно подключение нескольких модулей последовательно. В интернете есть масса библиотек для таких матриц, в том числе с готовыми шрифтами. Но для этого проекта я сделал свой шрифт, лучше подходящий именно для часов.
Ниже показана сборка из трёх матриц, соединённых последовательно.
4
Я использовал разборные соединения между основными модулями, чтобы упростить сборку/разборку и замену деталей.
2Вот как выглядел весь стенд. Блок питания компьютерный, на нём были необходимые 3 и 5 Вольт с запасом по мощности. Полностью включенные три матрицы потребляют приличный ток, и от компьютерного USB порта работать не будут.

Софт

Программа достаточно простая. У меня уже были готовые примеры: работа с LED матрицами для Arduino, и отправка запроса / разбор ответа NTP для ESP8266. Оставалось слить это в одну работающую программу и кое что добавить:

  • Присоединение к моей домашней Wi-Fi сети, + пересоединение если что-то не работает. Аналогично, несколько NTP серверов, запрашиваемых по кругу.
  • Поскольку внутренних часов у ESP8266 нет, то настройку задержек для удовлетворительной точности автономного хода в течение ~15 минут, после чего делается новый NTP запрос.
  • Новый шрифт (только цифры), максимально использующий экран и видимый близорукими людьми с нескольких метров.
  • Некоторую дополнительную индикацию в нижней строке (есть ли связь с сетью и т.д.)

Прототип

После создания софта и нормальной работы устройства на стенде, я перешёл к созданию более портативного блока питания для собственно прототипа. Для получения 5 Вольт я использовал зарядку от мобильного телефона с испорченным мини-USB разъёмом. LED матрицы запитаны напрямую от 5 Вольт, а для работы ESP модуля использован настраиваемый DC-DC конвертер в 3.3 Вольта.
3Вместе сборки соединил жёсткой проволокой, просто припаянной к макетной плате. Была идея напечатать какой-то каркас на 3D принтере, но руки не дошли. Окончательный вид:

5Всё вместе просто замечательно влезает в бережно хранимую несколько лет коробку от конфет:

6

Результат

Конечно, это было краткое изложение истории. В реальности пришлось пару раз переделать девайс, немного пободаться с Wi-Fi и списать один DC-DC конвертер, из которого вышел весь магический синий дым, на котором он работал.

Но получилось очень симпатично:

7

P.S.

В принципе у идеи есть большой потенциал, ведь практически ничего не стоит добавить индикатор для, например, новой почты, погоды бегущей строкой, состояния вверенных серверов, да что угодно. Может, удастся напрячь ребёнка для развития системы 🙂

Переработка сгоревших LED лампочек

Дешёвые LED лампочки прослужили год и вышли из строя. Оказалось, что практически по всех сгорел всего один SMD светодиод. Из рабочих плат легко можно собрать обратно лампы в нужной конфигурации. Мне нужны были две “плоские”. На “сдачу” остаётся классный цоколь Е27 и мутноватый колпачок.

Collage

Лампа с выключателем, прикрученная к “потолку” двухэтажной кровати.
Attached

Второй этаж

Продолжение истории с устройством для тестирования атаки Deauthentication на Wi-Fi сеть.

Поигравшись с прототипом от предыдущего проекта, понял, что эффективность работы всё таки не достаточна. Последней каплей стал смартфон моего сына, который настолько быстро переподключался, что вообще было не понятно – “в чём прикол”.
Но, сдаваться мы не привыкли 🙂
Поразмыслив, придумал новый вариант улучшения системы. С помощью второго ESP8266 модуля.
Идея такова – разделить систему на две части. Один модуль непрерывно сканирует и ищет абонентские устройства и точки доступа. Он передаёт результаты на второй модуль по последовательному порту. Второй модуль максимально быстро рассылает Deauthenticate, постоянно обновляя список.

Железо

_DSC0120На более длинные планки установлено сразу два ESP модуля. Они подключены к одному преобразователю напряжения. В общем, всё также как и в предыдущем устройстве. Дополнительно Tx последовательного порта одного модуля подключен к Rx другого. (Земля и так общая.) Таким образом, порт работает в симплексном режиме. Какой модуль первый, какой второй – неважно. Программа на них одна (см. ниже).

Из минусов – уменьшилось время жизни батареи. Я точно не измерял, но по ощущениям держит где-то порядка одного часа. Пришлось перейти на лабораторный блок питания для отладки.

Софт

_DSC0121Делать две программы естественно лень. Так что программа одна. После включения модули в течении ~3 секунд передают последовательность 0xFF. Но получает её только один из них (будущий Джамер), поскольку обратно просто нет провода. Так модули понимают, кто из них будет сканером, а кто Джамером. В качестве бонуса остаётся незанятый канал передачи на Джамере, его можно использовать для вывода отладочной информации.

“Сканер” ищет точки доступа и клиентов на каждом канале. Найдя нового клиента на данном канале, отправляет основную информацию на Джамер. Номер канала, MAC’и и порядковый номер последнего пакета. Если около 200 миллисекунд новых пакетов нет, Сканер переходит на следующий канал. При этом сбрасывается счётчик клиентов, чтобы все найденные клиенты были вновь отправлены на Джамер.

Протокол между модулями максимально простой, просто передача 15 байт на одного клиента. Начальная синхронизация основана на том, что первый байт пакета – номер канала, должен быть от 1 до 14, а никак не 0xFF, который 3 секунды посылает Сканер. В принципе, это же может сработать и в дальнейшем, если в канале будут ошибки (что маловероятно, учитывая схему).

Джамер проверяет порт, если есть что-то новенькое – добавляет/обновляет список. Потом отключает всех, кто уже зарегистрирован на этом канале. И идёт на следующий канал.

В результате скорость подавления возросла многократно. Устройство стабильно отключает два смартфона, лэптоп и принтер в двух смежных комнатах от Wi-Fi.

Моддинг

_DSC0123С самого начала меня смущали загнутые проводки антенн модулей. А теперь их стало две, в неприятной близости друг от друга. Также система уже стала механически не очень устойчивой.

Так появился мод – “No-Wi-Fi-Coctail-Party-Edition”. Откуда взялись трубочки я думаю Вы догадались. Антенны теперь расположены на одной оси, что, как я надеюсь, должно уменьшить взаимное влияние (“поле диполя” и далее по тексту :-))

А к батарейке приделан небольшой магнит, он удерживает сборку на любой вертикальной металлической поверхности.

Исходный код на GitHub.

Выходные на Тёмной Стороне

Давным давно я заказал несколько модулей ESP8266 (модификация ESP-201) для создания системы “умный дом”, которую так до сих пор и не закончил. Незадолго до этого я работал над проектом в области безопасности Wi-Fi сетей, и довольно близко познакомился с имеющимся в широко известном дистрибутиве Kali арсеналом утилит для работы с Wi-Fi. Так что, когда модули наконец попали ко мне в руки, я сразу подумал, а нельзя ли их использовать для тестирования атак на Wi-Fi сети. Однако, просмотрев функции, присутствующие в распространяемом на тот момент SDK, я не нашёл ничего подходящего и забросил идею.
Некоторое время назад на Hackaday опубликовали интересную статью, где демонстрировался способ отправки произвольного пакета в сеть. Таким образом, появилась возможность на выходных покопаться и реализовать старый план.

Железо

Внутреннее устройство
Устройство состоит из собственно ESP модуля, миниатюрного конвертера постоянного напряжения, двух планок с отверстиями для пинов, батареи на 9 Вольт и соответствующего разъёма, четырёх резисторов на 4.7 кОм.
Прошивка модуля
Разъём для батареи на 9 Вольт можно достать из аналогичной старой батарейки. Соединения между разъёмом и платой конвертера и между конвертером и планками я сделал из толстой железной проволоки. Они удерживают всю сборку вместе. Сопротивления присоединены так, как требуется для запуска и работы модуля ESP. Выводы CHIP, RST подтянуты к плюсу, вывод 15 к минусу. Вывод 0 подсоединён к трёхпиновому разъёму, закреплённому на боку сборки. Если надеть джампер на этот разъём, вывод 0 подтянется к земле. В такой конфигурации модуль ESP можно прошить, используя последовательный порт и кабель, совместимый с TTL уровнями.
Модуль работает
Если джампер не стоит, после подачи питания модуль запускается и начинает выполнять программу из памяти. Программа выводит диагностические сообщения на последовательный порт, независимо от того, подключен кабель или нет. В качестве бонуса при выводе на последовательный порт мигает маленький светодиод на поверхности ESP модуля. Таким образом можно судить о том, что программа пока работает 🙂

Софт

Я использовал Arduino IDE (1.6.7). Эта среда разработки может работать со всеми платами которые у меня сейчас есть, также она работает как на Linux, так и под Windows. Можно начать проект на Windows и, если нужно, перейти на Linux или наоборот. Конечно, в ней отсутствует много того, к чему я привык в более богатых системах типа Visual Studio, но для маленьких проектов это не так существенно.
Я начал с кода из оригинальной статьи. Сначала адаптировал проект к Arduino, а потом начал вносить изменения и поменял практически всё. Сильно помог исходный код другой известной программы – MDK3. В результате в коде осталась пара мест, которые я не до конца понимаю и подобрал работающий вариант путём тестирования. Наверно, можно покопаться в стандартах и разобраться, но на это не хватило времени.
Ниже приведён снимок экрана системы которую я использовал для мониторинга работы прототипа. Видно как примерно через 10 секунд после подсоединения батареи пропадает пинг на телефон подключенный по Wi-Fi. В дампе Wireshark видны пакеты Deauthentication.
Мониторинг
Программа устроена довольно просто. Она принимает и распознаёт пакеты Beacon и пакеты с данными на заданном радио канале. На основании этих данных она обновляет списки обнаруженных точек доступа и клиентов. После того как в течении примерно 200 миллисекунд не обнаружено новых станций, система посылает команды на отключение для всех обнаруженных клиентов от имени соответствующих точек доступа. После этого система переходит на следующий канал.
Различные устройства по разному реагируют на такую атаку. Один из моих телефонов отключился от Wi-Fi на совсем, а второй временно отключался, но успевал переподключиться пока система проверяла остальные каналы. Для более стабильного результата можно предпринять следующее:

  • После какого-то начального периода перестать искать новые станции и просто быстро отсоединять уже известные по кругу.
  • Поиграть с константами, возможно у меня не оптимальная комбинация.
  • Купить 14 ESP модулей по одному на каждый канал 😉

Есть одна тонкость при работе с SDK от Espressif. В последних версиях они ограничили функцию передачи самодельных пакетов. НО, в более старой версии SDK 1.3.0 есть версия этой функция до введения ограничений. Нужно только дополнить файл заголовков “user_interface.h”:
typedef void (*freedom_outside_cb_t)(uint8 status);
int wifi_register_send_pkt_freedom_cb(freedom_outside_cb_t cb);
void wifi_unregister_send_pkt_freedom_cb(void);
int wifi_send_pkt_freedom(uint8 *buf, int len, bool sys_seq);

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

Исходный код под катом. Проект на GitHub.

Continue reading “Выходные на Тёмной Стороне”

Робот из пылесоса

Проект придумывался для совместной работы с моими детьми: Николаем (12 лет) и Алексеем (8 лет). В попытке заинтересовать детей чем-то развивающим, купил для экспериментов платы Стрела (Arduino Leonardo) и RaspberryPi B+.

После некоторых мучений Стрелу удалось подружить с детской средой разработки Scratch. (Мучения заключались в модификации протокола связи в Scratch 1.4 (сделан на Squeak Smalltalk). На стороне Arduino просто С, так что всё намного проще.)

Мы сделали пару интересных проектов, например, радар из сервопривода и ультразвукового датчика расстояния. С младшим мы написали программу на Скретче для вращения сенсора в секторе 180 градусов, со старшим получали по сети на его компьютере данные о расстоянии до препятствия и текущий угол. Затем рисовали на круговой диаграмме. Делали на PascalABC.NET, они его в школе используют.

Scratch

Но, конечно, всё это стало не интересно когда дети увидели в Интернете многочисленных подвижных роботов на базе Arduino.

Пока я придумывал как-бы к этому подступиться без особых капитальных затрат, у нас сгорел пылесос 🙂 Ну, я его разобрал, там внутри какая-то ерунда (с). Накрылся двигатель, из которого он вообщем-то и состоит. После демонтажа двигателя остался отличный, переживший годы жестокой эксплуатации корпус, с двумя колёсами сзади и одним поворотным роликом впереди. Так мы получили платформу для нашего прототипа. И вот что вышло:

Robot

Управление

Я использовал обе платы. Стрела отвечает за базовые функции “реального времени”. Синхронное управление двигателями, реакция на датчики.

Raspberry отвечает за функции “высокого уровня”. Подключение по Wi-Fi в домашнюю сеть, сервер “Remote Sensors Protocol” для интеграции со Scratch по TCP/IP, небольшой WWW сервер для альтернативного канала управления, видео сервер. Между собой платы общаются по последовательному порту USB, с помощью простенького самодельного текстового протокола. Для Raspberry всё написано на Python’е, ну кроме видео сервера, он готовый.

Платформа

Все печатные платы прикручены к общей панели. Под ней расположена свинцовая аккумуляторная батарея на 12В от ИБП, и два серво мотора постоянного вращения.

_DSC0004 (Small)

Моторы закреплены с помощью изогнутых деталей от детского конструктора (вот где пригодился бы 3D принтер!). Вращение на колёса передаётся через пластиковые “звёздочки”, которые шли в комплекте с мотором. Для них в колёсах пылесоса были сделаны пропилы. Серво двигатели были выбраны из-за большого крутящего момента, тогда как большая скорость не нужна, диаметра колёс достаточно большой.

_DSC0005 (Small)

Питание

Напряжение от 12В батареи подаётся параллельно на три устройства. На плату Стрела, которая имеет собственный стабилизатор напряжения. На DC-DC конвертер для преобразования в 5В для питания Raspberry. И на DC-DC конвертер в 7В для подачи на двигатели. В принципе, двигатели и Raspberry можно было запитать от одного конвертера, но я опасался просадки напряжения при старте или из-за блокировки двигателей и, как следствие, перезагрузки Raspberry. Получилась схема, устойчивая к падению напряжения на батарее до 7В.

Кнопка включения питания взята от самого пылесоса. Замечательная вещь, проработала много лет, коммутируя килловатную нагрузку, и хоть бы что.

_DSC0003 (Small)

Дополнительные сенсоры

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

_DSC0002 (Small)

RaspberryPi B+ имеет четыре порта USB. Кроме Стрелы и Wi-Fi адаптера, я подключил веб камеру и мышку.

Камеру использует стандартный пакет motion, благодаря нему изображение с камеры можно посмотреть в обыкновенном броузере с любого компьютера в квартире. К сожалению, присутствует приличная задержка и Raspberry этот сервис грузит примерно на 25%. Но всё равно дистанционно управлять роботом получая с него картинку реально круто 🙂

Мышка стала попыткой создать датчик движения. Оказалось что в Python’е достаточно просто считывать координаты с USB мышки, вращение колёсика и нажатия кнопок. План был составлять карту передвижений робота и рисовать её на удалённом компьютере.

_DSC0006 (Small)

К сожалению, не могу сказать, что ни одна мышь не пострадала в этом опыте. Но надпись Microsoft на мышке существенно облегчила мои моральные страдания при сверлении дырки и отламывании кнопок 🙂

В принципе идея работает, но обнаружились две проблемы:

  • для корректной работы сенсора мыши нужно, чтобы он был близко к поверхности. Перефокусировать сенсор на большее расстояние не вышло. Под рукой у меня нашлась всего пара линз, и они не подошли. В качестве временного решения я собрал узел для подвижного крепления мыши. Он позволяет мыши скользить по полу и подниматься вверх. Так что робот может наезжать на небольшие препятствия типа ковра или порожка.
  • для полного определения положения робота на плоскости нужно знать две точки (=мышки). С помощью одной, даже расположенной впереди, не получается точно построить траекторию. При повороте колёса пробуксовывают, и нельзя точно определить точку вокруг которой поворачивает корпус даже на ровном месте. Ну и геометрия тут уже получается сложновата для 6-го класса.