Как вызвать тревогу при низком уровне туалетной бумаги?

47

Любой с детьми знает, что они никогда не помогают с туалетной бумагой. Кто-нибудь знает, как отследить, когда он низкий или нет, и подать звуковой сигнал? Я просто не знаю, какой датчик использовать, это может помочь.

Некоторые из них пришли на ум: по весу, по отражению (цвет бумаги) или какой-то лазерный триплет - все в порядке на катушке. Я не против построить его, просто я не знаю, какой датчик. Кто-нибудь знает, что использовать?

Хосе Леон
источник
5
Возможно, вам также следует подумать о том, чтобы установить датчик на сиденье унитаза, чтобы он подал сигнал тревоги, если кто-то сядет, когда бумаги нет. :)
Питер Блумфилд
Может быть, можно просто попытаться измерить радиальное сопротивление рулона (надеюсь, оно не слишком высокое), и тогда оно уменьшится, когда не останется достаточно бумаги.
jfpoilpret
Забудьте о сопротивлении: только что попытался измерить его, но оно превышает максимальный калибр моего мультиметра (20
мОм
1
Что ж, то, что следует, может быть обсуждением, лучше расположенным на meta.arduino, но я думаю, что этот вопрос, как правило, обманывает смысл наличия arduino SE. Он не связан напрямую с arduinos, так как для каждого проекта не следует разрабатывать свое решение на основе инструмента, а выбирать инструменты, которые лучше всего подходят для решения (что, если лучше использовать RPi или CC2540?). Это действительно механическое + электронное + программное решение. И нет лучшего SE места, где я знаю, чтобы задавать подобные вопросы.
Zmo
@zmo Я бы тогда предложил ОП отредактировать свой вопрос, чтобы добавить необходимость пропустить сигнал тревоги через Arduino; это сделало бы это лучше для Arduino.SE
jfpoilpret

Ответы:

47

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

Механически ощущать недостаток веса на полке в нижней части столба. Тревога срабатывает при удалении последнего броска. Никто не должен быть пойман коротким.

Для определения веса используйте резистор, чувствительный к силе, такой как FSR 400 (см. Таблицу данных ). В качестве альтернативы, вы можете использовать легкую спиральную пружину для удержания туалетной бумаги с помощью микровыключателя, который срабатывает при удалении обоих рулонов. Другим вариантом может быть детектор обрыва ИК-луча, в котором цепь замыкается после удаления последнего рулона.

JRobert
источник
@AnnonomusPerson Он говорит об измерении веса нескольких полных рулонов туалетной бумаги, а не отдельных листов или пустых рулонов.
AJMansfield
1
Это отличная идея: вместо того, чтобы иметь дело с измерением количества бумаги, оставшейся на рулоне, измерьте количество оставшихся рулонов, чтобы сообщить вам, когда вам нужно получить больше рулонов.
AJMansfield
Какой датчик вы бы использовали для определения недостатка веса?
jfpoilpret
3
Датчик давления ткани - один из вариантов, или датчик освещенности на основании, который закрыт, если имеется рулон.
Роб Хоар
Не могли бы вы привести пример конкретного датчика, который мог бы выполнять эту работу?
asheeshr
22

Я полагаю, что концепцию герконов, предложенную jfpoilpret и jmathew, проще всего реализовать. Я нарисовал диаграмму того, как, я думаю, это будет выглядеть.

Вы можете настроить чувствительность, отрегулировав высоту нижнего контакта.

Это действительно только приводит вас в «низкое» состояние и не обязательно выходит. Если вы не хотите менять рулоны, пока осталось еще несколько листов, это не кажется мне удовлетворительным решением. Я предпочел бы иметь индикатор «вне» и иметь звуковой зуммер, чтобы побудить / позор пользователя заменить рулон.

Этот дизайн может быть выполнен с использованием автономной электроники (Arduino не требуется). Однако, если вы захотите сыграть изменение броска, вы можете использовать для этого ардуино.

Обратите внимание также на цветные сенсоры на основе оптики, хотя подавляющее большинство картонных трубок, используемых для этой цели, коричневого цвета, я видел и белые.

Диаграмма герконового датчика

Arluin
источник
6
Хорошие диаграммы. Что вы использовали, чтобы сделать их?
jmathew
1
Просто важный комментарий: вам даже не нужен герконовый контакт в этой ситуации, а всего лишь два куска металла, используемых в качестве простого переключателя. Геркон основан на магнитных силах, открывающих или замыкающих переключатель; это было необходимо в моем ответе, где не было реального контакта между обеими частями. Но здесь использование тростника кажется мне бесполезным.
jfpoilpret
@jfpoilpret Я не знал, что термин - это особый тип переключателя. Я думал о более общей концепции жесткого сгибаемого материала. Спасибо за разъяснения!
jmathew
@jmathew нет проблем, в конце концов, мы все здесь, чтобы поделиться знаниями!
jfpoilpret
2
Я использовал MS Visio 2007.
Arluin
14

Я думаю, что я видел это в серии 1 эпизоде ​​2 Manlab Джеймса Мэй.

Подобно jfpoilpret, используйте широкий кусок материала на пружине, который всегда соприкасается с валком. Я говорю «широкий», чтобы, когда рулон опустел, тростник соприкасался с одним из боковых держателей рулона. Когда это касается, оно завершает цепь для вашей тревоги.

Вот грубое изображение, описывающее, что я имею в виду.

В ответе Арлуина было упомянуто, что этот метод не показывает, что рулон был пустым. Это в значительной степени правда. Если верхний контакт такой же толстый, как картонный рулон TP, и нижний контакт расположен внутри внутренней части картонного рулона, он должен подходить достаточно близко для практических целей. Одного фута рулона ТП недостаточно после ночи тако.

Вот образ моего воображения

jmathew
источник
9

Используйте детектор излучения, чтобы определить количество бумаги, оставшейся на рулоне. Поместите некоторое количество радиоактивного материала в середину стержня катушки и поместите детектор излучения в другое место (вы можете установить его на другой стороне поверхности, на которой установлен держатель рулона, если хотите; датчики излучения чрезвычайно гибкие) и измерьте количество излучения, чтобы определить, сколько бумаги осталось на рулоне.

В качестве альтернативы, вы могли бы иметь дозатор туалетной бумаги с электронным управлением (кнопка для дозирования предварительно запрограммированной длины туалетной бумаги) и Arduino просто следил за тем, сколько было дозировано.

Или прикрепите вращающийся датчик к боковой стороне стержня катушки (убедитесь, что он подходит, не проскальзывая внутрь рулона), и подсчитайте количество оборотов рулона, чтобы определить, сколько его было использовано.

Конечно, с любым из этих методов вам придется проводить тесты и собирать данные в зависимости от точного типа / марки / материала / и т.д. туалетной бумаги.

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

Для еще большего удовольствия вы можете использовать детектор для сбора данных временных рядов, чтобы позже вы могли загрузить его на компьютер и построить график «использования туалетной бумаги с течением времени» или что-то в этом роде.

AJMansfield
источник
2
Я большой поклонник использования поворотного энкодера. Можно даже придумать, что держатель TP имеет датчик, прикрепленный к стержню через валок, что не вызывает перемещения датчика. Также кнопка может быть использована для сброса счетчика.
Steven10172
1
Но общая проблема заключается в определении максимального числа вращений, поскольку это зависит от количества листов и их толщины.
jfpoilpret
Я бы поменял это с «Прикрепить устройство излучения к рулону туалетной бумаги», чтобы прикрепить его к среднему ролику, на котором он сидит. Тот же эффект, но меньше необходимости повторного подключения датчика к каждому броску
Robotnik
1
Вы можете определить количество оборотов, перенеся все ТП из нового рулона на катушку в измеренном рулоне и посчитав обороты с помощью энкодера (с помощью простой функции DYI, например, пары вертикальных штифтов и просто намотав один на другой). , Затем, когда его пусто, повторите. Это также упрощает использование, поскольку вы можете просто продолжать использовать ту же катушку, к которой вы уже подключили кодировщик, и продолжать наматывать на нее новый TP.
Джейсон С
1
@ AJMansfield Интересно, если бы некоторые круги, вырезанные из картона по бокам приемного рулона (и некоторая осторожность), дали бы удовлетворительные результаты; если ролики находятся на штифтах для переноса, вы можете просто проделать отверстие в центре дисков и надеть их. С другой стороны, если вы всегда покупаете одну и ту же торговую марку TP, вам нужно будет сделать это только один раз (и вы можете иметь под рукой список количества вращений для разных марок / типов, которые вы обнаружите - вы могли бы быть гордый сопровождающий первой в мире базы данных счетчиков вращений TP с открытым исходным кодом).
Джейсон С
7

Я думаю, что «Arluin» и «Jmathew» имеют правильную идею. Используйте рычаг, опирающийся на верхнюю часть рулона.

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

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

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

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

Еще одна вещь, которая вам может понадобиться, это какой-то валик на конце рычага, чтобы рулон бумаги мог легко перемещаться с небольшим сопротивлением, когда рычаг касается бумаги.

Предлагаемая настройка

DanJAB
источник
4

Вы можете просто взломать одну из тех, кто играет в поздравительные открытки, и адаптировать переключатель к держателю. Как только вы услышите, как в туалете раздается звонок «С Днем Рождения», вы знаете, что у вас проблемы! (И потому что они очень маломощны, эти вещи звучат вечно ;-)). ...

с днем ​​рождения

зернистость
источник
Можете ли вы отредактировать свой вопрос, чтобы рассказать, как подключить этот элемент к плате Arduino? Спасибо!
Анонимный Пингвин
3

Я построил отражательный тахометр для Arduino, который, вероятно, решит вашу проблему. Основная схема довольно проста:

схема тахометра

У меня был фоторанзистор, который хорошо реагировал на красный свет, и другой от Radio Shackэто было довольно чувствительно к ИК-выходу старых светодиодных индикаторов на телевизоре. Для ваших целей зеленый провод будет подключен к аналоговому выводу 0 Arduino, и вам просто нужно периодически производить выборку, а не настраивать эскиз, управляемый прерыванием. Хитрость в том, чтобы получить разницу отраженного сигнала между белой бумагой и серым рулоном, заключается в том, что светочувствительность фототранзистора увеличивает w, увеличивая сопротивление GND, но темновое напряжение также возрастает. Я получил значения 5 и 3 МОм, проверяя значения AtoD на темных и светлых объектах на расстоянии нескольких дюймов от детектора. Та же процедура должна работать для вашего обнаружения серого против белого. Хотя некоторые вещи, которые выглядят совершенно по-разному, имеют одинаковую отражательную способность в ИК-диапазоне. Вот фотография готового тахометра красного света: введите описание изображения здесь

Это должно быть просто сделать сенсорную панель достаточно маленькой, чтобы поместиться в задней части вашего диспенсера для бумаги. ИК-версия еще меньше, но слишком глубоко закопана в самодельной центрифуге, чтобы сфотографировать ее сегодня.

странствующий незнакомец
источник
3

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

Адитья Сомани
источник
За $ 10 вы можете получить этот диапазон adafruit.com/products/466 1 см-15 см (идеально подходит для рулона TP) и предназначен для легкой интеграции с микроконтроллером.
Джейсон С,
@Jason C: Первая попытка использовала VCNL4000, но, как и в других отчетах, он останавливал / останавливал / останавливал во время чтения. Я не видел, чтобы кто-нибудь решал эту проблему, даже при понижении мА.
Хосе Леон
@ Aditya Использование датчика приближения HC-SR04 не помогло. Не было никакой разницы между полным рулоном ТП и пустым. Лучшее, что я могу догадаться, это то, что «эхо» проходило прямо через ткань и останавливалось на металлическом стержне, удерживающем ТП. Так что, по крайней мере, для этого датчика это не сработало.
Хосе Леон
@JoseLeon я вижу. Это действительно странно. Я согласен с твоими рассуждениями. Может быть, есть еще один датчик, который мог бы работать, но я думаю, что ваши рассуждения о том, что инфракрасные волны должны проходить через туалетную бумагу, кажутся верными.
Адитья Сомани
2

Ультразвуковой датчик расстояния ближнего действия может быть эффективным (и довольно дешевым) вариантом. Вы можете получить комбинацию излучатель + датчик, установленную на чипе. Различные датчики могут работать по-разному (всегда проверяйте таблицу данных). Тем не менее, общий выходной сигнал использует длительность импульса для определения измеренного расстояния. Вы можете обработать это в Arduino, используя pulseIn()функцию.

С точки зрения установки, вы, вероятно, поместите его прямо за туалетной бумагой, указывая на центр катушки. Показания часто довольно неустойчивы, поэтому вы хотите выполнить несколько измерений и усреднить их (или использовать простое скользящее среднее). С помощью небольшой калибровки вы можете определить, какое расстояние представляет пустую катушку.

Когда вы обнаружите это расстояние несколько раз в течение значительного периода (например, минуты или более), вы включите звуковой сигнал.

Датчиком, основанным на отражении, может быть другая возможность, хотя мне интересно, можете ли вы изо всех сил пытаться найти такой, который будет правильно работать на туалетной бумаге (в зависимости от того, насколько мягкая ваша предпочтительная марка!).

Питер Блумфилд
источник
Я не уверен, что вы бы получили достаточно точности с ультразвуковым датчиком; IIRC, большинство из них имеют точность около 3-4 мм; в общем, это достаточно хорошо, но, учитывая диаметр рулона туалетной бумаги, это может быть слишком неточным.
jfpoilpret
Да, это часто верно для отдельного чтения. Колебания довольно однородны, поэтому вы можете усреднить несколько последовательных показаний, чтобы противостоять им. Это потенциально может дать вам точность ~ 1 мм.
Питер Блумфилд
Что происходит, когда туалетная бумага шевелится на один мм при вращении от датчика с небольшим количеством оставшейся бумаги?
Анонимный пингвин,
1
@AnnonomusPerson Вы всегда будете получать ложные показания, когда есть движение. Вот почему вы ждете, пока показания станут стабильными в течение значительного периода времени, прежде чем действовать на них.
Питер Блумфилд
@Peter R: Использование датчика приближения HC-SR04 не помогло. Не было никакой разницы между полным рулоном ТП и пустым. Лучшее, что я могу догадаться, это то, что «эхо» проходило прямо через ткань и останавливалось на металлическом стержне, удерживающем ТП. Так что, по крайней мере, для этого датчика это не сработало.
Хосе Леон
2

Одна идея, которая приходит на ум, будет примерно такой:

  • вставьте маленький магнит внутри рулона бумаги, то есть внутри картонной детали (это нужно делать каждый раз, когда вы меняете его; хотя)
  • используйте геркон (электромагнитный выключатель) на кончике палки с пружиной, чтобы всегда быть в контакте с бумажным рулоном
  • один контакт герконового контакта может быть напрямую подключен к входному логическому контакту (установите его как вход резистора)
  • другой контакт геркон должен быть подключен к земле

Таким образом, как только расстояние между магнитом и герконовым контактом окажется ниже определенного предела, переключатель замкнет цепь. Это расстояние будет уменьшаться по мере вытягивания рулона бумаги.

Обратите внимание, что вместо герконового контакта вы также можете использовать датчик Холла, принципы остаются прежними, меняются только технология и характеристики.

Трудность заключается в том, чтобы найти правильную чувствительность герконового контакта (или силы магнита), чтобы геркон замыкался, когда расстояние между ним и магнитом достаточно мало, чтобы избежать сигнала тревоги, который активируется слишком рано. ).

jfpoilpret
источник
Это не сработает, по той же причине, что и ультразвуковой датчик. Это все еще уйдет с по крайней мере 10 футами все еще на этом. Датчик цвета - лучшая идея.
Анонимный пингвин,
Я не вижу связи с ультразвуковым датчиком. Не могли бы вы развить дальше, ПОЧЕМУ это не сработает? Существует большое количество датчиков герконового контакта и эффекта Холла, не говоря уже о магнитах разных типов.
jfpoilpret
Слой TP настолько тонкий, что может активироваться с небольшим остатком. Теоретически его можно настроить, но на самом деле неэффективно вынимать микроскоп или что-либо еще, чтобы заменить рулон туалетной бумаги.
Анонимный пингвин,
Активировать с небольшим количеством оставленного не так уж и плохо, так как вопрос ОП: «... туалетная бумага низка »; низкий не обязательно означает пустой.
jfpoilpret
2

Самое простое, но, тем не менее, лучшее решение - использовать оптопару, состоящую из одного ИК-светодиода и опто-транзистора. Вы заставляете светодиод светиться к рулону, светодиод внутри рулона привязан к «ручке». После того, как вы удалите картонный рулон, опто-транзистор получает ИК-свет от светодиода и запускает прерывание смены штырька на Arduino, которое затем может предупредить вас разными способами (свет, SMS, твиттер, сигнализация ...).

Такой дизайн действительно дешев, его легко и быстро построить. Хотя есть еще одна вещь, которую вам нужно сделать: когда больше нет туалетной бумаги, вам действительно нужно удалить картонный рулон ;-)

В противном случае, то же самое решение для запасных рулонов - даже лучшая идея :-)

ZMO
источник
Разве оптопары не являются одиночными микросхемами, которые включают в себя как излучатель, так и приемник? Смотрите здесь: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret
[…] - это компонент, который передает электрические сигналы между двумя изолированными цепями с помощью света […], поэтому в основном это то, что мы делаем, между инфракрасным светодиодом (одна цепь) и фототранзистором. Хотя вы правы, это не один компонент (например, MOC3020).
Zmo
2

Многие варианты здесь кажутся слишком сложными и навязчивыми.

Датчик цвета

Другой вариант, немного сложный (но забавный) для реализации, но ненавязчивый и простой в установке, - это создать дешевый датчик цвета и установить его на стене за рулоном. Когда вы определяете цвет рулона (или отсутствие цвета TP), он низкий.

Вы также можете просто купить один за 8 долларов .

Вы можете отрегулировать порог, используя тонкость TP и тот факт, что он начинает выглядеть немного темнее, когда осталось всего несколько листов.

При необходимости калибровку можно выполнить, нажав кнопку после установки нового рулона с включенным освещением в ванной комнате.

Вам нужно будет сделать несколько корректировок в зависимости от особенностей вашей ванной комнаты. Если вы добавите некоторую дополнительную сложность и отключите питание от розетки переменного тока, которая была связана с выключателем освещения в ванной комнате, вы можете включить его только при включенном освещении в ванной комнате, что отфильтрует много недостоверных данных.

Это очень легко установить и не требует модификации самого рулона. Вы можете прикрепить датчик к стене с помощью двухсторонней ленты или положить его на крошечную полку под рулоном вверх (или сверху вниз).

Инфракрасный луч

Установите небольшой ИК-светодиод на одной стороне диспенсера, прямо над катушкой. Установите ИК фотодатчик на другой стороне дозатора. Когда датчик видит светодиод, крен низкий. Это можно сделать и с помощью дешевого лазера (например, стандартная лазерная указка с одной стороны и фотодатчик с другой; но не вредите глазам!)

Он также прост в установке (например, горячий клей для дозатора) и не требует модификации рулона, хотя расположение датчиков может облегчить их повреждение при замене рулонов.


Мне также очень нравятся тростниковый датчик и датчик дальности (кстати: 10 долларов США - отличный датчик расстояния для ближнего действия ).

Джейсон С
источник
1
ИК луч был моей первой мыслью. Простой и легкий в реализации и, вероятно, более надежный, чем некоторые другие решения, хотя, может быть, и менее увлекательный :)
Кевин
Хе-хе, я согласен. Я думаю, что датчик цвета был бы забавным, по крайней мере, со стороны программного обеспечения; было бы неплохо собрать данные и попытаться придумать алгоритм, который был бы невосприимчив, например, к изменениям естественного освещения или другим ложным срабатываниям.
Джейсон С
1

У вас есть несколько вариантов:

Примечание. Указанные ссылки являются только первыми. Большинство из них дорогие по сравнению с другими сайтами. eBay купить его сейчас может быть довольно дешево для большинства из этих предметов. Проверьте и другие места, в том числе Sparkfun .

  • Ультразвуковой датчик пинга . Это не идеально, но они просты в использовании. Просто добавьте один с приложением. Это не идеально, потому что он не будет достаточно точным, чтобы точно сказать, когда он пуст. Это может быть немного более / менее чувствительным. Вес будет тяжелее, если он вообще сдвинется.
  • Цветной сенсор (желательно, но стоит дороже) . Вы упомянули об этом, и это, вероятно, лучшая идея. Это даст вам аналоговые значения (для чтения с Arduino) для красного, зеленого и синего. [Предполагая, что чем выше содержание этого цвета, тем выше напряжение], белый цвет должен быть в значительной степени равен 100%, а коричневый - я бы предположил, что большинство из них будет составлять около 30-40%. (Более подробно, если вы этого не понимаете, пропустите эту часть)

Я собираюсь более подробно остановиться на датчике цвета:

Цвета здесь читаются с тремя значениями: красный, зеленый и синий. На плате три датчика. Один отфильтровывает все, кроме красного, другой синий и другой зеленый. Датчики на плате определяют количество поступающего света и затем преобразуют его в напряжение: между 5 В («100% красный / зеленый / синий») или 0 В («0% красный / зеленый / синий»). Это может быть преобразовано в число с помощью Arduino (0-1024 на аналоговом выводе).

Проблема с освещением: этот датчик, насколько я могу судить, имеет светодиод, который всегда включен. Вы захотите либо расплавить это, либо накрыть, если вы не хотите держатель для туалетной бумаги с подсветкой. Теперь подождите ... ваш датчик будет думать, что в темноте он коричневый. Нет проблем ... вот о чем вы можете подумать.

Используйте палитру цветов, как я использую, и выберите коричневый . Слева от этого вы можете управлять «имитацией яркости». Кроме того, это шестнадцатеричная форма RGB. Вы хотите преобразовать это в стандартные значения с помощью этого калькулятора .

В коричневом цвет синий почти отсутствует. Мы должны игнорировать этот цвет, если вы не хотите проверить, является ли он коричневым. Я бы сказал, что для любого оттенка коричневого всегда должно быть меньше 40%.

Из того, что я могу сказать с образцом оттенка коричневого, красный в 2 раза больше зеленого. Это соотношение может варьироваться, но вы должны убедиться, что оно несколько существует. Для белого / серого / черного цвета все цвета пропорциональны 1: 1: 1. Вы можете использовать это, чтобы определить, темно ли оно или коричневое.

int rPin = A0;      //Red Pin
int gPin = A1;      //Green Pin
int bPin = A2;      //Blue Pin
int ledPin = 13;    //I made this code with a LED, not a speaker
boolean testTwice = false;

void setup() {
  pinMode(ledPin, OUTPUT);  
}

void loop() {
  int rValue = analogRead(rPin);
  int gValue = analogRead(gPin);
  int bValue = analogRead(bPin);

  if (bPin < 256) { //If this is false, either something is in the way or it's white. Going to verify that something's not in the way...
    int minRed = rPin * 0.4; //A little under a half for padding... this values may need to be adjusted. Adjust this one and the one below farther apart for less sensitive.
    int maxRed = rPin * 0.6; //A little over a half for padding... this values may need to be adjusted.
    if (gPin < maxRed && gPin > minRed) { //Verifys that red between minRed and maxRed
      digitalWrite(ledPin, HIGH);
      delay(5000);
      digitalWrite(ledPin, LOW);
    }
  }
  delay(5000); // No need to waste power... you might want to add an actutal sleep function if on battery power
}

Во-первых, он проверяет, что синий цвет составляет менее 25%. Затем он проверяет, что красный и зеленый равны ... дать или взять 20%. (т.е. красный = 100, зеленый = 80, красный = 110, зеленый = 90 и т. д.). Если это правда, вы можете установить, что он коричневый. Затем светодиод включается на пять секунд.

Вы можете изменить светодиод, чтобы он был зуммер, если хотите. Возможно, вам придется скорректировать оператор if, убедившись, что синий цвет меньше 256/1024 (1024 = разрешение аналогового вывода), если он не работает при большом освещении или работает в темном свете. Поскольку код позже проверяет, что красный цвет примерно в 2 раза больше зеленого, любой оттенок белого не должен проходить это выражение if. Возможно, вам также придется настроить minRedи, maxRedчтобы быть дальше (если не обнаруживает коричневый) или ближе (если обнаруживает коричневый, когда он белый). Я не могу проверить этот код без датчика цвета.


Примечание: это может быть немного беспокойным. Я бы порекомендовал светодиод вместо этого, чтобы весь дом не проснулся среди ночи только из-за низкого уровня туалетной бумаги. Кроме того, если вы вообще загораживаете датчик ... Если бы его не было в ванной, я бы порекомендовал камеру, чтобы она делала снимок каждый раз, когда он становится очень низким, с герконом, как в ответе @ jfpolipret ... но ... (не каламбур) :)

Анонимный пингвин
источник
Должен ли датчик цвета работать так же (т.е. без необходимости настраивать эскиз), если вы измените цвет вашей туалетной бумаги :-)?
jfpoilpret
@jfpoilpret Не знаю, используете ли вы туалетную бумагу повторно, но ... :) Я добавляю код с механизмами, чтобы он был "похожим", но не точным.
Анонимный Пингвин,
Я думаю, что туалетная бумага достаточно мягкая, чтобы поглощать ультразвуковой
импульс
@TheDoctor Это не очень хорошая идея, как я уже говорил. Это способ неточности.
Анонимный пингвин,
1
@jfpoilpret Если вы добавили кнопку «Калибровка» и нажали ее, когда освещение в ванной комнате включено после установки нового рулона, вы можете измерить правильный цвет.
Джейсон С
1

Звучит как крутой проект, вот мои 2 кт:

Направьте камеру, чтобы сфотографировать рулон сбоку, это, вероятно, единственный способ действительно узнать, сколько бумаги осталось. (редактировать: вы можете использовать Raspberry Pi с камерой CSI и создать выходной сигнал, соответствующий количеству листов и подать этот сигнал на Arduino ?!)

Для оценки может также быть достаточно посчитать повороты рулона, но вам нужно лучше подобрать рулон, чтобы он не проскальзывал. Или вы можете использовать магниты, как на велосипедах, но их нужно сразу прикрепить к рулону.

(редактировать: еще одна идея, измерьте толщину рулона, измерив угол крышки)

газетчик
источник
Привет и добро пожаловать в Arduino Stack Exchange! Подскажите, пожалуйста, как вы подключаете его к Arduino? Спасибо! Кроме того, я не знаю, насколько это хорошая идея - поместить камеру в ванную. :)
Анонимный Пингвин
Мне нравится ваша последняя отредактированная идея; это можно упростить еще больше, просто используя переключатель на крышке, который закроет цепь, когда крышка достигнет определенного угла; это кажется проще, чем измерение самого угла.
jfpoilpret
1

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

Stav
источник
Я согласен. Люди, кажется, слишком усложняют это. Также вы можете продолжать использовать один и тот же рулон с прикрепленным к нему энкодером, перенося TP с нового рулона на рулон датчика, когда вы снова его наполняете (например, положите рулоны на пару дешевых дюбелей и оберните их); это также позволяет подсчитать, сколько оборотов за этот бросок (по мере его пополнения).
Джейсон С
1

Я говорю: возьми датчик веса и запрограммируй его на вес рулона. Когда он упадет ниже определенного веса, начните мигать светодиодом или сделайте звуковой сигнал.

И. Голсби
источник
0

Другой способ сделать это, на случай, если вы просто захотите, - это положить металлический стержень внутрь рулона и металлическую пластину снаружи и измерить емкость, которая должна меняться с оставшимся ТП из-за диэлектрическая проницаемость бумаги.

Но это наверняка пойдет по «живописному маршруту». Тем не менее, Arduino может довольно легко измерить емкость, и она может быть даже достаточно чувствительной, и она останется в стороне, потому что это будет просто металлическая пластина за рулоном и металлический стержень в рулоне. Возможно, вы даже сможете дооснастить существующий держатель, не заметив его.

Более простым способом было бы прикрепление к стержню потенциометра стержня, удерживаемого верхней частью рулона. Меньше ТП, вал опускается и поворачивает горшок. Может потребоваться длинный стержень для рычага, потому что вы не можете надавить слишком сильно, не мешая функции вытягивания туалетной бумаги.

Как предположил А.Дж.Мансфилд, радиоактивность фактически используется для измерения толщины вещей в промышленных условиях. Если вы действительно хотели сойти с ума, возможно, вы могли бы использовать чрезвычайно низкоэнергетический радиоактивный источник, такой как банка этого странного заменителя соли с дегустацией, который немного выше фонового уровня и усредняется в течение очень долгого времени (туалетная бумага не должна сильно меняться от часа час), так что это может быть разумным, если дорогой способ сделать вещи.

Инфракрасные датчики разрыва луча также хороши, и если вы расположите их правильно, вы сможете заставить их блокировать больше света, чем полнее рулон, вместо того, чтобы просто давать вам сигнал включения или выключения.

РЕДАКТИРОВАТЬ: Рабочая Доказательство концепции емкостного подхода. Требуется только Arduino и 2 жестких провода. С точностью до восьмой дюйма, с большим шумом. Уверен, что вы можете получить достоверную точность не менее 1 дюйма. Время измерения составляет около минуты. Это действительно чувствительно к окружающей обстановке. Вы должны убедиться, что металл внутри ступни остался на месте или использовать экранирование.

float difference;
unsigned long i;
unsigned long j;
unsigned int temp;
volatile unsigned char blah;

void setup()
{
  pinMode(5,OUTPUT);
  Serial.begin(9600);
}

void loop()
{
 difference =0;
 Serial.print("Measuring: ");

 for(i=0;i<100;i++)
   {
     for(j=0;j<5000;j++)
     {
       digitalWrite(5,LOW);

       temp=analogRead(A0);

       digitalWrite(5,HIGH);

       temp = analogRead(A0)-temp;
       if(temp<1024)
       {
         difference += temp;
       }

     }
     //Random delay every 5000 samples helps avoid problems with interference by staggering the samples to cancel aliasing.
     delay(random(1,50));
     Serial.print("|");

   }
   Serial.print("\n");
   Serial.print("Value: ");
   Serial.print(difference/500000);
   Serial.print("\nMeasurement Complete. Press Enter to begin another test.\n");

   while(!Serial.available())
   {
     blah = 20;
   }
   Serial.read();


}

http://pastebin.com/2W5y81AB

EternityForest
источник
Лучше включать в ответ код, а не внешнюю ссылку. Если ссылка разорвется в будущем, ваш ответ все равно будет актуален.
sachleen