산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Android 앱으로 제어되는 인원 계수기 만들기

구성품 및 소모품

Arduino UNO
× 1
브레드보드(일반)
× 2
포토 저항기
× 3
레이저 모듈
× 3
부저
× 1
RGB LED 모듈
× 1
LED(일반)
× 3
저항 1k 옴
× 3
저항 221옴
× 3
배터리
× 1
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE
MIT 앱 발명가

이 프로젝트 정보

설명

먼저, 피플 카운터는 입구를 통과하는 사람들의 수를 감지하는 장치입니다. 나는 2주 동안 휴가를 가야 할 때 내 방을 확보하기 위해 피플 카운터를 만들어야 한다고 생각했다. 그리고 방에 들어갈 수 있는 권한이 없는 사람들에게 경고하는 알람으로 피플 카운터를 사용하고 싶었습니다. 레이저는 속도의 특성 때문에 LDR로 무언가를 정확하게 계산하는 가장 좋은 옵션이므로 계산 작업에 LDR과 함께 레이저를 사용하기로 결정했습니다. 내 방에는 3개의 가능한 출입구(2개의 문과 1개의 창)가 있으므로 3개의 레이저와 3개의 LDR을 사용했습니다. 그런데 어느 입구의 레이저가 열려 있는지, 알람이 켜져 있는지 여부를 선택하려면 장치를 원격으로 제어해야 한다는 것을 깨달았습니다. 그래서 HC-06 블루투스 모듈을 추가하여 내가 만든 안드로이드 앱으로 기기와 통신을 했습니다. 또한 Android 앱은 관찰하려는 입구에 들어가는 사람들의 수를 표시합니다.

내 프로젝트와 기사를 지원하려면 여기 내 웹사이트를 방문하세요. :)

앱 만들기

HTML에서 Java로 코드를 변환하거나 Python으로 앱을 프로그래밍하는 등 Android 앱을 만드는 방법에는 여러 가지가 있습니다. 그러나 MIT App Inventor는 안드로이드 앱을 만들고 싶지만 아직 iOS와 호환되지 않는다는 점을 잊지 말자 드래그 앤 드롭 구조로 되어 있어 가장 쉬운 방법이다.

피플 카운터! 는 앱의 이름이며 Screen1 및 Screen2라는 두 개의 화면을 포함합니다.

화면1

메인 화면으로 계속 진행하기 위한 홈 화면이지만 먼저 MIT 앱 인벤터에서 설정한 비밀번호를 정확하게 입력해야 합니다. (제가 설정한 기본 비밀번호는 "counter"입니다.)

화면2

아두이노 보드를 제어하기 위한 메인 화면이자 메뉴이며, 아두이노에서 보낸 인원 계수기의 결과가 이 화면에 표시됩니다.

어떤 레이저가 켜져 있는지 또는 알람이 열려 있는지 여부를 선택할 수 있습니다. 또한 이 화면에서 인원 계수기의 결과를 보고 0부터 시작하도록 설정할 수 있습니다.

레이저와 LDR을 사용하여 인원 계수기를 만드는 방법

레이저(방사선의 유도 방출에 의한 광 증폭)는 기본적으로 광선의 패키지를 매우 직선을 통해 대상에 보내는 장치입니다. 그리고 LDR(light-dependent resistance)은 레이저가 스스로를 향하면 빛의 강도 증가를 쉽게 감지할 수 있습니다. 레이저와 LDR 사이에 장애물이 있으면 LDR이 빛의 세기 감소를 감지합니다. 따라서 최적 수준의 범위가 감소할 때마다 계산할 수 있다면 사람 계수기가 있을 것입니다. LDR에 대한 나의 실험에 따르면 최적 수준의 범위는 150에서 350 사이여야 합니다.

연결

<울>
  • Arduino 우노 모듈
  • 핀 2 ---------Laser_Module_1
  • 핀 3 -------- Laser_Module_2
  • 핀 4 -------- Laser_Module_3
  • 핀 5 -------- 부저
  • 핀 6 -------- HC-06 블루투스 모듈(TX)
  • 핀 7 ---------HC-06 블루투스 모듈(RX)
  • 핀 8 ---------제어_Led_1
  • 핀 12 ---------제어_Led_2
  • 핀 13 ----------Control_Led_3
  • 9번 핀 ------- RGB_Module(R)
  • 핀 10 ------ RGB_모듈(G)
  • 핀 11 ------- RGB_Module(B)
  • AO------------LDR_1
  • A1-------------LDR_2
  • A2------------LDR_3
  • 모든 부품의 연결을 완료하기 직전에 레이저가 LDR을 향하고 있는지 확인하십시오.

    장치를 테스트하고 테스트 비디오를 녹화한 후 장치를 3개의 다른 입구에 대해 3개의 부분으로 나누었습니다. 나는 그것을 사용한 이후로 내 방의 보안에 대해 의심 한 적이 없습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • PeopleCounter_with_Lasers.ino
  • PeopleCounter_with_Lasers.inoArduino
    <사전> //////////////////////////////////////////////// // 레이저로 인원 계수기 생성 // // Android 기기에서 // // 작성자:Kutluhan Aktar // // /////////////////////// //////////////////////// 프로젝트의 목적은 레이저와 LDR을 사용하여 방에 들어오는 사람의 수를 감지하고 안드로이드 앱으로 제어하세요. //// LDR의 한쪽 다리를 1K 옴 저항으로 GND에 연결하세요.//// 레이저가 LDR을 직접 향하고 있는지 확인하세요.//// 원하는 경우 사람 카운터의 결과가 정확합니다. LDR의 최적 수준을 올바르게 설정하십시오.////// Connections://// Arduino Uno// Laser_Module_1// Pin 2 ------------ ------------// Laser_Module_2// 핀 3 ------------------------// Laser_Module_3// 핀 4 ------------------------// 부저// 핀 5 ------------------- -----// HC-06 블루투스 모듈// 핀 6 ------------------------TX// 핀 7 ----- -------------------RX// Control_Led_1// 핀 8 ----------------------- -// Control_Led_2// 핀 12 ------------------------// Control_Led_3// 핀 13 ------------------ ------// RGB_Module// 핀 9 ------------------------R// 핀 10 -------- ----------------G// 핀 11 ------------------------B// LDR_1/ / AO ------------------------// LDR_2// A1 ------------------ ------// LDR_3// A2 ------------------------ #include int LaserPin_1 =2; // 레이저 센서의 핀을 정의합니다.int LaserPin_2 =3;int LaserPin_3 =4;int BuzzerPin =5; // 부저 pin.int Control_RX =6; // SoftWareSerial의 RX 및 TX 핀 library.int Control_TX =7;int RedPin =9; // RGB LED용 PWM 핀 sensor.int GreenPin =10;int BluePin =11;int Control_Led_1 =8; // 각 led를 각 레이저 모듈의 상태에 대한 표시로 설정합니다.int Control_Led_2 =12;int Control_Led_3 =13;int LDR_1 =A0; // LDRs.int용 아날로그 핀 LDR_2 =A1;int LDR_3 =A2;int LDR_1_Read; // LDR의 값을 전역 변수로 정의합니다.int LDR_2_Read;int LDR_3_Read;int Counter =0; // 카운터의 기본값을 0으로 설정합니다.휘발성 부울 Alarm_is_Activated =false; // 알람 여부를 선택합니다.volatile boolean Alarm_Initial =false;volatile boolean Counter_Detect =false; // Arduino에 지연 시간을 주기 위한 변수입니다.SoftwareSerial Control(Control_RX, Control_TX); // Bluetooth와 통신하기 위한 Rx 및 Tx 핀 정의 Module.String Name ="Control"; // 모듈 이름을 지정하고 it.int에 대한 비밀번호를 설정합니다. Password =1111;String Uart ="9600,0,0";void setup() { Serial.begin(9600); Control.begin(9600); // 통신을 위해 HC-06 블루투스 모듈을 시작합니다. // Change_BluetoothModule_Defaults(); // 블루투스 모듈의 기본값을 변경하고자 할 경우 활성화할 수 있습니다. 핀모드(레이저핀_1, 출력); 핀모드(레이저핀_2, 출력); 핀모드(레이저핀_3, 출력); 핀모드(레드핀, 출력); 핀모드(그린핀, 출력); 핀모드(블루핀, 출력); 핀모드(Control_Led_1,OUTPUT); 핀모드(Control_Led_2,OUTPUT); pinMode(Control_Led_3,OUTPUT);} 무효 루프() { get_Data_From_LDR(); // LDR 센서에서 데이터를 가져옵니다. if(Control.available()){ // HC-06 블루투스 모듈이 있으면 Commands()가 진행됩니다. char c =Control.read(); Serial.println(c); // 터미널을 이용하여 앱에서 설정한 문자를 제어합니다. 명령(c); } 알람을 설정하다(); // 알람 기능을 초기화합니다. Set_Counter(); // 인원 카운터를 시작합니다. }void Commands(char i){ // 특정 문자가 앱에서 Arduino로 전송될 때 발생하는 이벤트를 선택합니다. switch(i){ case '1' :Control.print(카운터); 부서지다; 경우 '2' :Alarm_is_Activated =true; 부서지다; case '3' :Alarm_is_Activated =false; 부서지다; 경우 '4' :digitalWrite(LaserPin_1,HIGH); digitalWrite(Control_Led_1,HIGH); 부서지다; 경우 '5' :digitalWrite(LaserPin_1,LOW); digitalWrite(Control_Led_1,LOW); 부서지다; 경우 '6' :digitalWrite(LaserPin_2,HIGH); digitalWrite(Control_Led_2,HIGH); 부서지다; 경우 '7' :digitalWrite(LaserPin_2,LOW); digitalWrite(Control_Led_2,LOW); 부서지다; 경우 '8' :digitalWrite(LaserPin_3,HIGH); digitalWrite(Control_Led_3,HIGH); 부서지다; case '9' :digitalWrite(LaserPin_3,LOW); digitalWrite(Control_Led_3,LOW); 부서지다; 케이스 'r' :카운터 =0; 부서지다; } }void get_Data_From_LDR(){ // LDR 센서의 데이터를 가져옵니다. LDR_1_Read =analogRead(LDR_1); LDR_2_Read =analogRead(LDR_2); LDR_3_Read =analogRead(LDR_3); }void Set_Counter(){ // 사람 카운터를 설정합니다. if(LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150){ // 움직임이 감지되면. Counter_Detect =참; } else{ Counter_Detect =거짓; } if(Counter_Detect ==true){ 카운터 =카운터 + 1; 지연(500); // 정확히 방에 들어오는 인원수를 알 때까지 약간의 시간을 준다. } if(Counter_Detect ==false){ 카운터 =카운터; }}void Set_Alarm(){ // 조정 가능한 알람 시스템을 설정합니다. if(Alarm_is_Activated ==true){ if(LDR_1_Read <150 || LDR_2_Read <150 || LDR_3_Read <150){ // 움직임이 감지되면. Alarm_Initial =참; } else{ 알람_초기화 =거짓; } if(Alarm_Initial ==true){ tone(BuzzerPin,500); 색상 변경(255, 0, 0); 지연(50); 색상 변경(0, 255, 0); 지연(50); 색상 변경(0, 0, 255); 지연(50); 색상 변경(255, 255, 0); 지연(50); 색상 변경(80, 0, 80); 지연(50); 색상 변경(0, 255, 255); 지연(50); 색상 변경(255, 255, 255); 지연(50); } } if(Alarm_is_Activated ==false || Alarm_Initial ==false ){ noTone(BuzzerPin); 색상 변경(0, 0, 0); }}void Color_Change(int red, int green, int blue){ // RGB 모듈 변수를 쉽게 변경합니다. 빨간색 =255 - 빨간색; 녹색 =255 - 녹색; 파란색 =255 - 파란색; analogWrite(레드핀, 레드); analogWrite(GreenPin, 녹색); analogWrite(BluePin, blue);}void Change_BluetoothModule_Defaults(){ // 선택한 값이 무엇이든 블루투스 모듈의 기본값을 변경합니다. Control.print("AT+이름"); // 이름을 변경합니다. Control.println(이름); Serial.print("이름이 변경되었습니다:"); Serial.println(이름); 지연(2000); Control.print("AT+PSWD"); // 비밀번호를 변경합니다. Control.println(비밀번호); Serial.print("비밀번호가 변경되었습니다:"); Serial.println(비밀번호); 지연(2000); Control.print("AT+UART"); // 전송 속도를 변경합니다. Bluetooth 모듈이 HC-05인 경우 전송 속도의 기본값은 38400입니다. Control.println(Uart); Serial.print("전송 속도가 설정되었습니다:"); Serial.println(Uart); 지연(2000); Serial.println("작업이 완료되었습니다."); // 작업이 정상적으로 완료되었는지 터미널을 이용하여 확인할 수 있습니다.}

    맞춤형 부품 및 인클로저

    People Counter의 코드 파일! peoplecounter_J375iBnBF8.aiaPeople Counter의 APK 파일! peoplecounter_uBf7MU4A1c.apk

    회로도


    제조공정

    1. 온도 제어 팬
    2. Raspberry Pi를 사용한 제스처 제어 로봇
    3. Android 스마트폰으로 제어되는 RASPBERRY PI WIFI 로봇
    4. 3D RGB Arduclock
    5. Fire with Wi-Fi(ESP8266, NeoPixels 및 Android 앱)
    6. Raspberry Motor Shield를 사용한 Android 제어 장난감
    7. Raspberry Pi를 통한 Alexa 제어 LED
    8. 마이리버
    9. 조이스틱 게임
    10. 발렌타인 데이 아이디어 - 함께 보낸 날 카운터(사진)