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

알람, LCD 및 온도가 있는 초음파 센서

구성품 및 소모품

Arduino UNO
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
초음파 센서 - HC-SR04(일반)
× 1
Maxim 통합 DS18B20 프로그래밍 가능 분해능 1선식 디지털 온도계
× 1
저항 4.75k 옴
× 1
SparkFun 푸시버튼 스위치 12mm
× 1
단일 회전 전위차계 - 10k 옴
× 1
부저
동일한 출력에 1개의 LED와 1개의 Buzzer, mAmp를 관리하세요!! 내가 사용하는 부저는 8mAmp입니다.
× 1
LED
녹색 1개, 노란색 1개, 빨간색 1개
× 3
저항 221옴
× 3
브레드보드(일반)
× 1
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

이 프로젝트는 저에게 물탱크의 수위에 대해 필요한 정보를 제공합니다. 레벨이 낮으면 녹색 LED가 켜집니다. 레벨이 중간일 때 노란색 LED가 켜집니다. 레벨이 HIGH일 때 부저음과 함께 빨간색 LED가 동시에 깜박입니다. 센서에서 수위까지의 거리는 초음파 센서로 측정되며 해당 탱크의 온도와 함께 LCD에 인쇄됩니다. 이 프로젝트는 더 큰 프로젝트의 일부입니다. 두 번째 부분은 펌프가 펌핑 중임을 나타내기 위해 원형으로 장착된 6개의 추적 LED입니다. 참조:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 세 번째 부분에서 펌프를 시작합니다. 수위가 높으면 펌프를 멈추고 수위가 낮으면 펌프를 멈춥니다.(공사중) 실제 프로젝트에서는 방수 초음파 센서를 사용하므로 배선이나 코드가 변경되지 않습니다. 센서가 젖었을 때(습도) 판독값이 어떻게 되는지 모르겠으므로 이 프로젝트는 정보를 제공하기 위한 것일 뿐이며 세 번째 프로젝트는 펌프 활동에 사용되며 자기 접촉으로 수행됩니다.

 #include //액정 라이브러리 로드#include #include #define ONE_WIRE_BUS 6 // 데이터 와이어는 Arduino OneWire의 핀 6에 연결됩니다. 원와이어(ONE_WIRE_BUS); // 모든 OneWire 장치와 통신하도록 oneWire 인스턴스를 설정합니다. // (Maxim/Dallas 온도 IC뿐만 아니라)DallasTemperature sensor(&oneWire); // 달라스 Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2)에 대한 oneWire 참조를 전달합니다. //LCDint trigPin =9라는 액정 객체 생성; //센서 트립 핀이 Arduino 핀에 연결됨 9int echoPin =7; // Arduino 핀에 연결된 센서 에코 핀 7int myCounter =0; // 변수 myCounter를 선언하고 0float pingTime으로 설정합니다. // ping이 센서에서 대상으로 이동하는 시간 및 returnfloat targetDistance; //대상까지의 거리(센티미터)float speedOfSound =776.5; //음속(마일)/시간void setup() { Serial.begin(9600); 핀모드(trigPin, 출력); 핀모드(에코핀, 입력); LCD.begin(16, 2); //16x2 LCD를 시작하도록 Arduino에 지시합니다. LCD.setCursor(0, 0); //LCD 커서를 왼쪽 상단 모서리 0열 0행 LCD.print("Distance:"); //첫 번째 행에 메시지 인쇄 sensor.begin(); // 라이브러리 시작 pinMode(8, OUTPUT); //핀 8, 10, 13 출력 핀 pinMode(10, OUTPUT); pinMode(13, OUTPUT);} 무효 루프() { digitalWrite(trigPin, LOW); //트리거 핀을 낮게 설정합니다. delayMicroseconds(2000); //시그널이 안정화되도록 합니다. digitalWrite(trigPin, HIGH); // trigPin을 높게 설정합니다. delayMicroseconds(15); //높은 상태에서 지연 digitalWrite(trigPin, LOW); //핑이 이제 전송되었습니다. delayMicroseconds(10); //하이 상태에서 지연 pingTime =pulseIn(echoPin, HIGH); // 마이크로초 단위의 pingTime pingTime =pingTime / 1000000; // 1000000으로 나누어 pingTime을 초로 변환(1초는 마이크로초) pingTime =pingTime / 3600; // 3600으로 나누어 핑 시간을 시간으로 변환(1시간의 초) targetDistance =speedOfSound * pingTime; //음속을 시간당 킬로미터로 선언했기 때문에 이것은 마일로 표시됩니다. 다시 센티미터로 변환할 것이지만 targetDistance =targetDistance / 2; //핑이 대상으로 이동하고 대상에서 다시 이동한다는 것을 기억하므로 실제 대상 거리를 2로 나누어야 합니다. targetDistance =targetDistance * 160934.4; //160934,4를 곱하여 마일을 센티미터로 변환합니다. sensor.requestTemperatures(); // 온도 판독값을 얻기 위해 명령을 보냅니다. LCD.setCursor(10, 0); //커서를 첫 번째 행의 10번째 열로 설정 LCD.print(" "); //행을 지우기 위해 공백을 인쇄합니다. LCD.setCursor(10, 0); //Cursor를 첫 번째 행의 10번째 열로 다시 설정 LCD.print((int) (targetDistance + 0.5)); //측정거리 출력 LCD.print("cm "); //단위를 인쇄합니다. LCD.setCursor(0, 1); //커서를 두 번째 행의 첫 번째 열로 설정합니다. LCD.print(" "); //행을 지우기 위해 공백을 인쇄합니다. LCD.setCursor(0, 1); // 커서를 두 번째 행의 첫 번째 열로 다시 설정 if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (targetDistance <40 &&targetDistance> 20) { LCD.print("LEV MED "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (targetDistance <20); { LCD.print("LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } 지연(2000); if (targetDistance> 40) { digitalWrite (13, HIGH); //녹색 LED 켜짐 } else { digitalWrite(13, LOW); //녹색 LED 꺼짐 } if (targetDistance <40 &&targetDistance> 20) { digitalWrite (8, HIGH); //노란색 LED 켜짐 } else { digitalWrite(8, LOW); //노란색 LED 꺼짐 } if (targetDistance <20) { digitalWrite(10, HIGH); //적색 LED ON 지연(2000); 디지털 쓰기(10, 낮음); //빨간색 LED 꺼짐 } else { digitalWrite(10, LOW); //빨간색 LED 꺼짐 }} 
<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 제목 없는 파일
  • 제목 없는 파일C/C++
    #include //액정 라이브러리 로드#include #include #define ONE_WIRE_BUS 6 // 데이터 와이어는 Arduino OneWire의 핀 6에 연결됩니다. oneWire(ONE_WIRE_BUS ); // 모든 OneWire 장치와 통신하도록 oneWire 인스턴스를 설정합니다. // (Maxim/Dallas 온도 IC뿐만 아니라)DallasTemperature sensor(&oneWire); // 달라스 Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2)에 대한 oneWire 참조를 전달합니다. //LCDint trigPin =9라는 액정 객체 생성; //센서 트립 핀이 Arduino 핀에 연결됨 9int echoPin =7; // Arduino 핀에 연결된 센서 에코 핀 7int myCounter =0; // 변수 myCounter를 선언하고 0float pingTime으로 설정합니다. // ping이 센서에서 대상으로 이동하는 시간 및 returnfloat targetDistance; //대상까지의 거리(센티미터)float speedOfSound =776.5; //음속(마일)/시간void setup() { Serial.begin(9600); 핀모드(trigPin, 출력); 핀모드(에코핀, 입력); LCD.begin(16, 2); //16x2 LCD를 시작하도록 Arduino에 지시합니다. LCD.setCursor(0, 0); //LCD 커서를 왼쪽 상단 모서리 0열 0행 LCD.print("Distance:"); //첫 번째 행에 메시지 인쇄 sensor.begin(); // 라이브러리 시작 pinMode(8, OUTPUT); //핀 8, 10, 13 출력 핀 pinMode(10, OUTPUT); pinMode(13, OUTPUT);} 무효 루프() { digitalWrite(trigPin, LOW); //트리거 핀을 낮게 설정합니다. delayMicroseconds(2000); //시그널이 안정화되도록 합니다. digitalWrite(trigPin, HIGH); // trigPin을 높게 설정합니다. delayMicroseconds(15); //높은 상태에서 지연 digitalWrite(trigPin, LOW); //핑이 이제 전송되었습니다. delayMicroseconds(10); //하이 상태에서 지연 pingTime =pulseIn(echoPin, HIGH); // 마이크로초 단위의 pingTime pingTime =pingTime / 1000000; // 1000000으로 나누어 pingTime을 초로 변환(1초는 마이크로초) pingTime =pingTime / 3600; // 3600으로 나누어 핑 시간을 시간으로 변환(1시간의 초) targetDistance =speedOfSound * pingTime; //음속을 시간당 킬로미터로 선언했기 때문에 이것은 마일로 표시됩니다. 다시 센티미터로 변환할 것이지만 targetDistance =targetDistance / 2; //핑이 대상으로 이동하고 대상에서 다시 이동한다는 것을 기억하므로 실제 대상 거리를 2로 나누어야 합니다. targetDistance =targetDistance * 160934.4; //160934,4를 곱하여 마일을 센티미터로 변환합니다. sensor.requestTemperatures(); // 온도 판독값을 얻기 위해 명령을 보냅니다. LCD.setCursor(10, 0); //커서를 첫 번째 행의 10번째 열로 설정 LCD.print(" "); //행을 지우기 위해 공백을 인쇄합니다. LCD.setCursor(10, 0); //Cursor를 첫 번째 행의 10번째 열로 다시 설정 LCD.print((int) (targetDistance + 0.5)); //측정거리 출력 LCD.print("cm "); //단위를 인쇄합니다. LCD.setCursor(0, 1); //커서를 두 번째 행의 첫 번째 열로 설정합니다. LCD.print(" "); //행을 지우기 위해 공백을 인쇄합니다. LCD.setCursor(0, 1); // 커서를 두 번째 행의 첫 번째 열로 다시 설정 if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (targetDistance <40 &&targetDistance> 20) { LCD.print("LEV MED "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (targetDistance <20); { LCD.print("LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } 지연(2000); if (targetDistance> 40) { digitalWrite (13, HIGH); //녹색 LED 켜짐 } else { digitalWrite(13, LOW); //녹색 LED 꺼짐 } if (targetDistance <40 &&targetDistance> 20) { digitalWrite (8, HIGH); //노란색 LED 켜짐 } else { digitalWrite(8, LOW); //노란색 LED 꺼짐 } if (targetDistance <20) { digitalWrite(10, HIGH); //적색 LED ON 지연(2000); 디지털 쓰기(10, 낮음); //빨간색 LED 꺼짐 } else { digitalWrite(10, LOW); //빨간색 LED 꺼짐 } }

    회로도

    lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

    제조공정

    1. QR, RFID 및 온도 확인을 통한 출입 통제
    2. 1선 DS18B20 센서와 Raspberry Pi로 온도 측정
    3. Python 및 Raspberry Pi 온도 센서
    4. Raspberry Pi 온도 및 광 센서
    5. Raspberry Pi 및 습도 센서를 사용한 수경재배
    6. 라즈베리 파이 온도 센서
    7. Portenta 및 열전쌍 센서(MAX6675 포함)
    8. DHT11 센서(LED 및 피에조 스피커 포함)
    9. DS1302 RTC가 있는 간단한 알람 시계
    10. 랩온칩 유량 및 온도 센서