Объединение передатчика/приемника 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 на внешний драйвер (ы) двигателя постоянного тока?
Редактировать:
Теперь я нашел этот предыдущий вопрос:
Экран двигателя и беспроводной приемопередатчик конкурируют за одни и те же контакты
Разница в моем проекте заключается в том, что я не использую шаговые двигатели, так что, возможно, это имеет значение?
@hexamon, 👍1
1 ответ
Лучший ответ:
Одна из проблем Uno заключается в том, что аппаратные выводы SPI конфликтуют с некоторыми выводами PWM. Если вы хотите большего контроля над двигателем, то у вас это есть за счет отсутствия SPI. Если вы хотите SPI, то вы получите его за счет снижения контроля над двигателем.
Экран V1 использует регистр сдвига для некоторых сигналов двигателя, и это должно соответствовать его сигналам вокруг доступных выводов PWM, так что они также перетекают на выводы SPI (поскольку вы не можете использовать SPI из-за выводов PWM, что на самом деле не имеет значения).
Таким образом, отсутствие SPI означает отсутствие nRF24L01. Или так оно и есть?
Вы могли бы (хотя я не знаю ни одной библиотеки, которая справлялась бы с этим) использовать "бит-битный" программный SPI на других выводах (например, аналоговых выводах) для связи с nRF24L01. В зависимости от этого ваш пробег может меняться, но технически это возможно - при условии, что вы сможете найти (или написать) подходящую программную поддержку для этого.
Было бы лучше добавить к нему больше оборудования и подключить беспроводное соединение к выделенному MCU? Я бы сказал, да. Это означает не только то, что вы можете использовать существующие библиотеки для связи с nRF24L01, не беспокоясь о конфликтующих контактах, но и то, что вы можете разделить свое программное обеспечение на отдельные блоки, которые не мешают друг другу. Параллельная обработка :)
Как общаться между ними двумя? Что ж, у вас есть I2C, доступный на аналоговых выводах A4 / A5, что хорошо документировано и содержит множество примеров. Или вы могли бы использовать serial, хотя отсутствие последовательных портов в 328P означает, что вы, вероятно, будете работать с SoftwareSerial, который в лучшем случае является сложным. Я бы выбрал I2C из этих двух TBH.
- вопрос по трубке nRF24L01
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- В чем разница между драйвером двигателя (motor driver) и щитом двигателя?
- Использование функции уровня сигнала модуля nRF24L01
- Как автоматически сбросить nrf24l01+ с кодом?
- Не получаем данные от NRF24L01
- Контроллер двигателя для двигателя 24 В, Arduino Uno