메이커 Maker

꽃 수분을 돕는 드론 - 꿀벌팀

지구빵집 2022. 9. 7. 07:12
반응형

 

 

 

아이들에게 자신감이 있는지 있다면 얼마나 있는지 모른다. 그런 것은 겉으로 나타나지 않는 은밀한 개인적인 것이라서 자존감이나 자신감의 정도를 말하기는 어렵다. 우리가 무엇인가를 성취하는 것은 기술의 문제가 아니라 정신의 문제다. 품격 있게 행동하는 것도, 부유함을 이루는 것도, 가고자 하는 분명한 목적지에 다다르는 일도 사실 정신의 문제다. 겉으로 보기엔 물질, 지위, 권력의 문제라고 생각하기 쉽지만 실제 이룬 사람들은 일관성 있는 행동, 극도의 끈기와 인내로 이룬 사람이다. 가장 중요한 것은 기술이나 실력이 아니라 자신감이다. 

 

자신감이란 자신이 어떤 일을 성공시킬 수 있다고 믿는 믿음 혹은 능력이다. 간혹 가다 찾아오는 행운이나 어려움, 시도 때도 없이 출몰하는 장애에 구애받지 않고 끈기 있게 행동할 수 있는 의지를 말한다. 우리가 무엇이든 해낼 수 있다고 믿는다면 우리는 자신감을 가진 사람이다. 작고 사소한 일에 감사한다. 한 학기를 무사히 마친 것, 누구도 작품 활동을 하면서 다치거나 나쁜 일을 겪지 않는 것, 끝까지 과제를 수행하고 완성한 작품을 선보이고 멋지게 발표를 하고 '또 만나.'하고 인사를 나눈 것까지 작은 일에 감사한다. 삶은 작은 일에 감사할수록 우리에게 미소를 짓고 쉬운 길로 인도한다.

 

바쁜 일은 없는데 바쁜 척을 했는지, 아니면 2주간 미국 여행과 코로나 확진으로 7일 격리로 아까운 시간을 허비한 것인지 모르지만 이제라도 아이들의 작업을 정리하기로 한다. 늘 느끼지만 성장은 부족함을 알 때, 누군가와 함께 할 때, 결정적으로 행동할 때 우리에게 온다. 큰 고통과 두려움은 더 큰 성장과 성취를 준다. 우리를 불편함으로 내 모는 것을 기꺼이 감수할 때 우리는 성장한다. 아이들과 함께할 때 남자도 성장한다. 

 

2022년 1학기 어드벤처 디자인 작품 목록 링크

 

1조 꽃 수분을 돕는 드론 - 꿀벌

2조 원격 반려 동물 대화 장치 - 요리동아리

3조 MedicPharm - 조씀다

4조 스마트 냉장고 - SON

5조 R.A.KIT 소방 지원 시스템 - HYBEE

6조 Assay Skin - L’Amoure Atlantic

7조 식물 키트 - IQ48+130

8조 런드리 폴더 - 비스포크

9조 Smart Investigate Service(SIS) - 간담상조

10조 Smart 옷장 - 0.0

 

 

꽃 수분을 돕는 드론 작품 개요

레일형 인공 수분 장치는 농가와 같이 규격화된 형식으로 자라나는 식물에 대해 브러시를 통한 인공 수분을 진행하여 식물의 개채수 보존을 돕는 장치입니다. 볼스크류와 lm가이드를 이용해 원활한 장치의 선형 이동이 가능하게 하였고, 붓을 단 수분 장치를 볼스크류와 lm가이드를 잇는 판자에 부착하였습니다.

 

pixy캠으로 꽃을 인식하고 스탭 모터와 서보모터 수분장치를 이동하기 위해, 마이크로 프로세 서는 Arduino mega를 사용합니다. 색을 기준으로 같은 꽃임을 판단하기 위해 pixy2 cam을 사용합니다.현재까지 제품에 장착된 부품은 볼스크류를 돌리기 위한 스탭모터,브러쉬를 단 수 분장치를 움직이기 위한 서보모터, 스탭모터를 구동시키기 위한 스탭모터 드라이버가 있습니다. 아래 표는 데이터 수집 전송 장치에 들어가는 구성품을 나타낸 표입니다. 

 

구성품 기능   Part Number
       
       
아두이노 메가 마이크로 컨트롤러   ArDUINO Mega
  2560 (R3)
     
      사물인식 AI Pixy
PIXY2 CAM 꽃을 인식   v2.1 CMUcam5
  Smart Vision
     
      Sensor
스탭모터 볼스크류를 돌려 평행이동이 가   103H55210 - 0457
능하도록 함  
       
서보모터 수분장치() 위치 조절     SG90  
전 운동을 가능하게 함    
       
9v배터리 스탭모터에 전원 공급      
      A4988 스텝 모터
스탭모터 드라이 스탭모터를 제어하기 위해 필요   드라이버 모듈
  레드(방열판
   
      포함)
      브레드보드 830핀
브레드보드     MB – 102[SZH
      – BBAD - 002]
볼스크류 스탭모터의 회전운동을 직선운동   SDF  
으로 변화시켜줌   1205-410L.PRO
   
  보다 안정적으로 수분 장치가 이      
LM가이드 동할 수 있도록 볼스크류를 보조   SBI15FL+400L
  해주는 역할      
어댑터 전원공급      
USB 케이블 UART SERIAL PIN Cable Micro USB 5

 

#include <AccelStepper.h>
#include <Servo.h>
#include <Pixy2.h>
//***pix
#define F_ID 1
//***step moter
#define DIR 4
#define STEP 5
#define STEP_PER_REVOLUTION 200
//***servo moter
#define SERVO1 6
#define SERVO2 7
#define SERVO3 8
//**invers
#define L1 50.5
#define L2 50.5
//***stepping helper
#define STEP_BALL_SCREW 5570
#define MOIS_Y_FROM 7 //***to > from
#define MOIS_Y_TO 35
#define MOIS_SERVO_Y 70
#define MOIS_SERVO_X_STD 45
AccelStepper myStpper = AccelStepper(1, STEP, DIR);
Servo myServo1;
Servo myServo2;
Pixy2 pixy;
int memory_position = 0;
int moisture_flag = 0;
int flower_i = -1;
long flower_y = 0;
long flower_x = 0;
long th1,th2;

void setup()
{
	Serial.begin(115200);
	Serial.print("Starting...\n");
	//****pixy
	pixy.init();
	//****stepper
	pinMode(DIR, OUTPUT);
	pinMode(STEP, OUTPUT);
	myServo1.attach(SERVO1);
	myServo1.attach(SERVO2);
	myServo1.attach(SERVO3);
	myStpper.setMaxSpeed(STEP_PER_REVOLUTION * 10);
	myStpper.setCurrentPosition(0);
}

void loop()
{
	myStpper.setCurrentPosition(0);
	myStpper.setSpeed((-1) * (STEP_PER_REVOLUTION) * 2); //1초에 2바퀴 회전

	while (myStpper.currentPosition() != (-1)*STEP_BALL_SCREW) { //1회 볼스크류 시작점에서 끝점까지 이동 memory_position = myStpper.currentPosition();
		pix(F_ID);
		if (moisture_flag == 1){
			myStpper.runSpeed();
		}

		else if (moisture_flag == 0){
			moisture(1);
		}
	}

	myStpper.setSpeed((STEP_PER_REVOLUTION) * 2); //1초에 2바퀴 회전
	while (myStpper.currentPosition() != 0) { //시작점으로 이동
		memory_position = myStpper.currentPosition();
		if (moisture_flag == 0) {
			pix(F_ID);
			myStpper.runSpeed();
		}
		else if (moisture_flag == 1) {
			moisture(-1);
		}
	}
}

oid pix(int flower_id){
	int i;
	pixy.ccc.getBlocks();
	if (pixy.ccc.numBlocks){
		for (i = 0; i < pixy.ccc.numBlocks; i++){ //pixy로 인식된 객체들을 검사,수분 대상 꽃인지 확인 flower_y = pixy.ccc.blocks[i].m_y;
			flower_x = pixy.ccc.blocks[i].m_x;
			if (pixy.ccc.blocks[i].m_signature == flower_id && flower_y >= MOIS_Y_FROM && MOIS_Y_TO <= flower_y) { // from <= y <= to
			//***수분대상 꽃임을 확인하고, 해당 꽃의 위치가 수분장치의 수분 가능 범위에 있다면 -> 수분 진행
				moisture_flag = 1;
				return;
			}
		}
	}
	else {
		moisture_flag = 0;
		return;
	}
}

void moisture(int dirc){ //***moisture and move
//***로봇팔이용,수분
invrs_cal(0,MOIS_SERVO_Y);//***수분장치를 꽃이 있는 위치에 움직임

myServo1.write(th1);
myServo1.write(th2);
delay(1000);
for (int i = 0; i < 5 ; i++){//회전하여 수분
myServo3.write(0);
delay(500);
myServo3.write(180);
delay(500);
}
myServo1.write(0); //**수분장치 팔을 초기상태로...
myServo2.write(180);
delay(1000);
//***꽃이 수분범위에서 벗어날때까지 볼스크류 회전
if (dirc > 0) myStpper.setSpeed((-1) * (STEP_PER_REVOLUTION) * 2); //스탭모터 회전방향 설정
else if (dirc < 0) myStpper.setSpeed((STEP_PER_REVOLUTION) * 2);
while (1){
if (Check_pix(F_ID) == 0){
moisture_flag = 0;
break;
}
if (myStpper.currentPosition() == 0 || myStpper.currentPosition() == (-1)*STEP_BALL_SCREW){
moisture_flag = 0;
break;
}
myStpper.runSpeed();
}
}



int invrs_cal(double x, double y)

{

double d = sqrt(x * x + y * y);

double D = (d * d - L1 * L1 - L2 * L2) / (2 * L1 * L2);

//double ref_th2 = atan2(sqrt(1-D*D),D); //elbow down

double ref_th2 = atan2((-1) * sqrt(1 - D * D), D); // elbow up

double ref_th1 = atan2(y, x) - atan2(L2 * sin(ref_th2), L1 + L2 * cos(ref_th2));

ref_th1 = degrees(ref_th1);

ref_th2 = degrees(ref_th2);

th1 = ref_th1;

th2 = ref_th2;

th2 = 90.0 + th2;

}

 

5. 작품의 기대효과 및 확장성

 

본 작품을 사용함으로 인공 수정에 있어서 인건비 절약을 비롯해 전체적인 효율을 끌어올릴 수 있어, 농작물의 개채수를 보존 또는 상승시키는데 도움이 될 것이다.

 

제품의 확장성에 있어, 본 제품은 MVP기능을 수행하기 위함으로 작은 사이즈의 화분만을 사용할 수 있다. 하지만, 이를 볼스크류와 LM가이드 길이를 늘려 사용한다면 실제 농가에서도 활용이 가능할 것이다.

 

또한, 이러한 물리적 확장성에 더불어 해당 제품은 수분 공급, 추가 광원 설치, 식물 센서를 통한 식물 의 상태 진단, 영양제 투입 등 스마트팜 형태로의 기능적 확장이 쉽게 하드웨어를 제작한 작품이다. 식물 또는 꽃의 수분은 일반적으로 1년 내내 일어나는 현상이 아니라 꽃의 수분만을 위해 해당 제품을 설치하여 사용한다면 매우 비효율적이라고 생각할 수 있으나, 해당 작품은 앞서 말한 것처럼 수분기능 이 포함된 스마트팜 디바이스의 수분 기능만을 MVP모델로 구현한 것이라고 볼 수 있다.

 

6.작품 보완점

 

소프트웨어에 있어서 현재 코드는 모든 꽃이 일정한 높이에 있다는 가정 하에 만들어진 코드이다. PIXY의 블록 스케일을 파악하는 방식으로 Y좌표를 1대1대응시켜 다양한 높이의 꽃을 수분할 수 있었 지만, 직접 테스트하고 시행착오를 겪을 시간이 부족하다 느껴 현재 방식을 채택하여 아쉬운 부분이다. 또한‘수분’이라는 작업에 있어서 단순한 브러쉬의 회전운동은 정확히 꿀벌처럼 수분이 가능한지 논 리적 근거가 없이 작품을 계획 및 제작하여 아쉬운 부분이다.해당 제품을 보완한다면 제품의 기획 단계 에서 더욱 철저한 조사를 통해 부품선정 및 하드웨어 제작을 진행할 것이다. 

 

 

꽃 수분을 돕는 드론 - 꿀벌팀
꽃 수분을 돕는 드론 - 꿀벌팀
꽃 수분을 돕는 드론 - 꿀벌팀
꽃 수분을 돕는 드론 - 꿀벌팀

 

 

 

반응형

'메이커 Maker' 카테고리의 다른 글

R.A.KIT 소방 지원 시스템 - HYBEE  (1) 2022.09.19
스마트 냉장고 - SON  (0) 2022.09.15
MedicPharm - 조씀다  (1) 2022.09.14
강아지 돌보미 로봇 - 요리동아리  (1) 2022.09.13
Adventure Design 1 Curriculum Goals  (1) 2022.09.05
비접촉 멀티 체온측정기  (1) 2022.08.10
관성센서로 조종하는 RC카  (0) 2022.08.05
장갑형 드론 제어기  (1) 2022.08.03