
Комментарии 45
Радиоинженер доардуиновских времен читает эту статью и офигевает. Это же ардуино головного мозга. И потом это идёт в продакшн. Фэйспалм. А ещё я ожидал тут почитать про VL53L0X, но не нашёл.
Это всё делается, чтобы потом валяться в большой коробке в гараже. Сделал, потешил себя, и плюнул на всё это, как это делают другие.
Что читать в этой статье? Что в i2c устройства оказывается имеют адреса? Внезапное открытие. Можно даже позавидовать, сколько ещё чудных открытий у автора впереди :)
..Что на некоторых блоках i2c адрес практически несменяемый, хотя в теории можно.
Вы думаете, я не в курсе про адрессацию I2C? В статье четко описано, что чтобы поменять адресацию больших датчиков TOF400F нам надо найти два пина, которые скрыты под защитным стеклом датчика. Купили новые датчики, чисто потому что у них по даташиту была программная смена адреса, а не аппаратное отключение I2C. Мы использовали в итоге TOF250, так как у них есть аппаратная смена адреса I2C. TOF400 не подошли под нашу задачу потому, что у них адресацию не изменить, а считывать данные с датчиков можно только поочередным их включением через контакты GPIO1 и XSHUT. Открывать осталось принцип работы и формирования протоколов RS232, RS485. Их в основном используем. Поэтому хотелось бы иметь полное понимание, а не работать по методичке
Вообще не так, наша организация занимается разработкой электроники, разработкой различных проектов. Используем и 3Д печать, и изготавливаем печатные платы, в общем специалисты широкого профиля.
ардуино это быстро
от идеи до железячного прототипа от часа до двух дней максимум
вылизывать уже можно потом и в процессе неторопливо
запустил не один проект и все начиналось с ардуино которое постепенно переписывалась на найтив
Все так. Я разраб электроники не настоящий, потому предпочитаю сначала решение на макете проработать, а потом уже схемоту рисовать. Коллеги-электронные инженеры действуют не так - они делают платы кастомизируемыми, нулевые резисторы, do-not-populate компоненты, всякое такое.
Но матчасть всё-таки надо изучать.
Я согласен, просто наш макет макет представлял собой гребенку на макетной плате, к которой было подключено 3 датчика и 4 провода которые шли к отладочной плате Arduino Nano. Понятное дело, что в печатных платах используем "нулевые" резисторы, различные компоненты. А так в момент проектировки еще пользуемся Proteus.
пробовал разное, в итоге пришел к тому что первый прототип собирается на соплях, а уже на его основе отрисовывается первая плата-прототип мелкой серией
мекетка очень ненадежная штука, паять это надежно, плюс оно сохраняется "в стол" до востребования (и может пригодится через года для другого схожего проекта)
а сразу разрабатывать плату прототип - что нужно по факту не знает сам боженька, а перепайка по месту будет и так и так (а если делать слишком универсальное то бюджет вызовет инфаркт у начальства)
ну и do-not-populate и "воткнуть дорогой и редкий чип потому что с ним легче работать" это классика. очень часто железки дальше прототипа или пары екземпляров не уходят, а лишние заморочки не нужны никому.
А вот если уже идет на тираж тогда уже идет вылизывание всего вплоть до транзисторной развязки на дешевых компонентах вместо использования сдвигового регистра. там цент, там пол цента и вот на 100К тираж экономия в пол ляма
На ардуинке хорошо макетить. И даже можно использовать, только если её принять как голый контроллер и обвесить всем, чем нужно для реальной работы.
Добрый день. Ардуино(Atmega328p) использовали для прототипа, в тиражном изделии будет использоваться микроконтроллер STM32F103C8T6
в тиражном изделии будет использоваться микроконтроллер STM32F103C8T6
Так и взяли бы отладочную плату именно с ним, в чём проблемы?
У этого камня аж 2 контроллера I2C, один из которых можно перебрасывать на другие выводы. При этом доступно 2 UARTа. Итого без какой-либо обвязки к STM можно подключить 5 ваших датчиков, 4 из которых можно опрашивать одновременно.
А на прототипе не грех и программный I2C запустить, хоть на 50 портов.
Можно узнать каким языком программирования вы пользуетесь? Если это не Ассемблер, то... Вы обычный пустозвон....
Я лет 20 назад 3 UART порта реализовывал на Mege8535 и апаратный RS-485 еще до кучи, а тут на Megа328 не смогли.
Самый идиотский способ в свое время придумал я. Нужно было подключить пять или шесть датчиков к ардуино. Адрес у всех один и тот же конечно. Подключил через простую планку реле. Нужный датчик ардуинка сама подключала.
Хорошее решение, но можно ещё лучше: двигатель поставить, редуктор там, ну и галетный переключатель. Отдельную ардуину на управление двигателем.
В зависимости от целевой необычности решения, двигатель можно использовать паровой.
Я все понимаю, со знанием I2C не рождаются, поэтому и про мультиплексор можно не знать. То, что команда обрела это знание - безо всякой иронии, очень хорошо, правда же молодцы.
Но почему автор называет себя "инженером встраиваемых систем", и что означает слово "старший" в профиле?
Тут как мне кажется вопрос даже не в знании I2C, а чисто в устройствах, микросхемах и подходах, которые можно использовать для работы с этой шиной.
Почему называю себя "инженером встраевымых систем", просто если я не ошибаюсь то встраевыемые системы, это все что связано с платами и микроконтроллерами. Слово старший обозначает лишь то, что я "старший" в нашей команде курирую ребяти отвечаю за сам процесс разработки, согласен статья получилась сухая, вторую и третью часть постараюсь сделать объемнее по информации. Если вы могли бы дать какую-то критику, то я бы с радостью бы это с вами обсудил, телеграм есть у меня в профиле. Так как регистрировался на Хабре для получения дополнительного опыта и здравой критики или других решений от форумчан.
Надеюсь, что на все ответил
Назначили его так. И он работает, старается! Уже хорошо.
Как сократить время такой "разработки" до пары часов с учётом похода в магазин? Прочитать документацию. Поддерживаю коллегу выше - ардуино головного мозга.
Так откройте и почитайте документацию. В чем проблема? Могу вам отправить один модуль для тестов. А также все, что нарыл в интернете. Если вы мне покажете как изменить адресацию, чтобы она была сохранена после отключения питания, то буду рад посмотреть на ваще решение.
Зарезервируйте кусочек флеша, для хранения конфига устройств на шинах. При запуске МК конфигурируете адресатов на шинах. По крайней мере прочитав документацию, вы бы сразу поняли, как конфигурируются адреса датчиков: модуль вам подходит из коробки / не подходит, а какой подойдёт при правильном прикладывание паяльника. Вы правда в этом проблему видите?
Два spdt переключателя SN74LVC1G3157 старший электронщик осилить не смог, печаль(
Спасибо за совет, прочитал про SPDT переключатели, с таким еще не сталкивался, но возьму на заметку. Спасибо. Как отвечал коллеге выше, я старший лишь в команде, стараюсь каждый раз делать все лучше и лучше. Если интересно, чем мы занимаемся, можете написать мне в телеграм, он у меня указан в профиле. Буду рад как и советам так и критике
Вот датчики с вынесеными контактами GPIO1 и XSHUT. Но нам они не подходят по причине того, что на них не защищен сам лазерный модуль.
Вот защитное стекло для этого датчика:

А это датчик, но уже с защитным стеклом и есть все контакты, которые вы искали.

Забыл указать, Такое не совсем подходит по причине того, что нам нужен был датчик именно с разъемом, чтобы упростить сам процесс сборки. В TOF250 используется JST SH 1.0mm, что нас устраивает от и до. Нам надо выпускать партию устройств, на которых стоят такие датчики, метод с пайкой точно мимо, надо много и быстро. Поэтому собираем именно на версии с разъемом. Как указвал выше в посте, я датчики с этими выведеннвми контактами находил, а вот про стекло написать забыл. Для нас это оносительно колхозный метод, нам нужно как можно меньше операций при сборке устройства.
Начали смотреть шину I2C-сканером и нашли только один адрес 0х53. Пу пу пу, начали гуглить как задавать адрес этим датчикам. Везде писали про какие-то контакты XSHUT и GPIO1. А у нас таких не было...
простой способ включения трех датчиков с одинаковыми адресами это подключить SDA к отдельным пинам, а SCL - сделать общим. В итоге нет надобности изменять адрес и не нужен расширитель I2C.
Спасибо за подсказку, но тогда это уже решается через программное решение. Аппаратно i2c у Ардуино на пинах А4 и А5
Если используете расширитель, то тоже решаете программно.
------------------------
Дополнительные два пина потребуют добавления одной команды в вашей программе - это команда смены адреса шины SDA. Это самое простое решение и упрощает сборку.
Надо взять два любых свободных пина GPIO.
А что за команда, не подскажете?
Ошибся с числом команд.
На Ардуине аппаратно лишь один I2C.
На ESP32 - два I2C.
Для трех I2C надо использовать программную реализацию I2C для дополнительных к аппаратным каналам.
https://github.com/tremaru/iarduino_I2C_Software
Здравствуйте, спасибо за "простой способ включения трех датчиков с одинаковыми адресами"
Atmega328P не умеет эмулировать 3 UART порта
Жесть, конечно. Как и вся статья.
Зато теперь вы знаете что слово "ардуино" часто вызывает агрессию, не смотря на то, что статья опубликована в одноименном хабе да еще и из песочницы :D
А вообще по моему опыту vl53l0 вполне себе позволяет переназначать адрес программно, правда он будет сбрасываться при каждом отключении питания. В свое время решал это таким образом: заводил управляющие линии на ресеты и пока конфигурировал первый датчик, остальные держал в сбросе и так их поочередно выводя из под сброса инициализировал все (в моем случае два, но решение это вполне масштабируемое).
под STM, в общем-то на просторах можно найти библиотеку на сях. Когда то, еще в студенческие времена делал вывод с двух таких датчиков как раз на STM32F103C8T6. Тут немного топорно ибо делалось ОЧЕНЬ быстро, оставлю тут, мб пригодится
Ошибки в тексте кто исправлять будет?
Вопрос к ТС. 3 датчика - понятно, решается программно, аппаратно... Увидел на просторах 3д сканер, цилиндрического принципа, тупо вокруг круглого постамента вертится вертикальная палка в человеческий рост. Вот и подумал... На I2C - 127 устройств (в теории). Запялить в эту палку 100 (+-) датчиков. Рисовать 3Д модель в зависимости от показаний датчиков по точкам за несколько проходов. Расстояние между датчиками компенсировать вертикальным смещением датчиков. Реализуемо? ))
VL53L0X что это такое и с чем это едят