반응형

결론부터 말하면,

코드는 완벽(?)했는데 메모리 부족문제가 발생했고

 

회로도는 문제가 없는데.. 브레드보드에 테스트할 때도 문제가 없었는데

납땜하고 나서 문제가 생겼다.

 

 

 

 

 

 

 

 

 

 

내가 아두이노에 관심이 생긴 것은 코드게이트 2018 때 였다.

 

그 때 주제가 'IOT와 스마트 시티'였나..?

그래서 운영되는 부스들이 그 쪽과 관련된 내용들이었는데, 그 중에서 아두이노랑 CAN통신 모듈을 이용해서 자동차 계기판을 조작하는 부스에 참여를 했었다. 그 때 처음 아두이노를 다뤄보고 아두이노 IDE를 깔았었다. 다른 부스에서는 적외선 신호값을 읽어서 그대로 보내는 리모컨 복제(?)하는 거에도 시도를 했었다. 이때 값을 읽는 것은 성공했었는데, 다시 보내는걸 실패했어서 그런지 이 이후로 아두이노와 적외선쪽으로 건들여보고 싶다는 생각을 계속 해두고 있었다.

 

 

 

2학년때 와이파이 패킷 스니핑으로 시도를 했었고 이게 나중에 아두이노에 달리는 와이파이모듈로도 가능하지 않을까. 못해도 deauth패킷 날리는 것정도는 가능하지 않을까라는 생각을 가져왔다. (여기에다가 적외선 신호 복사기능까지 넣는다면?!)

 

 

 

19회 해킹캠프때 무승님의 RFID 발표를 너무 재밌게 들었고, 아두이노에 연결할 수 있는 rc522를 알게 되어 MIFARE Classic 카드 정도는 간단히 복제가 되지 않을까 라는 생각으로 "해킹툴" 기능에 추가를 했다.

 

 

 

3학년 2학기때 본격적으로 위 아이디어를 실현시키기 위해 부품들을 알아보고 구매를 했다.

처음에는 와이파이쪽 도구를 만들기 위해서 아두이노에 와이파이모듈을 달 생각이었다. 그런데 esp8266이 달려있는 nodemcu라는게 있었고, 이걸로 이미 deauther을 만드신 분이 계셨다.

 

https://github.com/spacehuhn/esp8266_deauther 

 

spacehuhn/esp8266_deauther

Cheap WiFi hacks. Contribute to spacehuhn/esp8266_deauther development by creating an account on GitHub.

github.com

 

 

 

 

그래서 nodemcu로 구매를 하고 위 소스코드에 IR과 RIFD를 제어할 코드를 추가해서 deauther은 web으로 제어를 하고 deauther을 제어하는 cli를 막고 ir과 rfid를 cli로 제어할 생각이었다.

 

 

 

ir receiver와 ir led를 시리얼로 제어해서 신호를 받고 다시 보내는 코드를 작성했고, 테스트에 성공했다.

 

다시, 모든 연결을 빼고 rc522만 달아서 카드를 읽고 복제하는 코드를 작성했고, 테스트에 성공했다.

 

 

 

이 두 개를 합치는 과정에서 문제가 발생했다.

 

두 개를 합친 코드는 문제가 없었다. nodemcu 핀사용에 문제가 있었다.

 

 

D0 부터 D8까지 내 맘대로 이용해먹을 수 있는 건줄 알았는데.. 아니었다.

 

 

 

D0는 sleep모드 wake용

D3은 플래시 버튼에 사용되고

D4, D8은 풀업저항필요

 

D1, D2, D5, D6, D7만이 범용으로 사용가능한 핀이었다.

 

 

IR에서 각 핀 하나씩, 총 2개를 사용하게 되고, rc522모듈이 5개의 핀을 사용하게 되어 2개의 핀이 오버가 된다. 오버된 핀을 아무 디지털 핀에 꼽고서 코드를 업로드 했을 때 업로드가 되지 않는 문제가 발생하였다.

 

(지금와서 생각난건데, deauther에서 네오픽셀 led를 SD2에 연결한다. SD1~3 이거 범용사용 되는거 아닌가?? 모르겠다. 아니 근데 deauther에 있는 위키에서는 sd2랑 sd3가 Flash에 사용된다고 써있네?)

 

 

 

 

 

 

그래서 만들던 프로젝트를 다시 구성해야 했다.

 

 

먼저, nodemcu로는 deauther만 구동하도록 했다. 위키 따라해서 만들었다. 납땜질할땐 버튼하나 더 늘렸다. back용으로.

 

위키:

https://github.com/spacehuhn/esp8266_deauther/wiki/Setup-Display-&-Buttons

 

spacehuhn/esp8266_deauther

Cheap WiFi hacks. Contribute to spacehuhn/esp8266_deauther development by creating an account on GitHub.

github.com

 

제작:

https://mandu-mandu.tistory.com/337

 

아두이노로 해킹도구 만들기 (1) - esp8266 deauther

 

mandu-mandu.tistory.com

 

 

 

브레드보드:

 

만능기판:

 

납땜 후 글루건으로 더 고정해주었다.

 

 

 

 

 

 

 

 

 

그리고 떨어져 나온 ir과 rfid는 사용가능한 핀 개수가 많은 아두이노 나노를 이용하기로 했다.

(아두이노 나노로 바꾸면서 ir관련한 코드를 아두이노나노에 맞게 바꿔주는 작업을 해야했다.)

근데 사용가능한 핀이 많은 아두이노 나노에 핀 7개만 쓰기에는 조금 아까워서 여러 기능들을 추가하기로 했다.

https://mandu-mandu.tistory.com/338

 

아두이노로 해킹도구 만들기 (2) - 미세먼지 센서 + IR + RFID

 

mandu-mandu.tistory.com

 

 

1. 미세먼지 센서 + 온습도 센서 + OLED 디스플리이 + 네오픽셀 LED + CDS 센서

 

심프팀 영상을 보고 만들고 싶어서 추가하게 되었다.

https://www.youtube.com/watch?v=yMIlVDL0C9s&t=224s

https://www.youtube.com/watch?v=qH650QLNrW4

 

평상시엔 미세먼지 센서로 위장할 수 있잖아?

 

 

CDS 조도센서는 달 생각이 없었는데, 집에 굴러다니길레 추가해주었다.

 

 

 

2. 스위치

안쓰는 모듈 전원 차단

 

 

 

3. 버튼과 네오픽셀 LED

버튼은 시리얼을 사용하지 않고 버튼만으로 ir이나 rfid를 제어할 수 있도록 추가를 해주었다.

 

네오픽셀 LED를 또 추가한 이유는 위에서 사용한 네오픽셀 LED는 미세먼지 상태 인디케이터이고, 이 네오픽셀 LED는 모듈이 어떤 상태인지 알려주는 용도이다.

 

 

 

 

 

 

 

다 구매하고 연결해서 코드를 다 짜고서,, 코드만 업로드 하면 되는데,

여기서 nodemcu에서는 신경도 쓰지 않았던 메모리 부족현상이 터진다.

 

rfid cloner 하나만 해도 메모리를 다 와그작 먹어버렸다.

 

메모리 문제해결을 위해 문자열 최소로 남기고 F() 사용해서 롬으로 넘기고 자료형을 가능한 타이트하게 했지만 역부족이었다. 모든 변수를 롬으로 넘겨서 사용하면 되지 않을까 싶기도 한데, 속도가 느리고, 읽고 쓰는게 너무 불편했다,

 

결국 나머지 모든 기능 과 rfid clone기능을 분리하기로 해서 rfid clone을 사용할 때에는 rfid clone 코드를 업로드 하는 방식으로 사용하기로 했다.

 

와! 메모리 문제는 해결을 했다.

 

 

 

브레드보드:

 

만능기판:

 

백엔드는 원래 지저분한거다

 

 

 

 

 

 

 

이제 새로운 문제는 만능기판에 납땜을 하고서 터진다.

 

브레드보드에 연결해서 테스트했을때에는 전혀 문제가 없었다.

내 납땜실력이 똥이라서 쇼트가 난건지, 기판에 달기 위해 새로 부품 배치도나 회로도를 다시 설계한게 문제인건지는 모르겠지만 아래와 같은 문제들이 생겼다.

 

 

nodemcu를 사용한 deauther의 경우

0. 1번째 버튼 무반응.

해결 : 1번째 버튼은 SD3핀으로 재연결

 

 

1. 2번쩨 버튼 계속 입력되고 있는 현상

해결 : 그냥 해당 핀으로 입력 안받게 해서 2번째 버튼 미사용. (나중에 2번째 버튼도 SD1으로 옮겨줘봐야겠다.)

 

 

작동에 문제가 없도록 해결 가능했다.

 

 

 

 

 

 

아두이노 나노를 사용한 종합 도구(?)의 경우

0. 아날로그 버튼 문제

저항과 아날로그 입력을 이용해서 버튼 입력에 따라 전압이 다르게 입력이 되는 것을 이용한 것인데, 두 개 버튼이 동시에 눌리고 있는 것으로 계속 입력이 되었다. 

 

설계상 문제인건지 전류가 어디로 새는건지.. 난 못찾았다.

해결 : 못했다.

 

 

1. rc522 스위치 제어 문제

이건 내 테스트 부족문제이기도 하다.

rc522에서 MOSI 와 3.3v 연결을 끊으면 rc522의 led가 완전히 꺼짐을 찾아내서 해당 부분에 스위치를 달아줬다.

 

근데 문제는 연결이 끊겨있는 상태에서 아두이노 나노가 부팅이 되면 led가 들어오고 스위치 여부에 상관없이 rc522의 led가 항상 점등된다...

 

해결 : 못했다. 저항 다 끊어버리고 아날로그 input핀 2개 각각 연결해줄까..

 

 

 

2. 조도센서에 따른 네오픽셀 led 조절

네오픽셀의 brightness 함수가 어떻게 동작하는 건지 모르겠다. 조도센서를 좀 어둡게 하면 led가 갑자기 확 밝아진다. 근데 완전히 가리면 0이 되는지 밝기가 0이 되기는 한다.

해결 : 못했다.

 

 

 

 

 

 

 

 

 

 

 

 

아두이노 갖고 노는데 너무 많은 시간을 사용해버렸다.

어서 LOS 마저 풀어야지..

반응형

+ Recent posts