FlickMote
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps en online services
|
Over dit project
INLEIDING
Het bedienen van het huishoudapparaat en elektronische gadgets via een infraroodafstandsbediening is nu algemeen. Maar dezelfde controlerende taak kan gemakkelijker worden gedaan. De primaire drijfveer van het nieuwe systeem van afstandsbedieningen met handgebaren is het wegnemen van de noodzaak om in de afstandsbediening te kijken en te zoeken naar een specifieke toets voor een specifieke functie, voornamelijk voor oudere. Dit project presenteert een nieuw systeem om huishoudelijke apparaten te bedienen door middel van handgebaren als een afstandsbedieningsapparaat. Het project zal in dit rapport worden aangeduid als flickremote. Het gebruikt een ultrasone afstandsmeter om het gebaar van de gebruiker te bepalen en geeft een IR-signaal af, Microcontroller Developer Board Arduino 101
HARDWARECOMPONENTEN
1. Een Arduino 101 of uno
2. Een HC-SR04 ultrasone module
3. Een infrarood LED
4. Een geschikte weerstand voor uw infrarood LED (220R)
5. Een RGB-LED
6. Een breadboard en kabels
HOE WERKT HET:
Dit project gebruikt een ultrasone afstandsmeter om het gebaar van de gebruiker te bepalen en voert een IR-signaal uit naar een tv op het gegeven commando. De afstand of inches kan in de code worden bewerkt die overeenkomt met uw gemak
- Hoge veegbeweging (> 10 inch) =kanaal omhoog
- Laag vegen =Kanaal omlaag
- Hoge hold (> 10in) =Volume hoger
- Laag vasthouden =Volume omlaag
- Dekselsensor (<3in) =Aan / Uit
Circuitdiagram met Fritzing:
BOUW:
1. Sluit de IR-led aan op pin 3 via een geschikte weerstand en sluit vervolgens de kathode aan op GND.
2. Sluit de ultrasone sensor aan op 5v en GND waar de pinnen aangeven. Sluit de triggerpin aan op pin 8 en de echopin op 7. Je kunt deze pinnen configureren in het programma
3. Sluit de RGB-LED aan op GND en pinnen 11 (rood), 10 (groen), 9 (blauw). Deze pinnen zijn ook configureerbaar.
BEDIENING
Kracht
Als u binnen 3 inch over de sensor veegt, gaat de LED paars knipperen. Dit is de bevestiging dat een 'aan/uit'-signaal klaar is om verzonden te worden. Om te voorkomen dat de tv per ongeluk wordt uitgeschakeld, heb ik de schets binnen 5 seconden na de eerste laten wachten op een tweede veegbeweging om te bevestigen. Op dit punt wordt het signaal naar de tv gestuurd om in of uit te schakelen.
Kanaal
Als u binnen 10 inch van de sensor veegt (maar niet binnen 3), verandert het kanaal naar beneden. Als je tussen 10 en 20 inch veegt, verandert het kanaal.
Volume
Als u uw hand binnen 10 inch van de sensor houdt (maar niet binnen 3), wordt het volume lager. Als u tussen 10 en 20 inch vasthoudt, verandert het volume. Het volume blijft veranderen (omhoog of omlaag) totdat je hand wordt verwijderd
VOORDELEN EN VERBETERING:
Maakt het niet meer nodig om in de afstandsbediening te kijken en naar een specifieke toets voor een specifieke functie te zoeken
Een oplossing om de gadget (tv) te bedienen voor zonwering en lichamelijk gehandicapte personen
Het project kan worden verbeterd door meer functionaliteit toe te voegen om alle huishoudelijke apparaten met dezelfde methode te bedienen
BEDANKT U
Code
- Code
CodeC/C++
/* Swipe-afstandsbediening Deze schets gebruikt een ultrasone afstandsmeter om het gebaar van de gebruiker te bepalen en voert een IR-signaal uit naar een Sony TV op basis van het gegeven commando. - Hoge veegbeweging (> 10 inch) =Kanaal omhoog- Laag veeg =Kanaal omlaag- Hoog vasthouden (> 10 inch) =Volume omhoog- Laag vasthouden =Volume omlaag - Cover-sensor (<3 inch) =Aan / Uit Gemaakt door Vignesh Jaishankar Deze code gebruikt de IRremote-bibliotheek (https://github.com/shirriff/Arduino-IRremote) */#include// Definieert voor besturingsfuncties#define CONTROL_CH 1 // Channel change#define CONTROL_VOL 2 // Volume#define CONTROL_POW 3 // Power#define CONTROL_UP 1#define CONTROL_DOWN -1#define DIST_MAX 20 // Maximale afstand in inches, alles daarboven wordt genegeerd. #define DIST_DOWN 10 // Drempel voor omhoog/omlaag-commando's. Indien hoger, is het commando "omhoog". Indien lager, "down".#define DIST_POW 3 // Drempel voor stroomopdracht, lager dan =aan/uit// IR PINconst int irPin =3; // dit is gedefinieerd in de bibliotheek, deze var is slechts een herinnering. DIT VERANDEREN ZAL DE PIN IN DE BIBLIOTHEEK NIET WIJZIGEN// 2-pins ping Sensorconst int pingPin =8;const int echoPin =7;// Bevestigings-LED Pinsconst int led =13; //interne LED voor omhoog/omlaag debuggingconst int ledR =11;const int ledG =10;const int ledB =9;// LED op timerunsigned long timer;// IR-zender objectIRsend irsend;// Power bevestigingsvlag (twee keer vegen nodig om signaal te verzenden) boolean powerConfirmed =false; void setup () {// initialiseer seriële communicatie en stel pinnen in Serial.begin (9600); pinMode (led, UITGANG); pinMode (ledR, UITGANG); pinMode (ledG, UITGANG); pinMode (ledB, UITGANG); pinMode (pingPin, UITGANG); pinMode (echoPin, INPUT); timer =millis();}void loop(){ // Serial.println(millis()); lange duur, inches; int-waarde; // Controleer op een leesduur =doPing(); // Timer om acties te bevestigen (momenteel alleen stroom) if (timer &&timer <(millis() - 5000) &&(millis()> 5000)) { Serial.println ("timer reset"); timer =onwaar; } digitalWrite (led, LAAG); setColor (0, 0, 0); // off // converteer de tijd naar een afstand inches =microsecondenToInches (duur); // Als het minder dan max. inches verwijderd is, handel dan als (inch DIST_MAX) { doIR(CONTROL_CH, waarde); // veeg } else { // volume int d =500; // eerste vertraging is langer voor een enkele volumeverandering // herhaal totdat de hand wordt verwijderd while (inch DIST_DOWN) { digitalWrite(led, HOOG); retourneer CONTROL_UP; } else { digitalWrite (led, LAAG); retourneer CONTROL_DOWN; }}/** Activeer de juiste IR-code*/void doIR(int control, int val){ switch(control) { case CONTROL_POW:// power Serial.println("power on / off 0xa90"); for (int i =0; i <3; i++) { setColor(255, 0, 0); irsend.sendSony(0xa90, 12); // Sony TV power code vertraging (40); } pauze; case CONTROL_CH:setColor (0, 255, 0); // output 'kanaal omhoog / omlaag' afhankelijk van val if (val ==CONTROL_UP) {digitalWrite (led, HIGH); for (int i =0; i <3; i++) { irsend.sendSony (0x90, 12); vertraging (40); } Serial.println ("kanaal omhoog 0xD00A"); } else // down { for (int i =0; i <3; i++) { irsend.sendSony (0x890, 12); vertraging (40); } Serial.println ("kanaal omlaag 0x3002"); } pauze; case CONTROL_VOL:setColor (0, 0, 255); // output 'volume omhoog / omlaag' afhankelijk van val if (val ==CONTROL_UP) {digitalWrite (led, HIGH); for (int i =0; i <3; i++) { irsend.sendSony (0x490, 12); vertraging (40); } Serial.println("volume omhoog 0x490"); } else //down { for (int i =0; i <3; i++) { irsend.sendSony (0xC90, 12); vertraging (40); } Serial.println("volume omlaag 0xC90"); } pauze; }} ongeldig setColor (int rood, int groen, int blauw){ analogWrite (ledR, rood); analogWrite(ledG, groen); analogWrite(ledB, blauw);}lange doPing(){ digitalWrite(pingPin, LOW); vertragingMicroseconden(2); digitalWrite (pingPin, HOOG); vertraging Microseconden (5); digitalWrite (pingPin, LAAG); return pulseIn(echoPin, HIGH);}lange microsecondenToInches(lange microseconden){ return microseconden / 74/2;}lange microsecondenToCentimeters(lange microseconden){ return microseconden / 29/2;}
Schema's
flickmote_9Gx3XNFHEp.fzzProductieproces