工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ジェスチャー制御ロック

コンポーネントと消耗品

SparkFun APDS-9960
× 1
Arduino UNO
× 1
RGB拡散コモンカソード
× 1
Adafruit標準LCD-16x2白地に青
× 1
抵抗4.75kオーム
× 2
ジャンパー線(汎用)
× 1
抵抗1kオーム
× 1

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

* APDS-9960センサーはArduinoNanoまたはMega2560では動作しません(私のテストでは)。

このプロジェクトは簡単に作成して使用できます。このプロジェクトでは、あらゆる種類のサーボまたはラッチ機構を自由に使用できます。これは、ジェスチャベースのロックの開始プラットフォームとなることを目的としています。建物に!

材料

ほとんどの部品をAmazon.comから入手し、APDS-9960センサーをSparkfunから入手しました。これまでのところ、ArduinoUnoまたはMicro3.3vしか使用できません。これは、他のボードが何らかの奇妙な理由で機能しないためです。

組み立て

図のようにLCDを取り付けます。 10kのポテンショメータがない場合は、コントラストからGNDに接続する1kの抵抗を使用してください。 Arduino Unoを使用する場合は、APDS-9960センサーをシフトする必要があるため、SCLとSDAを取り、それらを4.7k抵抗に接続し、4.7k抵抗を3.3vにして、それらを高くします。次に、それらをA4とA5に接続します(回路図を参照)。 Arduinoは、DC電源バレルが接続された9Vバッテリーで動作します。

エンクロージャー

シンプルな段ボール箱を使い、部品の行き先に合わせて穴を開けました。これをすべてperfboardにはんだ付けすることもできますが、私はそれをブレッドボードに残し、ジャンパー線をコンポーネントに接続しました。終わった後はこんな感じでした。

<図>

コード

  • Arduinoコード
Arduinoコード C / C ++
 / *ハードウェア接続:重要:APDS-9960は3.3Vしか受け入れられません! ArduinoピンAPDS-9960ボード機能3.3VVCC電源GNDGNDグランドA4SDAI2CデータA5SCLI2Cクロック2INT割り込みリソース:Wire.hおよびSparkFun_APDS-9960.h * /#include  #include  #include  #include  #define PINSIZE 6 #define SERVOPIN 9 //パスワードの長さのジェスチャ数// Pins#define APDS9960_INT 2 //割り込みである必要がありますpinLiquidCrystallcd( 12,11,6,5,4,3);サーボサーボ; uint8_tproximity_data =0; int red_led =A1; int green_led =A2; int pageNum =0; // LCD "page" String secret [PINSIZE] ={"UP"、 "DOWN"、 "UP"、 "UP"、 "RIGHT"、 "LEFT"}; //パスワードはここにあります。 CAPSである必要があります。 「UP」、「DOWN」、「LEFT」、または「RIGHT」のいずれかになります。StringcurrentGesture =""; int numRight =0; SparkFun_APDS9960 apds =SparkFun_APDS9960(); // APDS-9960ライブラリを初期化しますintisr_flag =0; void setup(){//割り込みピンを入力として設定pinMode(APDS9960_INT、INPUT); lcd.begin(16,2); servo.attach(SERVOPIN); servo.write( 0); servo.detach(); //シリアルポートを初期化しますSerial.begin(9600); Serial.print( "パスワードは"); Serial.print(PINSIZE); Serial.println( "ジェスチャーが長い。"); Serial.println(); Serial.println(F( "----------------")); Serial.println(F( "APDS-9960 Lock")); Serial.println(F( "----------------")); //割り込みサービスルーチンを初期化しますattachInterrupt(0、interruptRoutine、FALLING); // APDS-9960を初期化します(I2Cと初期値を構成します)if(apds.init()){Serial.println(F( "APDS-9960初期化が完了しました")); } else {Serial.println(F( "APDS-9960の初期化中に問題が発生しました!")); } if(!apds.setProximityGain(PGAIN_1X)){Serial.println(F( "PGAINを設定しようとして問題が発生しました")); } if(apds.enableProximitySensor(false)){Serial.println(F( "近接センサーが実行中です")); } else {Serial.println(F( "センサーの初期化中に問題が発生しました!")); } // APDS-9960ジェスチャセンサーエンジンの実行を開始しますif(apds.enableGestureSensor(true)){Serial.println(F( "ジェスチャセンサーが実行中です")); } else {Serial.println(F( "ジェスチャセンサーの初期化中に問題が発生しました!")); }} void loop(){if(pageNum ==0){if(!apds.readProximity(proximity_data)){Serial.println( "近接値の読み取りエラー"); } else {Serial.println(proximity_data); if((proximity_data> =40)&&(pageNum ==0)){pageNum =1; delay(2000); }}} switch(pageNum){case 0:LCDClear(); lcd.print( "Locked- get"); lcd.setCursor(0,1); lcd.print( "3インチ離れています。"); flashRed(); LCDClear();壊す;ケース1:numRight =0; lcd.print( "コードを入力..."); lcd.setCursor(0,0); for(int x =0; x  0; x-){LCDClear(); lcd.print( "終了:"); lcd.setCursor(0,1); lcd.print(x); lcd.setCursor(1,1); lcd.print( "秒..."); delay(1000);} LCDClear(); lcd.print( "Closing");} 

回路図


製造プロセス

  1. ロック
  2. ダイヤル錠
  3. 喉の渇き警報プラント警報
  4. イタリア語の単語時計
  5. 4x3キーパッドのピンは3つだけ
  6. SigfoxkWhメーター
  7. Bluetooth温度モニター
  8. コンパニオンIC
  9. USBMIDIアダプター
  10. Arduino用の絶縁アナログ入力
  11. 反応時間を測定する