Comment déclencher une alarme lorsque le papier toilette est faible?

47

Tous ceux qui ont des enfants savent qu’ils n’aident jamais au papier toilette. Quelqu'un sait comment suivre quand il est bas ou sort et déclenche une alarme sonore? Je ne sais tout simplement pas quel capteur utiliser qui pourrait aider.

Certains qui me viennent à l’esprit sont: en poids, par réflexion (la couleur du papier) ou par un fil de déclenchement laser, le tout sur la bobine. Cela ne me dérange pas de le construire, c'est juste que je ne sais pas quel capteur. Quelqu'un sait lequel utiliser?

Jose Leon
la source
5
Peut-être devriez-vous également penser à installer un capteur sur la lunette des toilettes afin que l'alarme retentisse si quelqu'un s'assoit lorsqu'il n'y a plus de papier. :)
Peter Bloomfield
On pourrait peut-être simplement essayer de mesurer la résistance radiale d'un rouleau (espérons-le, ce n'est pas trop élevé), puis elle diminuera lorsqu'il ne restera plus assez de papier.
Jfpoilpret
Oubliez la résistance: juste essayé de la mesurer, mais elle dépasse le calibre maximal de mon multimètre (20M Ohm)
jfpoilpret
1
Bien, ce qui suit peut être une discussion mieux localisée sur le méta.arduino, mais je pense que cette question est typiquement une qui trompe le point d’avoir un arduino SE. Ce n'est pas directement lié aux arduinos, car pour chaque projet, il ne faut pas concevoir sa solution par rapport à un outil, mais choisir les outils les mieux adaptés (que se passe-t-il si utiliser un meilleur RPi ou un CC2540?). C'est en effet une solution d'ingénierie mécanique + électronique + logicielle. Et je ne connais pas de meilleur endroit que SE pour poser ce genre de questions.
Zmo
@zmo Je suggérerais alors à l'OP d'éditer sa question pour ajouter la nécessité de piloter l'alarme via un Arduino; cela ferait mieux pour Arduino.SE
jfpoilpret

Réponses:

47

Amenez plusieurs rouleaux à la fois et suspendez-en un pour l’utiliser. Placez les deux autres sur un petit poteau vertical à la portée de la gardienne. Sitter peut prendre un autre rôle en cas de besoin.

Détectez mécaniquement le manque de poids sur l'étagère au bas du poteau. L'alarme se déclenche lorsque le dernier jet est retiré. Personne ne doit être pris de court.

Pour détecter le poids, utilisez une résistance sensible à la force telle que la FSR 400 (voir la fiche technique ). Vous pouvez également utiliser un ressort hélicoïdal léger pour poser le papier toilette avec un micro-commutateur qui est relâché lorsque les deux rouleaux sont retirés. Une autre option serait un détecteur de rupture de faisceau infrarouge dans lequel le circuit est terminé lorsque le dernier rouleau est retiré.

JRobert
la source
@AnnonomusPerson Il parle de mesurer le poids de plusieurs rouleaux complets de papier toilette, et non de feuilles individuelles ou de rouleaux vides.
AJMansfield
1
C'est une excellente idée: au lieu de devoir mesurer la quantité de papier restant sur le rouleau, mesurez le nombre de rouleaux restants pour vous indiquer quand vous devez en obtenir davantage.
AJMansfield
Quel capteur utiliseriez-vous pour détecter le manque de poids?
Jfpoilpret
3
Un capteur de pression de tissu est une option, ou un capteur de lumière sur la base qui est recouvert si un rouleau est présent.
Rob Hoare
Pourriez-vous donner un exemple de capteur spécifique capable de faire le travail?
Asheeshr
22

Je crois que le concept de capteur à anche proposé par jfpoilpret et jmathew est le plus facile à réaliser. J'ai dessiné un diagramme montrant à quoi cela pourrait ressembler.

Vous pouvez ajuster la sensibilité en ajustant la hauteur du contact inférieur.

Cela ne fait que vous amener à un état «bas» et pas nécessairement à l’extérieur. À moins que vous ne vouliez changer de rôle tant qu'il reste quelques feuilles, cela ne me semble pas être une solution satisfaisante. Je préfère avoir un indicateur "out" et une sonnerie audible pour inciter / déshonorer l'utilisateur à remplacer le rouleau.

Cette conception pourrait être réalisée en utilisant une électronique autonome (aucun arduino n'est nécessaire). Cependant, si vous vouliez jouer avec le changement de rôle, vous pourriez utiliser un arduino pour cela.

Notez également pour les capteurs optiques basés sur la couleur, alors que la grande majorité des tubes en carton utilisés à cette fin sont de couleur marron, j'ai également vu des tubes blancs en cours d'utilisation.

Diagramme Capteur Reed

Arluin
la source
6
De beaux diagrammes. Qu'avez-vous utilisé pour les fabriquer?
Jmathew
1
Juste un commentaire: vous n'avez même pas besoin d'un contact Reed dans cette situation, mais de deux pièces de métal utilisées comme simple interrupteur. Un contact Reed est basé sur des forces magnétiques ouvrant ou fermant un interrupteur; cela était nécessaire dans ma réponse lorsqu'il n'y avait pas de contact réel entre les deux parties. Mais ici, utiliser un roseau semble tout à fait inutile, je pense.
Jfpoilpret
@ jfpoilpret Je ne savais pas que le terme était un type spécifique de commutateur. Je pensais au concept plus général d'un matériau rigide et flexible. Merci pour la clarification!
Jmathew
@jmathew pas de problème, après tout, nous sommes tous là pour partager nos connaissances!
Jfpoilpret
2
J'ai utilisé MS Visio 2007.
Arluin
14

Je pense avoir vu cela dans la série 1, épisode 2 de Manlab de James May.

Semblable à jfpoilpret, utilisez une large pièce de matériau sur un ressort qui entre en contact avec le rouleau à tout moment. Je dis «large» de sorte que lorsque le rouleau est vide, l'anche se touche avec un contact sur l'un des porte-rouleaux sur le côté. Quand il touche il termine un circuit à votre alarme.

Voici une image brute décrivant ce que je veux dire.

Dans la réponse d'Arluin, il a été mentionné que cette méthode ne montrerait pas que le rouleau était vide. C'est à peu près vrai. Si le contact supérieur est aussi épais que le rouleau de carton TP et que le contact inférieur est placé à l'intérieur de la partie interne du rouleau de carton, il devrait être suffisamment proche pour des raisons pratiques. Un pied de rouleau TP n'est pas suffisant après la soirée tacos.

Voici l'image de mon imagination

jmathew
la source
9

Utilisez un détecteur de rayonnement pour détecter la quantité de papier restant sur le rouleau. Placez une certaine quantité de matière radioactive au centre de la tige de bobine et placez le détecteur de rayonnement ailleurs (vous pouvez le monter de l'autre côté de la surface sur laquelle le support de rouleau est monté, si vous le souhaitez; les capteurs de rayonnement sont extrêmement flexibles) , et mesurer les quantités de rayonnement pour déterminer la quantité de papier restant sur le rouleau.

Alternativement, vous pourriez avoir un distributeur de papier toilette à commande électronique (bouton poussoir pour distribuer une longueur préprogrammée de papier toilette) et laisser l’arduino simplement garder une trace de la quantité distribuée.

Vous pouvez également fixer un encodeur rotatif sur le côté de la tige de la bobine (assurez-vous qu’il est bien ajusté sans glisser à l’intérieur du rouleau) et compter les rotations du rouleau pour déterminer la quantité utilisée.

Bien sûr, avec l’une de ces méthodes, vous devrez faire des tests et collecter des données en fonction du type / marque / matériau / etc. exacts de papier toilette.

En particulier pour les deuxième et troisième idées, je vous recommande de prendre des données du système régulièrement, afin de garder une trace de la longueur typique d'un rouleau afin que vous puissiez ajuster le programme pour tenir compte de toute variation significative. Même dans un type de papier toilette, j'imagine que la longueur des rouleaux varie.

Pour encore plus de plaisir, vous pouvez utiliser le détecteur pour collecter des données de séries chronologiques. Vous pourrez ensuite le télécharger sur un ordinateur et créer un graphique illustrant l'utilisation du papier hygiénique au fil du temps.

AJMansfield
la source
2
Je suis un grand fan de l'utilisation d'un encodeur rotatif. Il pourrait même être conçu si le support du TP avait le codeur attaché à la tige à travers le rouleau, empêchant ainsi tout mouvement sur le codeur. Un bouton peut également être utilisé pour réinitialiser le compte.
Steven10172
1
Mais un problème courant serait de déterminer le nombre maximum de rotations car cela dépend du nombre de feuilles et de leur épaisseur.
jfpoilpret
Je changerais ceci de 'Fixer l'appareil de radiation au rouleau de papier toilette' en l'attachant au rouleau du milieu sur lequel il repose. Le même effet, mais moins de nécessité de devoir rattacher le capteur pour chaque rouleau
Robotnik
1
Vous pouvez déterminer le nombre de rotations en transférant tous les TP d'un nouveau rouleau sur la bobine de votre rouleau mesuré et en comptant les rotations avec le codeur (avec un simple élément DYI comme deux goujons verticaux et juste envelopper l'un sur l'autre) . Puis quand c'est vide, recommencez. Cela facilite également l’utilisation car vous pouvez simplement réutiliser le spool auquel vous avez déjà attaché le codeur et y insérer de nouveaux TP.
Jason C
1
@AJMansfield Je me demande si des cercles découpés dans du carton sur les côtés du rouleau récepteur (et certains soins) donneraient des résultats satisfaisants; si les rouleaux sont sur des tiges de goujon pour le transfert, vous pouvez simplement percer un trou au centre des disques et les enfiler. Sur le plan positif, si vous achetez toujours la même marque de TP, vous n’auriez à le faire qu’une seule fois (et vous pouvez garder une liste du nombre de spins correspondant aux différentes marques / types que vous découvrez - vous pourriez être fier responsable de la première base de données de nombre de spin TP open source au monde).
Jason C
7

Je pense que "Arluin" et "jmathew" ont la bonne idée. Utilisez un levier reposant sur le dessus du rouleau.

Je le ferais légèrement différent cependant. Plutôt que de compter sur la fermeture des contacts, vous pouvez utiliser un potentiomètre. Avec ce système, vous pouvez mesurer le montant restant au lieu d’être simplement averti lorsque le niveau baisse.

Avec un contact tel que ceux déjà suggérés, vous risquez de coincer du papier dans le contact lorsqu'il se ferme et qu'un papier faible ne soit pas détecté.

(Vous aurez peut-être besoin d'un poids, indiqué en bleu sur le diagramme, pour abaisser le levier lorsque vous utilisez le rouleau)

Vous devez essayer de placer le pot le plus près possible du rouleau pour obtenir un swing maximum et donc une résolution maximale du montant restant.

Une autre chose que vous voudrez peut-être, c'est un rouleau sur l'extrémité du levier afin que le rouleau de papier puisse se déplacer facilement avec une faible traînée lorsque le levier touche le papier.

Configuration proposée

DanJAB
la source
4

Vous pouvez simplement ouvrir l'un de ceux qui jouent aux cartes d'anniversaire et adapter le commutateur au support. Une fois que vous entendez 'Joyeux anniversaire "des toilettes, vous savez que vous avez un problème! ...

Bon anniversaire

Grincer
la source
Pouvez-vous modifier votre question pour indiquer comment connecter cet élément à une carte Arduino? Merci!
Anonyme Penguin
3

J'ai construit un tachymètre à réflectance pour un Arduino qui résoudrait probablement votre problème. Le circuit de base est assez simple:

circuit tachymètre

J'avais un photoransistor qui réagissait bien au feu rouge et un autre de Radio Shackcela était assez sensible à la sortie IR des anciennes LED de télécommande de téléviseur. Pour vos besoins, le fil vert serait relié à la broche analogique 0 d’Arduino et il vous suffirait d’échantillonner périodiquement pour ne pas créer de croquis animé. Le truc pour obtenir une différence de signal réfléchi entre le papier blanc et le rouleau gris est de savoir que la sensibilité à la lumière d'un photransistor augmente w augmentant la résistance à la terre, mais la tension d'obscurité augmente également. Les valeurs de 5 et 3 mégohms me sont venues à bout, en vérifiant les valeurs AtoD des objets sombres et lumineux situés à une distance de quelques centimètres du détecteur. Même procédure devrait fonctionner pour votre détection de gris vs blanc. Bien que certaines choses qui semblent très différentes aient visiblement le même facteur de réflexion en IR. Voici une photo du tachymètre à la lumière rouge fini: entrez la description de l'image ici

Il devrait être simple de faire en sorte que la carte de capteur soit suffisamment petite pour s’insérer à l’arrière de votre distributeur de papier. La version IR est encore plus petite, mais elle est trop profondément enfouie dans une centrifugeuse construite maison pour en donner une image aujourd'hui.

Wayfaring Stranger
la source
3

Je pense qu’une autre option décente et peu coûteuse à utiliser est un capteur de proximité comme celui du téléphone ou un capteur infrarouge à champ fixe. Ces capteurs sont assez précis et peuvent facilement être utilisés pour "regarder" l'arrière du rouleau de papier toilette en montant le capteur sur le support ou le mur où le rouleau de papier toilette est placé. Toutes les autres idées que j'ai vues sur le message étaient soit assez imprécises, soit perçues comme une intrusion dans le rouleau de papier hygiénique, ce qui, à long terme, pourrait, à mon avis, provoquer une contamination. Un capteur de proximité est non seulement assez bon marché et facile à utiliser, mais bien calibré, il permet une très bonne précision et une grande fiabilité. Ce modèle est déjà largement utilisé dans les urinoirs pour auto-rinçage. Par exemple sur votre téléphone: votre téléphone fournira avec précision une distance de 2,0 pouces ou une infinité lorsque votre main ou votre visage sera près de l'écran.

Aditya Somani
la source
Pour 10 $, vous pouvez obtenir cette gamme adafruit.com/products/466 de 1 cm à 15 cm (parfaite pour les rouleaux TP) et conçue pour s'intégrer facilement à un microcontrôleur.
Jason C
@Jason C: La première tentative utilisait VCNL4000, mais comme d’autres rapports, il s’arrêtait / s’arrêtait / se bloquait pendant la lecture. Je n'ai vu personne résoudre ce problème, même en abaissant le mA.
Jose Leon
@Aditya L'utilisation du capteur de proximité HC-SR04 n'a pas aidé. Il n'y avait pas de différence entre un rouleau complet de TP et un rouleau vide. Le mieux que je puisse deviner, c’est que «l’écho» traversait directement le tissu et s’arrêtait devant la barre de métal qui retenait le TP. Donc, au moins pour ce capteur, cela n’a pas fonctionné.
Jose Leon
@JoseLeon je vois. C'est assez étrange en effet. Je suis d'accord avec votre raisonnement. Peut-être y at-il un autre capteur qui pourrait fonctionner, mais je pense que votre raisonnement selon lequel les ondes infrarouges devraient simplement traverser le papier toilette semble valable.
Aditya Somani
2

Un capteur de distance à ultrasons à courte portée pourrait constituer une option efficace (et relativement peu coûteuse). Vous pouvez obtenir une combinaison émetteur + capteur montée sur une puce. Différents capteurs peuvent fonctionner de différentes manières (vérifiez toujours la fiche technique). Une sortie commune utilise cependant la longueur d'une impulsion pour indiquer la distance détectée. Vous pouvez traiter cela dans Arduino en utilisant la pulseIn()fonction.

En termes d'installation, vous l'inséreriez probablement directement derrière le papier toilette, en pointant vers le centre de la bobine. Les lectures sont souvent assez erratiques, vous voulez donc prendre plusieurs mesures et les moyen (ou utiliser une simple moyenne mobile). Avec un peu de calibration, vous pouvez déterminer quelle distance représente une bobine vide.

Lorsque vous détectez cette distance à plusieurs reprises pendant une période significative (par exemple une minute ou plus), vous déclenchez l'alarme.

Un capteur basé sur la réflectance pourrait être une autre possibilité, bien que je me demande si vous pourriez avoir du mal à en trouver un qui fonctionnera correctement sur du papier toilette (en fonction de la souplesse de votre marque préférée!).

Peter Bloomfield
la source
Je ne suis pas sûr que vous obtiendriez une précision suffisante avec un capteur à ultrasons; IIRC, la plupart d'entre eux ont une précision d'environ 3-4 mm; en général, cela suffit, mais vu le diamètre d’un rouleau de papier hygiénique, cela risque d’être trop imprécis.
Jfpoilpret
Oui, c'est souvent vrai pour une lecture individuelle. Les fluctuations sont cependant assez uniformes, vous pouvez donc calculer la moyenne de plusieurs lectures consécutives pour la neutraliser. Cela peut potentiellement vous donner une précision d'environ 1 mm.
Peter Bloomfield
Que se passe-t-il lorsque le papier toilette bouge d'un millimètre en s'éloignant du capteur avec un peu de papier?
Anonyme Penguin
1
@AnnonomusPerson Vous obtiendrez toujours des lectures parasites en cas de mouvement. C'est pourquoi vous attendez que la lecture soit stable pendant une période significative avant d'agir.
Peter Bloomfield
@ Peter R: L'utilisation du capteur de proximité HC-SR04 n'a pas aidé. Il n'y avait pas de différence entre un rouleau complet de TP et un rouleau vide. Le mieux que je puisse deviner, c’est que «l’écho» traversait directement le tissu et s’arrêtait devant la barre de métal qui retenait le TP. Donc, au moins pour ce capteur, cela n’a pas fonctionné.
Jose Leon
2

Une idée qui me vient à l’esprit serait quelque chose comme ça:

  • Collez un petit aimant à l'intérieur du rouleau de papier, c'est-à-dire à l'intérieur de la partie en carton (ceci doit être fait à chaque fois que vous le changez; cependant)
  • utilisez un contact Reed (commutateur électromagnétique) à la pointe d'un bâton monté avec un ressort pour rester toujours en contact avec le rouleau de papier
  • une broche du contact Reed peut être directement connectée à une broche logique d'entrée (configurez-la comme entrée de résistance pullup)
  • l'autre broche du contact Reed doit être connectée à la terre

Ainsi, dès que la distance entre l'aimant et le contact Reed est sous une certaine limite, l'interrupteur ferme le circuit. Cette distance diminuera pendant le tirage du rouleau de papier.

Notez qu'au lieu d'un contact Reed, vous pouvez également utiliser un capteur à effet Hall, les principes restent les mêmes, seules la technologie et les caractéristiques changent.

La difficulté ici sera de trouver la bonne sensibilité du contact Reed (ou de la force de l'aimant) de sorte que le contact Reed se ferme lorsque la distance qui le sépare de l'aimant est suffisamment petite pour éviter une alarme qui serait déclenchée trop tôt. ).

jfpoilpret
la source
Cela ne fonctionnera pas, même raison qu'un capteur à ultrasons. Il va encore partir avec au moins 10 pieds toujours dessus. Le capteur de couleur est une meilleure idée.
Penguin anonyme
Je ne vois pas la relation avec le capteur à ultrasons. Pourriez-vous développer davantage POURQUOI cela ne fonctionnera-t-il pas? Il existe de grandes quantités de capteurs de contact Reed et à effet Hall, sans parler de différents types d'aimants.
Jfpoilpret
Une couche de TP est si mince qu'elle pourrait s'activer avec un peu de gauche. Théoriquement, cela pourrait être modifié, mais il est vraiment inefficace de sortir un microscope ou quoi que ce soit pour changer un rouleau de papier toilette.
Anonyme Penguin
Activer avec un peu de gauche n’est pas si grave, car la question du PO est "... le papier hygiénique est faible "; bas ne signifie pas nécessairement vide.
Jfpoilpret
2

La solution la plus simple, mais la meilleure, serait toutefois d’utiliser un optocoupleur constitué d’une LED IR et d’un opto-transistor. Vous allumez la LED vers le rouleau, la LED étant dans le rouleau liée à la "poignée". Une fois que vous retirez le rouleau de carton, l’opto-transistor capte la lumière infrarouge de la LED et déclenche une interruption du changement de broche sur l’Arduino, qui peut vous avertir de différentes manières (lumière, SMS, twitter, alarme…).

Ce design est vraiment pas cher, facile et rapide à construire. Cependant, il vous reste une chose à faire: quand il n’ya plus de papier toilette, vous devez en réalité faire enlever le rouleau de carton ;-)

Sinon, le même type de solution pour les rouleaux de rechange est une meilleure idée :-)

zmo
la source
Les optocoupleurs ne sont-ils pas des puces simples comprenant à la fois l'émetteur et le récepteur? Voir ici: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret
[…] Est un composant qui transfère des signaux électriques entre deux circuits isolés en utilisant de la lumière […] . En gros, c'est ce que nous faisons, entre une LED IR (un circuit) et un phototransistor. Bien que vous ayez raison, ce n'est pas un composant unique (comme le MOC3020).
Zmo
2

De nombreuses options semblent trop compliquées et intrusives.

Capteur de couleur

Une autre option, légèrement compliquée (mais amusante) à mettre en œuvre, mais peu intrusive et facile à installer, consiste à construire un capteur de couleur bon marché et à le monter sur le mur derrière le rouleau. Lorsque vous détectez la couleur du rouleau (ou l’absence de couleur de TP), elle est faible.

Vous pouvez également simplement en acheter un pour 8 $ .

Vous pouvez ajuster le seuil en tirant parti de la finesse de TP et du fait qu'il commence à paraître un peu plus sombre lorsqu'il ne reste que quelques feuilles.

Si nécessaire, le calibrage peut être effectué en appuyant sur un bouton après l’installation d’un nouveau rouleau avec les lumières de la salle de bains allumée.

Vous devrez faire quelques ajustements en fonction des spécificités de votre salle de bain. Si vous ajoutiez un peu plus de complexité et que vous éteigniez une prise secteur reliée à l'interrupteur de l'éclairage de la salle de bain, vous ne pourriez l'avoir allumée que lorsque l'éclairage de la salle de bain était allumé, ce qui filtrerait beaucoup de données peu fiables.

C’est très facile à installer et n’implique aucune modification du rouleau. Vous pouvez coller le capteur au mur avec du ruban adhésif double face ou le placer sur une petite étagère sous le rouleau, vers le haut (ou sur le dessus, vers le bas).

Rupture du faisceau IR

Montez une petite LED IR sur un côté du distributeur, juste au-dessus de la bobine. Montez un capteur photoélectrique infrarouge de l’autre côté du distributeur. Lorsque le capteur voit la LED, le roulis est faible. Cela pourrait également être fait avec un laser bon marché (par exemple, un pointeur laser standard d'un côté et un photocapteur de l'autre; mais ne vous faites pas mal aux yeux!)

Ceci est également facile à installer (par exemple, colle chaude au distributeur) et n’implique aucune modification du rouleau, bien que l’emplacement des capteurs puisse les endommager facilement lors du remplacement des rouleaux.


J'aime aussi beaucoup le capteur Reed et le capteur de distance (BTW: 10 $ vous donne un excellent capteur de distance courte distance ) ici.

Jason C
la source
1
Le faisceau IR était ma première pensée. Simple et facile à mettre en œuvre et probablement plus fiable que certaines des autres solutions, bien que moins amusant peut-être :)
Kevin
Héhé, je suis d'accord. Je pense qu'un capteur de couleur serait amusant, du moins du côté logiciel; Ce serait un beau défi de collecter des données et d'essayer de créer un algorithme insensible aux modifications de l'éclairage naturel ou à d'autres déclencheurs erronés.
Jason C
1

Vous avez quelques options:

Remarque: les liens fournis ne sont que les premiers à apparaître. La plupart d'entre eux sont chers par rapport à d'autres sites. Acheter sur eBay peut être assez bon marché pour la plupart de ces objets. Vérifiez également d'autres endroits, y compris Sparkfun .

  • Capteur Ping Ultrasonique . Ce n'est pas idéal, mais ils sont faciles à utiliser. Il suffit d’en ajouter un avec une enceinte. Ce n'est pas idéal car il ne sera pas assez précis pour dire quand c'est exactement vide. Il pourrait être un peu trop / sous sensible. Le poids serait plus dur, mais s'il changeait du tout.
  • Capteur de couleur (préférable, mais coûte plus cher) . Vous en avez parlé et c'est probablement la meilleure idée. Il vous donnera des valeurs analogiques (à lire avec Arduino) pour le rouge, le vert et le bleu. [En supposant que plus la teneur de cette couleur est élevée, plus la tension est élevée,] le blanc devrait être à peu près tous ceux à 100% et le marron, j'imagine que la plupart d'entre eux seraient d'environ 30 à 40%. (Plus tard, si vous ne comprenez pas cela, sautez cette partie)

Je vais aller plus en détail sur le capteur de couleur:

Les couleurs sont lues avec trois valeurs ici: rouge, vert et bleu. Il y a trois capteurs sur la carte. L'un filtre tout sauf le rouge, un autre bleu et l'autre vert. Les capteurs de la carte détectent la quantité de lumière entrante, puis la convertissent en une tension comprise entre 5V ("100% rouge / vert / bleu") ou 0V ("0% rouge / vert / bleu"). Cela peut ensuite être converti en un nombre par l’Arduino (0-1024 sur une broche analogique).

Un problème d'éclairage: ce capteur, d'après ce que je peux dire, a une LED qui est toujours allumée. Vous voudrez le dessouder ou le recouvrir, à moins que vous ne souhaitiez un support de papier toilette illuminé. Maintenant, attendez ... votre capteur pensera que lorsqu'il fait sombre, il est brun. Pas de problème ... voici quelque chose à penser à votre esprit.

Utilisez un sélecteur de couleur comme je l’utilise et sélectionnez un marron . Sur la gauche de celui-ci, vous pouvez contrôler la "luminosité simulée". De plus, c'est la forme hexadécimale de RVB. Vous voudrez convertir cela en valeurs standard avec ce calculateur .

En marron, la couleur bleue est presque inexistante. Nous devrions ignorer cette couleur, à moins que vous ne souhaitiez un moyen de vérifier sa couleur brune. Je dirais qu'il devrait toujours être inférieur à 40% pour à peu près toutes les nuances de brun.

D'après ce que je peux dire avec un échantillon de brun, le rouge est à peu près deux fois le vert. Ce rapport peut varier, mais vous devez vérifier qu'il existe quelque peu . Pour le blanc / gris / noir, toutes les couleurs sont proportionnelles 1: 1: 1. Vous pouvez l'utiliser pour détecter s'il fait noir ou s'il est brun.

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
}

Premièrement, il vérifie que le bleu est inférieur à 25%. Ensuite, il vérifie que le rouge et le vert sont égaux ... à 20% environ. (ie rouge = 100 vert = 80, rouge = 110 vert = 90, etc.). Si cela est vrai, vous pouvez assez bien établir qu'il est marron. Ensuite, une LED s’allume pendant cinq secondes.

Vous pouvez modifier le voyant pour qu’il émette un signal sonore si vous le souhaitez. Vous devrez peut-être ajuster l'instruction if en vérifiant que le bleu est inférieur à 256/1024 (1024 = résolution de la broche analogique) s'il ne fonctionne pas dans un environnement très lumineux ou dans un environnement sombre. Puisque le code vérifie plus tard que le rouge est environ 2x le vert, aucune nuance de blanc ne devrait passer que si instruction. Vous devrez peut-être également ajuster le minRedet maxRedpour être plus loin (si le brun n'est pas détecté) ou plus proche (si le brun est détecté quand il est blanc). Je ne peux pas vraiment tester ce code sans capteur de couleur.


Remarque: ceux-ci peuvent être un peu agités. Je recommanderais plutôt une LED pour que toute la maison ne soit pas réveillée au milieu de la nuit juste à cause du papier toilette bas. Aussi, si vous obstruez le capteur du tout ... Si ce n'était pas dans la salle de bain, je recommanderais un appareil photo et le ferait prendre une photo à chaque fois qu'il devient très bas avec un interrupteur à lames tel que la réponse de @ jfpolipret ... mais ... (sans jeu de mots) :)

Pingouin Anonyme
la source
Le capteur de couleur doit-il fonctionner de la même manière (c.-à-d. Sans avoir à ajuster le croquis) si vous changez la couleur de votre papier toilette :-)?
Jfpoilpret
@ jfpoilpret Je ne sais pas si vous réutilisez votre papier hygiénique ou non, mais ... :) J'ajoute du code avec des mécanismes pour que ce soit "similaire" mais pas exact.
Penguin anonyme
Je pense que le papier hygiénique est suffisamment souple pour absorber la
décharge
@TheDoctor Ce n'est pas une bonne idée, comme je l'ai déjà fait remarquer. C'est une façon inexacte.
Anonyme Penguin
1
@jfpoilpret Si vous avez ajouté un bouton "Calibrer" et que vous avez appuyé dessus avec les lumières de la salle de bain allumées après avoir installé un nouveau rouleau, vous pouvez mesurer la couleur correcte.
Jason C
1

Cela ressemble à un projet cool, voici mes 2 ct:

Dirigez un appareil photo pour prendre des photos du rouleau de côté, c’est probablement le seul moyen de savoir vraiment combien de papier il reste. (edit: vous pouvez utiliser un Raspberry Pi avec la caméra csi et créer un signal de sortie correspondant au nombre de feuilles et transmettre ce signal à l'arduino?!)

Pour une estimation, il peut également être suffisant de compter les rotations du rouleau, mais vous devez mieux fixer le rouleau pour qu’il ne glisse pas. Vous pouvez également utiliser des aimants comme vous le faites sur les vélos, mais ils doivent ensuite être fixés au rouleau.

(edit: encore une idée, mesurez l'épaisseur du rouleau en mesurant l'angle du couvercle)

Paperboy
la source
Bonjour et bienvenue sur Arduino Stack Exchange! Pouvez-vous s'il vous plaît dire comment vous le connectez à un Arduino? Merci! De plus, je ne sais pas à quel point il est bon de mettre une caméra dans une salle de bain. :)
Penguin anonyme
J'aime votre dernière idée modifiée. il pourrait être simplifié davantage en utilisant simplement un interrupteur sur le couvercle, qui ferait fermer le circuit lorsque le couvercle a atteint un certain angle; cela semble plus facile que de mesurer l'angle lui-même.
Jfpoilpret
1

Votre meilleure option consiste à attacher un encodeur rotatif sur le côté du rouleau et à compter les rotations du rouleau pour déterminer la quantité utilisée. Une fois que vous connaissez le nombre de rotations par rouleau, vous pouvez définir l'endroit où vous souhaitez que votre notification soit déclenchée. Attachez-le à un système de journalisation et vous obtiendrez des données historiques sur l'utilisation du papier et des toilettes.

stav
la source
Je suis d'accord. Les gens semblent trop compliquer cela. Vous pouvez également continuer à réutiliser le même rouleau avec le codeur attaché en transférant le TP d'un nouveau rouleau sur le rouleau du capteur lorsque vous le remplissez (par exemple, placez les rouleaux sur deux tiges de goujon bon marché et enveloppez-le); cela vous permet également de compter le nombre de rotations pour ce rouleau (au fur et à mesure que vous le remplissez).
Jason C
1

Je dis: procurez-vous un capteur de poids et programmez-le en fonction du poids du rouleau. Quand il tombe en dessous d'un certain poids, commencez à faire clignoter une LED ou émettez un bip.

I. Golsby
la source
0

Une autre façon de le faire, au cas où vous voudriez juste pour le plaisir, serait de mettre une tige de métal à l'intérieur du rouleau et une plaque de métal à l'extérieur, et de mesurer la capacité qui devrait changer avec le TP restant en raison de la constante diélectrique du papier.

Mais ce serait certainement prendre la "route panoramique". Néanmoins, l'Arduino peut mesurer la capacité assez facilement et il pourrait même être assez sensible, et resterait à l'écart car il s'agirait simplement d'une plaque métallique derrière le rouleau et d'une tige métallique dans le rouleau. Vous pourriez même être en mesure de moderniser un titulaire existant sans que cela soit remarqué.

Un moyen plus simple consisterait en un bâtonnet fixé à l’arbre d’un potentiomètre tenu par le haut du rouleau. Moins de TP, l’arbre descend et tourne le pot. Vous aurez peut-être besoin d'un long manche pour tirer parce que vous ne pouvez pas appuyer trop fort sans empêcher la fonction de tirer le papier toilette.

Comme l'a suggéré AJMansfield, la radioactivité est en fait utilisée pour mesurer l'épaisseur d'objets dans des environnements industriels. Si vous vouliez vraiment devenir fou, vous pourriez peut-être utiliser une source radioactive de très basse énergie, comme une canette de ce substitut de sel au goût étrange, un peu au-dessus des niveaux de fond et dans des temps extrêmement longs (le papier toilette ne devrait pas trop changer d'une heure à l'autre). heure), donc cela pourrait être un moyen raisonnable mais coûteux de faire les choses.

Les capteurs de rupture de faisceau infrarouge sont également utiles, et si vous le positionnez correctement, vous pourrez le bloquer davantage de lumière à mesure que le rouleau est plein, au lieu de simplement vous envoyer un signal, activé ou désactivé.

EDIT: Preuve de travail de l'approche capacitive. Seulement besoin d'un arduino et 2 fils raides. Précis à environ un 8ème de pouce, avec beaucoup de bruit. Je suis sûr que vous pourriez obtenir de manière fiable une précision d'au moins 1 pouce. Le temps de mesure est d'environ une minute. C'est vraiment sensible à son environnement. Vous devez vous assurer que tout ce qui est en métal dans un pied reste à sa place ou que vous utilisez un blindage.

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

ÉternitéForêt
la source
Il est préférable d’inclure du code dans votre réponse plutôt qu’un lien externe. Si le lien se rompt à l'avenir, votre réponse sera toujours pertinente.
Sachleen