Я видел множество примеров использования одного датчика температуры с Raspberry Pi, однако, как я могу мультиплексировать 5-6 датчиков температуры с Raspberry Pi? Я хочу читать температуру из нескольких источников одновременно.
Могу ли я просто назначить выводы GPIO на Raspberry Pi для чтения с каждого датчика, по сути, реплицируя одну и ту же конфигурацию для одного датчика, или мне нужен какой-нибудь мультиплексор, к которому все датчики будут подключаться по очереди, который будет передавать данные параллельно к малиновому пи?
gpio
sensor
temperature
jc303
источник
источник
Ответы:
Учитывая, что ваш датчик является DS18B20, и это 1-проводная схема, а 1-проводная - это протокол, который может выполнять множественные адресации на одной и той же шине, и что 1-проводный модуль ядра температуры может считывать до 10 температурных датчиков. на том же автобусе. (проверьте строку 49 исходного кода драйвера ).
Если вы просто подключите 10 ваших датчиков к одним и тем же 3 контактам (3v3, GND и 1-проводному контакту IO - это номер 4 на разъеме (это жестко запрограммировано в драйвере!), И вы будете читать их выходы из / sys / bus / w1 / devices / 28 * / w1_slave, где 28 * - это индивидуальный уникальный однопроводный адрес. Проверьте превосходное учебное пособие adafruit . Не забудьте, что резистор 4K7 вытягивает контакт данных (номер 4 - ТОЛЬКО ОДИН!) Так как внутренний подтягивающий сигнал Pi дает примерно 50 КБ, а это слишком много для датчика, вам понадобится этот дополнительный компонент.
Вы должны просто убедиться, что вы не пытаетесь использовать паразитическую силу. Если вы подключите 3 контакта всех устройств, все будет в порядке.
источник
You should just make sure you are not trying to use parasitic power.
что вы подразумеваете под этим? Нужно ли использовать внешний источник питания вместо 3,3 В от контакта 1 на GPIO Pi? Или это паразитная сила, если я использую только GND + Data, а не 3V3? - он отказался от горячей ссылки на ваше имя пользователя :-(this is hardcoded in the driver
означает ли это, что подключение датчиков температуры к другому выводу GPIO (или нескольким выводам GPIO) не будет работать?Для справки приведем небольшой фрагмент кода Python, который побьет 1-проводной GPIO и вернет показания температуры для первого датчика. Это должно быть достаточно просто изменить, чтобы вернуть временные значения для всех подключенных датчиков в виде списка или чего-то подобного.
источник
Разговор по однопроводной шине может быть болезненным. Говорите ли вы с 1 датчиком или 100, вам нужно подумать о времени. Я написал код для DS18B20 несколько лет назад, но он в сборке. Если это пригодится, здесь:
источник
Если интересно, вот руководство, которое я написал для использования датчика температуры DS18B20 (который, как указано выше, может быть связан с любым количеством выводов GPIO на Pi) с Raspberry Pi и некоторым кодом Pyhton, который отправляет его на RESTful сервис, который агрегирует и отображает температуры в виде графиков и диаграмм на веб-сайте. Весь код общедоступен на указанной учетной записи GitHub. http://macgyverdev.blogspot.se/2014/01/weather-station-using-raspberry-pi.html
источник
Какой датчик температуры вы используете? Если у вас есть что-то вроде DS18B20, вы можете подключить до 18446744073709551615 датчиков, если у вас их было так много.
источник
Отвечать:
Вы можете получить дополнительные модули, которые имеют несколько шин для подключения к пи.
Это видео сравнивает их скорости: https://www.youtube.com/watch?v=YbWidNBycls. В конечном итоге он использует перекомпилированное ядро для достижения множественного взаимодействия GPIO с несколькими датчиками. Он не опубликовал свои результаты о том, как он получил это. Но можно мультиплексировать его, вместо того чтобы использовать только один контакт.
Обновить. Он опубликовал сейчас. Он подключил 81 датчик к 9 отдельным GPIO и смог получить все температуры менее чем за 3 секунды: https://www.youtube.com/watch?v=JW9wzbp35w8
источник
идеальным способом считывания нескольких датчиков является использование датчиков I2C.
это единственный способ объединить несколько датчиков в цепочку или использовать аналоговые датчики, но они будут использовать много аналоговых выводов, а i2c будет использовать только 2 линии. Допустим, вы используете Pi2 / 3, а затем я предложу приобрести шляпу Pi Raspberry с портом I2C, чтобы вы могли соединить все ваши устройства i2c с Pi в течение нескольких секунд, и она убедится, что ваше оборудование работает правильно.
Теперь у вас есть Pi с I2C-адтертером, позволяющим перемещаться по сенсорной части. TI, AD, NXP, Freescale и многие другие компании производят датчик температуры с I2C, но вы хотите подключить более одного датчика, чтобы было два варианта.
получите 6 разных датчиков I2C с разными адресами I2C, если у вас два датчика с одинаковым адресом, это не сработает.
Вы можете получить датчики с адресной линией и просто изменить адрес, и вы можете подключить их к Pi без какого-либо конфликта адресов. Я рекомендую использовать этот датчик TMP 100. Я предпочитаю этот, потому что он имеет 2 адресные линии с поддержкой плавающей адресной линии, так что вы можете подключить 6 датчиков к одной линии i2c.
Преимущество использования одних и тех же датчиков состоит в том, что вам не нужно читать 6 таблиц данных, чтобы написать свой код, вам нужно изучить одну таблицу данных и написать код по-своему. если все ваши датчики одинаковы, то у вас будет лучший результат для сравнения.
источник