LAINO의 개발노트

직접 휴대폰을 만들어보자. 2부 본문

임베디드 , ARM, 아두이노/뻘짓

직접 휴대폰을 만들어보자. 2부

Laino 2019. 6. 29. 20:45
또 오랜만에 쓰는글 같다. 다음 글에 또 소개하겠다 해두고는 실제 후속편을 쓰는건 처음인거같다. 그동안 관리가 소홀했던점 우리 독자들에게 참 미안하다.

사실은 내 블로그 그냥 나 혼자 적어두고 보고 그러는 용도였는데, 솔직히 읽는사람이 있을줄은 몰랐다. 어느날 지인이 연락와서는 글좀 자주 써달랜다 내가 너무 안쓴다고,

배경사진 딱히 할게없다. 제품이 나온게아니라서

부제 : SIM7100e 개발 보드를 통한 간단한 전화 / 문자 사용기 및 개발

지난번에 http://blog.laino.ml/16 "직접 휴대폰을 만들어보자. 1부" 에서 소개한 SIM7100e의 제품이 한국을 도착했다. (사실 며칠 된거같다)구성품은 별거없다. 개발보드 본체, 안테나 두개, GPS/글로나스용 안테나 하나 (뭐이리 긴가 싶다) 이렇게 있다.

별거없다, 정직한 구성품들이다. 블로그에 편집하면서 보니 며칠전에 받은 르네사스의 시너지 스타터킷이 보인다. 이거도 리뷰해야겠네

지난번에 구입한 Emaxgroup 이친구들이 내가 데이터시트랑 참고할만한 레퍼런스들을 달라했더니 이 개발보드 스케메틱이랑 PCB자료, 그리고 이것저것 문서들을 보내왔다. 사실 진짜 놀란건 문서였는데 AT커멘드 제어 매뉴얼 도큐먼트가 500장이 넘는것을 깨닫고나서 부터이다. 별거없을줄 알았는데 뭔놈의 기능이 그렇게 많나 싶다.

이제 올거 왔으니까 만들어야지? 뭐부터 할꺼야?

배송되기까지 한 일주일정도 시간이 있어서 일도하면서 놀러도다니면서 틈틈히 생각해봤다. 아마 이번 프로젝트는 다음의 과정으로 진행되지 않을까한다.

  1. AT 커멘드를 통한 전화 / 문자 송수신 체크
  2. 대추웅 라이브러리화 해서 내가 쓰기쉽도록 래핑해두기
  3. 기능과 하드웨어 스팩을 결정하고 PCB만들기
  4. 겉 외관을 위해 앤클로저를 비비거나 기구물 설계하기
  5. 필요한 추가기능들 만들기

이정도 될것 같다.

일단 라이브러리화를 해서 쓰려고 하는데 솔직히 말하자면 메인 프로세서를 아직 고르지 못했다. 대충 후보군에 있는거는

  1. 아두이노 우노기반으로 atmega328 하나 박아두고 아두이노 올려서 오픈소스로 개발하는거랑
  2. mbed 기반으로 대추웅 지원되는 싼 프로세서 넣고 오픈소스로 개발하는거랑
    1. 사실 이건 JLink /  DAPLink 관련해서 좀 돈이 많이들거같다. 안그래도 얼마전에 DAPLink관련해서 ARM 엔지니어랑 이야기한적이 있는데 아직 여러 제품을 또 지원하는거도 아니여서 미지원 제품의 경우 결론이 직접 개발해다가 DAPLink 프로젝트에 PR하랜다...

  3. nRF52810 기반 SoC 달아서 블루투스 관련 제품도 같이 쓴다랑

뭐 이정도 되는것 같다. 보급해서 진입 장벽을 낮추려면 솔직히 1번이 최고이다. (? 혼자쓸거라매 왜 딴놈들 생각하고있어)

아래로 갈수록 익숙하지 않은사람들의 진입장벽이 높아지는건 팩트긴하다. 댓글로 여러분의 남겨준다면 적극 반영해보도록 하겠다, 아직까진 미정이다.

 

하드웨어 스펙은 뭐 위에 이야기랑 상통되는거긴 한데 남은 스펙이라 한다면 디스플레이와 입력장치정도 되겠다.

디스플레이는 2.4인치 TFT 디스플레이 이런거를 뭐 사용해볼지 아니면 그냥 0.96 oled 이걸 지지고 볶아볼지 고민중이다.

알겠으니까 뭐 그런건 니 문제고, 돌아가는거나 보여줘봐

AT커멘드로 제어를 위한 준비

AT 커멘드로 제어 하면되니까 스케메틱 한번 확인해보고 바로 제어를 하면 될줄알았다.

동그라미친게 USB - UART CH340 칩이다
스케메틱 대로라면 CH340이 달려있고 이게 USB에 바로 연결이 되있다
아니 CH340은 어따 팔아먹고 중국어로 인쇄된 실크스크린만 있냐

앗! 이놈들이 CH340칩을 팔아먹었다 ㅠㅠㅠㅠ

대신 위쪽에 UART 핀을 따로 빼두긴 했다. 그냥 원가절감 당한거같다. (4핀)

 

그래서 열심히 헤더하나 땜질해서 붙여줬다.

집에 굴러다니는 CP2102의 USB-UART FTDI를 통해 보드를 연결 하고 문서를 읽어보며 대충 쓸만한 AT커멘드를 찾았다. (전화 문자에 관한 간단한거들) 여기에 정리해둔다

머 하는놈인가 명령어 비고 예시
전화 걸기 ATD[전화번호]; 꼭; 붙여줘야한다 안그럼 전화는 걸리나 오류난다 ATD01012340101;
전화 받기 ATA 전화 오고있는중에 쓰면된다. 오면 RING라고 뜬다 ATA
전화 끊기 ATH 전화중에 끊으면된다 ATH
발신자번호표시(걸려오는중에 RING만떠서 화난다) AT+CLIP 전화 걸려오는도중에 번호 띄워준다 (기본은 안뜬다) AT+CLIP=1
네트워크에서 시간 자동으로 불러오는 모드 설정 AT+CTZU 시간대랑 시간 설정해준다 AT+CTZU=1
문자오면 자동으로 AT커멘드로 콜백해주기 상세 참조 상세 참조  상세 참조
문자 전송하기 상세 참조 상세 참조 상세 참조
문자 읽기 AT+CMGR 예시는 최근 한개를 읽는것 AT+CMGR=1

문자오면 자동으로 AT커멘드로 콜백해주기

이걸 해놔야 내가 수동으로 안읽어도 문자오면 바로 노티피케이션을 해줄수 있다.

AT+CNML이라는 커맨드인데 문서에 나온대로 값을 설정하니까 잘 되더라

AT+CNML=1,2,0,0,0

이렇게 치면 설정 완료이다.

문자 전송하기

문자 전송하는게 좀 까다롭다. 준비물 또한 필요한데, 같이 알아보자.

일단 아스키 코드로 케리지 리턴이랑 ctrl-z/esc에 관한 코드를 같이 보내야한다. 근데 나는 사실 세상에서 가장 편리한 시리얼 모니터 + 트랜스퍼라고 생각하는 아두이노의 시리얼 모니터로 보내고 있었다. 케리지 리턴은 어떻게든 보내지는데 ctrl-z는 답이없더라.

윈도우의 경우 테라텀이있는데 맥에는 그런게 없어서 열심히 찾아보니 CoolTerm이런게 있더라

 

아무튼 일단 먼저 택스트 모드로 변경해야한다.

AT+CMGF=1 를 날려주어 PDU모드에서 택스트 모드로 변경하도록 하자

 

그다음 AT+CMGS="01045433333" 이런식으로 작성한후, 여기서 다른게 아니라 케리지 리턴을 날려한다.

그렇게 되면 반환되는 프롬프터가 >로 변한다 그때 이제 할말을 쓰면된다. 다 쓰고나서는 ctrl-z를 눌러 보내면 전송이 된다.

글로만 입털지말고 사진이라도좀 보여줘봐 답답한놈아

일단, 기본 설정은 밴드레이트 115200로 작동한다 잘 설정하도록 한다.

 

ATD전화번호; 를 실행한모습

 

 

커멘드에 앞에 A가 한글자 더들어갔다 ATD맞다

걸려온 전화를 받는거는 그냥 전화 오는상태에서 (사진처럼 RING라고 뜬다 저때 ATA를 치면 받아진다)

 

해당사진은 안받아서 부재중 전화가 된 사진

이건 문자를 보내고 받은건데, CMGS를 날린거가 보낸거고 CMT로 온건 받은거다. 한글은 어찌어찌 또 처리해줘야겠다 실제로 디스플레이에 띄울때는

첫번째 빨간색쪽으로 가린번호 친쪽이 문자를 보낸거고

두번째랑 세번째는 문자를 보낸건데 한글이라 그렇다.

그럭저럭 잘되는거같다.

일단 전화 문자는 다 구현한거네?

응 이거 걍 이제 래핑해서 바로 쓸수있도록 라이브러리로만 만들면될것같음.

다음편엔 아마 이걸 이용한 간단한 라이브러리 하나 올려두는거하고 PCB설계에 관해서 떠들고있지 않을까?

혹시 모르니까 다음편을 기다리기 싫은 친구들을 위해서 AT 커멘드 문서를 올려줄게

 

SIM7100_ATC_EN_V0.07.pdf
4.31MB

 


 

 

궁금한게 있으면 항상 댓글이나 taeil@ants.dance편으로 메일 부탁드립니다!!

아참 크몽 열었어요, 관련 제품의 개발이나 임베디드 / 안드로이드 / UX 설계 및 개발 자문 / 컨설팅 문의는 이쪽으로 주셔도 좋아요!! (매일을 더 사랑합니다 ㅎㅎ..)

 

https://kmong.com/gig/156633

 

프리랜서 마켓 No.1 크몽

디자인, 마케팅, 프로그래밍, 영상제작, 과외, 레슨 등 각 분야 5천 여명의 전문가들이 비즈니스에 도움을 드립니다.

kmong.com

 

Comments