На малине PI, как я вытащил булавку GPIO, а затем прочитал ее сразу после?

Мое приложение считывает скорость и направление ветра от датчика TX23U. Они не предназначены для сопряжения с PI, но с собственной метеорологической станцией. Однако кто-то вычислил протокол связи, который можно найти .

Сайт описывает, что соединение TX должно быть привязано к высокому, и вытащили на низком уровне, чтобы сигнализировать о начале передачи датчика.

Как бы я мог потянуть соединение TX низким, а затем прочитать данные, которые датчик выдает через тот же самый вывод сразу после?

Из того, что я понимаю, сначала нужно указать функцию ввода /вывода вывода GPIO. Есть ли способ переключить функциональность вывода с выхода на вход? Или есть другой способ использования двух контактов для выполнения этой функции, которую я не вижу?

4 голоса | спросил A.S. 24 MaramSat, 24 Mar 2018 07:49:21 +03002018-03-24T07:49:21+03:0007 2018, 07:49:21

4 ответа


4

Ниже приведена схема схемы RPIO GPIO. Как вы можете видеть, входной буфер всегда считывает внешнее состояние штыря, поэтому, если вы хотите прочитать штырь, как это нравится, компания-производитель обуви просто делает это.

 RPi GPIO

(Изображение из эта страница о RPi GPIO)

Все библиотеки GPIO, такие как pigpio (мой личный фаворит) и WiringPi имеют библиотечные функции для установки направления вывода. Если для регистра вывода данных GPIO установлено значение 0, и вы установите GPIO в качестве выходного сигнала, он будет вывести 0 на вывод. Установите его обратно на вход, и резистор вернет контакт. В pigpio вы используете функцию set_mode , чтобы установить направление ввода /вывода .

Взглянув на протокол, после того, как вы пропустили низкий контакт, и он вытягивается высоко, TX23U вытаскивает штырь низко и затем, в конце концов, отправляет начало кадра, за которым следуют данные. Существует приложение pigpio, называемое piscope , которое записывает состояние вывода GPIO, которое вы, вероятно, можете адаптироваться к записи потока данных датчика. Он имеет возможность запускать по краям в потоке данных до начала записи. Он может хранить данные в файле.

ответил crj11 24 MaramSat, 24 Mar 2018 08:31:40 +03002018-03-24T08:31:40+03:0008 2018, 08:31:40
2

Использование python в PI это довольно легко. Я не тестировал этот код, но проверяю эту страницу как ссылку https: //sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD) # sets numbering system of GPIO pins
channel = MY_BOARD_PIN_ID

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) # output high

# wait for a few ms

GPIO.output(channel, GPIO.LOW) # output low

# maybe wait for a few ms

GPIO.setup(channel, GPIO.IN) # change to input

# then some code where you read the input as many times as needed:
value = GPIO.input(channel)

# lastly
GPIO.cleanup()
ответил Robotbugs 24 MaramSat, 24 Mar 2018 11:52:06 +03002018-03-24T11:52:06+03:0011 2018, 11:52:06
1

Все библиотеки Pi GPIO смогут обрабатывать базовую сигнализацию. Фактически требуемая сигнализация очень похожа на популярные датчики температуры и влажности DHT11 /22.

В DHT11 /22 имеется одна строка данных. Линия данных обычно удерживается высоко с помощью нагрузочного резистора 5K до Vcc (3V3 для Pi). Чтобы запросить чтение, Pi на короткое время вытягивает линию передачи данных (устанавливает режим GPIO на OUTPUT и записывает 0), а затем устанавливает GPIO как INPUT. Затем DHT11 /22 записывает 0s и 1s в строку данных, чтобы сигнализировать 40 битов данных, которые Pi считывает через GPIO.

Любая библиотека, которая может обрабатывать DHT11 /DHT22, может быть изменена для обработки TX23U.

Моя библиотека pigpio хорошо подходит для такого типа приложений, поскольку она может точно вставлять входы GPIO.

ответил joan 24 MarpmSat, 24 Mar 2018 13:26:53 +03002018-03-24T13:26:53+03:0001 2018, 13:26:53
0

Это похоже на 1-проводный интерфейс (хотя протокол отличается). Вы можете найти некоторые из программ для чтения этих похожих.

Вы можете запрограммировать вывод в качестве вывода, а затем запрограммировать как входной сигнал в течение 20 мсек - это время жизни для процессора Pi.

ответил Milliways 24 MaramSat, 24 Mar 2018 08:00:30 +03002018-03-24T08:00:30+03:0008 2018, 08:00:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132