Pull to refresh

Comments 70

Слово в защиту модулей из состава "экосистем". Главное их преимущество - унификация. Какой бы модуль ни был по назначению, на нём, как правило, одинаковое расположение и маркировка контактов. Это даёт возможность дать быстрый старт на начальных уроках (тыц конец, тыц второй, и работает!), не отбив у детей желание кучей малопонятной технической информации. Но если бюджет ограничен, то согласен - Китай наше всё.

Тут два фактора. Первый - это бюджет, как Вы абсолютно верно и сказали) С ним у нас всегда сложно) Поэтому - "голь на выдумки хитра".

Второй фактор тот, что у нас сама цель - научить детей работать с самыми доступными запчастями. Да, чуть сложнее. Но тут от учебной программы зависит многое. У них перед этим весьма ядрёный курс аналоговой электроники идёт, который неплохо так закаляет. Важно, что дети учатся работать с теми запчастями, которые и им самим по карману - а значит, могут купить себе такие же и работать дома. В общем-то, в этом и цель обучения: научить креативить без помощи кружка и наставников, обращаясь за помощью в инет и свои конспекты)

В микробит есть радиомодуль, в RPI Pico вайфай и блютуф, так что даже без дополнительной периферии можно много всего сделать. И зачем детям C++? Ассемблер плюс Си плюс питон предоставляют несравнимо больше возможностей, притом и качественнее и быстрее. На Pico и vga и hdmi и что еще только не делают используя встроенные машины состояний и микроассемблер - при стоимости чипа в 3 доллара в сезон скидок.

На вкус и цвет, как говорится)

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

Выскажу своё мнение.
Ассемблер, вряд ли освоят или будут осваивать самостоятельно после Ардуино инструментария, а Форт, Лисп, Smalltalk, Tcl/Tk к примеру, ортогональны освоенным языкам в их понимании к используемым с Ардуино. Вот Лого может быть освоен. :)


P.S. Добрынин Д.А. История создания минироботов в ЦДТ "Родник"


Добрынин Д.А. Принципы построения малых мобильных роботов — мобильной платформы "Crazy Mouse" и робота-собаки "Робик"
imageimage

Выглядит страшно, вряд ли такое может кому понравиться, как утверждает автор по ссылке. Ну и терминология там жуткая - «коробочки от пыли», «рулевые машинки», серьезно? А по делу ничего и нет. Помнится, по кибернетике (которая имела сомнительный статус в СССР) были издания с названиями вида «Теория цепей обратной связи» (видимо, чтобы кому не надо, не догадались, что это та же кибернетика) и там теория конструирования самых различных автоматов была изложена вполне детально. Увы, точные названия уже не помню, может, кто-то из комментаторов подскажет.

Да, это интересная ретроспективная информация к прочтению, а если есть интерес
пощупать Форт (Forth) к примеру на AVR, STM32 или других контроллерах и/или ПК, то есть неплохие проекты с их реализацией
Вот некоторые из них навскидку, коих, конечно же, намного больше.
(и часто их реализации можно видеть сделанные на базисе языка ассемблер)


для AVR:
amForth
FlashForth
eForth


для STM32:
Mecrisp-Stellaris
VFX Forth community
SwiftX Forth


для STM8, 8051, PIC… тоже есть разные варианты.


P.S. И даже такой, к примеру, проект IDE using MikroForth for the ATMEL AVR Attiny 2313 in 20 Pin DIL


image


А, вообще есть русскоязычный форум для интересующихся Форт (Forth) языком и сопряжёнными интересами http://fforum.winglion.ru/
где всевозможных ссылок связанных с Форт насыпано немеряно. :)


а также Телеграм канал по Форт и саморасширяющимся системам программирования

Я буду очень рад, если научите с таким работать

ОСОБЕННОСТЬ 2 – «яблочная» продукция в принципе не умеет общаться с блютусами

Вот тут не понял, как тогда работают сотни приложений на iOS, где применяется Bluetooth?

Окей, яблоки не работают с теми блютусами, которые мы используем в работе. Либо их как-то настраивать нужно особым образом.

На вопрос о том, как работают "сотни приложений" - не отвечу, за айфоны не особо в курсе.

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

Разработчики приложения — зарегистрированы в Apple и, вероятно, платят за доступ.

Сложность написания своего личного приложения и установка его на айфон зашкаливает. Ну и блютус нужен ble4.0 минимум.

Даже не сложность, а кол-во расставленных Apple граблей. Нужен мак (или хакинтош), сертификат покупать, как-то дороговатое удовольствие для радиолюбительской практики. А сейчас ещё и не самое простое.

У себя обнаружил вообще странную историю, после переезда на новое яблоко мне вообще не получилось запустить свою программу на своем айфоне. Пишет что-то вроде «Сбой проверки приложения от Apple Development…» и все. Видимо связано с обновлением iOS 16. В общем хотел изучать Swift, но из-за таких каруселей забил.

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

Так что использовать Bluetooth на iPhone в кружках и радиолюбительской практике технически можно. Практически дешевле купить б/у смартфон на Android и не мучатся.

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

У меня и локально не работает ничего за пределами эмулятора. На iphone так и не получилось поставить приложение

Ну, слушайте, вот специально проверил - даже чатгпт выдает несколько способов, как без аккаунта разработчика на айос установить приложение локально. Уж точно это несравнимо проще, чем, скажем, с «железом» работать без девборды и отладчика.

Рекомендую присмотреться к модулям на чипах Telink. Например, один из первых таких модулей, SoC ( 32-bit MCU+flash+RAM+ADC+...)+BLE4.2 , дешево, это модуль JDY-10 (цена от 100 до 140 руб) но надо брать именно на чипе Telink (см фото). Чип не новый, но фактически содержит ардуино с большей памятью и питанием 3.3 в. Но лучше брать модули на новых чипах Telink, которые поддерживают BLE5,Bluetooth® Mesh, Zigbee, RF4CE их можно посмотреть здесь https://www.telink-semi.com/for-developers/ . Telink альтернатива чипам Nordic, который ушел из РФ.

Полагаю было бы интересно ребятам делать говорящих роботов. Для этой цели есть дешевые MP3 модули с усилителем , флеш памятью на 4МБ или SD картой до 32 ГБ. Можно синтезировать речь на основе словаря. На базе ESP8266 (модуль ESP12) можно сделать TTS на основе библиотеки flite. Все это использую в своих разработках.

Говорящих уже делаем, у меня в вк есть видео и посты по теме) Сперва боевой робот заговорил репликами Голиафа из второго старкрафта, а затем мы освоили нейронки... И понеслась. Анимэ, пацаны...

было бы прекрасно увидеть в конце статьи ссылочки на ваши ресурсы (ВК, телеграм и так далее)

Прошу прощения, ухитрился забыть... Благодарю, что напомнили!

Также надо ещё раз донести до детей, что пины 0 и 1 на ардуинах мы не используем до особого распоряжения

Я так понимаю, что Вы используете только классическую Уно и ее "родственников"?

В Леонардо и ее клонах такой проблемы нет, поскольку разделены аппаратный последовательный порт на 0 и 1 и последовательный порт, через который подключен USB и осуществляется программирование.

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

Дешевле обычные камешки. На atmega32u4 мы делаем более сложные проекты, не усебно-повседневные.

Arduino Pro Micro, аналог Leonardo, если их в известном месте заказывать, стоит рублей 300-400 при заказе от 10 шт. Помимо описанного преимущества, они при подключении к PC могут изображать из себя HID-устройство. Недавно на Хабре была статья, как на основе этого беспроводной джойстик сделать.

Также, он может в PC выглядеть, как MIDI-устройство. Я с использованием этого сделал MIDI-синтезатор. Если в кружке тема цифровой музыки когда-нибудь всплывет, можно эту фичу использовать:

https://habr.com/ru/articles/731036/

Я примерно представляю возможности 34U4, так как у меня диплом был с его использованием)

Эти фичи (HID и MIDI) обусловлены тем, что 32u4 что-то особенное внутри имеет, или просто кто-то не поленился для него соответствующие библиотеки написать? Для других МК такие фичи можно реализовать, или для этого какие-то особенности в чипе должны быть заложены?

Arduino Mega такое же позволяет, например?

А что за запрещённые частоты, на которые можно попасть в указанном диапазоне?

А вот и не знаю. Знаю, что разрешена для всякой самодеятельности и на небольшой мощности 433 МГц. А остальные частоты, видать, под что-то другое заняты. Раз заняты - зачем туда лезть, правильно?)

450-470 МГц - МВД

495-505 МГц - Международный диапазон для передачи сигналов азбуки Морзе и сигналов бедствия.

406-407 МГц - Частоты спутниковых радиомаяков для международной поисково-спасательной системы КОСПАС-САРСАТ

328,6-335,4 МГц - Частоты воздушной радионавигационной службы

Можно использовать передатчики 433 МГц мощностью 0.01 Вт и 446 МГц мощностью 0.5 Вт (на частоте 27 МГц можно использовать передатчики 10 Вт, но думаю эта частота мало кому интересна)

HC-05 или HC-06 — не рекомендую

А что с ними не так? Я когда-то использовал — вроде никаких проблем не было.

Точно не скажу, давно это было. По воспоминаниям они троили как-то совсем не очевидно, в ряде случаев их смартфоны даже не видели. И недавно ко мне обратился за покупкой блютусов мой коллега, который кратно опытнее меня во всех технических делах. Я ему сосватал SPP-C эти модули. И друг сказал, что они себя гораздо стабильнее ведут, чем HC. Больше он HC не покупал.

Опять же, HC дороже чутка.

Все верно. HC-06 пришел с кривой прошивкой. Рвет serial соединение на расстоянии 30см при интенсивном обмене данных (ставил на коптер для отладки через мавлинк). Проблема явно не аппаратная, так как поведение не меняется хоть 10см, хоть 5 метров.

Воткнул вот эти модули, и вообще все стабильно) не единого разрыва хоть с ноута, хоть с телефона.

esp8266 подустарела. Лучше сразу esp32. Там аппаратно можно вывести Serial почти на любые пины. Можно отлаживать брекпоинтами и смотреть в память без доп оборудования.

Очень много примеров идёт с родными пакетом для ардуино.

Ну и блютуз сразу на борту ?

esp8266 подустарела
Старенькая, но надежная и приятная при правильном обращении. Главное обеспечить хорошим питанием, так как wi-fi довольно прожорливый в них. А возможностей достаточно чтобы поднять веб сервер и подключаться с любого девайса с wi-fi и браузером.

ESP32 точно такая же) но из опыта менее требовательна к питанию. Ну и памяти и мощщи хватает что бы что бы воспроизводить интернет радио, или сделать ip камеру, которая сразу может быть установлена на колёсную платформу или коптер, попутно управляя двигателями.

Ещё там разрабы подключали микрофон и делали умную колонку. Стоит она конечно на 20-50 % дороже esp8266, но потенциала очень много)

Ни в коем случае не спорю, что ESP32 лучше и современнее. У меня небольшой опыт работы с ними только потому, что возможностей ESP8266 хватало для возникающих задач.

Главный минус у ESP8266  - очень мало доступных gpio.

Интересно, что и на esp8266, esp32 тоже портируют и используют Форт (Forth) и в рамках Ардуино реализации. :) (на Github находятся такие проекты)


И, к примеру, на сервисе Wokwi какие то из них можно проверить на работоспособность.
EspForth ("немного" тормозит у меня в используемом интернет браузере FireFox, но по истечении некоторого времени приглашение в консоль выводит и для возможности выполнить слово WORDS)


Помигать светодиодами из команд консоли на классической Ардуино


12 output 12 wiggle 11 output 11 wiggle


Запускается даже на Atmega такой код c Cortex-M0 (вставив вместо выше кода)
M0-Forth.ino


если подправить его к примеру так.


define RAM_SIZE 0x300
define S0 0x0100
define R0 0x0200

слово WORDS при наборе даже что то печатает и сама программа этого интерпритатора не крашится, хотя заточена на 32-бит ячейку хранения слов в словаре.


P.S. В скетче Aрдуино можно использовать и ассемблер AVR.
(в немного непривычном смнтаксисе)
Примeр с сайта Wokwi


А, кто то даже создал целый сайт FORTH & Arduino / ESP32
(с французкими корнями)


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

Хотелось бы мне знать - в каких случаях без ассемблера на Arduino прямо никак? Я знаю только один случай - с помощью команд nop можно выдерживать паузы с большой точностью.

То-то и оно, что пока не находил таких случаев. Наверняка можно что-то сделать оптимальнее, чем на ЯВУ, дооптимизировать функции - но пока нет таких задач

Внутри Arduino IDE компилятор gcc. Переплюнуть его в плане вручную написать более быстродействующий код на ассемблере - весьма нетривиальная задача. И то, успеха можно добиться, скорее, на CPU компьютеров, в каких-то специфических задачах, с использованием всяких инструкций вроде SSE, знанием особенностей кэша процессора и т.д. Написать вручную код для микроконтроллера на ассемблере, чтобы он работал быстрее - можно, наверное, но мне очень хотелось бы увидеть реальный пример того, когда это получилось. И когда прирост скорости в несколько процентов не потребовал огромных усилий и/или опыта. Я уж не говорю о том, что код получится непереносимым на другие МК.

Ну не знаю… Если обработчик "короткий, как выстрел", то у меня ассемблер почти вдвое быстрее получился — 11 тактов в целом против 20 (на o3). Это код к статье о реле.
А применение ассемблера — однозначно требует и опыта и знания целевой архитектуры.

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

Для реле — нет. А для исследования дребезга контактов — я посчитал уместным.

Ок. Просто если пытаться именно ускорить код ради ускорения работы, нужно не забывать про два момента. Во-первых, сколько на это затрачено усилий, и стоит ли оно того. Во-вторых, даже если какой-то кусок кода удалось ускорить в 2 раза, обычно он является не законченной процедурой, решающей какую-то задачу, а только частью. И если эта часть от общего времени исполнения занимает, например, 1/10 часть, то общее ускорение всего кода будет почти незаметным.

Если нужны нормальные брекпоинты и второй аппаратный сериал, лучше смотреть сразу на ESP32S2\ESP32S3 (про С серию не помню)

Я до сих пор только с Arduino Pro Micro/Nano работал, думаю попробовать ESP32. В какой среде с ней работать лучше? Arduino IDE позволяет это делать, в том числе брейкпойнты ставить?

VScode (с platformio ide) точно позволяет и как бы является рекомендованным для ESP. В Arduino IDE вроде что-то добавляли для нормальной отладки только во второй версии, но не проверял.

В Arduino IDE мне куда более прозаических вещей в редакторе не хватает. Например, нельзя банально закладок по исходникам расставить, чтобы быстро ходить по ним, как в MS Visual Studio.

Вторую версию тоже не ставил ещё, надо попробовать.

Закладками в VSCode не пользовался, но они там через расширение ставятся. Зато по сравнению ардуиной нормальная навигация по файлам проекта. Единственное что в ардуине мне было удобнее: меню настройки конфигурации плат (тип процессора, объем памяти и т.д.) и порта программирования.

USART ( serial port ) на 16MHz (arduini UNO/Nano ) не очень хорошо работает. Если припаять кристалл на 1.8432 MHz/3.6864MHz/7.3728MHz etc все ошибки исчезнут. Только не забыть подправить fuses касающихся кристалла.

А есть где-то описание причин описанной проблемы? И что значит "не очень хорошо работает", в чем это проявляется?

проблема в невозможности поделить 16MHz, 8MHz etc кратно скорости USART ( 2400, 9600, etc ) и выражается в ошибках при приеме-передаче. google : atmega usart bound chart выдаст кучу таблиц вроде этой где наглядно показано что происходит на разных частотах процессора и RS232

Это реально к потере данных приводит?

Надо не "google: atmega usart bound chart", а доку на микроконтроллер прочесть (откуда и скопирована таблица). Там весьма доходчиво объяснена верхняя граница ошибок битовой скорости USART. 2-3%, ЕМНИП.

Но Ардуино - это не для читателей, а для копи-пастеров. :-(

relax, mate. не все знают английский, не всем надо зубрить datasheet как отче наш. Если кто-то хочет помигать светодиодом через rs232 я только за и готов помочь всем, чем могу.

Если Вас интересует дальнобойность и энергоэффективность - посмотрите на LoRa модемы. Хоть и медленная связь, но очень дальнобойная. Очень широко их используют разные ракетомоделисты. У меня есть опыт стабильной связи с ними на ~100км прямой видимости. Бывают на разные частотные диапазоны: 433 МГц, 868 МГц и даже 2.4 ГГц.

Они сложны в настройке (для кружка наверное даже слишком), но для ардуино под них есть довольно много неплохих библиотек. А еще бывают модемы с встроенным МК, который сложную настройку берет на себя, а наружу оставляет простой UART с АТ командами.

Примеры конкретных микросхем - sx1268, sx1280.
И примеры модемов - E22400T22S, RA-01. У производителя E22 - вообще очень много чего интересного есть что можно посмотреть

На такие частотные диапазоны не нужно разрешение получать?

Это так называемые ISM диапазоны, которые условно по всей Земле можно использовать без разрешений при выполнении некоторых требований (по мощности и ширине полосы в основном).

Попробовал поискать официальные решения от ГКРЧ о том, где можно излучать и как именно, но там что-то у них все очень сложно. Вот в этом посте в начале есть табличка: https://habr.com/ru/articles/164215/. Примерно совпадает с моими представлениями

Вы упоминаете о том, что не рекомендуете BT-модуль HC-05. Можете пояснить, почему?

Я вот здесь упоминал о том, что мне с таким модулем не удалось достичь стабильной работы плеера на Arduino при управлении по BT как раз через модуль HC-05:

https://habr.com/ru/articles/743234/

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

Я до сих пор не знаю, то ли модуль ненадежный, то ли я как-то неправильно с ним взаимодействие реализовал. Рекомендацию автора программы RemoteXY выполнил - процедуру синхронизации вызываю часто, 50 раз в секунду по прерыванию. Куда уж чаще? Пробовал и в основном цикле loop с разной частотой вызывать, все равно дольше нескольких минут стабильно не работает.

Да, в общем-то, потому же: нестабильность работы при отсутствии понятных и диагностируемых причин.

Прочитал выше ответ на свой вопрос. Попробую при случае SPP-C.

Sign up to leave a comment.

Articles