Как я могу предотвратить безудержное «Нажатие клавиши на pir» rpi4 с помощью dtoverlay?

#raspberry-pi #gpio #keystroke #magic-mirror

#малина-пи #gpio #нажатие клавиши #волшебное зеркало

Вопрос:

Таким образом, существует функция dtoverlay, которую вы можете добавить в config.txt файл, который позволяет входу gpio запускать нажатие клавиши на raspberry pi4. Однако это вызвало у меня некоторые осложнения. Например, у меня есть цензор движения, который должен активировать клавишу backspace, но каждый раз, когда мое движение активируется, я получаю внезапное нажатие клавиши, так что он нажимает клавишу backspace несколько раз, пока движение не активируется снова, затем ненадолго останавливается, а затем начинается снова. Я получил некоторый контроль над этим, запустив схему через элемент nand с резистором 1k, но я все еще иногда получаю фантомные нажатия клавиш, когда комната, где расположен детектор движения, была полностью пуста. Это может быть цензор движения, который я использую, хотя, поскольку это был действительно дешевый китайский дженерик. Есть ли способ обеспечить только один экземпляр нажатия клавиши? Потенциально заставить вход gpio вернуться к 0 после первоначального вывода на 1? Я перепробовал несколько физических исправлений, чтобы убедиться, что на входе не обнаружено остаточного напряжения, вызывающего это, и имел ограниченный успех или не имел успеха. На случай, если вам было интересно, вот функция:

 sudo nano /boot/config.txt  #Keystroke on PIR  dtoverlay=gpio-key,gpio=17,keycode=14,   label="KEY_BACKSPACE" gpio_pull=1  

Ответ №1:

Ладно, сейчас я чувствую себя немного глупо, но я смог ответить на свой собственный вопрос. Я хотел оставить первоначальный вопрос здесь, на случай, если кто-нибудь еще столкнется с этим в будущем. Проблема заключалась в том, что назначенный GPIO (17 в моем случае) поднимался высоко, а затем опускался через несколько секунд, что противоположно тому, для чего по умолчанию предназначен «dtoverlay=gpio-ключ». Поскольку архитекторы в основном имели в виду кнопки, когда они добавляли это в ядро, по умолчанию используется клавиша «вверх» при повышении напряжения и клавиша «вниз» при снижении напряжения. Таким образом, мой детектор движения повышался, когда обнаруживалось движение, в результате чего на самом деле ничего не происходило, так как это было первое событие, а затем падал, вызывая эффект «ключ вниз». Затем этот эффект будет продолжаться непрерывно до следующего включения цензора движения. Цензор движения заставлял вывод GPIO повышаться, затем понижаться и в основном просто приостанавливал длительное непрерывное нажатие клавиши. Мне пришлось изменить конфигурацию, чтобы переопределить функции по умолчанию вот так: Нажатие клавиши на PIR:

 sudo nano /boot/config.txt  # add line  #Keystroke on GPIO (PIR activated)  dtoverlay=gpio-key,gpio=17,active_low=0,gpio_pull=1,keycode=14,   label="KEY_BACKSPACE"  

Это решило проблему непрерывного или «убегающего» нажатия клавиши, которую я описал ранее. Мой детектор движения теперь (в основном) работает так, как я и предполагал, за небольшим исключением фантомных активаций время от времени. Я все еще пытаюсь разобраться в этом. Возможно, проблема с заземлением или слишком близкое расположение к беспроводному чипу Pi. Не уверен точно, но я буду продолжать искать ответ на этот вопрос и доложу, как только он у меня будет.