Как стать автором
Обновить

Комментарии 54

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

Когда-то, в конце 90-х или в начале 2000-х (еще до ардуинок) видел проекты на клонах 8051 с встроенными в ПЗУ интерпретаторами. Помню бэйсик и форт. Программки загружались через UART в текстовом виде прямо в ОЗУ из любой консоли. Понятно, что производительность была на порядок меньше, да и объем ОЗУ - в стандартной 8051 - 256 байт, во всяких атмелах или филипсах (на тот момент) - единицы килобайт. И при выключении питания - все терялось. Но светиком поморгать ресурсов уж точно хватило бы. Как и большинству современных задач: часики, термометры, простейшая автоматика и т.д.

Поэтому автор не так уж и далеко ушел. Чутка не хватило :)))

Да, но сейчас есть флеш память. поэтому данные не теряются.

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

Да-да именно он

Единственная ценность Ардуино как платформы это быстрый вход. И в это ее же и главный недостаток. Поморгать светодиодом в одну строку можно практически где угодно. Моргание светодиодом совершенно бессмысленное занятие.

Для большинства MCU вам кроме девборда, будет нужен деббагер превышающий стоимость самой платы, неудобная IDE на базе Eclipse, и еще более неудобное SDK в котором чтобы «поморгать» придется подключить ворох импортов и написать с десяток строк. Да и делать Франкенштейна из dvd привода тоже не сказать, что полное смысла занятие)

Фирменные девборды и дебаггеры это зачастую просто выжимание денег из клиентов. Впрочем, в большинстве случаев у них есть недорогие заменители. А вот странные IDE, кодогенераторы и программаторы преследуют многие платформы. Но зачастую можно использовать GNU тулчейн и OpenOCD.

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

Ценность платформы Ардуино в том, что можно в одной среде писать под кучу разных контроллеров, не заморачиваясь с настройкой окружения под каждый. У меня есть проект, в котором 2 контроллера в связке 8 битный и 32 битный и весь код для них написан в Arduino IDE. Поддерживать такое одно удовольствие, так как не нужно вспоминать как там все настраивал несколько лет назад на другом компе.

Все задачи в конце концов сводятся к морганию светодиодом ;) Конечно же на ассемблере можно мигать значительно быстрее. Но если быстродействия хватает, и в память оно помещается - в чем проблема? Зачем выпиливать ещё одну реализацию Serial.print, если можно взять готовую?

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

Единственная ценность Ардуино как платформы это быстрый вход.

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

И в это ее же и главный недостаток.

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

Поморгать светодиодом в одну строку можно практически где угодно.

Конечно. Как базовая проверка работоспособности - вполне приемлемое решение. Что код в одну строку в принципе скомпилировался и прошился, что в ответ на прошивку контроллер в принципе подает какие-то признаки жизни, причем ожидаемым от него способом.

Моргание светодиодом совершенно бессмысленное занятие.

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

Ценность платформы Ардуино - быстрое прототипирование. Есть библиотеки для всех мыслимых железок и стандартных задач. И к тому же поддерживается куча разных контроллеров.

Ага-ага, только прежде чем «решить более сложные задачи» придётся переписать половину этого «фреймворка» (точнее - продукта жизнедеятелтности). Бонусом - найти неглючную версию загрузчика, не окираичивающего плату при попытке использовать ватчдог. Или и его переписать 🤦🏻‍♂️

"Ардуино" можно сделать из одного контроллера, пары конденсаторов и кварцевого резонатора. Прошить загрузчик.

А где же фотографии получившегося стенда для опытов. Ну и явно нехватает описания, а как же эту "Ардуину из помойки" программировать? Куда подключаться и чем, каким софтом программу компилировать и заливать в процессор или ПЗУ?

Получилась чисто теоретическая заметка, без демонстрации реальности. Ценность статьи в результате, минимальная.

ПО заливается в мс памяти через программатор

А можно было бы через OpenOCD, и не париться с флешкой вообще

У меня есть ролик на YT подробностями, но я не уверен, что авторы статей могут давать ссылки на свой канал

Тогда стоило сделать более полную транскрипцию того ролика

Это собственно и есть.

А устройство "в железе" где? Хотелось бы в действии посмотреть...

Можно сам ролик встроить, если он по теме. Это не нарушает правила.

Добавил

А почему бы и нет? Особенно если видео - приложение к статье.

Добавил!

Если нет программатора с кроваткой, то можно прошить прямо утилитой от привода, через ide разъём. Только осталось найти древний комп :) правда скорее всего сделать это можно один раз, пока в приводе находится родная прошивка и он определяется по ide. Поэтому можно запастись второй микросхемой памяти и попробовать перетекать на ходу. То есть загрузился с родной, достал, воткнул свою и шей. Костыли.... Проще взять программатор с полки.

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

Есть еще русская народная сказка " Суп из топора"

-------------------------

Не могу понять автора статьи, который признается, что не умеет программировать.

Что может быть проще и дешевле и практически бесплатно, чем ESP8266 (80КБайт ОЗУ 4МБайт flash) всего за 160 руб(включая доставку) плюс SDK,OS,IDE бесплатно.

Практически все интерфейсы включая WiFi.

или этот модуль (чип TLSR8266) еще лучше с BLE,USB за 200 руб (включая доставку)

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

ESP32 - это черный ящик. Там внутри какая-то операционка, ты можешь с ней взаимодействовать через SDK и только. Это не настоящий embedded, оно не дает тебе возможности пощупать железо.

Вообще-то я написал ESP8266. Использовать ESP32 не рекомендую. Особенно для начинающих.

В ESP8266, как и в ESP32, есть RTOS.

В ESP8266 использую Bare metal для работы с датчиками т. е . вообще без OS ,что сокращает потребление примерно в 6 раз.

Если надо WiFi, то загружаю NonOS, передаю данные и возвращаюсь в Bare metal.

В итоге потребление уменьшается на порядок.

Об этом писал на хабре.

И все это бесплатно.

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

ESP32 как и ESP8266 имеют большие импульсные токи( до 400 mA). ESP32 в режиме BLE тоже много кушает. В итоге требуются источники питания(батарейки) с большим импульсом тока (по документации до 500 mA).

Выше на картинке модуль jDY-10 на чипе TLSR8266. Он без проблем работает от одной батарейки CR2032. Но он тоже не новый. Новые чипы BLE потребляют импульс тока не более 5 mA, что в 80 раз меньше, чем требует ESP32.

Еще у ESP32(ESP8266) приемо - передатчики имеют кпд примерно в 2 раза меньше, чем у новых чипов - а это существенное потребление.

Кроме того, ESP32 (вариант с 2 ядрами) сложно программировать, а задач для двух ядер в автономных устройствах мало.

Можно вместо ESP8266 взять ESP32C3 - RISC-V Single-Core CPU 2.4 GHz Wi-Fi (802.11b/g/n) and Bluetooth® 5 (LE) Optional 4 MB flash, но импульсные токи:

Я как раз на 2032 целил, ESP32 подкупил кучей плат и документации. Если брать тот же JDY-10 то для меня как полного нуля вообще не понятно куда копать (

CR2032

Номинальное напряжение 3в

Номинальная ёмкость 210 ma*ч

Стандартный ток разряда 0.4ма

Продолжительный ток разряда (макс) 3 ма

Импульсный ток разряда (макс) 15 ма

--------------------

У ESP большие импульсные токи обусловлены наличием WiFi.

Если WiFi не надо, то надо смотреть в сторону чипов с BLE(Zigbee). Таких чипов сейчас много. Например:

https://www.telink-semi.com/protocols/bluetooth-low-energy/

или это

или чипы NRF52xxx, NRF53xx,СH58x.

Да, Wemos D1 - самое оно. Тоже именно такой модуль везде использую. Было дело, еще с "голыми" ESP-12E помучался и понял, что оно того вообще не стоит (даже не буду оставшиеся использовать).

Да, Wemos D1 удобно для разработки софта и тестирование внешних модулей датчиков.

Но ESP-12E удобно ставить в автономные устройства и в розетки. Все что нужно для их нормальной работы и программирования это две микро кнопки, три SMD резистора, которые ставим с обратной стороны модуля. Адаптер USB-UART в устройствах с батарейкой или солнечной панелькой не требуется. Для программирования можно использовать один(плюс AMS1117-3.3) на все устройства, например, такой:

или программировать "по воздуху". В результате получается более компактно, чем с Wemos D1.

Но ESP-12E удобно ставить в автономные устройства и в розетки.

Я ж по этой причине (в том числе) и пробовал их тоже использовать. На 3Д принтере ж дома можно какие хочешь корпуса миниатюрные смоделировать и напечатать.

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

И последний "гвоздь" -- прошивка модулей. Я-то купил заранее программатор подобный. Собрал на макетной плате все как надо (и две кнопки на нее)........ В общем, это какой-то ужас из проводов. :) Прошиваешь и не дышишь, чтобы ничего не выскочило. А если отдельный "сокет" под ESP взять, чтобы удобно было подключать, а все остальное уже нормально спаять, то ... Зачем тогда все эти свистопляски. Размер esp12 и wemos-d1 не сильно отличается. Вряд ли большинство людей столкнется с ситуацией, где ПРИДЕТСЯ использовать esp12 чисто из-за размера модуля.

P.S. Единственный приемлимый вариант -- посидеть и поперепрошить сразу пачку модулей прошивкой минимальной, где включить сразу прошивку по WiFi. И не возвращаться к этому вопросу больше (это если оптимистично).

Сочувствую.

-----------------------

Но на самом деле все гораздо проще. Прошивал ESP-12E наверное раз 100 и без проблем.

SMD паяются очень просто с обратной стороны модуля. Один конец непосредственно к пину платы, другой на голый провод к 3.3v. Три резистора паять 2 минуты.

Для режима сна ставим диод шоттки между пинами модуля. Аналогично кнопку ресет и кнопку режим.

Корпуса беру на Али пол.доллара с доставкой любой нужный размер. Сейчас у меня три форм-фактора корпусов для поделок. В розетку делал бескорпусной вариант.

----------------------

Если освоите ESP12E, то еще лучше в устройствах использовать ESP8285 . Это тоже самое, но флеш внутри чипа 1MБайт. размер в 2 раза меньше и работает от 2.5 в.

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

----------------

ESP12E и ESP8285 обеспечивают меньше ток сна( до 5 мкA ), чем Wemos.

---------------------

Но это в прошлом. Сейчас использую ESP в основном с отключенным приемо-передатчиком для отладки алгоритмов работы с датчиками и ввода информации с датчиков в ПК.

А он программируется при помощи ассемблера?

Ардуино тут причем?

Удобство программирования? На нуле. Писать код надо по взрослому.

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

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

А то, что микропроцессоры и микроконтроллеры можно использовать по своему усмотрению - вот это новость! Никто об этом не знал!

Короче, проще как раз таки для проектной деятельности купить горсть микропроцессоров/микроконтроллеров, зато они будут задокументированы донельзя. Например, вижу на Али лот Stm32f103c6t6 500р/20шт. 20 штук как 2 шаурмы, а программировать можно также как и ардуину, и даже в ардуино иде и с ардуино "фреймворком". Прошивка правда, через stlink - тоже внешний программатор, зато с живой отладкой кода.

Например, вижу на Али лот Stm32f103c6t6 500р/20шт

А это точно STM32, а не, скажем так, клон или, точнее говоря, подделка?

А какая разница? Суть коммента была в другом. Пусть даже 50р за штуку стоить будут, в итоге за двадцатку 3 хорошие шаурмы требовать будут. И все остальные плюсы останутся. А вообще, да, эти МК из младшей версии синей пилюли реально недорогие.

А какая разница?

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

Я же пояснил: хочется точно не подделку - плати больше более доверенным источникам, при этом цена все равно не улетит в космос. Зачем эта простыня про подделки?

Забавно, статья "про Ардуино" вызвала лёгкий хейт даже без Ардуино внутри)).

На самом деле интересный кейс тем, что для экстренных случаев контроллер, который модно запрограммировать на коленке можно выдернуть из всего. У примеру, я esp8285 (или какой там со встроенной памятью) находил в выкинутых умных гирляндах в виде платки с ИК приёмником, пятаками для программирования и сразу ключами для управления лентой rgbt.

Так ужеж давно из стиралок вся страна вынимает :). А надо было из старых cd...

Если надо дозарезу к завтра, либо ты на северном полюсе - это вариант. Во всех остальных случаях проще заказать и чуть подождать просто перепланировав планы. Тут есть ощущение, что пока будете разбираться с такими донорами, можно съездить и купить что-то заведомо рабочее.

Обычно не в МК проблемы, их как-раз можно иметь запас. А вот периферия всякая может быть болью. То одного не хватает, то другого. И она менее взаимозаменяема, к сожалению.

Для мкс вариант подойдёт. Туда доставка с али не работает

Так у них там стиралок вроде нету, неоткуда брать.

ARM Keil и Intel 8032? Это как?

А из платы HDD?

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации