Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Serrure à commande gestuelle

Composants et fournitures

SparkFun APDS-9960
× 1
Arduino UNO
× 1
Cathode commune diffuse RVB
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Résistance 4.75k ohm
× 2
Câbles de raccordement (générique)
× 1
Résistance 1k ohm
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

*Le capteur APDS-9960 ne fonctionne pas avec l'Arduino Nano ou Mega 2560 (dans mes tests).

Ce projet est facile à réaliser et à utiliser. N'hésitez pas à utiliser n'importe quel type de servo ou de mécanisme de verrouillage avec ce projet. Ceci est censé être une plate-forme de départ pour un verrou basé sur les gestes. En construction !

Matériaux

J'ai obtenu la plupart de mes pièces sur Amazon.com et le capteur APDS-9960 de Sparkfun. Jusqu'à présent, vous ne pouvez utiliser qu'un Arduino Uno ou un Micro 3.3v, car toute autre carte ne fonctionnera pas pour une raison étrange.

Assemblage

Fixez l'écran LCD comme indiqué. Si vous n'avez pas de potentiomètre 10k, utilisez une résistance 1k allant du contraste à GND. Le capteur APDS-9960 devra être déplacé si vous utilisez l'Arduino Uno, donc ce que j'ai fait est de prendre le SCL et le SDA et de les connecter à une résistance de 4,7k, puis de les tirer haut en prenant la résistance de 4,7k à 3,3v. Ensuite, connectez-les à A4 et A5, en conséquence (voir schéma). L'Arduino peut fonctionner avec une batterie 9v avec un baril d'alimentation CC attaché.

Enceinte

J'ai utilisé une simple boîte en carton et j'ai découpé des trous pour correspondre à l'emplacement des composants. Vous pouvez souder tout cela à un morceau de panneau perforé, mais je l'ai juste laissé dans la planche à pain et j'ai connecté des câbles de connexion aux composants. Après avoir terminé, cela ressemblait à ceci.

Code

  • Code Arduino
Code ArduinoC/C++
/* Connexions matérielles :IMPORTANT : l'APDS-9960 ne peut accepter que 3,3 V ! Arduino Pin APDS-9960 Fonction de la carte 3.3V VCC Alimentation GND GND Masse A4 SDA I2C Données A5 SCL I2C Horloge 2 INT InterruptResources:Inclure Wire.h et SparkFun_APDS-9960.h*/#include #include #include #include #include #define PINSIZE 6 #define SERVOPIN 9//Combien de gestes dure votre mot de passe// Pins#define APDS9960_INT 2 // Doit être une pin d'interruptionLiquidCrystal lcd( 12,11,6,5,4,3);Servo servo;uint8_t near_data =0;int red_led =A1;int green_led =A2;int pageNum =0; //L'écran LCD "page" String secret[PINSIZE] ={"UP","DOWN","UP","UP","RIGHT","LEFT"} ; // Le mot de passe va ici. Doit être en CAPS. Peut être "UP", "DOWN", "LEFT" ou "RIGHT" String currentGesture ="";int numRight =0;SparkFun_APDS9960 apds =SparkFun_APDS9960(); //Init APDS-9960 libraryint isr_flag =0;void setup() { // Définir la broche d'interruption comme entrée pinMode(APDS9960_INT, INPUT);lcd.begin(16,2);servo.attach(SERVOPIN);servo.write( 0);servo.detach(); // Initialiser le port série Serial.begin(9600); Serial.print("Votre mot de passe est "); Serial.print(PINSIZE); Serial.println(" gestes longs."); Serial.println(); Serial.println(F("----------------")); Serial.println(F("APDS-9960 Lock")); Serial.println(F("----------------")); // Initialiser la routine de service d'interruption attachInterrupt(0, interruptRoutine, FALLING); // Initialiser APDS-9960 (configurer I2C et les valeurs initiales) if ( apds.init() ) { Serial.println(F("APDS-9960 initialisation terminée")); } else { Serial.println(F("Une erreur s'est produite lors de l'initialisation APDS-9960 !")); } if ( !apds.setProximityGain(PGAIN_1X) ) { Serial.println(F("Une erreur s'est produite en essayant de définir PGAIN")); } if ( apds.enableProximitySensor(false) ) { Serial.println(F("Le capteur de proximité est en cours d'exécution")); } else { Serial.println(F("Une erreur s'est produite lors de l'initialisation du capteur !")); } // Lancer l'exécution du moteur de capteur de mouvements APDS-9960 if ( apds.enableGestureSensor(true) ) { Serial.println(F("Le capteur de mouvements est en cours d'exécution")); } else { Serial.println(F("Une erreur s'est produite lors de l'initialisation du capteur de mouvements !")); } }void loop() { if(pageNum==0){ if ( !apds.readProximity(proximity_data) ) { Serial.println("Erreur de lecture de la valeur de proximité"); } else { Serial.println(proximity_data); if((proximity_data>=40) &&(pageNum==0)){ pageNum=1; retard (2000); } } } switch(pageNum){ case 0 :LCDClear(); lcd.print("Locked-get"); lcd.setCursor(0,1) ; lcd.print("3 pouces de distance."); clignoteRed(); LCDClear(); Pause; cas 1 :numDroite =0 ; lcd.print("Entrez le code..."); lcd.setCursor(0,0); for(int x=0; x0;x--){ LCDClear(); lcd.print("Fermeture :"); lcd.setCursor(0,1) ; lcd.print(x); lcd.setCursor(1,1) ; lcd.print(" secondes..."); delay(1000);}LCDClear();lcd.print("Closing");}

Schémas


Processus de fabrication

  1. Verrouillage
  2. Serrure à combinaison
  3. Alarme de soif d'usine
  4. Horloge de mots italienne
  5. Seulement trois broches pour un clavier 4x3
  6. Compteur kWh Sigfox
  7. Moniteur de température Bluetooth
  8. Une entrée analogique isolée pour Arduino
  9. Mesurez votre temps de réaction