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

사물 인터넷(IoT) 기반 태양열 추적기

구성품 및 소모품

Arduino Mega 2560
× 1
Arduino용 이더넷 쉴드(Wiznet W5100)
× 1
SG90 마이크로 서보 모터
× 2
LDR, 5Mohm
× 4
DHT22 온도 센서
× 1
미니 태양광 패널
× 1
저항 330옴
× 4
스루 홀 저항기, 10옴
× 2
저항 220옴
× 1
5mm LED:빨간색
× 1

앱 및 온라인 서비스

myDevices 카이엔
Arduino IDE

이 프로젝트 정보

이 프로젝트는 성능 평가를 위해 스마트 2축 태양광 추적 시스템을 모니터링하고 제어하는 ​​간단하고 저렴한 IoT 솔루션을 제시합니다.

제안된 IoT 기반 태양광 추적기 시스템은 그림 1과 같다. LDR 센서를 사용하여 자동으로 회전하여 태양의 위치를 ​​추적하거나 IoT 애플리케이션의 대시보드를 통해 사용자가 수동으로 회전할 수 있는 이중축 태양광 추적기이다. 시스템은 LDR 센서로 태양 위치(빛의 강도)를 감지하는 것으로 시작하여 컨트롤러(Arduino Mega 보드)에 데이터를 보냅니다. 그런 다음 후자는 이러한 데이터를 처리하여 PV 패널이 태양을 향해 회전하도록 유지하는 서보 모터(SM1 및 SM2)에 명령을 내립니다. 생성된 PV 전압 및 전류, 온도 및 습도 값도 연결된 센서를 통해 Arduino로 전송됩니다. 다음으로, 아두이노에 탑재되어 인터넷에 연결할 수 있는 이더넷 실드는 아두이노에서 가져오거나 처리한 데이터를 클라우드(웹서버)로 보냅니다. 마지막으로 LDR 센서, PV 전력, 온도 및 습도를 포함한 태양광 추적기 데이터는 미리 생성된 위젯을 통해 IoT 모니터링 애플리케이션에 실시간으로 표시됩니다. IoT 모니터링 애플리케이션은 Cayenne myDevicesplatform을 사용하여 설계되었습니다. 사용자가 컴퓨터나 스마트폰에서 인터넷에 연결되면 IoT 애플리케이션의 대시보드에서 연결된 위젯의 모든 태양열 추적기 데이터를 시각화할 수 있습니다. 따라서 사용자는 PV 패널의 환경 및 성능과 연결된 필요한 데이터를 가지고 있습니다. 또한 수동 모드에서 서보 모터는 대시보드의 관련 위젯에서 각도 방향을 취합니다. 따라서 사용자는 최상의 환경 조건을 찾고 PV 패널에서 최대 에너지를 추출하도록 시스템을 제어할 수 있습니다. IoT 애플리케이션은 센서가 미리 정의된 임계값에 도달하면 알림 경고(SMS 또는 이메일)를 보내도록 프로그래밍되어 있습니다.

하드웨어 디자인

그림 2와 같이 IoT 태양광 추적 시스템은 PV 패널, 2개의 서보 모터, 4개의 LDR 센서, 전압 분배기 회로, 온도 및 습도 센서, LED 및 Arduino Mega 보드로 구성됩니다.

사용된 PV 패널은 크기가 115mm x 85mm이고 1.6W 출력이며 최대 6V의 전압을 생성할 수 있습니다. 2개의 180도 서보 모터가 태양열 추적기를 모터화하는 데 사용되며 PWM 핀 5를 통해 Arduino 보드에 의해 제어됩니다. 6. 좌우(LR) 서보 모터(MG996R)는 태양 추적기를 수직 축(동/서)으로 회전시키는 반면, Up-down(UD) 서보 모터(SG90)는 태양 추적기를 수평 축( 남/북).

4개의 LDR(Cds GL5528)은 태양의 위치를 ​​감지하는 데 사용되며 패널의 네 모서리에 고정되어 있습니다. LDR 센서는 A0에서 A3까지의 아날로그 핀을 통해 Arduino에 연결됩니다. LDR은 표면에 입사되는 빛의 세기가 증가함에 따라 값이 감소하는 저항기입니다. LDR 센서는 그림 2에서 볼 수 있듯이 전압 분배기 회로로 설계되었습니다. 분배기 출력 전압은 Arduino Mega의 마이크로 컨트롤러에 의해 아날로그 값에서 0과 1023 사이의 디지털 값으로 변환됩니다. 아날로그에서 디지털로 마이크로컨트롤러의 변환기(ADC)는 10비트로 코딩되어 있습니다. LDR 센서 회로의 직렬 저항 값은 330Ω입니다.

온도와 습도는 DHT22 센서를 통해 측정됩니다. DHT22에는 온도 및 상대 습도를 측정하기 위해 서미스터와 정전용량형 습도 센서가 내장되어 있습니다. 온도 범위는 -40 ~ 80°C(정확도 <±0.5°C)이고 습도 범위는 ±2%(최대 ±5%)의 정확도로 0 ~ 100%입니다. 이 센서는 하나의 신호 와이어를 사용하여 데이터를 Arduino(디지털 핀 2)에 전송하고 두 개의 와이어를 전원 공급 장치에 사용합니다.

PV 전압과 전류는 부하로도 작용하고 10옴의 직렬 저항 2개로 구성된 분압기 회로를 통해 측정됩니다. 분배기 회로 출력은 Arduino의 아날로그 핀 A4에 연결됩니다. 또한 디지털 핀 3에 연결된 LED는 태양광 추적기(수동 또는 자동)의 모드 상태를 시스템 회로에 반영합니다.

ATmega2560 마이크로 컨트롤러가 있는 Arduino Mega는 모니터링 플랫폼과 함께 Arduino 이더넷 쉴드와 상호 작용하는 임베디드 컨트롤러로 사용됩니다. Arduino 보드 위에 장착되는 TheEthernet Shield는 그림 3과 같이 RJ45 케이블을 통해 Wi-Fi 라우터(또는 PC)와 연결해야 합니다. Ethernet Shield는 TCP 및 UDP 프로토콜용 네트워크(IP) 스택.

소프트웨어 디자인

a. 아두이노 IDE

Arduino는 사용하기 쉬운 하드웨어와 소프트웨어를 갖춘 오픈 소스 전자 프로토타이핑 플랫폼입니다. Arduino 플랫폼은 C 및 C++ 프로그래밍 언어에 대한 지원을 포함하는 통합 개발 환경(IDE)을 제공합니다. 이 작업에서 사용한 Arduino 보드는 그림 3과 같이 코드 편집기 역할을 하는 IDE에 의해 프로그래밍되고 USB 케이블을 통해 프로그램 코드를 마이크로 컨트롤러에 업로드할 수 있습니다. Arduino Mega 보드를 활용합니다. IoT 기반 태양광 추적기의 모든 소프트웨어 요구 사항을 구현합니다.

b. myDevices 카이엔

마이디바이스는 IoT 솔루션을 제공하는 기업입니다. IoT를 위한 엔드 투 엔드 플랫폼을 제공합니다. 우리 프로젝트에서는 myDevices의 솔루션 중 하나인 Cayenne에 중점을 둘 것입니다. 이 도구를 사용하면 개발자, 디자이너 및 엔지니어가 IoT의 프로토타입을 구축할 수 있습니다. Cayenne은 MQTT(Message QueuingTelemetry Transport) 프로토콜을 사용하여 모든 장치를 Cayennecloud와 연결합니다. 연결되면 사용자는 생성된 위젯을 통해 장치에서 Cayenne 대시보드로 데이터를 보내고 받을 수 있습니다. MQTT는 TCP/IP 프로토콜을 기반으로 하는 발행-구독 메시징 프로토콜입니다. 발행-구독 방법론은 메시지를 클라이언트에 전달하는 역할을 하는 메시지 에이전트를 사용합니다. MQTT는 Cayenne 클라우드 또는 Cayenne이 제어하는 ​​장치에 정보를 전송하기 위한 API입니다. 이 연결에서 메시지 에이전트는 클라우드이며 데이터를 보내고 받는 다양한 클라이언트(센서 및 액추에이터)를 관리합니다.

Cayenne과 함께 MQTT를 사용하려면 Cayenne 라이브러리를 사용해야 합니다. Arduino의 경우 CayenneMQTT 라이브러리는 IDE의 라이브러리 관리자에서 설치할 수 있습니다. Cayenne IoT 플랫폼 기반 IoT 애플리케이션을 프로그래밍하기 위해 사전 정의된 기능을 활용합니다. 예를 들어, Cayenne 클라우드와 이더넷 모듈이 장착된 Arduino Mega 간의 연결을 설정하기 위해 Cayenne 대시보드에서 가져와야 하는 인증 정보(사용자 이름, 암호 및 클라이언트 ID)를 선언하는 CayenneMQTTEthernet 라이브러리를 호출합니다. 그런 다음 프로그램의 설정 부분에서 Cayenne.begin()을 호출합니다. Cayenne 대시보드와의 연결을 설정하는 기능입니다. 각 액추에이터에 대해 CAYENNE IN (VIRTUAL CHANNEL)이라고 하는 0에서 31 사이의 정수 매개변수가 있는 함수를 생성합니다. . 각 센서에 대해 CAYENNE_OUT (VIRTUAL_CHANNEL)이라고 하는 0과 31 사이의 정수 매개변수가 있는 함수를 만듭니다. . 프로그램의 루프 부분에서 사전 정의된 함수를 호출합니다. Cayenne.loop() , 이 함수는 CAYENNE_OUT 함수를 호출합니다. 및 CAYENNE_IN. 가상 채널은 이름에서 알 수 있듯이 물리적으로 존재하지 않는 채널이며 시각화 또는 명령 위젯을 특징으로 합니다. 이를 통해 해당 센서 또는 액추에이터와 연결할 수 있습니다.

ㄷ. 삽입 소프트웨어 디자인

임베디드 소프트웨어는 이더넷 모듈과 Cayenne 클라우드 간의 상호 작용을 위해 Arduino Mega에 임베디드될 부분입니다(부록 참조). 다음과 같이 설계되었습니다:

(i) IoT 기반 태양광 추적기는 수동 및 자동의 두 가지 기능 모드가 있습니다. 카이엔 대시보드에서 생성된 버튼은 두 모드를 전환하는 역할을 합니다. 비활성화되면 수동 모드가 선택되고 그렇지 않으면 자동 모드가 선택됩니다. 또한 버튼의 상태를 복구할 수 있는 기능이 Arduino 코드에 설정되어 있습니다. 시스템 회로의 LED는 이 스위치의 상태를 반영합니다.

따라서 컨트롤러가 선택한 작동 모드를 알기 위해서는 LED가 연결된 핀의 상태를 테스트하기만 하면 됩니다. 예를 들어, LED 상태가 낮으면 컨트롤러는 수동 모드 기능을 호출하여 실행하고, 그렇지 않으면 자동 기능을 호출합니다.

(ii) 수동 모드를 선택하면 사용자가 서보 모터의 위치를 ​​직접 제어하여 L-R 서보 모터로 PV 패널을 동쪽에서 서쪽으로, U-D 서보 모터로 남쪽에서 북쪽으로 방향을 지정할 수 있습니다. 제어는 IoT 애플리케이션의 대시보드에 있는 서보 모터의 관련 위젯에서 이루어집니다.

이 모드에서 컨트롤러는 Cayenne.loop()를 호출합니다. 자체적으로 모든 함수를 호출하는 함수 CAYENNE_IN , 서보 모터와 관련된 것을 포함하여 실행합니다. Cayenne.loop() 함수는 또한 실행하기 위해 센서에 연결된 모든 함수 CAYENNE_OUT을 호출합니다. LDR 센서, PV 전류, 전압 및 전력, 온도 및 습도와 관련된 데이터가 IoT 애플리케이션의 관련 위젯에서 시각화될 수 있도록 서버로 전송되는 곳입니다.

(iii) 자동 모드를 선택하면 그림 4와 같은 알고리즘이 실행됩니다. 알고리즘은 LDR 센서에서 반환된 아날로그 값을 읽는 것으로 시작합니다. 그런 다음 이 데이터를 처리하여 PV 패널을 태양 위치로 이동시키는 서보 모터에 명령을 내립니다. 수직축 기반의 태양광 추적기 움직임을 고려하여 왼쪽 2개 LDR과 오른쪽 2개 LDR의 평균값을 비교하여 왼쪽에 더 많은 빛을 받으면 PV 패널이 그 방향(시계 방향)으로 이동합니다. LR 서보 모터를 통해. 후자는 차이 결과가 -10과 10 사이일 때 멈춥니다. 이 범위는 컨트롤러를 안정화하고 서보 모터의 전력 소비를 줄이는 데 사용됩니다. 그렇지 않고 올바른 LDR 세트가 더 많은 빛을 받으면 PV 패널은 L-R 서보 모터를 통해 해당 방향(시계 반대 방향)으로 이동하고 차이 결과가 [−10, 10] 범위에 있을 때까지 계속 회전합니다. 상단의 두 LDR과 하단의 두 LDR의 평균값을 비교하는 수평축 기반 솔라 트래커 무브먼트에도 동일한 접근 방식이 적용된다.

자동 모드와 마찬가지로 컨트롤러는 Cayenne.loop()도 호출합니다. IoT 애플리케이션에 태양열 추적기 데이터를 보내는 기능입니다.

d. IoT 모니터링 애플리케이션 개발

(i) Cayenne IoT 플랫폼과 하드웨어 인터페이스

센서 및 액추에이터를 포함한 하드웨어를 IoT 플랫폼과 인터페이스하려면 다음 단계를 따라야 합니다.

+ 계정 생성 후 Cayenne myDevice 웹사이트에 로그인합니다(그림 5(a)).

+ 그런 다음 Cayenne API에서 "Bring Your Own Things"를 클릭합니다(그림 5(b)).

+ Crete 앱(그림 6)에서 MQTT 자격 증명(사용자 이름, 암호 및 클라이언트 ID)을 복사하고 앞에서 설명한 대로 Arduino 소스 코드에 붙여넣습니다. 전체 코드를 성공적으로 컴파일하고 Arduino Mega에 업로드한 후 Arduino IDE에서 직렬 모니터를 열어 Cayenne 로그를 인쇄합니다(그림 7). 장치가 온라인 상태가 되고 Cayenne에 연결되는 즉시 이전 페이지(그림 6)가 자동으로 업데이트되고 그림 8에서 볼 수 있는 것처럼 온라인 대시보드에 장치가 표시됩니다.

+ 그런 다음, 센서와 액추에이터를 인터페이스하기 위해, 즉 위젯을 생성하려면 "새로 추가..."를 클릭하고 "장치/위젯"을 선택한 다음 "사용자 지정 위젯"을 클릭합니다(그림 9). 그런 다음 위젯을 선택하고 모든 관련 설정을 채웁니다. (채널 번호는 코드와 같아야 함) 마지막으로 "위젯 추가"를 클릭하여 장치의 대시보드에 추가합니다. 우리는 모든 센서에 대해 "값" 위젯, "버튼" 위젯을 선택했습니다. 모드 스위치용 및 서보 모터용 "슬라이더" 위젯

마지막으로, 그림 10은 태양광 추적기 데이터를 모니터링하기 위해 설계된 IoT 애플리케이션을 보여줍니다. 태양광 추적기 시스템과의 연결이 설정되면 관련 위젯에서 센서 데이터를 시각화할 수 있고, 스위치 버튼에서 추적 모드(자동 또는 수동)를 선택하고 위젯을 통해 서보 모터의 각도를 제어할 수 있습니다. 센서 데이터는 설정에서 표시 유형을 수정하거나 위젯 위의 그래프 아이콘을 클릭하여 그래픽 형식으로 얻을 수도 있습니다.

(ii) 알림 생성

모니터링 시스템에서 가장 중요한 기준 중 하나는 모니터링되는 장치와 관련된 이벤트가 발생할 때 사용자에게 알리기 위해 알림 경고를 보내는 기능입니다. 이를 위해 Cayenne의 기능 중 하나를 활용하여 IoT 애플리케이션에 알림을 추가합니다. 여기서 알림 알림(SMS, 이메일 또는 둘 다)을 보내거나 지정된 작업을 수행하도록 애플리케이션을 사전 프로그래밍할 수 있습니다. 예를 들어, 온도 경고는 그림 11과 같이 모니터링되는 온도가 임계값에 도달할 때 사용자(또는 수신자)에게 이메일 알림을 보내기 위해 생성됩니다. 경고를 생성하려면 "새로 추가. .."를 선택하고 "트리거"를 선택한 다음 이벤트와 해당 동작을 설정하고 마지막으로 "저장"을 클릭하여 대시보드에 추가합니다.

프로토타입

그림 12는 분리 및 조립된 상태의 태양광 추적기 프로토타입을 보여줍니다. PV 패널, -R 및 U-D 서보 모터 및 LDR 센서로 구성됩니다. 패널은 태양 추적기가 수평축을 중심으로 회전할 때 더 나은 유연성을 보장하기 위해 한 면에는 U-Dservomotor에 부착되고 다른 면에는 베어링이 부착되어 있습니다. 어셈블리는 L-R 서보 모터에 부착됩니다. LDR 센서는 중공 실린더 내부 패널의 네 모서리에 고정됩니다. 패널이 태양에 수직이 아닌 경우 적어도 하나의 LDR이 주변 실린더로 인한 그림자를 덮을 것입니다. 따라서 빛의 강도에 차이가 있습니다. 가장 좋은 방향은 모든 LDR 센서에서 광도가 동일할 때입니다. 그림 13은 IoT 기반 태양광 추적기 시스템의 전체 프로토타입을 보여주며, 하드웨어 부분에서 보고된 모든 구성 요소가 이를 구축하는 데 사용되었음을 알 수 있습니다.

얻은 결과에 대한 자세한 내용은 이 링크의 논문을 참조하십시오. https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

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

코드

<울>
  • IoT 기반 태양광 추적 시스템의 임베디드 코드
  • IoT 기반 태양광 추적 시스템의 임베디드 코드Arduino
    <사전>/************************************************ ***************** 프로젝트:IoT 기반 태양광 추적 시스템 / 임베디드 소프트웨어 Aboubakr El Hammoumi/ [email protected]********* ************************************************** ****/#define CAYENNE_PRINT Serial#include //CayenneMQTT 라이브러리 #include //서보 모터 라이브러리 #include //DHT 라이브러리 #define DHTTYPE DHT22#define DHTPIN 2DHT dht(DHTPIN,DHTTYPE);//MQTT 자격 증명 char 사용자 이름[]="498d2d00-afe2-11ea-883c-638d8ce4c23d";char 암호[]="ab4a90f92d94033c01f6e18ce1d8a"8; 93bf-d33a96695544";서보 서보_x; // 상하 서보모터 int servoh =0;int servohLimitHigh =170; 정수 서보hLimitLow =10; 서보 서보_z; //좌우 서보모터 int servov =0; int 서보vLimitHigh =170;int 서보vLimitLow =10;int topl,topr,botl,botr,int threshold_value=10; float Vout; 무효 setup(){ Serial.begin(9600); Cayenne.begin(사용자 이름, 암호, 클라이언트 ID); 서보_x.attach(5); 서보_z.attach(6); dht.begin(); 핀모드(3, 출력); 디지털 쓰기(3,LOW); } 무효 루프(){ topr=analogRead(A2); topl=analogRead(A3); botl=analogRead(A4); botr=analogRead(A5); Vout=(아날로그읽기(A1) * 5.0) / 1023; Serial.println("수동 모드"); Cayenne.loop(); if (digitalRead(3)==HIGH){ Serial.println("자동 모드"); 서보 =서보_x.read(); 서보v =서보_z.read(); int avgtop =(topr + topl) / 2; int avgbot =(botr + botl) / 2; int avgright =(topr + botr) / 2; int avgleft =(topl + botl) / 2; int diffhori =avgtop - avgbot; int diffverti =avgleft - avgright; /*가로축에 따른 추적*/ if (abs(diffhori) <=threshold_value) { servo_x.write(servoh); //서보 업다운 정지 }else { if (diffhori> threshold_value) { Serial.println(" x - 2 "); 서보_x.쓰기(서보 -2); //시계 방향 회전 CW if (servoh>servohLimitHigh) { servoh =servohLimitHigh; } 지연(10); }else { 서보_x.write(servoh +2); //CCW if (servoh threshold_value) { servo_z.write(servov -2); //CW if (servov>servovLimitHigh) {servov =servovLimitHigh; } 지연(10); }else{ 서보_z.write(servov +2); //CCW if (servov

    회로도


    제조공정

    1. 매혹적인 사물 인터넷:IoT 실무자를 이끄는 요인은 무엇입니까?
    2. 사물 인터넷에 블록체인 도입
    3. 사물 인터넷이 제기하는 보안 문제:2부
    4. 사이버 보안 및 사물 인터넷:미래 지향적인 IoT 보안
    5. 사물 인터넷의 잠재력에 대한 투자
    6. 실제 사물 인터넷?
    7. 사물 인터넷:데이터 유입 관리
    8. 사물 인터넷이 여전히 직면하고 있는 5가지 과제
    9. 산업용 사물 인터넷의 힘 발휘
    10. 솔라 트래커 V2.0