이 블로그 검색

레이블이 개발인 게시물을 표시합니다. 모든 게시물 표시
레이블이 개발인 게시물을 표시합니다. 모든 게시물 표시

2018년 7월 29일 일요일

[ARTIK 053] ARTIK 053 IDE에서 코드 손보기 - AP 켜기(AP ON)

아틱에 관한 자료들이 워낙 부족하다 보니 공식홈페이지에서 정보들을 최대한 알아봐야한다. (: ARTIK DOCUMENTATION)

나는 아틱 보드 조작을 PUTTY에서 내가 TASH커맨드를 입력해서 AP모드를 켜는것을 하는것이 아니라 IDE상에서 코드를 손봐서 내가 원하는 명령을 하는것을 원한다.

그래서 SDK폴더를 뒤지고 뒤지면서 알아봤는데 역시 있었다.
먼저 artik 053 v1.6 sdk기준으로 설명해보겠다.



옆에 프로젝트 목록창에 includes를 보면 이런 화면이 있다.
그래서 한 번 켜봤다.
그럼 이런 글이 있다. 대충 봐도 감이온다. 
wifi_test.c 코드는 아마 wifi 를 켜는 test용 c파일 같고...
그럼 wifi_ap_test.c 는?????

그렇다 .
내가 우리가 찾는 AP를 켜는 TEST용 C코드다.
그럼 이제 저 파일을 켜본다.
나는 ARTIK SDK가 저장되어있는 폴더에서 검색을 통해 찾았고 바로 켰다.

개꿀띠~

그럼 이런 파일이 열어지고 대충 봐본다.
음 TEST를 하는 거구만



대충 코드를 쓸 보면서 어디에뭘 해야 AP 이름과 비밀번호를 설정할 수 있는지 봐본다.
main함수 부분을 보면 SSID 와 PSK라는 변수가 MEMSET을 통해 비어져있다. 그래서 string 헤더가 있길래 strcpy함수를 통해 ssid와 psk에 내가 원하는 이름을 집어넣었다.

그리고 실행해보면

이렇게 와이파이 softap 성공~
하고 ps로 실행목록을 보면 wifictl startap를 했을때와 같이 ps목록이 켜져있다.

휴대폰으로 wifi목록을 보면 아주 잘 켜져있음을 볼 수 있다.
하지만..

ifconfig명령어로 확인해 보면 주소도 없이 그냥 단순하게 AP를 켜져있는것을 확인할 수 있다. 

그럼 이제 다음 포스팅에서는 IDE에서 명령어를 조작하는것을 더 자세히 포스팅 해봐야겠다.

2018년 7월 26일 목요일

[안드로이드 스튜디오 작업] 미는 방향 알아보기(슬라이드 방향?)

처음 안드로이드 스튜디오를 접하고 바로 개발에 착수했다.
모르는것도 너무 많고 알아야만 하는것도 너무 많다.

그 중 touch 이벤트에 대해서는 거의 알아야만 한다고 생각하는데 스마트폰을 사용하면서
특히 어플리케이션을 실행하면서 화면을 터치하지 않고 무엇을 할 수 있을까

더군다나 요즘은 베젤리스라서 휴대폰 앞 면에는 홈버튼도 없고 스크린만 있다.

나는 터치 이벤트에 대해서 구글링을 열심히 했는데 이건 학교에서
자바를 배우면서도 많이들 배우는 기능이라 쉽게 익힌것같다.
대부분 자바책의 앞부분 GUI는 제외하고 배우는듯? 우리 학과는 이상하게 컴퓨터관련 학과도 아닌데 책을 다 배웠다...

근데 내가 구현하고자 하는 것은 어느 방향으로 터치를 진행했는지.

아래에서 위로 밀었는지 위에서 아래로 인지 오른쪽에서 왼쪽인지 왼쪽에서 오른쪽인지를
알아야한다.

그래서 또 열심히 구글링했다.

원하고자 하는 자료는 못찾았지만 알게된건 화면을 터치한 좌표, 터치를 종료 좌표를
알아낼 수 있다는 것이다. 물론 모두 객체내에 변수로 저장되어있다.
우리는 이것을 꺼내서 사용하기만 하면된다.

우선 실행을 해볼 뷰가 필요하다. 나는 텍스트뷰를 전체적으로 크게 키워놓았기때문에
이 위에서 작업을 진행하려고 한다.
그리고 시작을 진행하는 좌표(손가락을 화면에 처음 터치한 좌표) 를 알기위해
sx와 sy를 선언했다. 그리고 얼마나 밀었는지(슬라이드 했는지?)는 MOVE_HAND라는 변수로 총 350픽셀로 설정했다.

나는 이렇게 진행했다.

터치좌표(sx,sy) -> 슬라이드 -> 터치 종료 좌표(finx,finy) -> 거리측정 (finx-sx or finy-sy)
-> finx-sx가 finy-sy보다 크다면 왼쪽오른쪽임 아니면 위아래 -> finx-sx가 MOVE_HAND기준으로 양수만큼이면 오른쪽에서 왼쪽 아니면 왼쪽에서 오른쪽.

이제 구현을 해보자.
터치 좌표는 OnTouch 함수의 매개변수인 (MotionEvent event)
가 필요하다.
MotionEvent 안에 여러가지가 있는데

그중 Action_DOWN은 터치를 한 순간이고
Action_UP은 터치를 종료하는 순간이다.

이때마다의 event.getRawX()가 바로 터치를 시작하고 종료하는 x좌표이다.
그럼
얼마나 밀었는지는?
event.getRawX() - sx(<-Action_DOWN때의 좌표를 저장) 를 보면된다.
위아래인지 왼쪽오른쪽인지는?
event.getRawX() - sx 가 큰지 event.getRawY()-sy가 큰지.
그럼 방향은?
위에서 구한 차이가 +MOVE_HAND 인지 -MOVE_HAND인지.

이제 끝났다.
여기까지 어느 방향으로 밀었느지이다.
간단하게 소스를 첨부했다.




[안드로이드 스튜디오] 진동알림

안드로이드 스튜디오로 열심히 레이아웃 만들고
열심히 메인에 코드를 갖다 박았다.

이제 특정한 행동을 할 때 진동이 울리게 하고싶다.

일단 진동을 울리게 하려면 허가가 필요하다.
AndroidManifest.xml 파일에 코드를 한 줄 복사 + 붙여넣기해준다.



메인에서 사용을 하는데
처음에 OnCreate 함수 밖에서 그러니까 클래스의 전역변수로 쓰려고
final V~~~~ 이 부분을 OnCreate 밖에서 선언을 했었다.

테스트결과 자동 종료된다. 처음엔 허가 받는 permission을 틀리게 타이핑 한줄알았다.
그게 아니라 전역변수로 하면안되는 거였다....;;
검색해서 왜인지 알고싶기도 했지만 너무 귀찮은 관계로 그냥 안전하게 함수 안에서 선언과 초기화를 진행하였다.



[안드로이드 스튜디오] 주기적으로 WIFI 를 스캔하기

어제 와이파이 목록을 긁어오는 것을 해보았다.(저번 글 WIFI SCANpost)

얼마나 주기적으로 와이파이 목록을 긁어오는지 확인하기 위해
학교에서 집까지 걸어가면서 어플을 켜놓았고 집에가서 로그를 확인해보았다.

결과적으로는 실패다.
휴대폰이 자기 마음대로 긁어오다보니 가끔은 5초만에 스캔하고
최대 20초를 넘기는 일도 있었다.

일정하지는 않더라도 거의 10초에 한 번씩 긁어오기를 바라는 마음이 있었고
로그를 확인하던 중

상태바의 와이파이를 끄고 켤때마다 와이파이를 스캔하는 것을 확인했다.
그럼 어플자체에서 일정한 시간동안 와이파이를 계속해서 끄고 켠다면
켤때마다 스캔을 할테니 내가 딜레이를 넣은 시간 주기로 스캔을 할 수 있다고 생각했다.

이를 위해 run함수를 이용해보기로 했다.

저번에 (주기적으로 뭔가 실행되게 하기 post) 를 이용하는 방법이다.



이 소스를 보면 run함수 안에 와이파이를 셋팅한다. 1초동안은 끄고 10초동안은 켠다.

5초동안켜는 식으로 구현했을때는 켜져있는시간이 너무 짧아서 스캔을 할 시간이 부족한것같다.
그래서 계속 스캔해오지 못하는 상태를 봤다. 어짜피 5초 주기는 지금 하는 프로젝트에도 별로 필요가없을것같아 10초로 셋팅했다.


로그캣을 확인했더니 거의 일정하게 10초~11초 주기로 와이파이를 스캔해오는 것을
확인 할 수 있었다.

또 다른 더 좋은 방안이 생긴다면 이 글을 계속 수정해 나가겠다.

[ARTIK 053] 아틱 053 AP 모드

현재 지원받은 ARTIK053으로 여러가지를 진행해야한다.

첫 번째
LED 점멸.  (두세가지 색)
두 번째
어떤 LED가 켜져있는지를 확인해서 클라우드에 현재의 색을 옮긴다.
세 번째
AP를 켜놓는다.


첫 번째와 두 번째
혹은
세 번째와 첫 번째를 함께 실행하는 것은 어떻게 해서든 될것같다.

근데 해외 포럼(아틱관련개발자들이 Q&A하는곳?) 이나 국내 커뮤니티를
아무리 뒤져도

두번째와 세번째를 동시에 하는 것은 절대 불가인것처럼 보인다....

클라우드에 옮기려면 아마도 WIFI를 켜야 할 것 같은데 WIFI MODE를 ON시키면
AP모드가 실행이 안되고

AP모드가 실행되면 WIFI 모드가 실행되고 있지않는다.

PUTTY에서 작업해보면

TASH>>wifictl startap MyTestAP 1 123123123
TASH>>dhcpd start wl1
TASH>>ifconfig

AP모드를 켜기

TASH>>wifictl startsta
TASH>>wifictl scan
TASH>>wifictl connect <ssid> <passphrase> // E.g TASH>>wifictl connect MyWifi 123123123
TASH>>wifictl dhcp
TASH>>ifconfig

WIFI연결하기


하지만 현재 AP를 한 후 WIFI 를 실행하면  뭐라뭐라 WIFI BUSY라는 말이 뜬다.
물론 확인해봐도 먼저 명령어를 입력한 부분만 실행되고있다.

내가 영어를 잘 이해하지 못하고 있는가 싶어
국내 포럼 (아틱플러스)에 질문글을 올렸더니 오늘 답변이 달렸다.



나름 최상단
답변을 보면

OH....

안돼ㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐ
안딜먀ㅑㅓㅏㅁㄴㄷㄹ;


안된다고 한다.
그럼 목적에 맞게 AP모드만 켜고 
AP모드 + 클라우드(되면) + LED 를 진행해보도록 하겠다.

아마 710이 있으니 어떻게 710에서 AP를 통해 053으로 접근하는 루트가 있을것같으니

열심히 해보겠다.

[안드로이드 스튜디오] WIFI SCAN (와이파이 리스트)

하고자 했던 와이파이 리스트를 보는 방법이다.
현재
갤럭시 노트4 (안드로이드 버전 6.0.1)을 사용해 테스트를 진행하는 중인데
난관에 봉착했다.... ㅠㅠ

일단 인터넷에 wifiscan을 하는 방법은 엄청 많이 나와있다.
근데 모두 따라해 봤지만 실제로 스캔되어  LIST로 저장되는 값들이 없고
LIST사이즈도 0으로 되어있는것을 확인했다.

이에 한글이 아니라 영어로 검색을 시전했더니 문제점을 발견했다.

일단 안드로이드 버전 6 미만(마쉬멜로우 버전 미만) 에서는 인터넷에 나온대로

권한을 부여하는 코드를 Manifest에 넣어주고
브로드캐스트리시버라는 객체를 생성하면 된다는데

6.0 이상부터는 따로 또 권한을 부여해줘야한다.

이부분을 코드에 넣어주어야하는데
여기 scanre 는 내가 설정한 LIST 변수 이름이다.

이걸 잘 붙여쓰고 MANIFEST 부분은
<application 이라는 선언 위에이렇게 권한 부여하는 코드를 넣어준다.
원래 하고자 했던 주기적으로 와이파이 리스트를 보는것은 할 수 없을 것 같다.
여러 게시글들을 보니 와이파이 스캔을 하는 것은 안드로이드 스튜디오 자체에서 건드릴수 있는것이 아니라고 한다.

아마 휴대폰 자체에서 조절하는것같다.
너무 랜덤하게 리스트를 읽어서 지금 진행하려는 프로젝트가 어떻게 방향을 잡아야할지 또 정해봐야겠다.
현재는 약 7~10초에 한번씩 와이파이를 스캔하고 로그로 뽑고 있는것을 볼 수 있다.

2018년 7월 25일 수요일

[안드로이드 스튜디오] 주기적으로 뭔가 실행되게 하기

현재 만들고 있는 어플에서 주기적으로 뭔가를 실행해야한다.
우리 팀 같은 경우는 어플 실행 중 주기적으로 접근할 수 있는 와이파이 리스트를 갱신해야하는데 기본개념이 약하다 보니까  계속 구글링하고 git을 뒤지면서 코드들을 봤다.

발견한 코드들을 우리 코드에 적용시켜보고 꺼져버리면 다시 다른것을 적용시키는 식으로
진행했는데 내가 발견했던건 이 방법이다.


Runnable 함수를 이용하는 것인데 일단 가볍게 와이파이 리스트를 바꾸기 보다는
어플 안에있는 텍스트를 바꾸는 식으로 테스트 해보았다.

우선 소스!!!!





 

이런식으로 5초에 한 번씩 텍스트(숫자=numval)이 ++된다.

이를 이용해 우리는 주기적으로 와이파이 리스트에 접근해보게따 호ㅏ이팅!

2018년 7월 21일 토요일

[IoT Innovation Challenge CAMP] 2018-07-18~2018-07-21 IoT챌린지 캠프

6월쯤..우연히 인터넷을 보다가 IoT챌린지라는 대회가 있다고해서 한 번 지원해볼까~?
하면서 두 명의 친구를 모았었다.

친구들도 호의적이였고 서로 아이디어를 수집하다가 시각장애인에 관련된 아이디어로 제출 해보기로 했었고 기획서를 만든 후 제출했었는데 한동안 잊고 있다가 얼마전 한 통의 문자를 받고 서로 기뻐했었다.

1차 서류 심사에서 우리의 아이디어가 통과했고 챌린지 캠프를 통해 IoT플랫폼(ARTIK 053, ARTIK 710, ARTIK CLOUD등)의 기술 교육, 사업화 비즈니스 코칭 그리고 기술 코칭 및 멘토링을 진행한다기에 "아틱"을 접해보지 않은 우리에게 좋은 기회라고 여겼고 캠프에 참여했다.

경기도 양평의 블룸비스타 호텔에서 3박 4일간 진행되었고 총 130여명의 사람들이 모였다!

처음 도착하자마자 오리엔테이션....;;
아틱 053과 710 기본개념??.. 캠프기간동안 이 책으로 배웠다.
그리고 반팔도 받았다.. 4일내내 저 옷만 입으라는 명령도 함께!!

내가 프로그래밍..?이라기엔 허접하고 그냥 알고리즘 문제 푸는게 재미있어서
컴퓨터 언어에 관심을 갖게 되었었는데 전공도 아니다보니
하드웨어와 소프트웨어 이렇게 두 개를 한 번에 개발해본 경험이 없었는데
이번 기회에 제대로 도전하는것 같다.

더군다나 아틱이라는 모듈 자체가 삼성전자에서 만든것이긴 한데
뭐 제대로 된 교육서도 없고 그냥 정말 모듈을 팔기만 할 뿐 개발은 알아서? 이런 느낌이라
구글에서 아무리 검색해도 한글로 된 설명은 거의 제로라고 보면 될 것 같다.
영어로 검색하면 조금 나오지만...나는 영어를 못해..ㅠ

첫째날은 간단하게 710 모듈을 이용해 LED불 켜는 정도? 만 배웠는데

여기서도 문제가 많았다.
어떤 모듈은 OS가 FEDORA로 다운 받아져 있고 다른건 UBUNTU로 되어있어서
초반에 국중진(상명대) 교수님이 알려주는 코드들이 팀마다 되고 안되고 했다.
더군다나 대부분 리눅스나 CMD도 안다뤄본듯해서 나도 거의 모르는데 완전 모르는 사람도 있더라....
한 개의 개념을 알려주면 거의 30분씩 지나갔다.

호텔이라 그런지 식사는 엄청 좋았고 맛있고 좋았다!!!!!!
근데 배식이라.. 밥이 적은건 함정...밥을 두세공기씩은 먹어야됨..



이튿날 오후 교육 시작 전 이윤석 교수님의 비즈니스 강의

기본적인 스케쥴은

09:00 아침 기술 교육(아틱 053 OR 아틱 710)
12:00 점심
13:00 오후 기술 교육
18:00 저녁
19:00 ~ 팀별 or 개인 자습, 멘토링

이런 식으로 진행되었다. 꽤 타이트한 스케쥴이었고
식사시간이 짧아서 그냥 밥먹고 바로 바로 교육장에 들어왔다.
쉬는시간은 자습이 끝난 후 거의 21시 정도부터였다.


셋째날 BIG GLOBAL 에서 강연을 해주셨다. 

삼성전자에서 후원하는 대회라 그런지 빵빵...?


그리고 마지막 날 21일 .. 멘토들이 팀마다 필요하다고 생각한 만큼 아틱을 수령 받았고
왜 인지는 모르겠는데 우리는 710 두 개, 053 두 개씩 받았다.
원래 053 두 개 710 하나였던것 같은데 뭐 많으면 선택지가 더 다양해지니까 좋은거겠지



꽤 좋은 경험이었다. 지금까지 대학생활 하면서 한번도 대외활동을 해본적도 없고
더군다나 이런 공모전은 처음이다.

9월 30일까지 프로토타입 결과물을 만들어 약 12~16팀이 뽑히는데
여기서 뽑히면 KES(korea electronic show)에 결과물을 전시하고 소개하는
자리를 잡을 수도 있다고 한다. 우와아ㅏㅏㅏㅏ

일단 목표는 9월 30일까지 어떻게 해서든 만들어야한다.

우리 팀은 안드로이드 어플, 아틱 클라우드, 053에서 송신 710에서 송수신&신호

할 것이 많다. 빠세세세ㅔㅔㅔㅔㅔㅔ!!!!!!

한 번씩 개발 일지? 처럼 과정을 올려 볼 생각이다.
아틱에 관련된 한글 자료들이 많지 않다. 내가 만들면서 생겼던 에러들 해결했던 방법들을
올리며 다른 사람들도 나중에~ 도움이 되었으면 좋겠다.

2018년 6월 18일 월요일

개발?


컴퓨터에 관심을 갖게된게
아니다 컴퓨터가 아니라 알고리즘이라고 해야겠다.

사실 어려운? 알고리즘 문제는 거의 한나절 동안 푼다.. 이런 문제들이나 잘풀지ㅋ


알고리즘 문제 푸는것에 관심을 갖게된건 작년 한 8~9월 쯤이었다. 
그 전까지는 그저 소프트웨어공학을 부전공으로 하고 있는 대학생이었으니까
시험에 관련된 내용이 아니면 거의 모르고 있었다.
그마저 시험 관련내용도 다 까먹었다.

4학년 2학기가 시작되는 17년 9월부터 국내 IT기업들이 알고리즘문제푸는 것으로 필기시험을 대체하고있다는 소식에 취업때문에 알고리즘 문제를 풀어왔다.

결국 지금까지 취직은 못하고 있다. 그냥 백수다.
최종 면접에서 두 번 낙방..지친다 정말..

-함께 모여서 이런거..?해보고싶다 (Sharon Gaudin/IDG (IDG Worldwide)
공부를 하고는 있는데 뭘해야할지는 모르겠고 
막상 개발을 하자니 어떤걸 개발해야될지도 모르겠고
사실 개발이라는 단어를 붙일만한 프로그래밍을 해본적도 없어서
힘들다..


친구들과 함께 공모전이나 나가보려고해도 
아이디어도 없고 능력도 없고ㅋㅋ
그래도 일단 도전해볼거다

취업은 해봐야되니깐!


앞으로 이 블로그에 
개발이나 취업이나 공부나 관련된 내가 한 모든 것을 기록할 것이다.

혼자서 기록하고 하루를 복기해보며 다음 하루를 열심히 살아봐야지

[백준 16236] 아기 상어

[ 백준 16236 : 아기 상어 ] 2018 삼성전자 sw직무 하반기 기출문제입니다. 역대 삼성전자 기출문제가 그렇듯 역시나 BFS,DFS,완탐,DP,단순구현 입니다. 저는 문제를 단순히 BFS로 풀어갔습니다. 조건만 잘 지킨다면 한번에 ...