728x90

목동코딩:

오늘은 청라에 가서 무인 스터디카페 시스템을 종합 테스트를 진행했습니다. 그중에 입실.퇴실과 동시에 각각 회원의 자리의 전등제어를 하기 위해서 Sonoff의 펌웨어를 커스터마이징을 하였습니다.

이번 시스템은 중앙 집중적인 서버 방식에서 벗어나, 로컬방식으로 진행했습니다.

간혹 중앙 집중적인 서버에 문제가 생기면, 전체 스터디카페 프랜차이즈가 문제가 발생하는 것을 방지 하기 위하여, 로컬 방식으로 진행을 했습니다. 그리고 인터넷으로 인한 문제를 최소화 하기 위해서 3중 인터넷 방식으로 준비 하였습니다.

전등제어 전체 모듈에 펌웨어를 업로드 한후 , 자리예약, 입실, 퇴실을 테스트 해보니 다행스럽게 잘 동작 하였습니다.

이제 본격적으로 무인 스터디 카페가 오픈을 하면 , 조금 더 모니터링을 하면서 혹시 수정 사항이 있는지 , 다시 한번 체크할 예정입니다. 경험상 시스템의 가(假) 오픈에서 발견되지 않던 오류가 , 실제 오픈에서 발견되는 경우가 종종 있으니 신경을 더 많이 써야 하겠습니다 ㅎ.

 

 

목동코딩학원 무인스터티카페 전등제어 펌웨어 커스터마이징

 

728x90
728x90

 

목동코딩:

예전에 만들었던 블루투스 리모트 컨트롤 앱을 조금 정비했습니다.

버튼으로 전,후,좌,우를 조정하지 않고 왼손 엄지로 드래그를 하면, 드래그 동작에 맞추어서 전,후,좌,우 로 동작합니다.

즉 전진하면서 좌회전, 전진하면서 우회전, 그리고 반대로 후진하면소 좌회전, 후진하면서 우회전이 잘 동작합니다.

그리고 자동,수동을 전환하여 수동 조정기능을, 자동으로 전환하면 라인트레이서 기능을 수행합니다.

또한 부저 버튼은 크락션이 울립니다 ㅎㅎ, LED 버튼은 차량의 헤드라이트를 켜고 끌 수 있습니다.

그외 다양한 기능은 아두이노 프로그램과 맞추어 커스토마이징이 가능합니다.

 

참 블루투스는 한번 연결이 되면, 앱 구동시 자동으로 연결됩니다.

목동코딩학원 아두이노 RC카 앱(v 1.0 )
L2_System_Jog_Controller.apk
9.47MB

 

 

목동코딩학원 아두이노 RC카 프레임

 

 

728x90
728x90

 

목동코딩:

예전에 만들었던 블루투스 리모트 컨트롤 앱을 조금 정비했습니다.

버튼으로 전,후,좌,우를 조정하지 않고 왼손 엄지로 드래그를 하면, 드래그 동작에 맞추어서 전,후,좌,우 로 동작합니다.

즉 전진하면서 좌회전, 전진하면서 우회전, 그리고 반대로 후진하면소 좌회전, 후진하면서 우회전이 잘 동작합니다.

그리고 자동,수동을 전환하여 수동 조정기능을, 자동으로 전환하면 라인트레이서 기능을 수행합니다.

또한 부저 버튼은 크락션이 울립니다 ㅎㅎ, LED 버튼은 차량의 헤드라이트를 켜고 끌 수 있습니다.

그외 다양한 기능은 아두이노 프로그램과 맞추어 커스토마이징이 가능합니다.

 

참 블루투스는 한번 연결이 되면, 앱 구동시 자동으로 연결됩니다.

목동코딩학원 아두이노 RC카 앱(v 1.0 )
L2_System_Jog_Controller.apk
9.47MB

 

 

목동코딩학원 아두이노 RC카 프레임

 

 

728x90
728x90

웹 페이지를 가져와서 화면에 표시할때 , 화면 깜밖임이 없이 데이타베이스 내용을 가져오는 방법이 필요한 경우와 새창으로 페이지를 여는 두가지 방법을 정리해 둡니다.

#1번 방법	
function Call_LC(LastNo)
    {
	    var txt;
	    if (confirm("(목동코딩학원 코딩수업")) {
		txt = "";
	    } else {
		 return false;
	    }
		var form = document.getElementById("UpForm");
		var Field1 = document.createElement("input");
		Field1.setAttribute("type", "hidden");
		Field1.setAttribute("name", "LastNo");
		Field1.setAttribute("value", LastNo);
		form.appendChild(Field1);

        form.method = "post";
        form.target = "_blank";
        form.action = "./새페이지.php";

        form.submit();
        }
#2번 방법
function TestNCS_LC(LastNo) {		
   var txt;
	if (confirm("확인하기")) {
		txt = "";
	} else {
		return false;
	}

	var form = document.getElementById("UpForm");
	var formData = new FormData(form);
	formData.append('LastNo', LastNo);
				
	var xhr = new XMLHttpRequest();
				
	document.getElementById("test").innerHTML = "";
	xhr.onreadystatechange = function() {
		if (this.readyState == 4 && this.status == 200) {
			document.getElementById("test").innerHTML += this.responseText;
	     }};
			
		xhr.open("POST" , "./가져올페이지.php" , true);
		xhr.send(formData);	
		}

 

목동코딩학원 아두이노 단체실습보드 만아보9.1

 

목동코딩학원 아두이노 단체실습보드 만아보9.1

 

목동코딩학원 아두이노 단체실습보드 만아보9.1

 

목동코딩학원 아두이노 만아보로 코딩 실습중인 초등학생

728x90
728x90

 

목동코딩학원 아두이노교육

목동코딩학원 아두이노교육

 

목동코딩학원 아두이노교육
목동코딩학원 아두이노교육
목동코딩학원 아두이노교육

 

재능을 발휘하는데는 나이가 없나봅니다.

10살이라는 아주빠른 나이에 아두이노가 좋아서 부모님께 떼를 써서 학원에 온 케이스입니다.

처음에는 1시간만 하려 했는데, 본인이 화장실도 안가고 6시간씩 아두이노 수업을 진행하고 있습니다.

저 역시 12살에 전자공부를 시작한거 보면 , 자신이 좋아하는 일을 하는 기쁨은 정말 대단한 즐거움 입니다

728x90
728x90

목동코딩학원 :

처음에는 간단하게 본인인증 받아서 회원관리만 하면 된다고 생각한 웹사이트였는데,

막상 운영을 해서 입력을 받아보니 회원들의 내용 수정이 의외로 많다는 걸 알았습니다.

특히 이름이 변경되는 경우가 있기에 무엇을 수정했는지 로그를 작성할 필요가 생겨서

오래만에 Trigger를 만들어 봤습니다.

간단하게 작동을 하도록 했습니다.

enroll 테이블의 내용이 수정되기 전에 enrollBefore 테이블에 기존 정보를 Insert 하는 정도입니다

아래의 트리거를 작성하여서 MySql에서 작동시킨후 약 1시간뒤에 DB에 가서 확인해보니, 역시

수정한 내역이 많았습니다.

아! 이렇게 많았구나 하는 생각이 들었습니다.

마치 예전에 집앞에 세워둔 고장난 자전거가 있었는데, 아침에 일어나니 사라졌을때, CCTV를 획인하니

새벽에 술취한 사람이 고장난 자전거를 끌고 가는 장면을 확인 하고 후련했던거 처럼 기분이 좋았습니다. ㅎㅎ

30대에 오라클로 시스템 구축할때를 빼고는 간단하지만 오랜만에 트리거 작업을 했습니다.

별다른 프로그램의 수정이 없이 작업이 되어서 게으른 개발자에게는 큰 축복입니다.

CREATE DEFINER=`appnet_remote`@`%` TRIGGER `enrollchange` 
BEFORE UPDATE ON `enroll` 
FOR EACH ROW BEGIN
INSERT INTO enrollbefore (
	Id, 
	Name, 
	Birthdate, 
	Mobile, 
	Email, 
	BludType, 
	Religion, 
	Career, 
	zip,
	addr1,
	addr2,
	Recommender,
	RecommenderMobile,
	ActivityArea,
	Job,
	Interest,
	MajorField,
	Message,
	sms,
	RegiDate
	) VALUES( 
	OLD.Id, 
	OLD.Name, 
	OLD.Birthdate, 
	OLD.Mobile, 
	OLD.Email, 
	OLD.BludType, 
	OLD.Religion, 
	OLD.Career, 
	OLD.zip,
	OLD.addr1,
	OLD.addr2,
	OLD.Recommender,
	OLD.RecommenderMobile,
	OLD.ActivityArea,
	OLD.Job,
	OLD.Interest,
	OLD.MajorField,
	OLD.Message,
	0,
	OLD.RegiDate
	);
END

다음과 같이 작성하면 입력을 우선으로 하고 이미 입력된 자료가 있으면 update를 하는 방식이다

INSERT INTO t2(id,pass) VALUES (NEW.id, NEW.pass) ON DUPLICATE KEY UPDATE pass=NEW.pass;

 

목동코딩학원 지금은 10살이지만 아두이노를 좋아하는 초등생

 

728x90
728x90

목동코딩:

웹프로젝트를 하면서 동적으로 폴더를 만들 필요가 종종 있다. 가령 사진을 올리는 업체의 코드명으로 폴더를 즉시 만들어서 사용하는 경우가 그렇다. 확인 방법은 폴더의 존재를 확인하는 함수 "is_dir()"을 이용하는 방법이다.

이 함수의 리턴값에 따라서 "mkdir(dir,chmod,recursive)"을 사용하여 폴더를 만들면 된다.

여기서 dir : 확인하고자하는 디렉토리, chmod:만들어질 디렉토리의 접근 권한, recursive : 하위 디렉토리 생성여부을 설정하는 팩터이다.

 

<?php 

    $Id = "2";

    if (!is_dir("images/Partners/$Id/")){

        echo("No Directory");

        mkdir("images/Partners/$Id/"0777true);

    }else{

        echo("Yes I have ");

    }

    

?>

목동코딩, 아두이노 4WD RC카 컨트롤러
양천구청 메타버스 체험현장사진

 

728x90
728x90

목동코딩학원: 키오스크개발

스터디카페용 무인 키오스크 프로젝트를 하면서 전등 제어를 해야할 필요가 생겼다. 회원의 입실과 퇴실시 전기를 낭비하지 않기 위하여, 자동으로 전등을 On Off 하는 내용이 프로젝트에 포함 되어있었다.

그래서 새롭게 PCB를 설계하여 개발하려고 했으나 빠른 납기문제로 기존에 판매중인 와이파이 스위치를 사용하기로 했다.

현재 판매되는 제품은 거의 모든 제품이 와이파이 스위치를 판매하는 브랜드별로 컨트롤 앱을 별도로 제공을 한다. 일반 사용자는 간편하게 앱을 다운받아서 사용하면 된다. 하지만 여기에 문제가 있었다. 지금 내가 개발하는 스터디카페 키오스크시스템에 연동을 하기 위해서는 펌웨어를 반드시 바꿔야만 했다. 그래서 열심히 검색한 결과로 펌웨어를 교체하는 방법을 알게됐다. 오늘의 블로그는 단순하게 펌웨를 바꾸어서 테스트한 영상을 올립니다

 

 

 

 

 

 

 

728x90

+ Recent posts