Come attivare un allarme quando la carta igienica è in esaurimento?


47

Chiunque abbia bambini sa che non aiuta mai con la carta igienica. Qualcuno sa come rintracciare quando è basso o spento e suona un allarme acustico? Semplicemente non so quale sensore utilizzare che possa aiutare.

Alcuni che mi sono venuti in mente sono: in base al peso, al riflesso (il colore della carta) o qualche filo laser - tutto a posto sulla bobina. Non mi dispiace costruirlo, è solo che non so quale sensore. Qualcuno sa quale usare?


5
Forse dovresti anche pensare a sistemare un sensore sul sedile del water, quindi suonerà l'allarme se qualcuno si siede quando non c'è carta. :)
Peter Bloomfield

Forse si potrebbe semplicemente provare a misurare la resistenza radiale di un rotolo (si spera non sia troppo alto) e poi diminuirà quando non rimane più carta.
jfpoilpret,

Dimentica la resistenza: ho appena provato a misurarlo ma è al di sopra del calibro massimo del mio multimetro (20
M

1
Bene, ciò che segue potrebbe essere una discussione meglio posizionata sul meta.arduino, ma penso che questa domanda sia tipicamente una che inganna il punto di avere un arduino SE. Non è direttamente legato agli Arduinos in quanto per ogni progetto non si deve progettare la propria soluzione rispetto a uno strumento, ma scegliere gli strumenti migliori per la soluzione (cosa succede se usare un RPi è meglio, o un CC2540?). È davvero una soluzione di ingegneria meccanica + elettronica + software. E non c'è il miglior posto SE che conosco per fare quel tipo di domande.
zmo

@zmo Vorrei quindi suggerire all'OP di modificare la sua domanda per aggiungere la necessità di guidare l'allarme attraverso un Arduino; sarebbe meglio per Arduino.SE
jfpoilpret il

Risposte:


47

Solleva diversi rotoli alla volta e appendili per l'uso. Metti gli altri due su un palo verticale corto a portata di mano della persona seduta. Sitter può fare un altro tiro quando necessario.

Rileva meccanicamente la mancanza di peso sullo scaffale nella parte inferiore del palo. L'allarme si attiva quando l'ultimo rotolo viene rimosso. Nessuno deve essere scoperto.

Per rilevare il peso utilizzare un resistore sensibile alla forza come FSR 400 (vedere la scheda tecnica ). In alternativa, è possibile utilizzare una molla elicoidale leggera per appoggiare la carta igienica con un microinterruttore che viene rilasciato quando entrambi i rulli vengono rimossi. Un'altra opzione sarebbe un rilevatore di interruzione del raggio IR in cui il circuito è completato quando l'ultimo rullo viene rimosso.


@AnnonomusPerson Sta parlando della misurazione del peso di diversi rotoli di carta igienica, non di singoli fogli o rotoli vuoti.
AJMansfield

1
Questa è un'ottima idea: invece di dover fare i conti con la misurazione della quantità di carta rimasta sul rotolo, misurare il numero di rotoli rimasti per dirti quando è necessario ottenere più rotoli.
AJMansfield

Quale sensore useresti per rilevare la mancanza di peso?
jfpoilpret

3
Un sensore di pressione del tessuto è un'opzione o un sensore di luce sulla base che è coperto se è presente un rotolo.
Rob Hoare

Potresti fornire un esempio di un sensore specifico che potrebbe fare il lavoro?
asheeshr,

22

Credo che il concetto di sensore reed proposto da jfpoilpret e jmathew sia il più facile da realizzare. Ho disegnato un diagramma di come penso che apparirebbe.

È possibile regolare la sensibilità regolando l'altezza del contatto inferiore.

Questo ti porta davvero a una condizione "bassa" e non necessariamente fuori. A meno che tu non voglia cambiare i rotoli mentre ci sono ancora pochi fogli, questa non mi sembra una soluzione soddisfacente. Preferirei avere un indicatore "out" e un segnale acustico per indurre / vergognare l'utente a sostituire il rotolo.

Questo design potrebbe essere realizzato utilizzando l'elettronica standalone (non è necessario l'arduino). Tuttavia, se si desidera gamify il cambio del rotolo, è possibile utilizzare un arduino per quello.

Nota anche per i sensori di ottica a colori, mentre la stragrande maggioranza dei tubi di cartone utilizzati per questo scopo sono marroni, ho visto anche quelli bianchi in uso.

Diagramma del sensore Reed


6
Bei diagrammi. Cosa hai usato per farli?
jmathew

1
Solo un commento importante: non è nemmeno necessario un contatto reed in questa situazione, ma solo due pezzi di metallo usati come un semplice interruttore. Un contatto reed si basa sulle forze magnetiche che aprono o chiudono un interruttore; ciò era necessario nella mia risposta in cui non vi era alcun contatto reale tra le due parti. Ma qui, usare una canna sembra solo inutile, penso.
jfpoilpret,

@jfpoilpret Non sapevo che il termine fosse un tipo specifico di interruttore. Stavo pensando al concetto più generale di materiale rigido flessibile. Grazie per il chiarimento!
jmathew,

@jmathew nessun problema, dopo tutto, siamo tutti qui per condividere le conoscenze!
jfpoilpret,

2
Ho usato MS Visio 2007.
Arluin

14

Penso di averlo visto nell'episodio 2 della serie 1 di James May's Manlab.

Simile a jfpoilpret, utilizzare un ampio pezzo di materiale su una molla che entri in contatto con il rotolo in ogni momento. Dico "largo" in modo che quando il rotolo è vuoto la canna tocchi con un contatto su uno dei portarotolo sul lato. Quando tocca, completa un circuito per la tua sveglia.

Ecco un'immagine grezza che descrive cosa intendo.

Nella risposta di Arluin è stato menzionato che questo metodo non avrebbe mostrato che il rotolo fosse vuoto. È praticamente vero. Se il contatto superiore è spesso come il rotolo di cartone TP e il contatto inferiore è posizionato all'interno della parte interna del rotolo di cartone, dovrebbe avvicinarsi abbastanza per scopi pratici. Un piede del rotolo TP non è sufficiente dopo la notte del taco.

Guarda l'immagine della mia immaginazione


9

Utilizzare un rilevatore di radiazioni per rilevare la quantità di carta rimasta sul rotolo. Posiziona una certa quantità di materiale radioattivo al centro dell'asta della bobina e posiziona il rilevatore di radiazioni da qualche altra parte (potresti volerlo montare sull'altro lato della superficie su cui è montato il portarotolo, se lo desideri; i sensori di radiazione sono estremamente flessibili) e misurare le quantità di radiazioni per determinare la quantità di carta rimasta sul rotolo.

In alternativa, potresti avere un distributore di carta igienica controllato elettronicamente (pulsante per erogare una lunghezza preprogrammata di carta igienica) e avere l'arduino solo tenere traccia di quanto è stato erogato.

Oppure, collegare un codificatore rotante sul lato dell'asta del rocchetto (assicurarsi che si adatti senza scivolare all'interno del rotolo) e contare le rotazioni del rotolo per determinare quanto è stato utilizzato.

Naturalmente, con uno di questi metodi, dovrai fare dei test e raccogliere dati a seconda del tipo / marca / materiale / ecc esatti di carta igienica.

Soprattutto per la seconda e la terza idea, consiglierei di prendere regolarmente i dati dal sistema, per tenere traccia della lunghezza tipica di un rotolo in modo da poter adattare il programma per qualsiasi variazione significativa. Anche all'interno di un tipo di carta igienica, immagino che ci sarebbe qualche variazione nella lunghezza del rotolo.

Per divertirti ancora di più, potresti strumentare il rilevatore per raccogliere i dati delle serie temporali, quindi in seguito puoi caricarli su un computer e creare un grafico "utilizzo della carta igienica nel tempo" o qualcosa del genere.


2
Sono un grande fan dell'utilizzo di un codificatore rotante. Potrebbe anche essere progettato nel caso in cui il supporto TP avesse l'encoder attaccato all'asta tramite il rullo, evitando così spostamenti sull'encoder. Inoltre, è possibile utilizzare un pulsante per ripristinare il conteggio.
Steven10172,

1
Ma un problema comune sarebbe determinare il numero massimo di rotazioni poiché ciò dipende dal numero di fogli e dal loro spessore.
jfpoilpret,

Vorrei cambiare questo da "Collegare il dispositivo di radiazione al rotolo di carta igienica" per collegarlo al rullo centrale su cui si trova. Lo stesso effetto, ma meno manutenzione di dover ricollegare il sensore per ogni rotolo
Robotnik

1
È possibile determinare il numero di rotazioni trasferendo tutto il TP da un nuovo rotolo sulla bobina nel rotolo misurato e contando le rotazioni con l'encoder (con una semplice cosa DYI come un paio di tasselli verticali e semplicemente avvolgendoli uno sull'altro) . Quindi quando è vuoto, ripetere. Rende anche tutto facile da usare perché puoi semplicemente riutilizzare la tua stessa bobina a cui hai già collegato l'encoder e continuare a avvolgere il nuovo TP su di esso.
Jason C

1
@AJMansfield Mi chiedo se alcuni cerchi ritagliati di cartone sui lati del rotolo ricevente (e qualche cura) darebbero risultati soddisfacenti; se i rotoli si trovano su aste di riferimento per il trasferimento, è possibile creare un foro al centro dei dischi e inserirli. Tra i lati positivi, se acquisti sempre la stessa marca di TP, dovresti farlo solo una volta (e puoi tenere un elenco a portata di mano del numero di giri per diversi marchi / tipi che scopri - potresti essere l'orgoglioso manutentore del primo database di spin count TP open source al mondo).
Jason C

7

Penso che 'Arluin' e 'jmathew' abbiano l'idea giusta. Utilizzare una leva appoggiata sulla parte superiore del rotolo.

Lo farei leggermente diverso comunque. Invece di fare affidamento sulla chiusura dei contatti è possibile utilizzare un potenziometro. Con questo sistema è possibile misurare l'importo rimasto invece di essere semplicemente avvisato quando diventa basso.

Con un contatto come quelli già suggeriti, è possibile che la carta rimanga bloccata nel contatto mentre si chiude e quindi la carta in esaurimento non verrà rilevata.

(Potrebbe essere necessario un peso, mostrato in blu sul diagramma, per spingere la leva verso il basso mentre si utilizza il rullo)

Dovresti provare ad avvicinare il piatto il più vicino possibile al tiro per ottenere il massimo swing del piatto e quindi la massima risoluzione della quantità rimanente.

Un'altra cosa che potresti desiderare è una sorta di rullo all'estremità della leva in modo che il rotolo di carta possa spostarsi facilmente con un piccolo trascinamento nel punto in cui la leva tocca la carta.

Installazione proposta


4

Potresti semplicemente aprire una di quelle carte da gioco e adattare l'interruttore al braccio del supporto. Una volta che senti "Happy Birthday" suonare dal gabinetto sai che sei nei guai! (E poiché sono molto a basso consumo queste cose suonano per sempre ;-)) Ho mostrato una configurazione a LED qui ma hai l'idea ...

buon compleanno


Puoi per favore modificare la tua domanda per dire come collegare quell'elemento a una scheda Arduino? Grazie!
Anonimo Penguin

3

Ho costruito un tachimetro a riflettanza per un Arduino che probabilmente risolverebbe il tuo problema. Il circuito di base è abbastanza semplice:

circuito tachimetrico

Avevo un fotoransistor in giro che rispondeva bene alla luce rossa, e un altro da Radio Shackche era abbastanza sensibile all'uscita IR dei vecchi LED remoti della TV. Per i tuoi scopi, il filo verde verrebbe collegato al pin analogico 0 di Arduino e dovrai solo campionare periodicamente, non impostare uno schizzo guidato da un interrupt. Il trucco per ottenere una differenza di segnale riflesso tra carta bianca e rotolo grigio è sapere che la sensibilità alla luce di un fototransistor aumenta con l'aumentare della resistenza a GND, ma aumenta anche la tensione oscura. Sono arrivato empiricamente ai valori di 5 e 3 megohm, controllando i valori di AtoD su oggetti scuri e chiari a una distanza di pochi pollici dal rivelatore. La stessa procedura dovrebbe funzionare per il rilevamento di grigio vs bianco. Anche se alcune cose che sembrano abbastanza diverse hanno visibilmente la stessa riflettanza nell'IR. Ecco una foto del contagiri a luce rossa finito: inserisci qui la descrizione dell'immagine

Dovrebbe essere semplice rendere la scheda del sensore abbastanza piccola da adattarsi al retro del distributore di carta. La versione IR è ancora più piccola, ma seppellita troppo profondamente in una centrifuga costruita in casa per avere una sua foto oggi.


3

Penso che un'altra opzione decente ed economica da usare sia un sensore di prossimità come quelli al telefono o un sensore a infrarossi a campo fisso. Questi sensori sono piuttosto precisi e possono essere facilmente utilizzati per "guardare" sul retro del rotolo di carta igienica montando il sensore sul supporto o sulla parete in cui è posizionato il rotolo di carta igienica. Tutte le altre idee che ho visto sul post erano o abbastanza imprecise o si sono sentite invadenti nei confronti del rotolo di carta igienica che, a lungo andare, ritengo possano fornire contaminazione. Un sensore di prossimità non è solo abbastanza economico e facile da usare, se calibrato bene, può consentire un'ottima precisione e affidabilità. Questo modello è già ampiamente utilizzato negli orinatoi maschili per lo scarico automatico. Ad esempio sul telefono: il telefono fornirà con precisione una distanza di 2,0 pollici o infinito quando la mano o il viso è vicino allo schermo.


Per $ 10 puoi ottenere questo adafruit.com/products/466 1cm-15cm range (perfetto per il rotolo TP) e progettato per essere facilmente integrato con un microcontrollore.
Jason C

@Jason C: Il primo tentativo è stato l'utilizzo di VCNL4000, ma come altri rapporti, si fermava / si arrestava / si bloccava durante la lettura. Non ho visto nessuno risolvere questo, anche quando si abbassa il mA.
Jose Leon,

@Aditya L'uso del sensore di prossimità HC-SR04 non ha aiutato. Non c'era differenza tra un rotolo completo di TP e uno vuoto. La cosa migliore che posso immaginare è che l'eco attraversava il tessuto e si fermava alla barra di metallo che reggeva il TP. Quindi, almeno per quel sensore, non ha funzionato.
Jose Leon,

@JoseLeon vedo. È davvero strano. Sono d'accordo con il tuo ragionamento. Forse c'è un altro sensore là fuori che potrebbe funzionare, ma penso che il tuo ragionamento sul fatto che le onde a infrarossi dovrebbero passare attraverso la carta igienica sembra valido.
Aditya Somani,

2

Un sensore di distanza a ultrasuoni a corto raggio potrebbe essere un'opzione efficace (e abbastanza economica). È possibile ottenere una combinazione emettitore + sensore montata su un chip. Sensori diversi possono funzionare in modi diversi (controllare sempre la scheda tecnica). Un'uscita comune utilizza tuttavia la lunghezza di un impulso per indicare la distanza rilevata. È possibile elaborarlo in Arduino utilizzando la pulseIn()funzione.

In termini di installazione, probabilmente lo inseriresti direttamente dietro la carta igienica, indicando il centro della bobina. Le letture sono spesso piuttosto irregolari, quindi vuoi prendere diverse misurazioni e valutarle in media (o usare una media mobile semplice). Con un po 'di calibrazione, è possibile determinare quale distanza rappresenta una bobina vuota.

Quando rilevi quella distanza ripetutamente per un periodo significativo (ad esempio un minuto o più), suoneresti l'allarme.

Un sensore basato sulla riflettanza potrebbe essere un'altra possibilità, anche se mi chiedo se potresti avere difficoltà a trovarne uno che funzioni correttamente sulla carta igienica (a seconda di quanto sia morbida la tua marca preferita!).


Non sono sicuro che otterrai una precisione sufficiente con un sensore a ultrasuoni; IIRC, la maggior parte di essi ha una precisione di circa 3-4 mm; in generale è abbastanza buono, ma considerando il diametro di un rotolo di carta igienica, potrebbe essere troppo impreciso.
jfpoilpret,

Sì, questo è spesso vero per una lettura individuale. Le fluttuazioni sono piuttosto uniformi, quindi è possibile calcolare la media di diverse letture consecutive per contrastarla. Ciò può potenzialmente darti una precisione di ~ 1mm.
Peter Bloomfield

Cosa succede quando la carta igienica si muove di un millimetro mentre si allontana dal sensore con un po 'di carta rimasta?
Pinguino anonimo

1
@AnnonomusPerson Riceverai sempre letture spurie quando c'è movimento. Ecco perché aspetti che la lettura sia stabile per un periodo significativo prima di agire su di esso.
Peter Bloomfield

@Peter R: L'uso del sensore di prossimità HC-SR04 non ha aiutato. Non c'era differenza tra un rotolo completo di TP e uno vuoto. La cosa migliore che posso immaginare è che l'eco attraversava il tessuto e si fermava alla barra di metallo che reggeva il TP. Quindi, almeno per quel sensore, non ha funzionato.
Jose Leon,

2

Un'idea che mi viene in mente sarebbe qualcosa del genere:

  • attaccare un piccolo magnete all'interno del rotolo di carta, cioè all'interno della parte di cartone (questo deve essere fatto ogni volta che lo si cambia; però)
  • utilizzare un contatto reed (interruttore elettromagnetico) sulla punta di un bastone montato con una molla per essere sempre a contatto con il rotolo di carta
  • un pin del contatto reed può essere collegato direttamente a un pin logico di ingresso (impostarlo come ingresso di resistenza pullup)
  • l'altro pin del contatto reed deve essere collegato a terra

Pertanto, non appena la distanza tra il magnete e il contatto reed è sotto un certo limite, l'interruttore chiuderà il circuito. Tale distanza diminuirà mentre viene disegnato il rotolo di carta.

Si noti che, anziché un contatto reed, è possibile utilizzare anche un sensore a effetto Hall, i principi rimangono gli stessi, cambiano solo la tecnologia e le caratteristiche.

La difficoltà qui sarà quella di trovare la giusta sensibilità del contatto reed (o della forza del magnete) in modo che il contatto reed si chiuda quando la distanza tra esso e il magnete è abbastanza piccola da evitare un allarme che verrebbe attivato troppo presto ).


Non funzionerà, lo stesso motivo di un sensore a ultrasuoni. Andrà ancora via con almeno 10 piedi ancora su di esso. Il sensore di colore è un'idea migliore.
Pinguino anonimo

Non vedo la relazione con il sensore ultrasonico. Potresti sviluppare ulteriormente PERCHÉ non funzionerà? Esistono grandi quantità di contatto reed e sensori ad effetto hall, per non parlare dei diversi tipi di magneti.
jfpoilpret,

Uno strato di TP è così sottile che potrebbe attivarsi con un po 'di sinistra. In teoria potrebbe essere modificato, ma è davvero inefficiente estrarre il microscopio o qualsiasi altra cosa per cambiare un rotolo di carta igienica.
Pinguino anonimo

L'attivazione con un po 'di sinistra non è poi così male, poiché la domanda del PO è "... la carta igienica è bassa "; basso non significa necessariamente vuoto.
jfpoilpret

2

La soluzione più semplice ma migliore sarebbe quella di utilizzare un fotoaccoppiatore costituito da un LED IR e un opto-transistor. Fai schiarire il LED verso il rotolo, il LED si trova all'interno del rotolo legato alla "maniglia". Una volta rimosso il rotolo di cartone, l'opto-transistor ottiene la luce IR dal LED e innesca un'interruzione di cambio pin su Arduino, che può quindi avvisarti attraverso molti modi (luce, SMS, twitter, allarme ...).

Quel design è davvero economico, facile e veloce da costruire. Anche se c'è ancora una cosa che devi fare: quando non c'è più carta igienica, devi effettivamente rimuovere il rotolo di cartone ;-)

Altrimenti, lo stesso tipo di soluzione per i rotoli di riserva è anche un'idea migliore :-)


Gli accoppiatori ottici non sono singoli chip che includono sia l'emettitore che il ricevitore? Vedi qui: en.wikipedia.org/wiki/Opto-isolator
jfpoilpret

[...] è un componente che trasferisce i segnali elettrici tra due circuiti isolati utilizzando la luce [...], quindi sostanzialmente è quello che facciamo, tra un LED IR (un circuito) e un fototransistor. Anche se hai ragione non è un singolo componente (come il MOC3020).
zmo

2

Molte delle opzioni qui sembrano complicate e invadenti.

Sensore di colore

Un'altra opzione, leggermente complicata (ma divertente) da implementare, ma non invadente e facile da installare, è quella di costruire un sensore di colore economico e montarlo sul muro dietro il rotolo. Quando rilevi il colore del rotolo (o l'assenza del colore di TP), è basso.

Puoi anche comprarne uno per $ 8 .

Puoi regolare la soglia sfruttando la magrezza del TP e il fatto che inizi a sembrare un po 'più scuro quando rimangono solo pochi fogli.

Se necessario, è possibile eseguire la calibrazione premendo un pulsante dopo aver installato un nuovo rotolo con le luci del bagno accese.

Dovresti apportare alcune modifiche a seconda delle specifiche del tuo bagno. Se hai aggiunto ulteriore complessità e lo hai spento da una presa CA collegata all'interruttore della luce del bagno, potresti averlo acceso solo quando le luci del bagno erano accese, il che filtrerebbe molti dati inaffidabili.

È molto facile da installare e non comporta modifiche al rotolo stesso. Potresti attaccare il sensore al muro con nastro biadesivo o metterlo su un piccolo ripiano sotto il rotolo rivolto verso l'alto (o sulla parte superiore rivolta verso il basso).

Interruzione del raggio IR

Montare un piccolo LED IR su un lato del distributore, appena sopra la bobina. Montare un sensore fotografico IR sull'altro lato del distributore. Quando il sensore vede il LED, il rotolo è basso. Potrebbe essere fatto anche con un laser economico (ad esempio un puntatore laser pronto all'uso su un lato e un fotosensore sull'altro; ma non ferire gli occhi!)

Questo è anche facile da installare (ad es. Colla a caldo sul distributore) e non comporta modifiche al rotolo, sebbene la posizione dei sensori possa renderli facilmente danneggiabili quando si sostituiscono i rulli.


Mi piacciono molto anche le opzioni del sensore reed e del sensore di portata (BTW: $ 10 ti offre un ottimo sensore di distanza a corto raggio ) qui.


1
Il raggio IR è stato il mio primo pensiero. Semplice e facile da implementare e probabilmente più affidabile di alcune delle altre soluzioni, anche se forse meno divertente :)
Kevin

Hehe, sono d'accordo. Penso che un sensore di colore sarebbe divertente, almeno dal punto di vista del software; sarebbe una bella sfida raccogliere dati e provare a elaborare un algoritmo che era immune, ad esempio, ai cambiamenti nell'illuminazione naturale o ad altri falsi fattori scatenanti.
Jason C

1

Hai alcune opzioni:

Nota: i collegamenti forniti sono solo i primi che vengono visualizzati. Molti di loro sono costosi rispetto ad altri siti. eBay lo compra nelle vicinanze può essere abbastanza economico per la maggior parte di questi articoli. Controllare altri luoghi, anche, compreso Sparkfun .

  • Sensore ping ultrasonico . Questo non è l'ideale in alcun modo, ma sono facili da usare. Basta aggiungerne uno con un allegato. Non è l'ideale perché non sarà abbastanza preciso da dire esattamente quando è vuoto. Potrebbe essere un po 'sopra / sotto sensibile. Il peso sarebbe più difficile, anche se si sposta affatto.
  • Sensore di colore (preferibile, ma costa di più) . Ne hai parlato e questa è probabilmente la migliore idea. Ti darà valori analogici (da leggere con Arduino) per rosso, verde e blu. [Supponendo che maggiore è il contenuto di quel colore, maggiore è la tensione,] il bianco dovrebbe essere praticamente tutto al 100% e il marrone immagino che la maggior parte di essi sarebbe circa il 30-40%. (Più tardi, se non lo capisci, salta questa parte)

Ho intenzione di approfondire il sensore di colore:

I colori vengono letti con tre valori qui: rosso, verde e blu. Ci sono tre sensori sulla scheda. Uno filtra tutto tranne il rosso, un altro blu e l'altro verde. I sensori sulla scheda rilevano la quantità di luce in entrata e la convertono in una tensione: tra 5 V ("100% rosso / verde / blu") o 0 V ("0% rosso / verde / blu"). Questo può quindi essere convertito in un numero da Arduino (0-1024 su un pin analogico).

Un problema con l'illuminazione: questo sensore, da quello che posso dire, ha un LED sempre acceso. Ti consigliamo di dissaldarlo o coprirlo, a meno che tu non voglia un porta carta igienica illuminato. Ora aspetta ... il tuo sensore penserà che quando è buio, è marrone. Nessun problema ... ecco qualcosa a cui devi pensare.

Usa un selettore di colori come sto usando e seleziona un marrone . A sinistra di questo, puoi controllare la "luminosità simulata". Inoltre questa è la forma esadecimale di RGB. Ti consigliamo di convertirlo in valori standard con questo calcolatore .

Nel marrone, il colore blu è quasi inesistente. Dovremmo ignorare quel colore, a meno che tu non voglia un modo per ricontrollare che sia marrone. Direi che dovrebbe sempre essere inferiore al 40% per praticamente qualsiasi tonalità di marrone.

Da quello che posso dire con una sfumatura di marrone, il rosso è praticamente il doppio del verde. Tale rapporto può variare, ma è necessario verificare che sia in qualche modo esistente. Per il bianco / grigio / nero, tutti i colori sono proporzionali 1: 1: 1. Puoi usarlo per rilevare se è buio o se è marrone.

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
}

Innanzitutto, verifica che il blu sia inferiore al 25%. Quindi, verifica che il rosso e il verde siano uguali ... dai o prendi il 20%. (ovvero rosso = 100 verde = 80, rosso = 110 verde = 90, ecc.). Se questo è vero, puoi praticamente stabilire che è marrone. Quindi, un LED si accende per cinque secondi.

Se lo desideri, puoi modificare il LED in modo che diventi un segnale acustico. Potrebbe essere necessario regolare l'istruzione if verificando che il blu sia inferiore a 256/1024 (1024 = risoluzione del pin analogico) se non funziona in molta luce o funziona in condizioni di luce scura. Poiché il codice in seguito verifica che il rosso sia circa il doppio del verde, qualsiasi sfumatura di bianco non dovrebbe passare tale istruzione if. Potrebbe anche essere necessario regolare minRede maxRedper essere più lontano (se non rileva il marrone) o più vicino (se rileva il marrone quando è bianco). Non riesco davvero a testare questo codice senza sensore di colore.


Nota: questi possono essere un po 'irrequieti. Consiglierei invece un LED in modo che l'intera casa non venga svegliata nel cuore della notte solo a causa della carta igienica bassa. Inoltre, se ostruisci il sensore ... Se non fosse in bagno, consiglierei una fotocamera e farei una foto ogni volta che si abbassa molto con un interruttore reed come la risposta di @ jfpolipret ... ma ... (nessun gioco di parole previsto) :)


Il sensore di colore funzionerà allo stesso modo (cioè senza dover regolare lo schizzo) se cambi il colore della tua carta igienica :-)?
jfpoilpret,

@jfpoilpret Non so se riutilizzi la tua carta igienica o no ma ... :) Sto aggiungendo codice con meccanismi in modo che sia "simile" ma non esatto.
Pinguino anonimo

Penso che la carta igienica sia abbastanza morbida da assorbire l'esplosione di ultrasuoni da un sensore a ultrasuoni
TheDoctor

@TheDoctor In realtà non è una buona idea, come ho sottolineato. È un modo impreciso.
Pinguino anonimo

1
@jfpoilpret Se hai aggiunto un pulsante "calibra" e lo hai premuto con le luci del bagno accese dopo aver installato un nuovo rotolo, puoi misurare il colore corretto.
Jason C

1

Sembra un bel progetto, ecco i miei 2 ct:

Punta una fotocamera per scattare foto del rotolo lateralmente, che è probabilmente l'unico modo per scoprire davvero quanta carta è rimasta. (modifica: potresti usare un raspberry pi con la fotocamera csi e creare un segnale di uscita corrispondente al numero di fogli e inviare quel segnale all'arduino ?!)

Per una stima potrebbe anche essere sufficiente contare le rotazioni del rotolo, ma è necessario fissarlo meglio in modo che non scivoli. Oppure puoi usare i magneti come fai sulle biciclette, ma devono essere attaccati direttamente al rotolo allora.

(modifica: un'altra idea, misura lo spessore del rotolo misurando l'angolo del coperchio)


Ciao e benvenuto in Arduino Stack Exchange! Puoi per favore dire come lo colleghi ad un Arduino? Grazie! Inoltre, non so quanto sia buona idea mettere una macchina fotografica in bagno. :)
Anonimo Penguin

Mi piace la tua ultima idea modificata; potrebbe essere ulteriormente semplificato semplicemente usando un interruttore sul coperchio, che chiuderebbe il circuito quando il coperchio ha raggiunto un certo angolo; sembra più facile che misurare l'angolo stesso.
jfpoilpret,

1

L'opzione migliore è collegare un codificatore rotante sul lato del rotolo e contare le rotazioni del rotolo per determinare quanto è stato utilizzato. Una volta che conosci il numero di rotazioni per rotolo, puoi impostare dove vuoi che la tua notifica si attivi. Collegalo a un sistema di registrazione di sorta e avrai dati storici sull'uso della carta e sull'uso della toilette.


Sono d'accordo. Le persone sembrano complicare troppo questo. Inoltre, è possibile continuare a riutilizzare lo stesso rotolo con l'encoder collegato trasferendo TP da un nuovo rotolo al rullo sensore quando lo si riempie (ad esempio, posizionare i rotoli su un paio di aste di tassello economiche e avvolgerlo); ciò ti consente anche di contare quante rotazioni per quel rotolo (mentre lo riempi).
Jason C

1

Dico di prendere un sensore di peso e programmarlo per il peso del rotolo. Quando scende al di sotto di un certo peso, inizia a lampeggiare un LED o emette un segnale acustico.


0

Un altro modo per farlo, nel caso in cui volessi solo divertirti, sarebbe quello di mettere un'asta di metallo all'interno del rotolo e una piastra di metallo all'esterno e misurare la capacità che dovrebbe cambiare con il TP rimanente a causa del costante dielettrica della carta.

Ma quello sarebbe sicuramente prendere il "percorso panoramico". Tuttavia, l'Arduino può misurare la capacità abbastanza facilmente e potrebbe anche essere abbastanza sensibile, e rimarrebbe fuori mano perché sarebbe solo una piastra di metallo dietro il rotolo e un'asta di metallo nel rotolo. Potresti anche essere in grado di aggiornare un titolare esistente senza che venga notato.

Un modo più semplice sarebbe un bastone attaccato all'albero di un potenziometro sollevato dalla parte superiore del rullo. Meno TP, l'albero si abbassa e gira il piatto. Potrebbe essere necessario un lungo albero per sfruttare la leva perché non puoi premere troppo forte senza ostacolare la funzione di tirare la carta igienica.

Come suggerito da AJMansfield, la radioattività viene effettivamente utilizzata per misurare lo spessore delle cose in ambienti industriali. Se davvero volessi impazzire, forse potresti usare una fonte radioattiva a bassissima energia come una lattina di quello strano sostituto del sale dal sapore che è un po 'sopra i livelli di fondo e media su tempi estremamente lunghi (la carta igienica non dovrebbe cambiare molto dall'ora all'ora), quindi questo potrebbe effettivamente essere un modo ragionevole ma costoso per fare le cose.

Anche i sensori di interruzione del raggio infrarosso sono buoni, e se lo posizioni nel modo giusto potresti far sì che blocchi più luce più il rotolo era pieno invece di dare solo e segnale on o off.

EDIT: Working Proof del concetto di approccio capacitivo. Ha solo bisogno di un arduino e 2 fili rigidi. Preciso a circa un ottavo di pollice, con molto rumore. Abbastanza sicuro di poter ottenere una precisione di almeno 1 pollice in modo affidabile. Il tempo di misurazione è di circa un minuto. È molto sensibile ai suoi dintorni. Dovresti assicurarti che tutto il metallo all'interno di un piede sia rimasto dov'era o utilizzare la schermatura.

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


È meglio includere il codice nella risposta anziché un collegamento esterno. Se il collegamento si interrompe in futuro, la tua risposta sarà comunque pertinente.
sachleen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.