Всем здравствуйте! Тема в принципе из заголовка ясна, она, собственно, и является темой моей курсовой работы. Но учусь я заочно и знаний ноль дают, в итоге карабкаюсь сам. Поэтому огромнейшая просьба, укажите с чего начать, как разобраться, готов лопатить литературу, но чтобы она понятная была, для чайников, вот прям понятным языком всё расписано. И желательно в электронном варианте конечно. Видео готов смотреть, на форум отправьте, может совет просто какой-то! Теперь тезисно скажу как я думаю, в каких местах нужно устранить пробелы, точнее один пробел сплошной! Имеется кварцевый генератор, который выдаёт количество колебаний, далее идёт делитель частоты, чтобы эти колебания превратить в секунды, далее счётчик, дешифратор и светодиодный индикатор. Блок управления это кнопки, типа пуск, остановить.
Задание это создать структурную, функциональную, принципиальную схемы и спецификацию используемых элементов.
Итого как я думаю 1. Возможно есть у кого-то подобная работа или нормальная методичка, неплохо было бы взять за основу 2. Всё же хочется вникнуть для понимания как это происходит поэтому как я думаю о чём стоит узнать, но не могу найти источник для чайников 1. Рисование и чтение структурных и принципиальных схем 2. Смысл работы микроконтроллеров, их виды и так далее (в работе серия МКС 155) 3. Триггеры, что это, как выглядят и вообще всё всё о них (в работе тип D) 4. Индикаторы (как на нём формируются цифры) чувствую это оооочень важный момент (в работе 34 сд) 5. Двоично десятичный код, всё о нём прям вот с нуля и до необходимого уровня. 6. В целом может есть информация от и до по созданию подобных часов только понятная для чайника. Если вдруг вы увидели хоть один пункт и у вас есть что подсказать буду рад любой информации! Дело не столько в сдаче курсовой, её можно и купить) просто хочется приблизиться к подобной сфере, а тут ещё и повод для этого. Поэтому буду рад любой информации! В группе если что спрашивал, но все идут по пути наименьшего сопротивления, надеюсь здесь есть неравнодушные! Заранее спасибо!
Сделал ПЛК, совместимый с Мицубиси FX2N. С "железом" можно ознакомиться по ссылке в конце поста. Программируется из любой IDE от Мицубиси, поэтому доступны все языки из 61131-3. Реализована бОльшая часть команд из набора оригинального ПЛК. Часть команд реализованы в виде функциональных блоков, чтобы задействовать периферию STM32, часть в процессе реализации. Есть много отличий от оригинала, например, на борту есть Ethernet, EIA-485, CAN. Программирование ПЛК осуществляется через Ethernet. В рантайм встроена поддержка Modbus всех видов и лиц. Для настройки расширенного по сравнению с оригиналом функционала используются конфигурационные файлы, которые доступны через встроенный ftp-сервер. Средний темп исполнения 1000-1200 шагов за 1мс при включенной отладке, опросе слэйвов по Modbus/RTU и опросе самого ПЛК из СКАДА. Код рантайма написан на С++ изначально без привязки к конкретному МК, поэтому может быть перенесён на любой МК, для которого есть FreeRTOS. Была даже сборка по Windows, когда отлаживался протокол между IDE и ПЛК.
Продолжаю тестирование своей разработки (IDE, компилятор, runtime) на разном железе. Сравнивая с ПЛК от Mitsubishi на этом же камне.
В сети давно уже есть тесты с примером использования микроконтроллера STM32F103 в качестве ПЛК. Также продолжается выпуск китайскими компаниями современных ультра дешевых (около 100$) ПЛК на базе этого микроконтроллера с использованием среды разработки от Mitsubishi. Поэтому интересно было и мне попробовать этот чип и сравнить с брендом.
Схема виртуальной памяти машины в режиме вытесняющей многозадачности
Вытесняющее-многозадачный , значит если задача не успела отработать - ошибки не будет(в обычном режиме - будет). Контекст задачи сохранится и наша виртуальная 3o|||sheet OS переключиться на другую задачу. В данном тестовом случае задача не большая, отработать - успеет, и результаты будут корректны.
Алгоритм теста:
Тестовая программа содержит 184 LD, часть из которых истинная, часть ложная. Зная количество истинных , мы знаем количество отработанных команд.
Каждая вкладка в моей среде разработки - новая задача. Это будут вытесняющие задачи с ОС или последовательные задачи без ОС , режим работы сохраняется в настройках проекта.
Компилятор и выполняемая среда данные не кеширует, и работает программа в самом трудозатратном режиме. В конце тестовой задачи устанавливаем/ сбрасываем физический вывод.
Замеряем время осциллографом.
По тестам видно, что мой ПЛК работает в три раза медленнее чем на том же чипе но с средой о Mitsubishi. Почти 9 микросекунд за операцию в моем случае, против 3 микросекунды оппонентов. Да мой МК работал на 64 Мгц (не запустился внешний кварц, дефект платы, а внутренний HSI работал на 64 Мгц, до 72 не настраивался, оставил так) в отличии от 72 Мгц у Mitsubishi, но 10% роли не изменят, можем пренебречь.
Но если б я стремился к быстродействию, я б пошел коротким путем, которым идут как отечественные разработчики ПЛК, так и открытые проекты типа OpenPLC\Beremiz. А именно - простая трансляция LD/ST в текст СИ, и уже СИшным компилятором создавать прошивку.
Я выбрал сложный путь - создание полноценной виртуальной машины с компилятором. Что это дает? Дальше.
Что можно выжать с STM3F103 в качестве ПЛК с моей средой разработки.
1500 LD инструкций + 1500 дополнительно можно подгружать из флеш ( Mitsubishi предлагает 8000, Allen Bradley Micro810 - 2000 LD). Сколько влезет ST строк - трудно сказать, сложно измеряеммый, думаю около 500 -800 строк + стоько же с флэш (имеется ввиду версия МК с флэш 64 КБ. Так как моя версия оказалась - 128 Кб , по крайней мере так указывалось в утилите STLink. С этой версией (128кб) размер программы будет конечно не малым, LD как раз 8000, так и ST.
Критический код, можно отделить от кода с высоким риском фатальной ошибки. Связь, HMI и даже WEB сервер в ПЛК можно вынести - отдельно. А критический отлаженный код, отдельно. Что бы там не произошло в одном исполнителе - фатальная ошибка, никогда не остановит других исполнителей. У них полностью изолированы друг от друга области памяти и адресов. Там где обычный ПЛК бы слетел полностью, тут такого быть не может.
Кроме того, есть и обычные преимущества виртуализации памяти:
в машине с ОС 3o|||sheet - можно добавлять задачи не перезапуская ПЛК физически (как в Windows/Linux - установил, и сразу работает) . Изменение кода задачи ПЛК на лету я уже упоминал.
Все это я продемонстрирую уже на микроконтроллере, о котором много писали СМИ ( тот который на RISC V, 16 KB ОЗУ :) Объективно, среда 3o|||sheet (Зошит) это первый вменяемый и уже существующий инструмент который может превратить такой МК с ограниченными ресурсами в ПЛК причем с топовой функциональностью. На этот раз и вправду - аналоговнет).
Почему я полностью не пишу что имею ввиду - работаю в паре с одним небольшим предприятием по этому конкретному чипу. Если интересно что из этого получилось - присоединяйся, и напишите в комментах что за чип имеется ввиду :)
Столкнулся с проблемой в одном китайском микроконтроллере. Они не умеют делать Flash память на том же кристалле, с самим микроконтроллером. Память делают отдельным кристаллом. Пример GigaDevice. См. фотографию из сети.
При запуске микроконтроллера, содержимое Flash считывается в SRAM буфер. И код программы выполняется из буфера.
Проблема в том, что мне нужно хранить данные во Flash. Код успешно пишет данные, но при чтении возвращается предыдущее значение, значение из буфера. Если выполнить сброс, то вычитывается свежее значение из Flash.
Мне же нужно писать данные и читать без сброса. Незнаю как заставить микроконтроллер обновить буфер.
Помню, как лет 15 назад в журнале (В бумажном) VOGUE появилась первая ВИДЕО реклама! Цветной ЖК дисплей на одной из страниц. Тогда половину тиража скупили айтишники и еще наверное год на хабре статьи публиковали про самоделки. Тогда это казалось магией. Как это? ЦЕЛЫЙ ЦВЕТНОЙ ЭКРАН В ЖУРНАЛЕ КАРЛ!!! БЕСПЛАТНО! А сейчас такое просто выкидывают в мусорку. И вроде радоваться надо, прогресс все-таки. Но как-то грустно от этого становится.
Концепция моего блога построена на том, чтобы давать новую жизнь устройствам прошлых лет. Чего мы с вами только не делали: и клиенты современных сервисов для смартфонов из 2010-х писали, и изучали их прошивки с последующей модификацией, и даже ремонтировали гаджеты со свалки, попутно разбираясь в их инженерных особенностях.
Сегодняшнему устройству едва исполнилось 3 месяца, а оно уже отправилось на свалку. И отправляются сотни таких каждый день. Сегодня мы с вами затронем очень важную тему - как из-за общества потребления тысячи устройств с очень мощными микроконтроллерами, цветными IPS-дисплеями и литиевыми аккумуляторами лишаются второго шанса на жизнь...
Предисловие
Вот уже последние лет 100 люди говорят о так называемом обществе потребления. Многие трактуют этот термин по разному, однако у всех определений есть одна общая черта: люди покупают вещи руководствуясь не только потенциальной нуждой, но и некой модой и желанием быть "не таким как все", зачастую пресыщаясь обилием выбора и теряя представление о реальной ценности вещей.
Производитель этого гаджета напирает сразу на несколько человеческих слабостей
Это же в равной степени относится и к электронным сигаретам. Школьники и студенты только и делают, что парят и "стреляют" друг у друга вейпы, но если лет 10 назад они в основном покупали многоразовые системы с возможностью заправки и самостоятельного обслуживания, то сейчас ребята предпочитают самый простой и доступный вариант - одноразовые вейпы.
Фото от подписчика. Теперь представьте сколько подобных гаджетов выкидывает среднестатистический студент за время сессии :(
Компании-производители знают свою целевую аудиторию и поэтому стараются выпустить как можно более необычное, красочное и функционально-продвинутое устройство. Сначала в "одноразки" добавили возможность повторной зарядки аккумулятора, затем приделали индикаторы уровня заряда и выбора мощности, а недавно добавили... Bluetooth и даже игры. Это уже звучит весьма странно...
Сам я человек не курящий и к обычным вейпам отношусь равнодушно. Но одноразовые вейпы всегда вызывали у меня гиковский интерес и некое негодование, а сегодняшнее устройство так вообще повергло в шок - не только своим функционалом, но и тем, что после израсходования жидкости оно отправится на помойку... А ведь оно могло бы получить и вторую жизнь - как действительно полезный гаджет!
Недавно мне написал читатель Андрей с Пикабу и предложил заслать одноразовый вейп без испарителя (рабочего элемента) на разборку и дальнейшее изучение. И как оказалось - это далеко не самая простая "парилка", а сложнейшее устройство с мощным микроконтроллером, радиотрактом, звуковым усилителем, дисплеем и тачскрином.
Изучаем
После получения я сразу же включил гаджет и начал его изучать. Оказалось что дисплей - не просто пришлепка к обычной "одноразке", но и её неотъемлемая часть: через тачскрин предлагается регулировать силу нагревателя, контролировать уровень заряда аккумулятора и объём оставшейся жидкости. Прикинув, я сразу же понял: в устройстве есть как минимум 2 канала АЦП для считывания параметров и ШИМ для управления "силовой" частью.
Смахиванием я попал в главное меню устройства, где было несколько интересных пунктов: плеер, игры, телефон, погода и настройки. Учитывая что собственной памяти у вейпа нет, я сразу понял что устройство умеет работать портативной колонкой и подключается к смартфону через Bluetooth.
Также здесь присутствует типичный для смарт-часов функционал: пуши с мессенджеров, возможность звонить с помощью HandsFree-профиля, а также базовый функционал органайзера по типу секундомера и будильника. На первый взгляд вполне неплохо, такого уж точно не ожидаешь от одноразовой "парилки".
Игры здесь весьма простые, частота обновления не впечатляет... Однако мне всё равно стало интересно: возможно ли на таком устройстве запустить, например, эмулятор NES или написать какую-нибудь свою игру? Можно ли удалить с подобных устройств испаритель и использовать в качестве "бесплатного" микроконтроллера с дисплеем?
Далее я узнал что гаджет можно синхронизировать с смартфоном и уже надеялся на какой-то магазин приложений... магазин действительно есть, вот только в нём продаются сгенерированные ИИ обои для устройства. Ни намека на возможность запуска сторонних программ нет - и это очень грустно.
Что внутри?
После изучения я решил разобрать устройство. Для одноразовых вейпов этот процесс зачастую необратим, поскольку производители делают всё для предотвращения возможности перезаправки картриджей. В случае сегодняшнего гаджета это делается снятием нижней части корпуса, которая не только приклеена, но и сидит на специальных защелках. Требуется осторожность и фен, иначе можно случайно порвать шлейф.
Далее мы видим крошечную плату, к которой подходит шлейф с дисплеем и тачскрином (судя по некой унификации, дисплейная сборка используется далеко не в одной модели вейпов), разъём Type-C и провода, которые соединяют плату с микрофоном (используется для определения силы затяжки) и динамиком (служит для выполнения функции BT-колонки).
Отдельно бросается большое количество подписанных тест-поинтов, с помощью которых мы можем вызвонить сигнальные линии на шлейфе дисплея и попытаться их использовать в своих целях. С левой стороны можно найти пины SDA/SCL/RST/INT - это, очевидно, тачскрин, а правее - SDA/SCL для дисплея. Контроллер дисплея и подсветка питаются от общей шины питания 3.3В без внешних драйверов LED.
Питается наш "бутерброд" от одного литиевого аккумулятора типа 18350. Я слышал противоречивые отзывы о банках используемых в вейпах, но думаю при использовании нормального BMS и микросхемы чарджера можно без опаски использовать их в своих проектах. Помните, на ближайшей свалке могут лежать тысячи бесхозных и бесплатных аккумуляторов для ваших самоделок (но всё же будьте осторожнее!)
С обратной стороны платы нас ждёт чудо инженерной мысли... от которого становится грустно. Сердцем устройства является микроконтроллер с маркировкой 701N-F8, который также известен как JieLi AC701N. Это относительно популярный чип, использующийся в TWS-наушниках и представляющий из себя полноценную систему на кристалле:
В основе лежит двухъядерный (!) DSP-процессор собственной (!!) архитектуры Pi32v2 с FPU, способный работать на частоте до 160МГц (!!!) и имеющий 32КБ кэша инструкций и 16КБ кэша данных. Также у чипа есть MMU для продвинутой адресации памяти или реализации защищенного режима. Это уровень RP2350 или старших версий ESP 32
В качестве памяти здесь доступно целых 640КБ SRAM-ОЗУ, а также 1МБ Flash. Вот это уже действительно серьёзно.
Присутствует Bluetooth-радиотракт, обеспечивающий совместимость с стандартом версии 5.3. С софтовой точки зрения здесь тоже всё хорошо: поддерживаются все основные кодеки, плюс есть поддержка не-звуковых профилей по типу L2CAP и RFCOMM для коммуникации с другими устройствами.
Есть также контроллеры I2C, UART, SPI, USB, MMC, GPIO и даже ШИМ.
За звук отвечает двухканальный ЦАП для с встроенным предусилителем и возможностью воспроизведения PCM-потока с частотой дискретизации до 96кГц. Также есть четырехканальный АЦП для сэмплирования звука с микрофона и других подобных целей.
А за питание отвечает встроенный PMU, который состоит из контроллера заряда Li-Ion аккумуляторов, LDO и DC-DC Buck преобразователя,
Это невероятно круто по меркам копеечного микроконтроллера. В каких-то моментах, AC701N даже круче чем привычные RP2350 и ESP32, и скорее всего даже дешевле. Производитель - публичная компания и охотно делится исходным кодом и файлами для сборки прошивок, однако адаптация референсной прошивки для этой платы может занять время. Внутри всё стандартно: FreeRTOS в качестве операционной системы, самодельный UI-стек, а также Bluetooth-стек от Bluekitchen. Джентльменский набор!
К сожалению маркировку остальных компонентов платы не разглядеть, но предположу что там может быть разведен усилитель и RF-тракт. В целом, гаджет имеет очень большой потенциал для использования и по не-прямому назначению: это мог быть прекрасный внешний дисплей для датчиков с передачей показаний через Bluetooth, элемент самодельной сигнализации (как уникальный брелок, который не вызывает подозрений), мощный микроконтроллер для самоделок по типу игровых консолей и самодельных телефонов и... да применений такому гаджету можно найти сотни. Было бы желание производителей...
❯ Заключение
Вот такой разбор одноразового вейпа у нас с вами получился... По правде сказать, дописывая эти строки мне стало максимально грустно: хоть я и не сорвал какие-то покровы и описал вполне очевидные вещи, всё равно мне хотелось выразить свои переживания касательно "одноразовых" устройств. Вдруг со временем что-то изменится и для таких гаджетов начнут релизить схемы и SDK - но я в этом сильно сомневаюсь!
А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты и щитпостю. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.
Если вам понравилась статья и вы хотите меня поддержать, у меня есть Boosty, а также виджет на Пикабу ниже. Всем огромное спасибо!
Запустил минимальный тестовый код. Плату пропаял и сделал проект на основе статьи с Хабра "Миландр + GCC + VSCode. Пробуем мигать светодиодом на отечественном ARM32 микроконтроллере". Но Я предпочитаю: Eclipse + xpack-arm-none-eabi-gcc + xpack-windows-build-tools + xpack-openocd. Встроенный отладчик тоже заработал. Дело в пайке.
1/2
Файлы для линкера MDR32F9Q2I.ld и startup_MDR32F9Q2I.S сделал свои. Иначе не собиралось. Всё остальное с сайта Миландра. Так называемый "Software pack для Keil MDK 5 + Standard Peripherals Library" содержит в себе файл с расширением .pack, который оказался zip архивом. Никакой Keil MDK 5 устанавливать не нужно.
Приобрёл плату MILUNIO MDR32 и хочу поделиться первым впечатлением. Первое впечатление, что это говно.
Флюс полностью не отмыт, пайка кривая. У части резисторов и конденсаторов 0603 не припаян один вывод. Паяльником повредили кнопку. Видно как пытались допаять вручную. Флешбеки от прошлой работы. Отечественное производство.
Ну самое главное то, что встроенный отладчик не видит микроконтроллер.
Думаю надо ли вернуть или привести порядок самому.