Як викликати тривогу, коли туалетного паперу мало?


47

Усі, хто має дітей, знають, що ніколи не допомагають з туалетним папером. Хто-небудь знає, як відстежувати, коли він низький або вийшов, і спрацює звуковий сигнал тривоги? Я просто не знаю, який сенсор використовувати, який може допомогти.

Деякі, що прийшли в голову, це: за вагою, за відображенням (колір паперу) або якийсь лазерний трикутник - все гаразд на котушці. Я не проти будувати це, просто я не знаю, який датчик. Хтось знає, що використовувати?


5
Можливо, вам слід подумати і про те, щоб встановити датчик на сидінні унітазу, тому він буде спрацювати на сполох, якщо хтось сідає, коли немає паперу. :)
Пітер Блумфілд

Можливо, можна просто спробувати виміряти радіальний опір рулону (сподіваємось, він не надто високий), і тоді він зменшиться, коли не залишиться жорсткого паперу.
jfpoilpret

Забудь про опір: просто намагався його виміряти, але він вище максимального калібру мого мультиметра (20
М

1
Що ж, далі може бути дискусією, яка краще розміщується на meta.arduino, але я думаю, що це питання, як правило, таке, що обманює сенс наявності ардуїно SE. Це не пов'язане безпосередньо з ардуїно, так як для кожного проекту не слід розробляти рішення проти інструменту, а вибирати інструменти, які найкраще підходять для рішення (що робити, якщо краще використовувати RPi, або CC2540?). Це дійсно механічне + електронне + інженерне рішення програмного забезпечення. І немає кращого місця, де я знаю, щоб задати такі запитання.
змо

@zmo я б запропонував ОП відредагувати його питання, щоб додати необхідність вводити тривогу через Arduino; це зробило б це краще для Arduino.SE
jfpoilpret

Відповіді:


47

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

Механічно відчувати брак ваги на полиці внизу жердини. Тривога спрацьовує, коли останній рулон видалений. Нікому не доводиться спійматися.

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


@AnnonomusPerson Він говорить про вимірювання ваги кількох повних рулонів туалетного паперу, а не окремих аркушів або порожніх рулонів.
AJMansfield

1
Це відмінна ідея: замість того, щоб займатися вимірюванням кількості паперу, що залишилась у рулоні, виміряйте кількість залишених рулонів, щоб сказати, коли потрібно отримати більше рулонів.
AJMansfield

Який датчик ви б використали для виявлення нестачі ваги?
jfpoilpret

3
Датчик тиску тканини - це один із варіантів, або датчик світла на підставі, що закривається, якщо присутній рулон.
Роб Хоаре

Чи можете ви навести приклад конкретного датчика, який міг би виконати роботу?
asheeshr

22

Я вважаю, що концепція датчика очерету, викладена jfpoilpret та jmathew, є найпростішим у виконанні. Я намалював схему того, як я думаю, що це буде виглядати.

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

Це дійсно приводить вас лише до "низького" стану, а не обов'язково виходить. Якщо ви не хочете міняти рулони, поки залишилося кілька аркушів, це не здається мені задовільним рішенням. Я вважаю за краще індикатор "вийти" і мати звуковий зумер, щоб спонукати / посоромити користувача про заміну рулону.

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

Зверніть увагу також на датчики оптики на основі кольорів, хоча переважна більшість картонних трубок, використовуваних для цієї мети, коричневого кольору, я також бачив білі.

Діаграма датчика очерету


6
Гарні схеми. Що ви використовували для їх виготовлення?
jmathew

1
Просто важливий коментар: вам навіть не потрібен контакт очерету в цій ситуації, а лише два шматки металу, які використовуються як простий перемикач. Контакт очерету заснований на магнітних силах, що відкривають або закривають вимикач; це було потрібно в моїй відповіді, коли не було реального контакту між обома частинами. Але ось використання очерету просто здається марним.
jfpoilpret

@jfpoilpret Я не знав, що термін є специфічним видом перемикання. Я думав про більш загальну концепцію жорсткого згинального матеріалу. Дякуємо за роз’яснення!
jmathew

@jmathew не проблема, зрештою, ми всі тут, щоб ділитися знаннями!
jfpoilpret

2
Я використовував MS Visio 2007.
Arluin

14

Я думаю, що це я бачив у серії 1 епізоду 2 "Manlab" Джеймса Мей.

Подібно до jfpoilpret, використовуйте широкий шматок матеріалу на пружині, який завжди контактує з рулоном. Я кажу "широко", так що коли рулон порожній, очерет торкається контакту на одному з держателів рулону збоку. Коли вона торкається, вона завершує ланцюг вашого тривоги.

Ось грубе зображення, що описує, що я маю на увазі.

У відповіді Арлуйна було зазначено, що цей метод не покаже, що булочка порожня. Це майже правда. Якщо верхній контакт настільки товстий, як рулон картона TP, а нижній контакт розташований у внутрішній частині картонного рулону, він повинен бути досить близьким для практичних цілей. Одного фута рулону TP недостатньо після такої ночі.

Ось образ моєї фантазії


9

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

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

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

Звичайно, з будь-яким із цих методів вам доведеться робити тести та збирати дані залежно від точного типу / марки / матеріалу / тощо туалетного паперу.

Спеціально для другої та третьої ідеї я рекомендую регулярно брати дані з системи, щоб відслідковувати типову довжину рулону, щоб ви могли налаштувати програму на будь-які значні зміни. Навіть у межах одного типу туалетного паперу, я б міг уявити, що буде різниця у довжині рулону.

Для ще більшої розваги ви можете інструментувати детектор для збору даних часових рядів, тож пізніше ви можете завантажити його на комп’ютер і зробити графік "використання туалетного паперу з часом" чи щось таке.


2
Я величезний фанат використання обертового кодера. Це навіть могло бути спроектовано, щоб утримувач TP мав кодер, прикріплений до стрижня через рулон, таким чином, не викликаючи руху кодера. Також кнопка може бути використана для скидання кількості.
Стівен10172

1
Але загальною проблемою буде визначення максимальної кількості обертів, оскільки це залежить від кількості аркушів та їх товщини.
jfpoilpret

Я змінив би це з "Приєднати радіаційний пристрій до туалетного рулону", щоб прикріпити його до середнього валика, на якому він сидить. Такий же ефект, але менша підтримка необхідності повторного підключення датчика для кожного рулону
Robotnik

1
Ви можете визначити кількість обертів, перенісши всю ТП з нового рулону на котушку у вашому виміряному рулоні і порахувавши обертання разом з кодувачем (з простою штукою DYI, як пара вертикальних дюбелів, і просто оберніть один на інший) . Потім, коли вона порожня, повторіть. Це також робить його легким у використанні, оскільки ви можете просто повторно використовувати ту саму котушку, до якої вже приєднали кодер, і продовжувати обгортання нового ТП на неї.
Джейсон С

1
@AJMansfield Цікаво, чи деякі вирізані з картону кола з боків приймального рулону (і певний догляд) дали б задовільні результати; якщо рулони є на дюбелях для перенесення, ви можете просто просунути отвір в центрі дисків і насунути на них. З іншого боку, якщо ви завжди купуєте одну і ту ж марку ТП, вам доведеться це зробити лише один раз (і ви можете тримати список під рукою кількості спинів для різних марок / типів, які ви виявите - ви можете бути гордий підтримувач першої у світі бази даних TP spin spin).
Джейсон C

7

Я думаю, що "Arluin" і "jmathew" мають правильну ідею. Скористайтеся важелем, що лежить у верхній частині рулону.

Я б зробив це дещо інакше. Замість того, щоб покладатися на відключення контактів, ви можете використовувати потенціометр. За допомогою цієї системи ви можете виміряти залишкову суму, а не просто повідомляти її, коли вона стає низькою.

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

(Можливо, вам потрібна вага, показана синім кольором на схемі, щоб натиснути важіль вниз, коли використовується рулон)

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

Інша річ, яка може вам захотіти, - це якийсь валик на кінці важеля, щоб рулон паперу легко переміщався з невеликим перетягуванням, де важіль контактує з папером.

Пропонована установка


4

Ви можете просто зламати одну з тих, хто грає в дні народження, і пристосувати перемикач до руки тримача. Як тільки ви чуєте «З днем ​​народження», що лунає з туалету, ви знаєте, що у вас трапляються проблеми (і тому, що вони дуже низькі, ці речі передзвонюють назавжди ;-)) Я показав тут світлодіодне налаштування, але ви розумієте ...

З Днем Народження


Чи можете ви відредагувати своє запитання, щоб розповісти, як підключити цей елемент до дошки Arduino? Дякую!
Анонімний Пінгвін

3

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

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

У мене лежав фоторанзистор, який добре реагував на червоне світло, а ще один - від Radio Shackце було досить чутливо до ІЧ-виходу старих світлодіодних віддалених телевізорів. Для ваших цілей зелений дріт буде підключений до Analog Pin 0 Arduino, і вам просто потрібно періодично робити вибірки, а не встановлювати ескіз, керований переплетенням. Підступ до отримання різниці відбитого сигналу між білим папером та сірим рулоном полягає в тому, що чутливість фототранзистора до світла збільшує w, збільшуючи опір GND, але темна напруга також збільшується. Я підійшов за значеннями 5 і 3 мегаом емпірично, перевіривши значення AtoD від темних і світлих предметів на відстані в декількох сантиметрах від детектора. Ця ж процедура повинна працювати і для виявлення сірого та білого. Хоча деякі речі, які виглядають зовсім по-різному, мають однаковий коефіцієнт відбиття в ІЧ. Ось знімок готового тахометра червоного світла: введіть тут опис зображення

Це повинно бути простим, щоб зробити плату сенсорів достатньо маленькою, щоб поміститися на задній панелі дозатора. ІЧ-версія навіть менша, але занадто глибоко закопана в саморобній центрифузі, щоб отримати її сьогодні.


3

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


За 10 доларів ви можете придбати цей діапазон adafruit.com/products/466 1см-15см (ідеально підходить для рулону TP) та призначений для легкої інтеграції з мікроконтролером.
Джейсон C

@Jason C: Першою спробою було використання VCNL4000, але, як і інші звіти, він зупинився / зупинився / заморозився під час читання. Я не бачив, щоб хтось вирішив це, навіть при зниженні mA.
Хосе Леон

@Aditya Використання датчика близькості HC-SR04 не допомогло. Не було різниці між повним рулоном TP і порожнім. Найкраще я здогадуюсь, що «відлуння» прямувало крізь тканину і зупинялося на металевому бруску, що тримав ТП. Тож, принаймні, для цього датчика він не працював.
Хосе Леон

@JoseLeon Я бачу. Це справді досить дивно. Я згоден з вашими міркуваннями. Можливо, є ще один датчик, який може працювати, але я думаю, що ваші міркування про те, що інфрачервоні хвилі повинні просто пройти через туалетний папір, здаються дійсними.
Aditya Somani

2

Датчик дальності ультразвуку на короткому діапазоні може бути ефективним (і досить дешевим) варіантом. Ви можете отримати комбінований випромінювач + сенсор, встановлений на мікросхемі. Різні датчики можуть працювати по-різному (завжди перевіряйте таблицю). Загальний вихід, хоча використовує довжину імпульсу для позначення відстані, що відчувається. Ви можете обробити це в Ардуїно за допомогою pulseIn()функції.

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

Якщо ви виявляєте цю відстань неодноразово протягом значного періоду (наприклад, хвилини або більше), ви б увімкнули сигнал тривоги.

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


Я не впевнений, що ви отримаєте достатню точність за допомогою ультразвукового датчика; IIRC, більшість з них мають близько 3-4 мм точності; загалом це досить добре, але враховуючи діаметр рулону туалетного паперу, це може бути занадто неточним.
jfpoilpret

Так, це часто стосується індивідуального читання. Коливання коливань досить рівномірні, тому можна протиставити кілька послідовних показань, щоб протидіяти цьому. Це потенційно може призвести до точності ~ 1 мм.
Пітер Блумфілд

Що відбувається, коли туалетний папір витає на один мм, відхиляючись від датчика, залишаючи трохи паперу?
Анонімний пінгвін

1
@AnnonomusPerson Ви завжди отримаєте помилкові показання, коли буде рух. Ось чому ви чекаєте, поки читання буде стійким протягом значного періоду, перш ніж діяти на нього.
Пітер Блумфілд

@Peter R: Використання датчика близькості HC-SR04 не допомогло. Не було різниці між повним рулоном TP і порожнім. Найкраще я здогадуюсь, що «відлуння» прямувало крізь тканину і зупинялося на металевому бруску, що тримав ТП. Тож, принаймні, для цього датчика він не працював.
Хосе Леон

2

Одна ідея, яка спадає на думку, була б приблизно такою:

  • вставити невеликий магніт всередину рулону паперу, тобто всередині картону (це потрібно робити щоразу, коли ви його міняєте; хоча)
  • використовуйте тростинний контакт (електромагнітний вимикач) на кінчику палиці, встановленої пружиною, щоб завжди бути в контакті з рулоном паперу
  • один контакт контакту очерету можна безпосередньо підключити до вхідного логічного штифта (встановити його як вхід резистора)
  • інший штифт контакту очерету повинен бути з'єднаний із землею

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

Зауважте, що замість очеретяного контакту ви також можете використовувати датчик ефекту Холла, принципи залишаються тими ж, змінюються лише технологія та характеристики.

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


Це не спрацює з тієї ж причини, що і ультразвуковий датчик. Він все одно піде, як мінімум на 10 футів, як і раніше. Кольоровий датчик - краща ідея.
Анонімний пінгвін

Я не бачу зв'язку з ультразвуковим датчиком. Чи можете ви розвинути далі ЧОМУ це не спрацює? Існує велика кількість датчиків контакту очерету та ефекту залу, не кажучи вже про різні види магнітів.
jfpoilpret

Шар ТП настільки тонкий, що він може активуватися трохи ліворуч. Теоретично це можна підробити, але дістати мікроскоп або що-небудь інше змінити рулон туалетного паперу дійсно неефективно.
Анонімний пінгвін

Активізація трохи ліворуч - це не так вже й погано, оскільки питання про ОП - "... туалетний папір низький "; низький не обов'язково означає порожній.
jfpoilpret

2

Найпростішим, але найкращим фактом рішення є використання оптрона з одного ІК-світлодіода та опто-транзистора. Ви змушуєте світлодіод світлішати до рулону, при цьому світлодіод знаходиться в рулоні, прив'язаному до "ручки". Після того як ви виймете картонний рулон, опто-транзистор отримує світлодіодне світло від світлодіода і спрацьовує переривання зміни штифта на Arduino, яке потім може попередити вас різними способами (світло, SMS, щебетання, сигналізація ...).

Цей дизайн справді дешевий, простий і швидкий в побудові. Хоча вам ще потрібно зробити одне: коли більше немає туалетного паперу, вам потрібно зняти картонний рулон ;-)

Інакше таке ж рішення для запасних рулонів є навіть кращою ідеєю :-)


Чи не є оптопари одиночними мікросхемами, що включають і випромінювач, і приймач? Дивіться тут: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret

[…] - це компонент, який передає електричні сигнали між двома ізольованими ланцюгами, використовуючи світло […], так що в основному це ми робимо, між ІЧ-світлодіодом (один ланцюг) і фототранзистором. Хоча ви праві, це не один компонент (як MOC3020).
змо

2

Багато варіантів тут здаються надскладними та нав'язливими.

Кольоровий датчик

Ще один варіант, дещо складний (але цікавий) для реалізації, але не нав'язливий і простий в монтажі, - це побудувати дешевий кольоровий датчик і встановити його на стіну позаду рулону. Коли ви виявите колір рулону (або відсутність кольору ТП), він низький.

Ви також можете придбати один за 8 доларів .

Ви можете відрегулювати поріг, скориставшись тонкістю ТП та тим, що він починає виглядати трохи темніше, коли залишилося лише кілька аркушів.

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

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

Це дуже просто встановити і не передбачає змін до самого рулону. Ви можете приклеїти датчик до стіни двосторонньою стрічкою або покласти її на крихітну поличку під рулон вгору (або зверху вниз).

Розрив ІЧ-променя

Встановіть невеликий ІЧ-світлодіод на одній стороні дозатора, трохи вище котушки. Встановіть ІЧ-датчик фотографії з іншого боку дозатора. Коли датчик бачить світлодіод, рулон низький. Це можна зробити і за допомогою дешевого лазера (наприклад, лазерний покажчик з полиці на одній стороні і фотосенсор з іншого; але не травмуйте очі!)

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


Мені також дуже подобаються датчики очерету та датчика дальності (BTW: $ 10 отримує чудовий датчик короткої дальності ) тут.


1
ІЧ-промінь був моєю першою думкою. Простий і простий у здійсненні і, мабуть, більш надійний, ніж деякі інші рішення, хоча, можливо, і менш веселий :)
Кевін,

Хе-х, я згоден. Я думаю, що кольоровий датчик був би веселим, принаймні з боку програмного забезпечення; Було б приємно зібрати дані та спробувати створити алгоритм, який не сприйняв, наприклад, зміни природного освітлення або інші помилкові тригери.
Джейсон C

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 рази зеленим, будь-який відтінок білого не повинен передавати це, якщо оператор. Можливо, вам також доведеться відрегулювати minRedта maxRedбути далі (якщо не виявити коричневий) або ближче (якщо виявити коричневий, коли він білий). Я не можу перевірити цей код без датчика кольору.


Примітка. Це можуть бути трохи химерними. Я б рекомендував замість цього світлодіод, щоб весь будинок не прокинувся посеред ночі саме через низький туалетний папір. Крім того, якщо ви взагалі перешкоджаєте датчику ... Якби його не було у ванній кімнаті, я б рекомендував фотоапарат і знімати його щоразу, коли він стає дуже низьким за допомогою перемикача очерету, як відповідь @ jfpolipret ... але ... (каламбур не призначений) :)


Чи повинен датчик кольорів працювати однаково (тобто, не змінюючи ескіз), якщо ви зміните колір вашої туалетного паперу :-)?
jfpoilpret

@jfpoilpret Я не знаю, ви повторно використовуєте туалетний папір чи ні, але ... :) Я додаю код з механізмами, щоб він був "схожим", але не точним.
Анонімний Пінгвін

Я думаю, що туалетний папір досить м'який, щоб поглинати ультразвуковий вибух ультразвукового датчика
TheDoctor

@TheDoctor Це не дуже гарна ідея, як я зазначив. Це спосіб неточності.
Анонімний пінгвін

1
@jfpoilpret Якщо після встановлення нового рулону ви додали кнопку "калібрування" і натиснули її, увімкнувши світильники у ванній кімнаті, ви можете виміряти правильний колір.
Джейсон C

1

Звучить як класний проект, ось мій 2 ct:

Наведіть на камеру, щоб зробити знімки рулону збоку, це, мабуть, єдиний спосіб дійсно дізнатися, скільки паперу залишилось. (редагувати: Ви можете використовувати малиновий пі з камерою csi та створити вихідний сигнал, що відповідає кількості аркушів, і подати цей сигнал до ардуїно ?!)

Для оцінки може бути також достатньо підрахувати обертання рулону, але вам потрібно краще зафіксувати рулон, щоб він не ковзав. Або ви можете використовувати магніти, як ви робите на велосипедах, але їх потрібно потім прикріпити до рулону.

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


Привіт і Ласкаво просимо на Arduino Stack Exchange! Скажіть, будь ласка, як ви підключаєте його до Arduino? Дякую! Крім того, я не знаю, наскільки хороша ідея - поставити камеру у ванній. :)
Анонімний Пінгвін

Мені подобається ваша остання відредагована ідея; це може бути спрощене за допомогою використання перемикача на кришці, що закривало б ланцюг, коли кришка досягла певного кута; що здається легше, ніж вимірювати сам кут.
jfpoilpret

1

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


Я згоден. Люди, здається, надто ускладнюють це. Крім того, ви можете продовжувати повторно використовувати той же рулон із приєднаним до нього кодером, передаючи TP з нового рулону в рулон датчика, коли ви його знову заправляєте (наприклад, покладіть рулони на пару дешевих штоків дюбеля і загорніть його); це також дозволяє підрахувати кількість обертів для цього рулону (при його повторному наповненні).
Джейсон C

1

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


0

Ще один спосіб зробити це, якщо ви просто хочете, щоб заради цього було покласти металевий прут всередину рулону, а зовнішню металеву пластину, і виміряти ємність, яка повинна змінюватися, що залишилася через ТП через діелектрична константа паперу.

Але це було б точно "мальовничим маршрутом". Тим не менш, Arduino може виміряти ємність досить легко, і це може бути навіть досить чутливим, і це не залишиться в стороні, тому що це просто металева пластина за рулоном і металевий стрижень в рулоні. Можливо, ви навіть зможете доопрацювати наявний тримач, не помітивши його.

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

Як запропонував AJMansfield, радіоактивність фактично використовується для вимірювання товщини речей у виробничих умовах. Якщо ви дійсно хотіли зійти з розуму, можливо, ви могли б використати надзвичайно низько енергетичне радіоактивне джерело, як баночка цього дивного замінника солі для дегустації, який знаходиться трохи вище фонового рівня та середній протягом надзвичайно тривалих часів (туалетний папір не повинен сильно змінюватися з години на годину), тому це насправді може бути розумним, якщо дорогий спосіб робити речі.

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

EDIT: Робоче підтвердження концепції ємнісного підходу. Потрібно лише ардуїно і 2 жорстких дроти. Точний приблизно до 8-го дюйму, з великим рівнем шуму. Досить впевнений, що ви могли надійно отримати хоча б 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


Краще включити код у свою відповідь замість зовнішнього посилання. Якщо посилання перерветься в майбутньому, ваша відповідь все одно буде актуальною.
sachleen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.