바른 생각 바른 글

스마트홈 실습 시스템 소프트웨어 수정

지구빵집 2023. 5. 1. 14:24
반응형

 

 

일을 잘하는 방법은 별 것 없다. 아주 작은 부분으로 나누고 순서와 절차를 숙지하여 제대로 하나하나 지속적으로 실행하는 것뿐이다. 우리 생각은 행동보다 백만 배는 더 빨라서 일일이 적는 것을 싫어하고, 사이사이 빠뜨린 것들을 생각하지 않고, 제대로 된 과정과 결과를 꼼꼼히 정리하지도 않는다. 물론 그렇게라도 실행하면서 시행착오를 통해 배우기도 하지만 일을 아주 잘하는 수준으로 올라가는 길과 멀리 떨어져 있다. 방법을 안다고 해도 제대로 행동하지 않으면 그것은 아는 게 아니다. 사실 너무 많이 알아서 문제를 만든다. 똑똑한 사람이나 많이 배운 사람들이 성공하거나 부자가 되지 못하는 이유다. 

 

언제 봤는지 기억도 나지 않을 만큼  오래 지나서 다시 만들었다. 회로도도 없고 필 할당, 소프트웨어도 최신 버전이 없다. 다시 거버 파일을 찾아 송부하고, 기억을 더듬어 프린트 한 회로도를 찾아 GPIO 핀 할당 맵을 그린다. 디지털 멀티미터로 모든 핀을 검사하고 제대로 연결을 확인한다. 도어록은 새로 구매한 제품과 연동이 되지 않는다. 라즈베리파이 GPIO 핀에서 사용하지 않는 핀을 찾는다. 3.3v 동작하는 1ch 릴레이를 구매해 제어신호를 연결하여 마치 제대로 동작하는 것처럼 보이게 만든다. 각 구성품 프로그램을 동작시켜 이상 없을 때까지 테스트를 해야 한다. 지루하지만 원래 즐거운 시간보다 훨씬 더 긴 시간을 정체해 있다고 느끼는 시간을, 재미없고 단조로운 일을 하며 보내야 한다. 매미가 그렇다.  

 

아직 남아있는 gpio12번 물리 번호 32번 핀에 릴레이를 On, Off 하여 도어록 제어신호로 사용한다. 릴레이는 low-enable 동작한다. 도어록 제어 프로그램을 수정하고, 스마트홈 서버 프로그램을 수정하여 컴파일 해서 제대로 동작하는지 확인하는 일이 남았다. 혹시 안 되더라도 다시 수정할 여지는 남겨 둔다. 굿 럭!

 

수정 코드 home-door.c

 

#include <stdio.h>
#include <string.h>
#include <errno.h>

#include <wiringPi.h>

#define DOOROPEN 12	// BCM_GPIO 23 - OUT
#define DOORCLOSE 12	// BCM_GPIO 23 - OUT

void Bpluspinmodeset(void);
void doorOpen(void);
void doorClose(void);

int main (void)
{
	//if(wiringPicheck()) printf("Fail");
	wiringPiSetupGpio();
		
	Bpluspinmodeset();	
	
	int i = 1;
	while(1)
	{		
		doorOpen();	
		printf("%s\n", "Door open");
		delay(3000);
		doorClose();	
		printf("%s\n", "Door closed");
		delay(3000);
	}
  
  return 0 ;
}

void doorOpen()
{
	digitalWrite(DOOROPEN, 0);
	delay(100);
	digitalWrite(DOOROPEN, 1);		
}

void doorClose()
{
	digitalWrite(DOOROPEN, 0);
	delay(100);
	digitalWrite(DOOROPEN, 1);		
}

int wiringPicheck(void)
{
	if (wiringPiSetup () == -1)
	{
		fprintf(stdout, "Unable to start wiringPi: %s\n", strerror(errno));
		return 1 ;
	}
}

void Bpluspinmodeset(void)
{
	pinMode (DOOROPEN, OUTPUT);
}

 

혹시라도 재수가 좋아 모든 것들이 잘 동작하면 센서 연결 케이블을 발주하고, 케이스를 주문하고, 실습 시스템을 동작하기 위해 필요한 전원과 케이블 여러 가지를 함께 모아 완성하면 된다. 보기에 단순한 것들은 단지 보기에만 그렇다. 하나의 단순함을 구현하기 위해 보이지 않는 곳에서 몇 배에 달하는 수정과 극도의 복잡함이 감추어져 있다. 바로 그런 것을 해결하는 능력을 갖추느냐의 문제가 바로 성공하든지 실패하든지 결과를 결정한다. 

 

배우고 익히는 시간의 3배 시간을 구현하고 조치를 취하고 생산하는 데 쓰기로 한다. 남자는 시간을 낭비했다고 생각한다. 쓸데없는 것들을 배우느라 너무 허비했다고 생각한다. 물론 자기에게 도움이 되는 자료를 배우는 일은 중요하지만 단지 중요하기 때문에 재미있기 때문에 그것에 많은 시간을 쓰는 일은 자기 삶에서 낭비가 된다. 무엇인가 더 많은 것을 만들고, 더 많이 팔고, 더 많이 제공하는 일을 했어야 했다. 지난 시간은 늘 안타깝기 마련이다. 

 

 

아름다운 IoT 스마트홈 제어 시스템

 

 

 

 

 

 

반응형