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

MediaTeks LinkIt™ Smart 7688을 사용한 구역 기후 제어

구성품 및 소모품

Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
DHT22 온도 센서
× 1
서보(타워 프로 MG996R)
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

겨울이 온다

아내와 제가 지난 겨울에 첫 아이를 가졌을 때, 우리는 전기 히터를 구입하여 딸아이 주변을 쾌적하고 따뜻하게 유지했습니다. 우리는 방에서 방으로 이동할 때 히터를 가지고 왔으며 사용 시점에 온도 조절 장치가 있는 것이 매우 효율적이라고 생각했습니다. 한 달 후 우리는 평소의 두 배에 달하는 전기 요금을 받고 24시간 내내 가스로로 집 전체를 데우는 것이 더 저렴하다는 것을 깨달았습니다.

다시 겨울이 찾아왔기 때문에 이번에는 WiFi 온도 조절기로 업그레이드하여 아래층에 있거나 이불 속에 따뜻하게 숨어 있을 때 히터를 켤 수 있습니다. 이것이 훨씬 더 편리하지만 대부분의 시간이 집의 한 부분에 있음에도 불구하고 우리는 여전히 집 전체를 난방하고 있습니다.

더 스마트하게 작업

조명을 제어하는 ​​모션 센서 로그를 보면 우리가 일을 마치고 가족처럼 아래층에서 4-5시간을 보낸 다음 저녁 9시경에 위층 침실로 올라가서 다음날 아침 출근할 때까지 잠을 잔다는 것이 매우 분명합니다. 주말은 조금 다르지만 월요일부터 금요일까지는 마치 시계처럼 작동합니다(특히 10개월 아기의 경우 엄격한 수면 일정).

다중 구역 온도 모니터링 및 무선으로 제어 가능한 덕트 배플이 있는 HVAC 시스템을 살펴보았지만 하드웨어는 매우 비싸고 모든 소프트웨어는 나중에 고려한 것처럼 보입니다(기술이 향상됨에 따라 지원이나 업데이트가 거의 없음). 나는 이미 사용 지점 AC 장치 컨트롤러를 위해 집에 WiFi 지원 온도 센서를 가지고 있으며 프로젝트에서 일부 작은 서보를 사용하는 이유로 가려워했습니다. 내가 필요한 것은 HVAC 시스템의 덕트 통풍구를 열고 닫을 수 있는 WiFi 연결 서보입니다...충분히 쉬워야 합니다.

MediaTek의 LinkIt™ Smart 7688

MediaTek의 새로운 LinkIt Smart 7688 Duo HDK는 온보드 arduino 호환 마이크로컨트롤러와 함께 OpenWRT를 실행하는 WiFi 연결 마이크로프로세서입니다. 여러 센서 및 서보 모터에 필요한 모든 I/O 핀과 기존 온도 센서와 통신하기 위한 WiFi 기능이 있으므로 이 프로젝트에 적합합니다. 또한 이미 uHTTPd와 함께 OpenWRT가 설치되어 있으므로 LinkIt Smart 7688 HDK에서 직접 WebApp을 실행하여 완전히 독립적인 패키지를 만들 수 있습니다.

LinkIt Smart 7688 HDK 설정

WiFi가 내장된 보드는 처음 사용하기 때문에 가파른 학습 곡선을 준비하고 있었습니다. 다행히 설정은 말 그대로 3단계입니다.

<울>
  • Linkit Smart 7688의 전원을 켜고 컴퓨터에서 WiFi 액세스 포인트에 연결
  • <울>
  • 웹 인터페이스에 로그인하고 WiFi 액세스 포인트 설정을 입력합니다.
  • <울>
  • Arduino IDE에 "LinkIt Smart 7688 Duo" 보드 추가
  • 그게 다야! Arduino IDE에서 "LinkIt Smart 7688 Duo" 보드를 선택하면 다른 모든 보드와 마찬가지로 직렬을 통해 스케치를 푸시하거나 WiFi를 통해 업로드할 수 있습니다(이는 나중에 매우 유용합니다). Linkit Smart 7688 시작 가이드 및 개발자 가이드도 도움이 될 수 있습니다.

    마이크로컨트롤러가 arduino 스케치에서 직접 WiFi를 사용하도록 허용하려면(우리가 할 예정임), HDK로 ssh하고 Arduino Yun 라이브러리 호환성을 활성화하기 위해 약간만 뒤집으면 됩니다.

    여기에서 행을 복사/붙여넣기만 하면 됩니다.

    WiFi 클라이언트 및 서보 컨트롤러

    이것은 Yun Bridge 라이브러리와 호환성이 내장되어 있고 Arduino IDE를 사용하기 때문에 기존 코드를 적용하기가 정말 쉽습니다. 브리지 라이브러리를 사용하여 HDK가 환기 구성(위층, 아래층 또는 집 전체)에 대해 온보드 웹 서버를 폴링하도록 한 다음 그에 따라 두 개의 서보를 조정할 수 있습니다. 아래 비디오에서 나는 이것을 Raspberry Pi 2에서 실행했지만 더 효율적으로 만들기 위해 WebApp을 LinkIt Smart 7688로 이식할 수 있었습니다(마지막에 코드 포함).

    내 WebApp은 PHP에서 실행되므로 LinkIt Smart 7688의 OpenWRT에 포함되어 있으므로 opkg 패키지 관리자를 사용하여 설치했습니다.

    그런 다음 다음 행을 추가하여 php를 해석하도록 /etc/config/uhttpd 파일을 업데이트했습니다.

    uHTTPd를 다시 시작했습니다.

    하드웨어

    나는 서보 혼을 통풍구에 직접 부착하고 알루미늄 브래킷을 제작하여 일부 스테인리스 스틸 스탠드오프와 함께 서보를 제자리에 고정했습니다. 아직 약간의 플레이가 있으므로 이것을 좀 더 영구적으로 만들기 위해 몇 가지 지퍼 타이를 추가할 것입니다.

    소프트웨어

    이 빌드는 세 가지 구성 요소로 요약됩니다.

    <울>
  • 집 주변의 온도 센서는 LinkIt Smart 7688에서 실행되는 uHTTPd 웹 서버에 주기적 업데이트를 보냅니다.
  • <울>
  • 현재 상태를 표시하고 환풍구를 수동으로 재구성할 수 있는 LinkIt Smart 7688에서 실행되는 웹 앱.
  • <울>
  • 시간에 따라 따뜻한 공기를 위층이나 아래층으로 보내도록 통풍구를 제어하는 ​​LinkIt Smart 7688의 MCU입니다.
  • 온도 센서는 DHT11 또는 DHT22에 연결된 ATtiny85 또는 Arduino Nano이며 소프트웨어 직렬을 통해 ESP8266을 통해 해당 온도/습도 정보를 웹 서버로 전송합니다. 이 센서는 원래 사용 지점 에어컨 프로젝트의 2단계로 설계 및 개발되었기 때문에 여기에 대한 전체 기록이 있습니다(이 부분은 완전히 선택 사항이지만 조정하는 데 사용할 수 있는 추가 메트릭을 제공합니다. 시스템과 결국 자동화).

    LinkIt Smart 7688 HDK 자체는 덕트 통풍구에 직접 연결된 다락방에 있습니다. OpenWRT 측에서 cronjob은 벤트 상태 텍스트 파일을 업데이트합니다. arduino 스케치를 실행하는 MCU 측에서는 이 텍스트 파일을 주기적으로 확인하고 그에 따라 통풍구를 조정합니다.

    통풍구의 상태를 확인하고 수동으로 재구성하기 위해 LinkIt Smart 7688에서 직접 호스팅되는 작은 웹앱을 만들었습니다. dyndns 및 포트 포워딩을 사용하여 필요한 경우 집 밖에서 이 모든 것을 보고 제어할 수 있습니다.

    개선할 여지

    밤이 이미 추워지면서 이 작업을 최대한 빨리 수행해야 했기 때문에 신속한 배포라는 명목으로 약간의 양보가 이루어졌습니다. 하드웨어 측면에서는 해킹 작업 마운트가 약간 작동하기 때문에 서보에 대한 적절한 마운트를 3d 인쇄할 것입니다. 또한 데모에서 사용한 작은 RC 서보에는 몇 년 동안 지속되지 않을 것으로 예상되는 모든 플라스틱 기어가 있으므로 조만간 다락방으로 다시 올라가고 싶지 않기 때문에 교체할 ​​것입니다. 금속 기어가 있는 더 큰 서보용으로 사용하세요.

    언젠가는 각 방의 통풍구에 WiFi 연결 서보를 추가하고 모두 단일 LinkIt Smart 7688에 다시 연결하도록 할 수 있습니다.

    현재 온도 프로브는 판독값을 csv 파일로만 덤프하므로 쉽게 추적하고 그래프로 표시할 수 있습니다. 집이 특히 추우면 일찍 히터를 켜면 좋겠지만 내 WiFi 온도 조절 장치에는 아직 API가 없습니다. 또한 홈 오토메이션 시스템에 연결하여 하루 중 시간을 기준으로 하는 것이 아니라 모션 센서에서 파생된 실시간 방 점유율을 기반으로 통풍구가 자동으로 조정되도록 하고 싶습니다(특히 동적 일정으로 인한 주말의 경우).

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

    코드

    <울>
  • LinkIt 스마트 듀오 WiFi 통풍구
  • WiFi 온도 센서
  • Vent.php
  • LinkIt Smart Vent Android 웹 앱
  • LinkIt 스마트 듀오 WiFi 통풍구C/C++
    이 스케치는 Arduino Yun의 Bridge 및 HTTP 클라이언트 라이브러리를 사용하여 웹 서버를 폴링하고 필요에 따라 HVAC 통풍구를 열고 닫습니다.
    /* BARRAGAN  및 Yun의 Sweep 서보 예제에서 채택 Tom igoe가 작성한 HTTP 클라이언트 예제 ** 둘 다 공개 도메인에 있습니다.*** Buddy Crotty의 HAI(Home Automation w/ Intelligence)용 코드 적응 ** 이 arduino 스케치는 모든 무거운 작업을 수행하기 위해 웹 서버에 의존합니다. 이것은 Raspberry Pi와 같은 별도의 장치가 될 수도 있고 LinkIt Smart inOpenWRT의 MPU 측에서 실행할 수도 있습니다.** 웹 서버는 집 주변의 임시 판독값을 수집하고 시간에 따라 뜨거운/차가운 공기가 어디로 가야 하는지 결정합니다. 요일, 외부 날씨(예상 포함) 및 집 점유.** 그런 다음 공기를 보내야 하는 위치에 따라 'upstairs', 'downstairs' 또는 'wholehouse'를 출력합니다. */#include  #include #include  서보 업서보; // 위층을 제어하는 ​​서보 객체를 생성합니다. 서보 Servo downservo; // 아래층 에어 벤트 댐퍼 서보 int uppos =0; // (위층) 서보 위치를 저장할 변수 int downpos =0; // 아래층 서보 위치 const char* host ="192.168.1.80"; // 홈 오토메이션 Webserverint의 내부 IP dopenangle =80; // ventint에서 열림/닫힘 사이에서 서보가 회전해야 하는 각도 dcloseangle =0; int uopenangle =140; int ucloseangle =0; 무효 설정() { upservo.attach(9); // 위층 에어벤트 댐퍼에 부착된 서보용 핀 downservo.attach(10); // 아래층 에어 벤트 댐퍼에 부착된 서보용 핀 // OpenWRT로 브리지 시작 pinMode(13, OUTPUT); 디지털 쓰기(13, 낮음); Bridge.begin(); digitalWrite(13, HIGH);} void wholehouse(){ if (downpos <=dcloseangle){ // 통풍구가 이미 제자리에 있지 않은지 확인 // 아래층 통풍구 열기 for(downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // 닫힌 각도에서 열린 각도로 한 번에 한 단계씩 이동 { downservo.write(downpos); 지연(20); // 서보가 위치에 도달할 때까지 단계 사이에서 대기 } } if (uppos <=uopenangle) { //위층 통풍구 열기 for(uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos); 지연(20); } }}void downstairs(){ if (downpos <=dopenangle) { //아래층 통풍구 열기 for(downpos =dcloseangle; downpos <=dopenangle; downpos +=1) { downservo.write(downpos); 지연(20); } } if (uppos>=ucloseangle){ //위층 통풍구 닫기 for(uppos =uopenangle; uppos>=ucloseangle; uppos-=1) { upservo.write(uppos); 지연(20); } }}void upstairs() { if (uppos <=uopenangle) { //위층 통풍구 열기 for(uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos); 지연(20); } } if (downpos>=dcloseangle){ //아래층 통풍구 닫기 for(downpos =dopenangle; downpos>=dcloseangle; downpos -=1) { downservo.write(downpos); 지연(20); } }} 무효 루프(){ HttpClient 클라이언트; // HTTP 요청 생성 및 생성:String cmd ="http://"; cmd +=호스트; cmd +="/vent.txt"; 클라이언트.get(cmd); // 서버에서 들어오는 바이트를 읽습니다. while (client.available()) { int c =client.read(); if (c =='2') upstairs(); if (c =='1') downstairs(); if (c =='0') wholehouse(); } 지연(60000);}
    WiFi 온도 센서C/C++
    연결된 온도 및 습도 센서. 중앙 홈 오토메이션 서버에 데이터를 기록합니다.
    /* * Buddy Crotty가 HAI(Home Automation w/ Intelligence)에 맞게 수정한 코드 * * HTTP GET 요청을 통해 HAI 서버에 데이터를 보냅니다. * * 연결은 소프트웨어 직렬 연결을 통해 이루어집니다. ESP8266 WiFi * 인터페이스가 이미 wLAN에 연결하도록 구성되어 있지만 * WiFi 설정의 주석을 제거하여 SSID/암호를 재설정할 수 있습니다. * */const char* host ="192.168.1.80"; // 홈 오토메이션 Webserver의 내부 IPconst char* devID ="downstairs"; // 장치 ID(단어, 공백 없음, 특수 문자 없음) #include SoftwareSerial ser(10, 11); // (RX, TX) // ESP8266 모듈을 제어하기 위한 소프트웨어 시리얼 // 디버깅을 위한 하드웨어 시리얼long utime =300000; // 업데이트 사이의 시간 // 900000 =15분(배터리/태양광 전원의 경우) // 300000 =5분(AC 전원의 경우) // 5000 =5초(테스트용) // ESP8266의 경우 10000보다 길어야 합니다. 절전 모드 해제(배터리 모드) // 온도 및 습도 센서 #include #define DHTPIN 2 //온도/습도 센서용 핀#define DHTTYPE DHT22 // DHT11, DHT22(AM2302 또는 DHT21(AM2301) )DHT dht(DHTPIN, DHTTYPE);void setup() { Serial.begin(9600); ser.begin(9600); //ser.listen(); /* // WiFi 설정을 재설정하려면 주석 처리를 해제합니다. delay(1000); ser.println("AT+CWMODE=1"); ser.println("AT+CWJAP=\"SSID\",\"비밀번호\""); */ ser.println("AT+RST"); / / arduino가 재설정된 이후 ESP8266 재설정 delay(10); dht.begin(); // DHT 시작 Serial.println("Giving everything a chance to warm up"); // WiFi가 연결될 때까지 25초 동안 기다리십시오. Serial.println( "|-------------------------|"); Serial.print("|"); for(int x =0; x <25; x++){ Serial.print("#"); delay(1000); } Serial.println("|"); Serial.println("완료");} float t =0; 정수 h =0; float hi =0;void 루프() { Serial.println(); //온도 및 습도 float t =dht.readTemperature(true); int h =dht.readHumidity(); float hi =dht.computeHeatIndex(t, h);// ThingSpeak로 전송되는 출력 값 Serial.print("Temperature:"); Serial.print(t); Serial.print(" *F\t"); Serial.print("열지수:"); Serial.print(hi); Serial.println(" *F"); Serial.print("습도:"); Serial.print(h); Serial.println("%\t"); Serial.print("...연결 중 "); Serial.println(호스트); // TCP 연결 문자열 cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=호스트; cmd +="\",80"; ser.println(cmd); 지연(1000); if(ser.find("오류")){ Serial.println("AT+CIPSTART 오류"); 반품; } else{ } // GET 문자열 준비 String getStr ="GET /tempupdate.php?ID="; getStr +=devID; getStr +="&필드1="; //온도 getStr +=t; getStr +="&필드2="; //습도 getStr +=h; getStr +="&field3="; //열지수 getStr +=hi; getStr +="\r\n\r\n"; Serial.print("데이터 전송 URL:"); 직렬.println(getStr); // 데이터 길이 전송 cmd ="AT+CIPSEND="; cmd +=문자열(getStr.length()); ser.println(cmd); if(ser.find(">")){ ser.print(getStr); Serial.println("성공!"); } else{ ser.println("AT+CIPCLOSE"); Serial.println("연결 실패"); // 경고 사용자 }Serial.print("다음 업데이트");Serial.print(utime / 1000);Serial.println("초");delay(utime); //업데이트 사이에 대기 }
    Vent.phpPHP
    상태를 확인하고 통풍구 구성을 수동으로 재정의합니다.
    위층 전용

    집 전체

    아래층 전용

    현재 열려 있는 통풍구 ";if ($status ==="0 ") "집 전체" 인쇄;if ($status ==="1") print "아래층만";if ($status ==="2") print "위층만";print "
    "; fclose($myfile);if ($_GET["zone"] =="");else {$myfile =fopen("vent.txt", "w+") or die("파일을 열 수 없습니다!"); if ($_GET["zone"] !="") print "

    ";if ($_GET["zone"] ==="0") print "집 전체"; if ($_GET["zone"] ==="1") print "Downstairs Only";if ($_GET["zone"] ==="2") print "Upstairs Only";print "

    ";fwrite($myfile, $_GET['zone']);fclose($myfile);}?>
    LinkIt 스마트 벤트 Android WebAppJSON
    Android의 chrome이 통풍구 컨트롤러를 웹 앱으로 열도록 매니페스트 파일.
    { "name":"LinkIt Smart Vent", "icons":[ { "src":"LinkIt_icon_36.png", "sizes":"36x36", "유형":"이미지/png", "밀도":0.75 }, { "src":"LinkIt_icon_48.png", "크기":"48x48", "유형":"이미지/png", "밀도":1.0 }, { "src":"LinkIt_icon_128.png", "크기":"128x128", "유형":"이미지/png", "밀도":1.0 }, { "src":"LinkIt_icon_192 .png", "크기":"192x192", "유형":"이미지/png", "밀도":1.0 } ], "start_url":"vent.php", "디스플레이":"독립형", "방향 ":"초상화"}

    회로도

    ATtiny85 또는 Arduino Nano는 ESP8266에 연결된 DHT11/22 및 WiFi에서 온도를 가져옵니다.

    제조공정

    1. 데이터 모듈:스마트 제어 기능이 있는 23.1인치 울트라 스트레치 TFT 디스플레이
    2. QR, RFID 및 온도 확인을 통한 출입 통제
    3. 3D 인쇄 부품으로 더 나은 품질 관리
    4. AI와 HI의 균형을 맞춘 스마트 조달
    5. Arduino로 코인 억셉터 제어
    6. 3D 인쇄 케이스가 있는 배터리 전원 TV 리모컨
    7. Bluetooth가 탑재된 Arduino로 LED 제어!
    8. Arduino Nano:조이스틱으로 2개의 스테퍼 모터 제어
    9. GÖPEL은 Universal Robots로 자동차 제조의 품질 관리를 개선합니다.
    10. CNC 선반