Подключите датчик к Raspberry Pi, чтобы предупредить вас о появлении ядовитых газов!
Чтобы обнаружить пердеж с помощью Raspberry Pi, нам необходимо использовать датчик, который реагирует на одно или несколько летучих серных соединений, составляющих 1% метеоризма (т. е. соединений, вызывающих запах пердуна). По сути, нам нужно дать Raspberry Pi нос. Датчик, рекомендуемый для этого проекта - Figaro TGS2600. Когда воздух попадает в датчик, он получает питание от небольшого нагревателя, который позволяет измерять его электрическое сопротивление. Это достигается за счет пропускания электричества низкого уровня через небольшой промежуток с воздухом под напряжением. Чем более загрязнен воздух, тем меньше у него сопротивления и тем лучше он будет проводить электричество (как переменный резистор). Таким образом, выходной сигнал датчика представляет собой аналоговое напряжение, которое повышается и понижается в зависимости от степени загрязнения воздуха. Чем больше загрязнений, тем выше выходное напряжение.
Аналоговый и цифровой
Мы также должны понимать, что датчик качества воздуха дает нам аналоговый сигнал и разницу между аналоговым сигналом и цифровым. Цифровые сигналы по сути являются двоичными:1 или 0; включен или выключен. С другой стороны, аналоговые сигналы имеют полный диапазон между включением и выключением. Подумайте о рулевом колесе автомобиля:колесо аналогично, потому что водителю доступен полный диапазон рулевого управления. Вы можете очень плавно повернуть на длинном повороте, вы можете повернуть руль до упора или в любое другое время. Если вы хотите управлять автомобилем цифровым способом, у вас в основном будет полная блокировка слева и полная блокировка только справа.
Считывание аналогового сигнала с цифрового устройства
Проблема, с которой мы сталкиваемся, - это возможность считывать аналоговый сигнал на цифровом компьютере. Контакты Raspberry Pi GPIO могут использоваться как входы или выходы. Режим вывода используется, когда вы хотите подать напряжение на что-то вроде светодиода или зуммера. Если мы используем режим ввода, вывод GPIO имеет значение, которое мы можем прочитать в нашем коде. Если на вывод подается напряжение, показание будет 1
. ( ВЫСОКИЙ ); если вывод был подключен непосредственно к земле (без напряжения), показание было бы 0
( НИЗКИЙ ). Таким образом, контакты цифровые, что позволяет использовать только 1
или 0
.
Как мы можем это решить? Один из способов - использовать микросхему АЦП (аналого-цифровой преобразователь), которая преобразует аналоговое напряжение с датчика в цифровое число в нашем коде. Однако вам нужно будет использовать АЦП только в том случае, если показания датчика действительно точны. требовалось. На практике мы просто хотим, чтобы сигнал тревоги срабатывал при обнаружении пердежа, чтобы все могли бежать! Итак, если задуматься, это это цифровое обнаружение. Есть есть пердеть или нет пердеж:включен или выключен, двоичное 1 или 0. Нам не нужно беспокоиться о точности аналогового сигнала, поступающего от датчика качества воздуха.
Мы уже знаем, что датчик похож на переменный резистор:чем хуже качество воздуха, тем меньше сопротивление и тем больше пропускается напряжение. По логике вещей, когда датчик соприкасается с пердежом, выходное напряжение должно резко возрасти. Следовательно, нам просто нужно обнаружить эти скачки напряжения, и это может быть сделано в цифровом виде. Мы можем сделать так, чтобы при возникновении всплеска вывод GPIO переходил с НИЗКОГО на ВЫСОКИЙ; затем мы можем обнаружить это изменение в нашем коде и воспроизвести звуковой файл будильника!
Верхний и нижний порог
Как Raspberry Pi узнает, является ли вывод GPIO ВЫСОКИМ или НИЗКИМ?
Ответ на этот вопрос фактически является частью нашего решения. Контакты GPIO работают от 3,3 вольт. Поэтому, если вы установите для вывода ВЫСОКОЕ значение в режиме вывода, этот вывод будет выдавать / подавать 3,3 вольта. Однако, если вы установите его на выход LOW, он будет подключен к земле, но может образовать обратный путь для завершения цепи.
В режиме ввода все работает немного иначе. Вы можете предположить, что показание вывода будет ВЫСОКИМ, если он подключен к напряжению 3,3 В, и НИЗКИМ, если он подключен к земле. На самом деле существует порог напряжения это где-то от 1,1 до 1,4 вольт. Ниже порога - НИЗКИЙ, а выше - ВЫСОКИЙ; так, например, 1,0 вольт будет считаться НИЗКИМ, несмотря на то, что на самом деле там есть некоторое напряжение, тогда как 1,6 вольт будет считаться ВЫСОКИМ, несмотря на то, что это намного меньше, чем 3,3.
Если мы воспользуемся резисторами, чтобы снизить выходное напряжение датчика качества воздуха до чуть ниже этого порога, то выброс, вызванный пердежом, перевернет его с НИЗКОГО на ВЫСОКИЙ, и у нас есть цифровое обнаружение пердежа.
Подключите датчик качества воздуха
Это вид снизу датчика качества воздуха. Номера контактов имеют следующие функции:
- Нагреватель (-)
- Сенсорный электрод (-)
- Сенсорный электрод (+)
- Нагреватель (+)
Итак, есть две разные схемы, которые нам нужно приспособить. Во-первых, это обогреватель . (контакты 1 и 4), который используется для подачи энергии в воздух, а другой - датчик сам (контакты 2 и 3). Сторона выхода (-) датчика - это то место, где мы будем подключать наши резисторы. Возьмите макетную плату и вставьте в нее четыре контакта датчика так, чтобы он охватил центральный зазор, как показано ниже. Возможно, вам придется немного согнуть штифты, но это не повредит датчику. Убедитесь, что маленькая вкладка находится в той же ориентации, что и показано.
важно, прочтите, пожалуйста |
---|
На схеме выше показана модель Raspberry Pi B. Если вы используете B + или новый Pi 2, первые 26 контактов GPIO одинаковы для всех. Таким образом, вы можете использовать те же контакты, что указаны на схемах. |
Датчик может работать от 5 вольт, но мы собираемся запустить его на 3,3 вольт здесь, так как это безопаснее для использования с входом GPIO. Используйте перемычки, чтобы выполнить оранжевые соединения, показанные выше; это подаст 3,3 В на контакты 3 и 4 датчика (оба положительных электрода). Цвет используемого провода не имеет значения. Затем подключите отрицательную (-) клемму нагревателя непосредственно к заземлению, как показано выше черными проводами.
Нам все еще нужно что-то сделать с отрицательной стороной датчика, строкой 1 в правом верхнем углу макета.
Подключите спусковой крючок
Выключите Raspberry Pi, если он еще не выключен, введя следующее:
sudo halt
А пока отключите питание; мы подключим его снова позже.
Затем давайте подключим выход датчика к одному из контактов GPIO:это будет триггерный контакт, который мы будем отслеживать в нашем коде, чтобы увидеть, не произошло ли пердеж. Используйте для этого GPIO 4. Возьмите перемычку и выполните белое соединение, показанное ниже.
Затем возьмите резистор 47 кОм (резисторы имеют цветовую маркировку, чтобы помочь вам идентифицировать их) и подключите его между выходом датчика и землей, как показано выше. Это будет откачивать часть напряжения, поступающего с выхода датчика, чтобы помочь снизить его до 1,1–1,4 вольта порогового значения GPIO для нашего триггерного контакта. Однако этого единственного резистора будет недостаточно для выполнения работы, так что читайте дальше.
Создайте резисторный лестничный ЦАП
Проблема в том, что, несмотря на добавление резистора 47 кОм, датчик качества воздуха имеет довольно большой диапазон выходных напряжений. 0 вольт - это то, что мы найдем в вакууме, а максимальное 3,3 - это то, что мы увидим при ужасном, слезящемся, тихом, но смертельно опасном пердеже. В зависимости от фонового качества воздуха выходное напряжение датчика может находиться в любом месте этого диапазона. Поэтому нам нужен надежный способ всегда снижать это напряжение до уровня чуть ниже порога GPIO при различных условиях качества воздуха.
Для этого нам понадобится другой переменный резистор, чтобы мы могли изменять количество напряжения, которое мы отводим на землю. Мы могли бы использовать для этого потенциометр, но вам всегда нужно вручную настраивать его на фоновый воздух, прежде чем его можно будет использовать. Это не идеально, если вы хотите расставить ловушку и дождаться ничего не подозревающей жертвы. Тем временем фоновое качество воздуха может измениться естественным образом, и будильник сработает без перебоев. Неудобно.
Было бы намного лучше контролировать это из нашего кода. Затем мы можем запрограммировать его на постоянную адаптацию к фоновому качеству воздуха, и ловушке не потребуется ручное вмешательство, если качество воздуха изменится.
Здесь мы можем использовать хитроумный трюк - лестницу резисторов. Здесь у нас есть набор повторяющихся резисторов, которые мы можем независимо включать и выключать в нашем коде. Если каждый резистор имеет разное значение в омах, мы можем использовать разные их комбинации, чтобы получить что-то, приближающееся к поведению переменного резистора / потенциометра.
Теория
Следующий раздел может показаться немного скучным, но затронутые темы значительно помогут вам понять проект, поэтому я советую вам не пропускать его!
Схема ниже схематично показывает, как резисторная лестница будет подключена к датчику качества воздуха TGS2600. Выходное напряжение датчика исходит из контакта номер 2
. , и это связано с GPIO 4. Однако между этим у нас есть несколько мест, где мы можем откачивать напряжение, чтобы снизить напряжение до порогового значения вывода GPIO по мере необходимости.
Пока только 47кОм R0
присутствует на вашей макетной плате, которая подключена напрямую к земле. Остальные резисторы ( R1
в R4
) каждый из них подключен параллельно к другому выводу GPIO. Это дает нам цифровой контроль над включением каждого резистора. Если мы настроим вывод GPIO на использование INPUT
В этом режиме резистор отключается, потому что вывод GPIO ни к чему внутренне не подключен. Однако, если мы настроим его на использование OUTPUT
режима, а затем установите на выводе НИЗКИЙ уровень, это подключит резистор к земле, и через него будет отводиться некоторое напряжение.
Замечание о параллельных резисторах. Общее сопротивление лестницы не сумма всех включенных резисторов. Это было бы, если бы вы подключили резисторы последовательно; это потому, что напряжение должно проходить через каждый резистор по очереди. Параллельно поток напряжения будет делиться поровну между каждым резистором, в результате чего общее сопротивление меньше . . Таким образом, чем больше резисторов мы включаем, тем ниже будет общее сопротивление и тем больше напряжения будет отводиться на землю.
Поскольку лестница управляется цифровым способом путем включения и выключения резисторов, но влияет на аналоговое напряжение от датчика, схему можно назвать цифро-аналоговым преобразователем или DAC для краткости. Это противоположность АЦП, упомянутого ранее.
В идеале нам нужно изменять сопротивление линейным образом и иметь хорошее количество возможных комбинаций включения / выключения, которые будут соответствовать диапазону выходного напряжения датчика качества воздуха. Подумайте, что бы произошло, если бы все резисторы имели одинаковое значение в омах; сколько возможных уникальных Могут ли быть комбинации значений сопротивления?
Подробнее:Подключите датчик к Raspberry Pi, чтобы предупредить вас о появлении ядовитых газов!
Производственный процесс
- Регистратор температуры Raspberry Pi
- Метеостанция Raspberry Pi
- Ультразвуковой датчик (HC-SR04) + Raspberry Pi
- Датчик движения с использованием Raspberry Pi
- Датчик влажности почвы Raspberry Pi
- Превратите Raspberry Pi в фитнес-трекер для хомяков
- Датчик температуры и освещенности Raspberry Pi
- Управление датчиком и исполнительным механизмом Raspberry Pi
- Как подключить ультразвуковой датчик Lego Mindstorms NXT к Raspberry Pi
- Создайте свой первый IOT с помощью Raspberry Pi, датчика DHT11 и Thingspeak.