Объединение передатчика/приемника NRF24L01 с Adafruit Motor Shield V1?

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

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

Итак, могу ли я объединить NRF24L01 и Adafruit Motor Shield V1? И если да, то каким образом?

Если это невозможно, каковы были бы плюсы и минусы замены экранированного Arduino на Nano, который будет нести NRF24L01, по сравнению с заменой экрана двигателя Adafruit на внешний драйвер (ы) двигателя постоянного тока?

Редактировать:

Теперь я нашел этот предыдущий вопрос:

Экран двигателя и беспроводной приемопередатчик конкурируют за одни и те же контакты

Разница в моем проекте заключается в том, что я не использую шаговые двигатели, так что, возможно, это имеет значение?

, 👍1


1 ответ


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

2

Одна из проблем Uno заключается в том, что аппаратные выводы SPI конфликтуют с некоторыми выводами PWM. Если вы хотите большего контроля над двигателем, то у вас это есть за счет отсутствия SPI. Если вы хотите SPI, то вы получите его за счет снижения контроля над двигателем.

Экран V1 использует регистр сдвига для некоторых сигналов двигателя, и это должно соответствовать его сигналам вокруг доступных выводов PWM, так что они также перетекают на выводы SPI (поскольку вы не можете использовать SPI из-за выводов PWM, что на самом деле не имеет значения).

Таким образом, отсутствие SPI означает отсутствие nRF24L01. Или так оно и есть?

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

Было бы лучше добавить к нему больше оборудования и подключить беспроводное соединение к выделенному MCU? Я бы сказал, да. Это означает не только то, что вы можете использовать существующие библиотеки для связи с nRF24L01, не беспокоясь о конфликтующих контактах, но и то, что вы можете разделить свое программное обеспечение на отдельные блоки, которые не мешают друг другу. Параллельная обработка :)

Как общаться между ними двумя? Что ж, у вас есть I2C, доступный на аналоговых выводах A4 / A5, что хорошо документировано и содержит множество примеров. Или вы могли бы использовать serial, хотя отсутствие последовательных портов в 328P означает, что вы, вероятно, будете работать с SoftwareSerial, который в лучшем случае является сложным. Я бы выбрал I2C из этих двух TBH.

,