본문 바로가기
카테고리 없음

꿀벌 활동 모니터링(벌통 관리 시스템)

by 굿뜨클랑 2023. 1. 22.
728x90
더보기

연결된 벌통은 기술을 사용하여 내부 꿀벌의 건강과 행동을 모니터링하는 벌집의 한 유형입니다. 이것은 하이브 내부에있는 센서 및 기타 장치를 사용하여 수행됩니다.

센서는 벌집 내부의 온도, 생산되는 꿀의 양, 꿀벌의 활동 수준과 같은 다양한 요인에 대한 데이터를 수집할 수 있습니다. 이 데이터는 중앙 데이터베이스로 전송되어 양봉가와 연구원이 분석 할 수 있습니다.

연결된 벌집의 주요 이점 중 하나는 양봉가가 꿀벌의 건강을 실시간으로 모니터링 할 수 있다는 것입니다. 이를 통해 문제를 조기에 식별하고 문제를 해결하기위한 조치를 취하여 벌통의 전반적인 상태를 개선 할 수 있습니다.

또한 연결된 벌통에서 수집 한 데이터는 꿀벌의 행동을 연구하고 꿀벌이 어떻게 기능하는지 더 잘 이해하는 데 사용될 수 있습니다. 이것은 연구자들이 꿀벌 건강을 개선하고 건강한 꿀벌 개체군의 성장을 지원하기위한 새로운 전략을 개발하는 데 도움이 될 수 있습니다.

전반적으로 연결된 벌통은 꿀벌을 연구하고 돌보는 새로운 방법을 제공하며 이러한 중요한 수분 매개체를 관리하는 방식에 혁명을 일으킬 잠재력이 있습니다.

공급

소프트웨어

사물 네트워크 (TTN)

경고음

키캐드

 

KiCad EDA

A Cross Platform and Open Source Electronics Design Automation Suite

www.kicad.org

1 단계 : TTN이있는 안녕하세요 세계

아두 이노 MKR WAN 1310을 사용하여 센서의 모든 데이터를 전송합니다. lora 네트워크를 사용하여 값을 보냅니다., 이 네트워크를 사용하면 장거리에서 데이터를 보낼 수 있지만 매우 낮은 유량으로 데이터를 보낼 수 있습니다. 이 네트워크는 IOT 세계에서 매우 사용됩니다.

먼저 사물 네트워크에서 계정을 만들어야 합니다.

사물 네트워크는 LoRaWAN 표준을 준수하는 LoRa 기술을 기반으로 하는 커뮤니티 네트워크입니다. 이 기술을 통해 물체는 매우 적은 에너지를 소비하면서 소량의 정보를 전송할 수 있습니다. 커뮤니티는 인터넷에 연결된 게이트웨이를 배포합니다.

  1. TTN에서 계정 만들기
  2. 응용 프로그램 만들기
  3. 장치 등록하기

자세한 내용은 공식 문서를 따르십시오.

https://docs.arduino.cc/tutorials/mkr-wan-1310/the-things-network

아두 이노 근처에 게이트웨이가 있는지 확인하십시오.

arduino에서 데이터를 보내려면 다음 코드를 사용할 수 있습니다.

#include <MKRWAN.h>
/*information for connection in LoraWan*/
LoRaModem modem;
char output[64]; 
String appEui = "0000000000000000";
String appKey = "4D740505194EA0BEE9F6EF3A786F5A64";

bool connected;
int err_count;
int con;
short value1, value2, value3 = 3; // data to send


void setup() {
   //Initialisaion Lora
   modem.begin(EU868);
}

void loop() {
 if ( !connected ) {
   int ret=modem.joinOTAA(appEui, appKey);
   if ( ret ) {
     connected=true;
     modem.minPollInterval(60);
     Serial.println("Connected");
     modem.dataRate(5);  // switch to SF7
     delay(100);         // because ... more stable
     err_count=0;
   }
 }
 con++; 
 Serial.print("Join test : ");
 Serial.println(con);

 if ( connected ) {
   int err=0;
/*Envoie des valeurs*/
   modem.beginPacket();
   modem.write(value1);
   modem.write(value2);
   modem.write(value3);
   err = modem.endPacket(true); //Send packet

/*confirmation of transmission*/
   if ( err <= 0 ) {
     // Confirmation not received - jam or coverage fault
     err_count++;
     if ( err_count > 50 ) {
       connected = false;
     }
     // wait for 2min for duty cycle with SF12 - 1.5s frame
     for ( int i = 0 ; i < 120 ; i++ ) {
       delay(1000);
     }
   } else {
     err_count = 0;     
   }
 }
}

2단계: 모든 센서 연결

그림 세트는 구성 요소를 연결하는 방법을 보여줍니다. 또한 일반 연결 다이어그램을 통해 스위치, 저항 및 Lipo Rider를 넣는 방법을 볼 수 있습니다.

우리는 두 개의 금속 구조로 측정 게이지를 조립합니다. 이 세트는 무게를 측정하기 위해 벌집 아래에 배치됩니다.

측정 게이지를 X711 Grove 101020712 증폭기와 연결합니다.

3단계: 모든 센서 프로그래밍

 

DHT22 온도 센서

#include <DHT.h>

#define PIN 6
#define DHTTTYPE DHT22

DHT dht(PIN, DHTTTYPE);

void setup() {
  dht.begin();
}
void loop(){
/*reading data from the sensor*/
  Serial.println(dht.readTemperature());
  Serial.println(dht.readHumidity());
}

방수 DS18B20

 

Waterproof 1-Wire DS18B20 Digital temperature sensor

This is a pre-wired and waterproofed (with heat shrink) version of a 1 Wire DS18B20 sensor. Handy for when you need to measure something far away, or in wet conditions. While the sensor is ...

www.adafruit.com

 

더보기
// Sensor of the temperature DS18B20
uint8_t address_DS18B20[8];
DS18B20 ds(3);
int nbrCapteurTempDS18B20 = 2;
float tabTempDS18B20[2]; // one wire sensor table

void setup() {

}
void loop(){
  tempDS18B20();
  for(int i = 0; i < nbrCapteurTempDS18B20; i++){  
    Serial.println(tabTempDS18B20[i]); //reading the value of the component i
  }  
}

void tempDS18B20(void){
  int j = 0;
  for(int i = 0; i < 2; i++){
    tabTempDS18B20[nbrCapteurTempDS18B20] = -1;
  }

  while(ds.selectNext()){

    ds.getAddress(address_DS18B20);
    Serial.print("Address:");

    for (uint8_t i = 0; i < 8; i++) {
      Serial.print(" ");
      Serial.print(address_DS18B20[i]); 
    }
    Serial.print("\n");
    tabTempDS18B20[j] = ds.getTempC();
    Serial.print("Temperature: ");
    Serial.println(tabTempDS18B20[j]);
    j=j+1;
  }
}

싱글 포인트 로드셀 H40A & Amplificateur HX711 Grove 101020712

 

Amplificateur HX711 Grove 101020712

Module amplificateur pour capteurs de force à pont de Wheatstone basé sur un convertisseur analogique-numérique HX711. Ce capteur communique avec un microcontrôleur type Arduino via une interface deux broches digitales.

www.gotronic.fr

더보기
#include <HX711.h>

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 1;
const int LOADCELL_SCK_PIN = 2;
const float TARE = 133024;

//definition for the weight
HX711 scale;

void setup() {
  //Initialisation of the sensor of the weight
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}
void loop(){
  Serial.println(poids()); //reading the value
}

float poids (void){
  scale.power_up(); // wake up the sensor
  float reading = (scale.read()- TARE)/28413;
  if(reading < 0) reading = 0;
  Serial.print("poids reading : ");
  Serial.println(reading);
  scale.power_down(); // power down to save power
  return reading;
}

4 단계 : 태양 광 패널에 의한 전원 공급 장치

Accu 리튬 이온 3,7V 1050mAh PR474446 + 리포 라이더 프로 + 셀룰 솔레어 SOL2W

 

Cellule solaire SOL2W

Cellule solaire 2 Watts délivrant une tension de 5,5 Vcc sous 360 mA. Une fine couche de résine permet une utilisation en extérieur (le connecteur JST n'est pas protégé contre les intempéries).

www.gotronic.fr

우리는 우리의 arduine 보드에 전원을 공급하기 위해 LipoRider 보드를 추가했습니다. 배터리 관리를 관리하고 태양 전지판을 연결할 수 있습니다.

에너지를 절약하기 위해 저는 시스템을 딥 슬립 모드로 사용합니다. 자율성은 며칠에서 한 달 이상으로 증가합니다.

더보기
//Low power mode in Arduino
#include "ArduinoLowPower.h"

void loop(){
  /*
  main program
  */

  // go in low power mode
   LowPower.deepSleep(600000); // 3min for the test  || 1000 * 60 * 60 * 24 = 3600000 for 1 measurement / hour  (3min)
   delay(1000);  // Time to fully wake up the card
}

5단계: PCB 생성

모든 센서를 연결하고 브레드 보드에서 프로토 타입을 완성한 후 PCB를 개발할 수 있습니다.

먼저 자신의 카드를 그리려면 Kikad를 설치해야합니다. 내 PCB 프로토 타입을 공유하고 싶다면 여기.

 

GitHub - Anthos-hub/Project-hive-connected

Contribute to Anthos-hub/Project-hive-connected development by creating an account on GitHub.

github.com

 

6 단계 : TTN을 비프음에 연결

이제 모든 측정 값을 경고음으로 보내 여러 그래프에 기록하고 표시 할 수 있도록해야합니다. 이를 위해서는 첫 번째 첨부 된 다이어그램의 파란색으로 각 블록을 구현해야합니다.

I) 첫 번째 블록은

이진 프레임을 정수로 변환하십시오.

  1. TTN으로 이동
  2. 응용 프로그램으로 이동 -> endDivices -> 페이로드 포맷터 -> 업링크
  3. "포맷터 유형"을 "사용자 정의 자바 스크립트 포맷터"로 설정하십시오.
  4. 경고음으로 주어진 변수의 이름을 따르십시오.
  5. 나중에 어디에서 찾을 수 있는지 알 수 있지만 경고음 하이브의 열쇠입니다.
  6. Payload formater 생성
더보기

 

function decodeUplink(input) {
    var decoded = {};
  decoded.key ="0sd6rz7kll3zcq0s";

  decoded.bv = (input.bytes[1] << 8 | (input.bytes[0])) / 100; // battery
  decoded.weight_kg = (input.bytes[3] << 8 | (input.bytes[2])) / 100; // weight
  decoded.t = (input.bytes[5] << 8 | (input.bytes[4])) / 100; // temp1
  decoded.t_0 = (input.bytes[7] << 8 | (input.bytes[6])) / 100; // temp2
  decoded.t_1 = (input.bytes[9] << 8 | (input.bytes[8])) / 100; // temp3
  decoded.h = (input.bytes[11] << 8 | (input.bytes[10])) / 100; // hum 1
  decoded.t_3 = (input.bytes[13] << 8 | (input.bytes[12])) / 100; //temp
  decoded.h_i = (input.bytes[15] << 8 | (input.bytes[14])) / 100; // hum 2
  decoded.l = (input.bytes[17] << 8 | (input.bytes[16])) / 100; // luminosity

  return {
    data: decoded,
  };
}

II) 두 번째 블록은 TTN에서 보낸 데이터의 형식을 지정하여 경고음에 대한 형식을 지정하는 데 사용됩니다. (일반적으로 bepp은 TTN 프레임을 이해하지만 작동하지 못했습니다.)

  1. 선택한 서버 (AZUR, AWS)에서 URI 서버 주소 / ttnToBeep이있는 REST API를 만듭니다.
  2. 포맷터 추가
  3. "decoded_payload"만 복구
  4. 함수 형식(메시지){return message.uplink_message.decoded_payload;}
  5. TTN에 위브훅 추가
  6. 응용 프로그램 -> 통합 -> Weebhooks로 이동하십시오.
  7. "사용자 지정 웹후크 추가"를 클릭합니다.
  8. 위브 후크에 위브훅 ID를 부여하세요 예: 삐
  9. "기본 URL"에 서버의 끝점을 추가하십시오.
  10. 장치가 데이터를 보낼 때 POST 데이터에 대한 메시지를 선택합니다.
  11. You need Bearer Token nous pour nous identifier nous allons voir dans la partie III.2 comment le récuprer.
  12. 메시지가 수신되면 "https://api.beep.nl/api/lora_sensors?key=0sd6rz7kll3zcq0s"에 대한 POST 요청을 수행합니다.
  13. TTN 페이로드 포맷터에 추가한 키 매개 변수를 사용합니다. 자세한 내용은 여기를 참조하십시오.

 

III) 경고음에 대한 데이터를 시각화 할 수있는 마지막 블록의 마지막 블록의 경우 경고음에 대한 카운트를 생성해야합니다. 그리고 측정 장치를 추가하십시오

  1. 경고음에 계정 생성
  2. 연결시 브라우저의 네트워크 부분으로 Bearer 토큰을 검색 할 수 있습니다.
  3. 왼쪽 상단의 햄버거 메뉴를 클릭하십시오.
  4. "장치"섹션으로 이동
  5. "자신의 장치 추가"로 새 장치 만들기
  6. 하이브에 이름 지정
  7. "장치 고유 식별자"를 복사합니다.
  8. TTN의 "페이로드 포맷터"로 돌아가서 장치 고유 식별자를 복사합니다.

7단계: 통합

모든 구성 요소를 방수 정션 박스에 넣었습니다. 센서는 땀샘을 통과합니다. 모든 센서를 하이브의 올바른 위치에 배치했습니다.

 

 

 

728x90

댓글