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

Я делаю проект на Arduino Uno, и для этого мне нужно соединить вместе 3 разных датчика: электронную бумагу Waveshare 2.9, RFID-считыватель MFRC522 и модуль Wi-Fi ESP8266. Проблема в том, что электронная бумага и RFID используют одни и те же цифровые контакты. Как я могу соединить их все вместе в бордборде?

Изменить: В электронной газете используются:

e-paper 3V3 -> Arduino 3V3
e-paper GND -> Arduino GND
e-paper DIN -> Arduino D11
e-paper CLK -> Arduino D13
e-paper CS -> Arduino D10
e-paper DC -> Arduino D9
e-paper RST -> Arduino D8
e-paper BUSY -> Arduino D7

RFID использует:

SDA --> Digital 10
SCK --> Digital 13
MOSI --> Digital 11
MISO --> Digital 12
IRQ --> unconnected
GND --> GND
RST --> Digital 9
3.3V -->3.3V

Wi-Fi использует:

GND --> GND
VIN --> 3.3v
Enable --> 3.3V
TX --> RX
RX --> TX

Я новичок в электронике, поэтому извините, если что-то не имеет смысла

Я использую библиотеку, код и инструкции с трех веб-сайтов:

Электронная бумага (электронная бумага Waveshare 2.9): https:/ /www.instructables.com/id/Getting-Started-With-E-Paper-Display-Modules/

RFID (RFID-считыватель MFRC522): https://randomnerdtutorials.com/security -access-using-mfrc522-rfid-reader-with-arduino/

Wi-Fi (модуль Wi-Fi ESP8266): https://www.hackster. io/jeffpar0721/add-wifi-to-arduino-uno-663b9e

Спасибо!

, 👍2

Обсуждение

На такой вопрос нельзя ответить в общем, а только с полной конкретикой того, как используется каждый вывод. Во многих случаях вы сможете переместить одну функцию на другой контакт, или контакты используются способами (например, шины SPI или I2C), которые уже предназначены для совместного использования. Но без подробностей на этот вопрос нет ответа, и его придется закрыть., @Chris Stratton

@Arthane, вы можете использовать предварительный просмотр под своим сообщением, чтобы проверить форматирование перед отправкой. Используйте теги кода {} для форматирования, как в моем примере. Я не стал чинить твою "бородку", так как она выглядит интересно., @Transistor


1 ответ


2

Вам повезло: два устройства, создающие конфликт, используют одни и те же контакты, поскольку оба используют один и тот же интерфейс, SPI для будьте точными, что позволяет подключать несколько устройств с помощью разных контактов Chip Select, сокращенно CS.

Из двух библиотек одна позволяет определить вывод CS (модуль RFID), а другая жестко запрограммировала его (ePaper). Итак, при объявлении вашей RFID-библиотеки вам следует использовать конструктор, позволяющий определить вывод выбора чипа:

void PCD_Init(byte chipSelectPin, byte resetPowerDownPin);

Это означает, что в вашем коде вы должны использовать:

PCD_Init(6,8) rfid;

Вышеизложенное также подразумевает, что одно из ваших RFID-соединений должно быть изменено: то, что ранее было SDA --> Digital 10 теперь будет называться SDA --> Цифровой 6. Обратите внимание, что я выбрал контакт 6 случайным образом среди контактов, которые кажутся неиспользуемыми вашим кодом, но любой другой неиспользуемый контакт будет хорошим выбором, включая аналоговые контакты.

Кстати, на веб-странице, посвященной модулю RFID, используется обозначение контактов, что вызывает большую путаницу, поскольку путает SDA с MISO и MOSI: эти имена используются в двух разных типах интерфейса: первый называется I2C или TWI, второй SPI. В Arduino эти два интерфейса имеют несколько общих контактов, но они сильно различаются во многих отношениях.

В вашем случае оба модуля используют SPI, что вам подходит.

,