Робот для обучения детей программированию на Arduino +27





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

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




Управляется робот платой Arduino Uno с motor shield l293d, из датчиков я ставил дальномер HC-SR04 и два датчика линии tcrt5000 (имеет как цифровой, так и аналоговый вывод).


Корпус робота состоит из 3 деталей (не считая необязательных креплений под датчики), которые печатаются на 3D-принтере. Для сборки понадобится крепеж М3, все необходимые элементы я описал в документе, лежащем с файлами для 3D-принтера.


Программируется робот, как и в стандартной среде Arduino IDE (дети постарше), так и в программе miniBloq (для младших групп). Для стандартной среды используется библиотека AFMotor, которая необходима для работы с шилдом драйверов двигателя. В miniBloq-е для работы необходимо выбрать в разделе оборудование робота «ta-bot v1», использующего аналогичный драйвер.


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


Занятия, которые с ним можно провести:


  • Работа с драйвером двигателей. Вращение колеса в разные стороны и с разной скоростью.
  • Простые маневры. Езда по кругу, езда по восьмерке (в этих занятиях как правило приходится много раз подбирать необходимое время и скорость, чтобы получить заданную фигуру).
  • Датчик линии. Принцип работы. Передача показаний датчика в компьютер (монитор порта).
  • Езда по линии с одним датчиком линии.
  • Езда по линии с двумя датчиками линии.
  • Дальномер. Принцип работы дальномера. Передача показаний дальномера в компьютер.
  • Езда по комнате с дальномером. Робот едет вперед до встречи с препятствием, как только подъезжает к стене – поворачивает.
  • Поиск противника (как в робосумо). Два робота ставятся в круг и начинают крутиться на месте, выискивая дальномером противника.




В папке с деталями также можно найти несколько готовых занятий из вышеперечисленного списка.

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (25):

  1. Arxitektor
    /#10693863 / -4

    А почему Arduino? Есть же другие процессоры? Тот же cortex?
    Просто у Arduino ATmega328p а там не очень много ресурсов.
    На чем ещё можно делать такие самоделки? Есть что то мощнее но Arduino совместимое?

    • nochkin
      /#10694329

      Есть NodeMCU платы на ESP8266. Для них есть Arduino среда.

      • ntfs1984
        /#10695145

        И што, там таки есть аналоговые входы-выходы, они 5в-толерантны (а значит без дополнительных прослоек которые даже меня взрослого бесят), по ним есть куча документашки и они продаются у каждого барыги даже в виде голой микросхемы уже способной к работе, их не надо прошивать хитровыигранным способом, у них не зависает последующая загрузка скетчей после захвата uart по своим нуждам, а прошивка запускается если собрана с поддержкой определенных модулей, например dht?

        Не смешите.

        Поймите, логика «зачем %X если есть %Y» с детьми не работает. Здесь не стоит вопрос в том, чтобы найти ЛУЧШЕЕ ЖЕЛЕЗО, здесь вопрос в том как ребенку получить желаемый результат с наименьшими потерями по времени (или у вас нет детей, вы не знаете что дети не усидчивы?).

        • nochkin
          /#10695647

          На обычной Ардуине на atmega тоже нет аналоговых выходов. Это скорее правило, чем исключение.
          А в чём сложность с 5 вольтами? Есть периферия на 3,3 вольта ведь. Тот же L298 работает без проблем.
          Прошиваются без особых хлопот. У меня проблем пока не было. Они через тот же USB прошиваются как и классическая ардуина на atmega.
          Прошивку пишут сами, как и для atmega. Если есть уже что-то кем-то написано, то можно использовать. Это к самому контроллеру не относится, это любой код так можно.

          > Здесь не стоит вопрос в том, чтобы найти ЛУЧШЕЕ ЖЕЛЕЗО
          Как раз такой вопрос и стоял.
          Вопрос был изначально, что на atmega328 мало ресурсов и нужна альтернатива пожирнее.

          Есть у меня дети, но это не относиться к вопросу про более жирный контроллер.
          Ребёнку без разницы какой контроллер вообще если он сам его не программирует.
          А если программирует, то тут важнее сама среда, а не железо. Железо, конечно, тоже важно, но не так сильно как сама среда для программирования.
          В том возрасте когда ребёнок может программировать на том же wiring уже усидчивость есть для этого.

          • ntfs1984
            /#10696149

            Отлично. Аналоговые входы есть на всех без исключения.

            Сложность с 3.3 вольтами ДЛЯ РЕБЕНКА (!!! это важно !!!) в том, что большинство вкусных модулей, блоков питания, зарядок для мобилок, и прочих USB идут пятивольтовые. Ну и на кой хер в системе половина устройств на 3.3 в, а вторая половина на 5 в?

            Прошивку пишут сами? Какую такую прошивку? NodeMCU уже прошита. Проблема в том, что когда вы загрузите программу, использующую UART — вы больше не сможете загружать свою программу, и вам придется перепрошивать девайс заново. На форумах и даже на гите этих кукареканий полно, и касаются они именно NodeMCU.

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

            Про ресурсы я вам уже сказал. Передо мной сейчас лежит Ардуина Мини за 2 бакса. У нее на борту: 8 аналоговых входов, 6 аналоговых выходов (PWM точнее, но суть не меняется — яркость светодиодиков можно плавно регулировать цифрой от 0 до 1023), SPI, i2c, 2хUART (и вообще любые пины можно использовать как Rx\Tx), 12 цифровых входов\выходов. И это только Mini.

            Уточните, какие ресурсы нужны ребенку, а так же юзкейс, в котором эти ресурсы будут востребованы?

            >>>
            Ребёнку без разницы какой контроллер вообще если он сам его не программирует.
            А если программирует, то тут важнее сама среда, а не железо. Железо, конечно, тоже важно, но не так сильно как сама среда для программирования.
            В том возрасте когда ребёнок может программировать на том же wiring уже усидчивость есть для этого.
            <<<

            Конечно без разницы. Ребенку нужно чтобы он подключил, и оно заработало. Как только ваша альтернатива это позволит — ребенков будут обучать на ней. На данный момент не позволяет, а вы все никак не можете своим техническим умом понять, что привлекательность устройства не состоит из выдранной одной фичи, а состоит из всех достоинств одновременно: цена+наличие в магазинах+наличие модулей+наличие документации+легкость подключения+аппаратные возможности. Если хотя бы один критерий выкинуть — устройство станет терять привлекательность даже если другой критерий в стопицот раз лучше. Вас сильно утешит что Ламборджини Авентадор в 5 раз быстрее вашего Форда Фокуса, если вы сможете на нем ездить только взад-вперед по проспекту из-за низкой посадки? Думаю нет. Здесь — то же самое. Детям (и мне как родителю) не нужно БЫСТРО, нам нужно эффективно и результативно.

            То-то я смотрю на форумах куча недетских вопросов и о wiring, и о nodeMCU :))

            Вы так и не поняли в чем суть привлекательности конструктора)))

            • nochkin
              /#10696359

              Аналоговые входы на классической atmega328 нет.

              При чём тут зарядка для мобилы? Это всё равно что сказать, что в розетке 220 вольт, зачем мне эти все устройства на 5 или 12 вольт?
              Такой же странный аргумент.

              Почему именно для ребёнка 3.3 вольта это однозначно проблема? Сейчас много модулей на 3.3 вольтах работает.

              NodeMCU — это и есть прошивка. Но речь вообще шла про Arduino, а не NodeMCU.

              Изначально вопрос пользователя Arxitektor был о том есть ли что-то пожирнее atmega328. Я предложил плату на esp8266.
              Зачем ещё уточнять что именно ему нужно? Явно вопрос был не об впихивании его задумок в размер atmega328.

              > а вы все никак не можете своим техническим умом понять, что привлекательность устройства не состоит из выдранной одной фичи
              Я же не утверждал обратное. Я ответил на вопрос выше. Почему надо теперь обвинять меня в том, что я даже не говорил в своём ответе?

              И сравнение с Фордом вообще ни о чём.

              > Вы так и не поняли в чем суть привлекательности конструктора)))
              Эта тема даже не поднималась. Зачем выдумывать что-то и потом на этой почве начинать обвинения со скатываением на тему какой у меня ум, о выдранности фичей и прочего, которое непонятно откуда взялось?
              Спор ради спора? Тогда я пасс.

              • Wan-Derer
                /#10696407

                Аналоговые входы на классической atmega328 нет

                Доооо? Вот эт новость!:)

                • nochkin
                  /#10696569

                  Да, верно. Выходы, конечно. Это была опечатка. Я в первом сообщении правильно написал.

    • ntfs1984
      /#10695019

      Ну а почему в первом классе букварь? Есть же другие. Та же «Война и мир».
      Просто у букваря азбука, а там не очень много страниц.

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

  2. TechnoMag
    /#10693979

    Простите за глупый вопрос: знание основ физики и закона Ома уже не нужно? Всегда считал, что чтобы что-то спроектировать в области электроники, пусть даже что-то элементарное, нужно как минимум понимать закон Ома, и знать свойства электро-деталей (конденсаторы, резисторы, диоды). Если проводить параллель с программированием: сначала был язык низкого уровня, потом языки высокого уровня, потом языки с ООП. Так вот, Adruino мне представляется как язык с ООП. Но! При этом, на собеседованиях не редко спрашивают не только о ООП, но и основах (core). Arduino уже считается отдельным от основ, и спрашивать основы уже не будут? То, что этот робот для обучения детей, увы, меня не впечатлило. Думаю, перспектив с такого обучения мало.

    • nicher
      /#10693999

      Робота проходят дети, которые уже занимаются около года и знают принципы работы простейших радиоэлементов, умеют паять и работать руками (более-менее)

    • MaxAlekseev
      /#10694001

      Простите за глупый вопрос: знание основ физики и закона Ома уже не нужно?
      Это дают в базовой программе школы, допобразование про другое.
      Думаю, перспектив с такого обучения мало.
      3-D печать, подразумевает владение САПР и спец. софтом станка с ЧПУ, Arduino — навыки программирования в Си и работе с микроконтроллерами, сборка и наладка робота — начальные навыки в электротехнике/электронике и механике, все вместе — навыки комплексного решения сложной задачи, чем и является робототехника в широком смысле. Все нормально с перспективами, и очень здравое дело.

      • n12eq3
        /#10694611

        достаточно популярный тип заданий на электронном фрилансе — «я сделал свой девайс на ардуино, вот исходники — теперь сделай мне так как это должно быть с нормальным железом».
        это всё, что нужно знать про «перспективность» развития инженера из пользователя ардуины. аналогично с принтерами и ЧПУ станками.
        наборы роботов и подобные штуки это хорошо и полезно для развития в целом, но нужно строго следить за моментом перехода между «я пишу скетчи» и «я разработчик». иначе это грозит неправильным восприятием окружения и тотального провала в дальнейшем (закодить тележку могут 90% детей. вырасти в инженеров = кратно меньше. просто статистика)

        • MaxAlekseev
          /#10694635

          сделай мне так как это должно быть с нормальным железом
          Atmega328 — это нормальное железо для своего круга задач.
          закодить тележку могут 90% детей.
          Работаю преподавателем доп. образования по робототехнике в школе. 90% детей не могут, 10% могут, за год преподавания ситуация начинает меняться в обратную сторону.
          «я пишу скетчи» и «я разработчик»
          Скетчи на ардуино — это упрощенный си, и это тоже разработка только «детская» и да не все потом вырастут в инженеров — это нормально, но развитие в этой области и кругозор расширят. Arduino — это как букварь в первом классе, читать/писать научим… а дальше выбирай куда двигаться и расти.

    • ntfs1984
      /#10694275

      Знание основ физики и закона Ома уже не нужно, вы правы. И это к лучшему. Важнее сосредоточиться на результате.

      А вот насчет «даже чего-то элементарного» — не правы.

      Даже ваша параллель о программировании работает совсем не так.
      Язык низкого уровня нужен тогда, когда язык высокого уровня уже не справляется, и не важно что было сперва, важно то что язык высокого уровня был создан не просто так. Глупо изучать ассемблер, структуру памяти, регистров, прерываний, чтобы поморгать светодиодом. В процессе работы все равно зае***тесь писать ассемблерные инструкции, соедините их в процедуры, функции, вызовы, в итоге получите тот же высокоуровневый язык с тем же результатом, но убив при этом уйму времени.

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

      • TechnoMag
        /#10695303

        Может, проведение параллели с языками программирование и неудачное. Мне кажется вы несколько упустили суть моего поста: в самом упрощенном случае, человек может просто устроить короткое замыкание в цепи, не будь защиты от дурака (аля ООП), пусть даже на базе форм-фактора разъемов.

  3. rgaliull
    /#10694179

    подскажите, пожалуйста, ссылки для заказа всего добра.
    Сын давно просит.

    • Lungo
      /#10694915

      На Алиэкспрессе этого добра валом, как в наборах, так и по отдельности

    • DonArmaturo
      /#10695001

      Есть еще BHV (книжное издательство, да!). Заходите на сайт bhv.ru и ищете «Arduino». Там есть штук 5 наборов (ардуинка, макетная плата, детальки и узлы) сразу с книжкой по роботостроению и ардуино-программированию. Но там цены от 4 до 9 тыр. Можно заказывать через Wildberries, ну, или еще какие службы, выбирая подешевле.
      Если нет готового набора навыков по преподаванию ребенку робототехники, лучше воспользоваться готовым комплектом. Для начала.

  4. safari2012
    /#10694673

    я бы вместо передней опоры поставил одинарное колесо на вращающеся платформе.

  5. Wan-Derer
    /#10696417

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