Добрый день, хочу подлючить к одной ардуинке много разных датчиков но не знаю получится или нет. Подскажите у кого был опыт подлючение много датчков к одной плате? Схему примерную накидал. Возможно что то не точно...
Понимаете ли, любое устройство или какой либо предмет поектируется для исполнения какой либо цели/задачи.
Невозможно что либо посоветовать пока вы сами не опишите зачем вам вообще это.......поиграться? начните с простенького, светодиодиком поморгайте, моторчиком покрутите...потом уже переходите к более сложному.
Подскажите у кого был опыт подлючение много датчков к одной плате?
Камня два:
1. Несовместимость по gpio портам. Лечится разносом. Например, есть SPI устройство, не удосуживающееся по отпусканию SS/CE снимать подтяжку (переводить в высокоимпедансное состояние) MISO/MOSI и/или SCK. Решается перевешиванием на другие 4 провода, ибо софтварный SPI возможен на любых проводах.
2. Несовместимость программная, она же коллизии таймеров, она же совместный доступ к памяти/регистрам, она же "несовместимость библиотек". Принципиально не лечится, но есть заведомо рабочие, нероняемые при прямых руках устройства. Например, работает TLC5940 и сериал, RF24 и сериал. TLC+RF24 не работает - ну кажись тут вывод очевиден: берём две ардуины, на одной поднимаем TLC5940 синтезаторы ШИМ, на другой радиосвязь по RF24, связываем эти две в единое целое через сериал.
Возможностей для этого - до чёрта и больше: манчестер, сериал, битбанг gpio (считаем флагом digitalRead порта), EasyTransfer, программный сериал (SoftwareSerial), программный SPI (shiftIn(), shiftOut()), IRRemote, звук, ультразвук, и т. д. и т. п. Гугланите и читайте. Советую крайне полезную страницу, называется playground.arduino.cc - там всё написано. Всмысле, вообще всё, что когда либо пробовалось подключаться, плюс перечислены все глюки.
Алсо, возражу
andriano пишет:
UART - это не тот интерфейс, к которому можно подключить много разных датчиков
Защищаете TXы резисторами, если кому-то из датчиков припрёт одновременно с чьим-то нулём дать в линию единицу, чтобы порты не пожгло, и можно читать их сколько влезет, главное как-то различать кто есть кто. Придумаете протокол с кодом устройства или по синтаксису их парсить (но работа со строками - моветон, ибо кушает память). Главное чтобы провода не слишком длинные.
Если непонятны мои термины, то вот основное:
Много (туземцами обозначается как числительное, следующее за 7) - больше одного. 2 (два) - это для микроконтроллера "много".
Длинные провода - провода длиннее двух метров.
Высокие частоты - частоты выше десятков килогерц, бпс выше 19200 бит/с.
Высокая разрядность - любые действия с типом float вообще и деление в частности.
UART - это не тот интерфейс, к которому можно подключить много разных датчиков
Защищаете TXы резисторами, если кому-то из датчиков припрёт одновременно с чьим-то нулём дать в линию единицу, чтобы порты не пожгло, и можно читать их сколько влезет, главное как-то различать кто есть кто.
Это как?
Во-первых, Ваше "припрет" - это единственно возможный режим работы UART - если устройство ничего не передает, то оно держит на своем выходе TX как раз единицу.
Теперь представим несколько устройств, TX которых "защищены" резисторами. Пусть, для определенности - 3. Пусть, для определенности, эти устройства не пытаются передавать одновременно, т.е. когда одно устройство передает, другие - молчат, т.е. держат на своем выходе "1". Тогда на входе RX Arduino будет сигнал с уровнем, изменяющимся от 3.3 до 5 В, что однозначно будет воспринято входом как "1". Т.е. Ардуина в этом случае в принципе неспособнеа что-то принять.
andriano, логика "активный ноль" делается из логики "активная единица" инверторами, держу в курсе :) А вообще надо будет сделать такое, чтобы проверить, что как работает. Часто спрашивают.
Только после этого инвертора последовательный порт ничего принимать не будет. Т.к. протокол стандартизован и не предусматривает возможности инверсии.
И второе: даже если Вы инвертируете сигнал, то сумма от трех передатчиков через 3 резистора будет изменяться в пределах от 0 до 1.7 В, что будет восприниматься обычным цифровым входом как постоянный "0". Т.е. даже при изменении протокола сигнал приниматься не будет.
Понимаете ли, любое устройство или какой либо предмет поектируется для исполнения какой либо цели/задачи.
Невозможно что либо посоветовать пока вы сами не опишите зачем вам вообще это.......поиграться? начните с простенького, светодиодиком поморгайте, моторчиком покрутите...потом уже переходите к более сложному.
С чего вы решили что не понимаю? Я накидал схему в которой хотел бы увидеть функционал. По конктреным моделям не смотрел. Решил спрсоить сперва воозможно это или нет.
tomas111, UART - это не тот интерфейс, к которому можно подключить много разных датчиков. Посмотрите лучше в сторону I2C или SPI.
Понял, спасибо!
Мне нужно устройство с большим обвесом. Где можно получить координаты (GPS), отправить их по каналу GSM. Получать данные по wifi обрабатывать и выводить на экран. Тут ещё не хватает камеры которая могла бы транлировать всё в wifi сеть.
spa-sam предложил не плохой вариант. Возможно это самое лучшее решение. Но вторым фактором это стоит размер самого девайся.
что то у вас с терминологие странное - GSM/GPS/ESP - это датчики?
Замените arduino nano и esp8266 на esp32
что то у вас с терминологие странное - GSM/GPS/ESP - это датчики?
Да, но какие не знаю.
Замените arduino nano и esp8266 на esp32
Размеры и программирование в чем? Нужна компактность.
Да, но какие не знаю.
Понимаете ли, любое устройство или какой либо предмет поектируется для исполнения какой либо цели/задачи.
Невозможно что либо посоветовать пока вы сами не опишите зачем вам вообще это.......поиграться? начните с простенького, светодиодиком поморгайте, моторчиком покрутите...потом уже переходите к более сложному.
tomas111, UART - это не тот интерфейс, к которому можно подключить много разных датчиков. Посмотрите лучше в сторону I2C или SPI.
Камня два:
1. Несовместимость по gpio портам. Лечится разносом. Например, есть SPI устройство, не удосуживающееся по отпусканию SS/CE снимать подтяжку (переводить в высокоимпедансное состояние) MISO/MOSI и/или SCK. Решается перевешиванием на другие 4 провода, ибо софтварный SPI возможен на любых проводах.
2. Несовместимость программная, она же коллизии таймеров, она же совместный доступ к памяти/регистрам, она же "несовместимость библиотек". Принципиально не лечится, но есть заведомо рабочие, нероняемые при прямых руках устройства. Например, работает TLC5940 и сериал, RF24 и сериал. TLC+RF24 не работает - ну кажись тут вывод очевиден: берём две ардуины, на одной поднимаем TLC5940 синтезаторы ШИМ, на другой радиосвязь по RF24, связываем эти две в единое целое через сериал.
Возможностей для этого - до чёрта и больше: манчестер, сериал, битбанг gpio (считаем флагом digitalRead порта), EasyTransfer, программный сериал (SoftwareSerial), программный SPI (shiftIn(), shiftOut()), IRRemote, звук, ультразвук, и т. д. и т. п. Гугланите и читайте. Советую крайне полезную страницу, называется playground.arduino.cc - там всё написано. Всмысле, вообще всё, что когда либо пробовалось подключаться, плюс перечислены все глюки.
Алсо, возражу
Защищаете TXы резисторами, если кому-то из датчиков припрёт одновременно с чьим-то нулём дать в линию единицу, чтобы порты не пожгло, и можно читать их сколько влезет, главное как-то различать кто есть кто. Придумаете протокол с кодом устройства или по синтаксису их парсить (но работа со строками - моветон, ибо кушает память). Главное чтобы провода не слишком длинные.
Если непонятны мои термины, то вот основное:
Много (туземцами обозначается как числительное, следующее за 7) - больше одного. 2 (два) - это для микроконтроллера "много".
Длинные провода - провода длиннее двух метров.
Высокие частоты - частоты выше десятков килогерц, бпс выше 19200 бит/с.
Высокая разрядность - любые действия с типом float вообще и деление в частности.
Сударыня, Вы уж извините меня, но главная проблема здесь в том, что афтор даже не понимает, а что он делает.
Алсо, возражу
Защищаете TXы резисторами, если кому-то из датчиков припрёт одновременно с чьим-то нулём дать в линию единицу, чтобы порты не пожгло, и можно читать их сколько влезет, главное как-то различать кто есть кто.
Это как?
Во-первых, Ваше "припрет" - это единственно возможный режим работы UART - если устройство ничего не передает, то оно держит на своем выходе TX как раз единицу.
Теперь представим несколько устройств, TX которых "защищены" резисторами. Пусть, для определенности - 3. Пусть, для определенности, эти устройства не пытаются передавать одновременно, т.е. когда одно устройство передает, другие - молчат, т.е. держат на своем выходе "1". Тогда на входе RX Arduino будет сигнал с уровнем, изменяющимся от 3.3 до 5 В, что однозначно будет воспринято входом как "1". Т.е. Ардуина в этом случае в принципе неспособнеа что-то принять.
mykaida, это точно
andriano, логика "активный ноль" делается из логики "активная единица" инверторами, держу в курсе :) А вообще надо будет сделать такое, чтобы проверить, что как работает. Часто спрашивают.
Только после этого инвертора последовательный порт ничего принимать не будет. Т.к. протокол стандартизован и не предусматривает возможности инверсии.
И второе: даже если Вы инвертируете сигнал, то сумма от трех передатчиков через 3 резистора будет изменяться в пределах от 0 до 1.7 В, что будет восприниматься обычным цифровым входом как постоянный "0". Т.е. даже при изменении протокола сигнал приниматься не будет.
Да, но какие не знаю.
Понимаете ли, любое устройство или какой либо предмет поектируется для исполнения какой либо цели/задачи.
Невозможно что либо посоветовать пока вы сами не опишите зачем вам вообще это.......поиграться? начните с простенького, светодиодиком поморгайте, моторчиком покрутите...потом уже переходите к более сложному.
tomas111, UART - это не тот интерфейс, к которому можно подключить много разных датчиков. Посмотрите лучше в сторону I2C или SPI.
Опять на ардуину 4K камеру вешают...
Опять на ардуину 4K камеру вешают...
Нет, 4К камера мне не нужна.