제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
|
|
이 튜토리얼에서는 블루투스 연결을 통해 Android 앱에 값을 보내는 Arduino 온도 컨트롤러를 설정하는 방법을 보여 드리겠습니다.
이 프로젝트를 구축하는 데 필요한 자료부터 시작하겠습니다.
<울>
우선 서미스터에 사용되는 전압 분배기 조립을 시작해야 합니다. 그림 1은 온도의 함수로 서미스터의 알려지지 않은 저항을 계산하기 위해 만들어야 하는 연결을 보여줍니다.
그림 1 서미스터 저항 평가를 위한 전압 분배기.
이 회로를 통해 Arduino는 알 수 없는 저항 이후의 전압 강하를 결정할 수 있습니다. 다른 저항 값을 사용하여 코드의 다음 부분을 사용하여 알려지지 않은 저항 값을 계산할 수 있습니다(그림 2).
raw=analogRead(analogPin);if(raw) { ratio =raw * Vin; Vout =(비율)/1024.0; 비율 =(Vin/Vout) -1; R2=R1 * 비율;
그림 2 서미스터 저항 평가를 위한 Arduino 코드입니다.
얻은 저항은 베타 공식을 사용하여 온도로 변환됩니다(그림 3).
참고:25°C에서 서미스터 및 Ro의 베타 값은 해당 서미스터의 데이터시트에서 확인할 수 있습니다! 코드를 실행하기 전에 확인하세요!
Temp =Beta/log(R2/(Ro*exp(-Beta/To)));Temp =Temp -273.15;
그림 3 온도 변환을 위한 Arduino 코드입니다.
그런 다음 Bluetooth 모듈을 설정해야 합니다. 그림 4는 이 프로젝트에서 이전에 사용한 것과 같은 Bluetooth 모듈을 연결하는 방법을 보여줍니다. Arduino의 TX1 핀을 모듈의 RX 핀에 연결하려면 전압 분배기가 필요합니다. 이는 온라인 3.3V를 입력으로 받아들이기 때문입니다.
그림 4 HC 06 모듈이 있는 Arduino 회로도.
그런 다음 직렬 도어를 초기화하고 원하는 값을 인쇄하여 데이터를 블루투스 모듈을 통해 보낼 수 있습니다. 이 예에서는 25 -75°C 범위의 온도를 측정하고 고온에서 약 300초를 계산한 다음 인쇄된 메시지를 변경하는 장치가 필요했습니다(그림 5).
<사전><코드> 무효 setup(){Serial.begin(9600); } 무효 루프(){ if(Temp> =74) { for (int i =0; i <=30; i++) { Serial.print("온도>=74 °C"); 지연(10000); } Serial.print("가열 완료"); 지연(10000); } else if (Temp <=26){ Serial.print("온도 <=25 °C"); 지연(10000); } else { Serial.print("온도:"); Serial.println(온도); 지연(10000); }}그림 5 직렬 초기화 및 값 인쇄당 Arduino 코드입니다.
브레드보드에 조립된 최종 장치는 그림 6에서 볼 수 있습니다.
그림 6 브레드보드의 전체 장치.
마지막 단계는 데이터 시각화를 위해 블루투스 모듈을 안드로이드 폰에 연결하는 것입니다. 간단한 앱은 MIT AppInventor 2를 사용하여 프로그래밍되었습니다. 그림 7과 그림 8은 각각 사용자 인터페이스와 프로그래밍 블록을 보여줍니다.
그림 7 AppInventor2로 만든 사용자 인터페이스.
그림 8 AppInventor2의 프로그래밍 블록.
제안된 앱은 다음 링크의 앱 발명가 갤러리에서 사용할 수 있습니다. http://ai2.appinventor.mit.edu/#5876233188016128
어쨌든 앱 발명가의 간단하고 직관적인 블록 프로그래밍 시스템을 사용하여 원하는 목적을 달성하기 위해 다른 많은 앱을 구축할 수 있습니다. 예를 들어 일부 측정을 수행하고 75°C에서 5분 후에 가열 사이클이 완료되었음을 알리기 위해 온도가 25°C보다 낮아지면 소리로 알려주는 앱이 필요했습니다.
선택 사항:마지막 단계는 구성 요소를 납땜하고 부품을 함께 유지하기 위해 일부 상자를 3D 인쇄하는 것일 수 있습니다. 그림 9는 이러한 접근의 결과를 보여줍니다.
그림 9 전체 장치를 사용할 준비가 되었습니다.
미니 USB 케이블로 Arduino에 전원을 공급할 수 있도록 이 상자의 측면에 구멍이 만들어졌습니다. 서미스터와 나머지 장치 사이의 거리를 늘리기 위해 빨간색과 검은색 긴 케이블이 추가되었습니다(용액 온도를 확인하기 위해 서미스터가 필요하므로 가능한 한 전자 부품을 원했습니다).
이 간단한 프로젝트가 자신의 프로젝트에 이것을 적용하기 위해 블루투스 모듈과의 직렬 통신에 대한 기본 사항을 이해하는 데 도움이 되기를 바랍니다.
오류를 발견하거나 단순히 질문하고 싶은 것이 있으면 알려주세요.
편집:블루투스 모듈에 필요한 전압 분배기에 대한 배선도에서 오류를 발견했습니다. 해결되었습니다.
EDIT2:보드에 코드를 업로드하는 데 문제가 있으면 블루투스 모듈을 분리하여 시도하세요.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
// 블루투스 모듈이 있는 온도 모니터int analogPin=0;int raw =0, int Vin=5, float Vout=0, float R1=10000, //시스템을 변경합니다. float Ro=10000; //시스템으로 변경float R2=0;float ratio=0;float Temp =0;float Beta =3694; // 귀하의 시스템으로 변경합니다. To =298.15;// 서미스터는 25°C에서 10k에서 시작합니다. 에 따라 기준 저항을 선택하십시오. void setup(){Serial.begin(9600);}void loop(){raw=analogRead(analogPin);if(raw) { ratio =raw * Vin; Vout =(비율)/1024.0; 비율 =(Vin/Vout) -1; R2=R1 * 비율; 온도 =베타/로그(R2/(Ro*exp(-베타/끝))); 온도 =온도 -273.15; if(Temp> =74) { for (int i =0; i <=30; i++) { Serial.print("온도>=74 °C"); //시스템으로 변경합니다. delay(10000); } Serial.print("가열 완료"); 지연(10000); } else if (Temp <=26){ Serial.print("온도 <=25 °C"); //시스템으로 변경합니다. delay(10000); } else { Serial.print("온도:"); //시스템으로 변경 Serial.println(Temp); 지연(10000); }}}섹션>
제조공정
구성품 및 소모품 Arduino Nano R3 × 1 저항 10k 옴 × 1 저항 1k 옴 × 1 저항 100옴 × 1 저항 100k 옴 × 1 저항 1M 옴 × 1 ElectroPeak 0.96 OLED 64x128 디스플레이 모듈 × 1 점퍼 와이어(일반) × 1 필요한 도구 및 기계 3D 프린터(일반) 납땜 인두(일반)
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 4 저항 10k 옴 × 4 저항 221옴 음, 220옴... × 2 단일 회전 전위차계 - 100,000옴 × 1 부저 × 1 브레드보드(일반) × 1 점퍼 와이어(일반) × 1