Arduino определяет порядок объектов

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

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

Какие чипы можно использовать, чтобы ардуино выдавало мне топологию блоков при размещении?

, 👍-1

Обсуждение

Вам нужно ограничить вашу проблему дальше. Например, если Arduino отслеживает размещение блоков, порядок стека можно определить, проверив историю активации датчика. Однако, если Arduino нужно определить порядок без истории - тогда проблема усложняется., @st2000

Интересный подход к использованию тайминга/истории. Однако я даже не уверен, как вообще обнаружить блоки на данный момент. Я не знаю, какие чипы интегрировать в стол или блоки, чтобы иметь возможность их обнаруживать., @Guus Baggermans

Это ситуация, когда ПЗУ OneWire с уникальными серийными номерами были бы хороши., @Majenko

«Прошивки OneWire», мне придется погуглить. На противоположном конце спектра вы можете пометить блоки (отрезать угол), чтобы обеспечить их ориентацию по отношению к столу, и разместить магниты в уникальных местах для каждого типа. Затем используйте устройства с эффектом Холла, чтобы почувствовать их., @st2000

исправление ориентации, безусловно, шаг в правильном направлении @st2000!, @Guus Baggermans

Я изучил решение OneWire для arduino. Оказывается, вы можете «сканировать» подключенные устройства на OneWire, но, похоже, сложно использовать более 1 контакта arduino. Я предполагаю, что мне потребуется 1 Arduino на каждую ячейку размещения таблицы @Majenko?, @Guus Baggermans

Не должно быть сложно иметь более одного вывода — просто используйте более одного объекта OneWire, каждый с другим выводом. Сколько позиций плитки вы хотите иметь?, @Majenko

@Majenko это будет похоже на шахматную доску, всего 64 позиции. Стеки объектов могут быть до 8 в высоту., @Guus Baggermans

Это довольно много выводов для шин OneWire. Я бы предложил разделить проект на разделы. Может быть, сделать одну полосу из 8, управляемую небольшим Arduino (нано, микро или что-то в этом роде), затем соединить 8 из них вместе и заставить их общаться с мастером., @Majenko

"64 позиции. Стеки объектов могут достигать 8" Итак... Ух ты, 512 объектов. Я думаю, вы только что покинули мир Arduino и вошли в Raspberry Pi, используя камеру и OpenCV. Вы сказали, что хотите полностью программно-определяемое решение. Хорошо проверьте [OpenCV](https://opencv.org/). Вы можете посмотреть такие проекты, как [этот](https://classes.engineering.wustl.edu/ese205/core/index.php?title=CV_Chess) и [этот](https://answers.opencv.org/question /62078/обнаружение-объекта-внутри-квадратного-стола-использованием-findchessboardcorners/) для идей., @st2000


1 ответ


Лучший ответ:

0

Вам нужно отслеживать уникальные объекты в сетке слотов 8x8? Сколько уникальных объектов?

Если общее количество объектов не превышает 112, вы можете присвоить каждому уникальный адрес I2C.

Вы бы добавили 4 круглых электрических контакта в конфигурации «бычий глаз» сверху и снизу каждого объекта, чтобы все контакты I2C подключались независимо от ориентации. Все объекты в одном стеке будут соединены вместе на шине I2C этого стека.

У вас будет мультиплексор 8x8 для подключения к шине I2C по очереди для каждой из 64 позиций сетки и опроса этой шины для каждого из возможных адресов I2C. (Отправьте ping для каждого адреса и найдите ACK.)


Кроме того, вы можете присвоить каждому объекту уникальный вес, варьирующийся в степени двойки. (первый объект весит 1000 грамм. Второй весит 1001 грамм (1000+2^0)) третий объект весит 1002 грамма (1000+2^1). Четвертый объект весит 1004 грамма (1000+2^2). и др.)

Затем на каждую подушечку нужно поставить шкалу. Взвесьте предметы по модулю 1000 грамм. Этот результат в двоичном виде даст вам флаги для каждого объекта на этой площадке.


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

Математика была бы проще, если бы вы подстроили объекты так, чтобы они образовывали последовательную цепь через все присутствующие объекты (поместите сверху нормально замкнутый переключатель, который закорачивает верхние контакты этого объекта через его резистор, если сверху нет объекта). из него. Если есть объект, переключатель размыкается, а объекты сверху замыкают цепь.)

,

Или вам нужно знать, где расположены объекты сверху вниз в каждом стеке?, @Duncan C

Спасибо @Duncan! К счастью, мне не нужно знать порядок объектов, пока у меня есть счет для каждого стека. Я собираюсь сначала попробовать ваш подход I2C, так как я предпочитаю «программное» решение физическому решению, такому как вес и сопротивление., @Guus Baggermans

Сколько уникальных объектов вам нужно иметь дело? Это меньше, чем 112 уникальных объектов, которые поддерживает I2C?, @Duncan C

@GuusBaggermans, я удалил свой комментарий о решении с резисторами, потому что оно не будет обнаруживать отдельные объекты, а только количество в каждом стеке. Решение I2C не является программным решением. Вам нужно поместить чип с питанием с адресом I2C в каждый блок, и вы все равно не обнаружите порядок. Таким образом, резистор намного проще и требует только двух взаимозаменяемых контактов с каждой стороны взаимозаменяемой стороны., @Juraj