드론을 이용한 배달 성공 in 미국

안전, 보안상의 이유로 드론을 이용한
물품 배송을 금지하고 있던 미국이었지만,
이번에는 예외적으로 승인을 받은
드론을 이용한 배달이 성공적으로 완수 됐다고 하네요~

미국에서 규정이 완화된다면 생길
엄청난 파급효과가 기대됩니다^^

http://biz.chosun.com/…/html_…/2015/07/20/2015072001162.html

드론은? ICbanQ에서!!
(http://www.icbanq.com/shop/templete_list.asp…)



라즈베리파이에 Window 10 IoT core 올리기

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

어가며

                                                                                                                              

아직 정식 데스크탑용 Windows 10 버젼이 나오지 않았다. LED에 불을 켜고 일반 GPIO를 제어하려면 데스크탑 PC에 Windows 10을 설치한 후 익스프로러 10을 기반으로 Visual Studio 2015RC를 설치한 후 제어를 해야 한다. 아무래도 윈도우 응용프로그램 개발이 가능하지 않으면 초기 사용에 많은 어려움이 있을 것 같다.



보기

                                                                                                                              

1. Raspberry Pi 2 

  (http://www.icbanq.com/shop/product_detail.asp?prod_code=P005686826&catg_code=115185)

2. SD memory (Class 10 이상) 

      제가 구입한 SD메모리 스펙은 아래와 같습니다.



료 살펴보기

                                                                                                                              

1. 라즈베리파이
   다음과 같은 스펙을 가지고 있다.
 

2. SD메모리 
  SD메모리는 16G(Class 10) 이상을 권장한다.  여기서 Class10 은 최소 쓰기 속도를 나타내는데 일반적으로 배속이라 한다.  자세한 내용은 다음 링크를 참고한다.(http://www.bloter.net/archives/230516 ) 




치하기

                                                                                                                              


2. 프로그램 설치하기
  2.1 가상드라이버 툴로 IOS이미지를 마운트 하기
       IOS이미지를 마운트하면 해당 드라이버에 Windows_10_IoT_Core_FPi2.msi 파일을 볼 수 있다. 이를 선택하여 프로그램을 설치한다.



  2.2 설치완료 
      설치가 완료되면 [모든 프로그램]에서 2가지 프로그램을 볼 수 있다. 하나는 WindowsIoTCoreWatcher와 다른 하나는 WindowsIoTImageHelper이다.  WindowsIoTCoreWatcher는 현재 접속되어 있는 디바이스의 목록과 상태를 모니터링하는 프로그램이고 WindowsIoTImageHelper는 Win32DiskImager와 같이 윈도우용 이미지를 굽는 프로그램이다. 



3 이미지 굽기
 3.1. sd메모리 선택하기
    SD메모리를 데스크탑 컴퓨터에 연결한다. 그리고 이미지를 굽기위해 WindowsIoTImagerHelper를 실행한다
    해당 SD메모리를 선택한다. 



 3.2. 이미지 경로설정
    그리고 이미지를 구울 원본 이미지를 선택해야하는데 경로는 다음과 같다 ( 64비트 기준 -> C:\Program Files (x86)\Microsoft IoT\FFU\RaspberryPi2 )


  3.3 이미지 쓰기
     콘솔창이 나온 후 이미지 작업이 끝나면 없어진다.




4. RPi에서 Windows 10 IoT실행하기

 1. sd메모리는 RPi에 삽입하기
   이미지를 쓰기한 SD메모리를 RaspberryPi에 삽입한다.

 2. 부팅하기
    조금 기다리면 다음과 같은 화면들이 나오면서 설치가 완료된다.
    GUI환경이 제공되지 않기 때문에 아직 할 수 있는 것이 없다. 




   

3. 설치완료
  설치가 완료 되었으면 데스크탑컴퓨터에서 WindowsIoTCoreWatcher로 해당 RPi를 확인할 수 있다.

 


 

재미있게 즐기는 아두이노 시리즈 -술래잡기 게임

시작하기 


재미있게 즐기는 아두이노 시리즈를 기획중입니다.

아두이노는 그 어떤것도 상상하면 만들수 있게 해주는 신통방통한 친구입니다.

가볍게, 재밌게, 즐겁게 아두이노를 가지고 놀 수 있도록 다양한 시도를 하고 있습니다.

 

오늘 만들어볼 즐기는 아두이노는 바로 술래잡기 게임입니다.

먼저 영상을 보고 시작하겠습니다.

 

 



 

그렇습니다. 자신의 차례가 되면 버튼을 눌러 화살표가 나오는 명령대로 수행하면 됩니다.

 

 

재료준비하기


우선, 게임판을 구해야 하는데 다이소나 홍대에 있는 버터를 좋아합니다.

가격도 저렴하고 재미있고, 디자인이 상대적으로 좋은 것들이 많이 있습니다.

게임판을 파는데 가격은 잘 기억이 나지 않지만 비싸지는 않습니다.

 

직접 만들어 쓰셔도 좋겠습니다.^^

 

 

 

서보모터 분해하기


이런 장난감 만드는데 서보모터만한것이 없는것 같습니다.

가격도 저렴하고 쉽게 구할 수 있습니다.

 

한가지, 우리는 서보모터의  원래 기능인 각도로 움직이는 기능보다는 단지 저렴하고 작은 모터를 원했습니다.

그래서 과감하게 분해합니다.

 

 

IMG_0012 IMG_0013 IMG_0014 IMG_0016 IMG_0017

 

녀석 결국 모터입니다. 작은 보드에서 플러스와 마이너스를 납땜으로 분리해냅니다.

 

 

 

게임판에 연결하기 


IMG_0018 IMG_0019 IMG_0020 IMG_0021 IMG_0022

 

서보모터와 화살표를 글루건으로 잘 붙입니다.

회전을 해야 함으로 주변에 닺지 않도록 주의합니다.

그리고 판은 서보 모터가 바닥에 역시 닺지 않도록 블록등으로 받혀줍니다.

 

 

 

연결하기


서보모터는 궁극적으로 5V와 Gnd를 연결해주면 회전합니다.

따라서 두개의 선을 각각 A0, A1 즉, 아날로그 0번과 1번에 연결해 줍니다.

 

그리고 버튼을 준비하여 330오옴 저항을 연결하고 Gnd로 다시 하나의 선을 3번핀으로 연결하고

다른 한쪽은 5V에 연결해줍니다.

버튼을 누르면 5V가 되어 인지할 수 있습니다.

 

덤으로 13번 핀에는 LED를 연결하여 줍니다.

 

 

프로그래밍


게임의 로직은 너무 도 간단합니다.

버튼을 누르면 10초동안 모터를 회전시켜줍니다.

그리고 화살표가 멈추면 게임이 끝납니다.

 

다시 버튼을 누르면 회전합니다.

자신의 차례가 오면 버튼을 눌러 주면 됩니다.

 

따라서 프로그램도 아날로그 핀 0번과 1번을 출력으로 설정하고

필요에 따라 HIGH, 혹은 LOW로 설정하여 사용하시면 됩니다.

 

소스는 깃헙에 있습니다.

소스 , https://github.com/dimplejuno/FunArduino

 

 

관련상품 : DFRobot 비기너 키트 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005605397&catg_code=101141152

 

VR, AR의 성공 조건 7가지!

VR(가상현실): 생성된 가상의 공간에서 보고, 듣고, 느끼는 것
AR(증강현실): 실세계에 3차원의 가상 물체를 겹쳐 보여주는 것

한창 뜨고 있는 VR, AR의 성공 조건 7가지!!
함께 확인하실까요?

http://www.asiae.co.kr/news/view.htm?idxno=2015071410144191246



세기의 로봇 대결!!

일본의 스이바도시 공업사에서 만든 "쿠라타스"
vs
미국의 메가봇이 만든 "마크2"

1년 뒤 있을 세기의 대결의 승자는???!!!



로봇을 위한 Go 프로그래밍, 한발 더 들어가기

 

Go 프로그래밍을 위한 Sublime 플러그인 설치

Go 프로그래밍 들이대기

Go 프로그래밍 라이브러리 만들기

로봇을 위한 Go 프레임워크 Gobot

 

 

Go Robot Framework, Gobot - GPIO Button

이제 한걸은 더 들어갑니다. 간단한 예제 이지만 Gobot 프레임워크를 이해하는데 도움이 될것입니다.

이번에는 가장 기초적이지만 중요한 버튼 콤포넌트를 사용해 보는 예제입니다.

 

위에있는 링크에서 필요한 파일들을 설치하고 준비를 합니다.

 

현재, 시스템에 Go 언어가 설치되어 있고 경로도 설정되어 있습니다.

지난번에 Gobot 에서 필요한 라이브러리와 예제 소스도 받았습니다.

 

저의 경우는 아래 경로에 예제 파일들이 다운로드 되어 있습니다.

~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples

예제 디렉토리로 이동합니다.

Firmata 올리기 

DFRobot 의 비기너 키트의 보드에 firmata 를 올립니다.

지난번에 올린 상태라면 그 대로 사용하셔도 좋고 아니면 다시 올립니다.

decsers:~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples (master) $ gort scan serial
/dev/cu.Bluetooth-Incoming-Port /dev/tty.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Modem /dev/tty.Bluetooth-Modem
/dev/cu.HojuniPhone-WirelessiAP /dev/tty.HojuniPhone-WirelessiAP
/dev/cu.JunoiPhone6-WirelessiAP /dev/tty.JunoiPhone6-WirelessiAP
/dev/cu.usbmodem1421 /dev/tty.usbmodem1421

위에서 처럼 일단 시리얼 포트를 확인합니다.

시리얼 포트의 이름은 사용하는 아두이노마다 약간씩 다를 수 있습니다.

위에서는 /dev/tty.usbmodem421 입니다.

 

이제 gort arduino upload firmata 명령으로  firmata를 올립니다.
decsers:~/Developments/Go/workspace/src/github.com/hybridgroup/gobot/examples (master) $ gort arduino upload firmata '/dev/tty.usbmodem1421'

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "/var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072"
avrdude: writing flash (11452 bytes):

Writing | ################################################## | 100% 1.84s

avrdude: 11452 bytes of flash written
avrdude: verifying flash memory against /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072:
avrdude: load data flash data from input file /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072:
avrdude: input file /var/folders/rp/xxhqgy6134z_mhvsq_p7z95r0000gn/T/498069072 contains 11452 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.47s

avrdude: verifying ...
avrdude: 11452 bytes of flash verified

이렇게 firmata 가 올려지면 준비는 끝났습니다.

 

 

 

 

소스의 시리얼 포트 수정하기

 

이제 예제 디록토리로 이동하여 에디터로 소스를 읽어옵니다.

sublime 을 사용하신다면 sublime . 을 입력하시면 됩니다.

포트를 찾아서 현재 포트로 수정해줍니다.

여기에서는 /dev/cu.usbmodem421 로 수정했습니다.

 

스크린샷 2015-07-06 오후 5.09.06

 

 

 

 

아두이노 구성하기 

 

이제 아두이노와 프로토타입 쉴드와 버튼과 저항을 준비합니다.

IMG_0038

구성은 버튼을 눌렀을때 13번 LED를 켜고 버튼이 놓으면 꺼지는 구조입니다.

따라서 버튼에 저항을 연결하고 저항을 그라운드에 연결합니다.

다른쪽은 5V 를 걸어줍니다.

 

그라운드에 연결된 반대쪽에서 신호를 체크합니다. 디지털 2번핀으로 연결합니다.

이제 2번 핀에서 버튼의 이벤트를 받을 수 있습니다.

 

버튼이 눌리면 Push 이벤트를, 놓으면 Release 이벤트를 받습니다.

 

work := func() {
gobot.On(button.Event("push"), func(data interface{}) {
led.On()
})
gobot.On(button.Event("release"), func(data interface{}) {
led.Off()
})
}

 

 

 

실행하기 
이제 아두이노의 파워를 뺐다가 다시 넣어줍니다.

그리고 예제 파일을 실행합니다.

go run firmata_button.go

스크린샷 2015-07-01 오전 11.23.11

이제 버튼을 누르면 13번 Led  켜지고 놓으면 꺼집니다.

동작영상 

 

 

 

 




관련상품 : DFRobot 비기너 키트 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005605397&catg_code=101141152


 

로봇을 위한 Go 프로그래밍 맛보기

 

Go 프로그래밍을 위한 Sublime 플러그인 설치

Go 프로그래밍 들이대기

Go 프로그래밍 라이브러리 만들기

 

위에서 Go 프로그래밍에 대한 준비를 끝냈다면 로봇을 만들기 위한 Go 언어 프레임워크인 Gobot을 사용해 보도록 합니다.

시작하기

고봇(Gobot)은 로봇을 위한 재미있고 즐거운 Go 프레임워크입니다.

시작하기 위해서 먼저 필요한것들을 설치합니다.

콘솔에서 아래와 같이 명령합니다.

go get -d -u github.com/hybridgroup/gobot/...

필요한 파일들이 다운로드 됩니다.

 

지원 하드웨어 플랫폼

Gobot  이 지원하는 하드웨어 플랫폼은  현재  15개입니다.

스크린샷 2015-07-01 오전 10.56.22

 

오리지널 참고 사이트는 아래입니다.

http://gobot.io/

 

대부분의 하드웨어 플랫폼을 지원하며 특히 아두이노와 에디슨, 비글, 디지스파크, 라즈베리등이 눈에 들어옵니다. 우리의 최대 관심 플랫폼인 아두이노는 당연 지원합니다.

 

Gort 로 firmata 업로드 하기

gort 가 설치가 되어 있지 않다면 cylon 들이대기  에서 참고하여 gort 를 설치합니다.

gort  가 설치되었으면 gort scan serial 명령으로 연결된 아두이노의 포트를 확인합니다.

포트가 확인되었다면 firmata를 업로드합니다.

콘솔을 새로 열고

스크린샷 2015-07-01 오전 11.17.04

 

아래와 같이 입력하면 아두이노에 firmata 를 업로드합니다.

gort arduino upload firmata '/dev/tty.wch ch341 USB=>RS232 1420'

 

Go 프로그램 실행하기

예제는

$GOPATH/src/github.com/hybridgroup/gobot/examples 에 다운로드되어 있습니다.

Sublime 으로 읽어와서 포트를  수정해줍니다.

스크린샷 2015-07-01 오전 11.21.14

gort scan serial 에서 확인한 포트중에 cu..포트를 찾아서 그 이름으로 바꿔 줍니다.

그리고

프로그램을 실행합니다.

go run firmata_blink.go

스크린샷 2015-07-01 오전 11.23.11

이제 Go 프로그램은 아두이노의 13번 LED를 1초마다 켯다 껏다를 반복합니다.

아두이노의 Blink 와 같은 동작을 하는것입니다.

이렇게 로봇을 위한 Go 프로그래밍이 시작되었습니다.^^

 

Gobot 사이트는 아래에 있습니다.

http://gobot.io/

 

관련상품 소개

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005670094&catg_code=<ype=S

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다] 

라즈베이파이로 텔레그램 봇 만들기[4] - 간단한 텔레그램 봇

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


사용한 품목


1) 라즈베리파이B+ 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005607887<ype=R

 

들어가면서


 지난 포스팅까지 라즈비안 위에 서버를 구성하고 텔레그램 봇을 설치까지 마쳤다. 이제 텔레그램 CLI를 실행시키기 위해 번호를 등록하고 테스트 코드를 돌려보도록 하겠다. 가상번호로 텔레그램 봇을 만들어서라즈베리파이에 있는 텔레그램 번호와 내 폰의 텔레그램이 달라야 명령을 내릴 수 있다고 착각했다. 메일의 '내게쓰기'기능처럼 텔레그램도 나에게 메세지를 보낼 수 있었고 이를 이용해서 반응하도록 했다. 아래 URL을 참고했다. 자 이제 본격적으로 텔레그램 봇에 대해 이야기 해보도록 하자.

http://humit.tistory.com/62

Voxox


 

  처음에는 voxox라는 어플을 이용하여 가상번호를 만들려고 했다. 이 어플로 전화를 받거나 메세지를 받기 위해서는 결제를 해야 된다는 정보를 보고 '뭐, 1달러정도는 할 수 있다'라고 생각했다가 실수로 두번 결제했다. 으아ㅏㅏㅏㅏㅏ. $2.86가 바보 같이 내가 결제한 증거다. 

 

 

 생각해보니 내가 폰에 설치한 텔레그램은 이미 내 폰번호로 등록되어 있었다. 그러므로 텔레그램을 새롭게 쓰기 위해서는 번호를 등록해야 하고, 폰에 설치한 텔레그램에 등록된 번호를 voxox 로 받은 가상번호로 바꿔야했다. 근데 바꾸기 위해서는 텔레그램 서버로부터 코드를 받아야 하는데 그게 쉽지 않았다. 일반적으로 voxox는 아이패드나 블루스택, 지니모션과 같이 전화기능이 없는 환경에서 사용한다. voxox 어플을 설치하고 가상번호를 받아 전화로 쓰거나 카카오톡, 텔레그램을 쓰는 것이다. 그러므로 voxox를 사용하여 굳이 지금 내 폰에 등록된 텔레그램의 번호를 가상번호를 바꿀 필요가 없다는 결론을 내렸다.(블루스택은 기숙사에 서버로 쓰는 컴퓨터에 있어서 지금 당장 해볼 수 없었던 이유도 있었다),(문자로 코드도 안오는 이유도 있었다.)

 

'내게 쓰기' 기능과 간단한 텔레그램 봇


 그래서 '내게 쓰기'기능을 이용해보자고 생각했고, 내 번호를 직접 연락처에 넣고 메세지를 날렸다. 카카오톡에서 해보지 않았고 안될 것 같은 느낌이 들었는데, 텔레그램에서 되서 얼마나 기뻤는지 모른다. 

 

▲좋다!

아래와 같이 번호와 이름을 등록하면 login메세지가 뜬다. 처음에는 메모를 위한 봇을 원했지만, 어벤져스를 보면서 나도 자비스같은 봇을 가지고 싶었다. 생각 같은 것도 정리해두고 스크립트 같은 것을 만들어두고 텔레그램으로 명령을 내리면 자동으로 해주는 것을 하나하나 만들어 갈 예정이다. 훗 재밌겠군 

 

이제 전화번호 등록도 ?瑛릿歐?소스를 짜보도록 하자. 간단하게 hello를 입력하면 world를 출력해주는 봇을 만들 것이다. 이것이 의미가 있는 것이 내 명령에 반응을 했다는 것을 의미하므로 world 출력하는 것 대신에 서버의 db에 접근하여 자료를 검색하고 출력하도록 만들 수 있다. 또, 텔레그램 봇에서도 사진을 보낼 수 있으므로 나만의 사진저장소짤방저장소를 만들 수 있을 것 같다 ^오^

1
2
3
4
5
6
7
8
9
function on_msg_receive(msg)
        if(string.lower(msg.text)=="hello")then
            mark_read(msg.from.print_name, ok_cb, false)
            send_msg(msg.from.print_name, "world", ok_cb, false)
        end
end
 
function ok_cb(extra, secces, result)
end
cs

 lua를 포스팅을 하며 처음 만져보므로 소스에 대한 내용을 이야기는 다음 포스팅에서 하도록 하겠다. 간단하게 말하고 넘어가자면 msg.text를 lower로 소문자를 만들어 "hello"라면 send_msg를 이용하여 "world"를 보내는 것이라 직관적으로 쉽게 알 수 있다. 아래 그림은 hello 명령을 폰에서 날렸을 때 텔레그램 봇에서 world를 보내도록 한 것이다.



 또 재밌는 것은 텔레그램은 웹버전도 제공한다는 것이다. 웹 브라우저에서 텔레그램 인증을 통해 바로바로 명령을 날릴 수 있다. 이를 활용할 수 있는 부분을 생각해봤는데, 외부망에서 사내 서버에 직접적으로 접근하지 않고 텔레그램을 이용하여 서버의 상태를 볼 때 사용할 수 있을 거라 본다. 아래 그림은 웹버전의 텔레그램이다.




마치면서


 이번 포스팅에서 내 명령에 반응하는 간단한 텔레그램 봇을 만들어봤다. 생각보다 텔레그램이 가진 기능이 많아서 재밌는 것을 많이 할 수 있을 것 같다. 흥미진진하다. 또, 웹에서도 텔레그램 봇에 접근가능함을 보였다. 그러므로 웹이나 폰에서 텔레그램 봇에 명령을 전달하면 봇은 서버에 담긴 데이터들(사진, 메모 등)을 나에게 보낼 것이다. 물론 이에 대한 내용은 차근차근히 다음 포스팅에 담도록 하겠다..

관련 상품


라즈베리파이2 보드: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005652343

라즈베리파이2 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005655515

손톱두이노: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005668577

라즈베리파이 전용 방열판 (소): 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P002110427

 

 

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[3] - 텔레그램 CLI 설치하기

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]

 

사용한 품목


1) 라즈베리파이B+ 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005607887&LType=R

 

서론


 지난 포스팅까지 라즈비안위에 서버를 구성했다. 이제는 라즈비안에 텔레그램을 설치해야 한다. 기본적인 구성은 라즈비안 위에 서버와 텔레그램이 병렬적으로 돌아가고 텔레그램이 나의 명령을 받아서 서버의 웹과 데이터베이스에 접근하는 구조를 가진다. 설치하는 방법은 아래 3개의 URL을 참고했다.

http://coffeenix.net/board_view.php?bd_code=1759

http://humit.tistory.com/57

https://github.com/vysheng/tg/blob/master/README.md

설치


 

  설치할 때 먼저 관련 라이브러리들을 설치해야 한다. 그런데 문제는 repository가 잘못 ?榮쩝?repository를 못 찾는 지 라이브러리들을 가져오지 못했다. 무엇이 문제일까? 평소에 라이브러리를 가져오지 못하는 문제는 repository를 찾지못해서였고, 이 문제는 dns와 관련이 있었다. 그래서 /etc/network/interfaces를 아래와 같이 변경했고 문제를 해결했다. 물론 변경 후 네트워크 서비스를 재시작해야 한다. dns서버를 기존에는 한국 코넷?쪽으로 해놨다가 구글 dns서버의 IP인 8.8.8.8로 바꿔줬다.

 

 

라이브러리를 다운받기 전에 아래 명령어를 입력해서 업데이트를 해주자.  

 

 

 

 

 

1
2
sudo apt-get update
sudo apt-get upgrade
cs

 그리고 아래 명령어를 입력하도록 하자. 

 

 

 

 

 

1
apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev
cs

 

 업데이트를 해서 그런지 아래 그림과 같이 라이브러리를 있다고 했다. 물론 없으면 설치해주도록 하자. 설치하다가 딴거 하다가 그래서 중간에 라이브러리를 직접 설치해줬는 지 기억이 안난다. :(

 

그럼 이제 텔레그램 CLI를 설치하기 위한 환경은 모두 갖췄다. CLI는 Command Line Interface로 터미널을 통해 사용자와 컴퓨터가 상호 작용을 하는 방식을 말한다. 우리는 이 텔레그램 CLI를 이용하여 DB나 웹에 접근할 것이고, 개인적으로 CLI가 편하다고 생각할 뿐더러 CLI외에 텔레그램을 db와 웹에 접근하는 방법이 딱히 생각나지 않아서 텔레그램 CLI를 선택했다 ^오^

 처음에는 블로그를 참조해서 wget를 이용해서 다운받았는데, configure 문제가 아래와 같이 있었다. 그래서 github에 제작자가 만들어 둔 방법을 사용하니 바로 ?榮? 역시 만든 사람이 제일 잘 아는 것 같다.

./configure명령을 날리면 체크를 하다가 마지막에 에러를 뱉고 진행이 안된다. 

 

그 문제가 python에 있길래 python 관련 configure를 처리하기 위해 어떻게 해야할까 고민했다. 그러다가 파이썬 관련 configure를 관리하기 위해 apt-get install을 이용하는 포스팅을 봤고 아래와 같이 했지만 여전히 안?榮?

 

위에서 언급한 것과 같이 제작자가 readme에 적어둔 대로 git clone명령으로 설치했다.(원래는 wget을 해서 안?榮? 물론 wget의 문제가 아니라 내가 중간에 뭘 잘못 했을 지도 모른다.)

1
git clone --recursive https://github.com/vysheng/tg.git && cd tg
cs

 이렇게 설치하면 tg 디렉토리로 들어가는데 ./configure와 make를 하면 컴파일을 한다.

 

 

1
2
./configure
make
cs

 

아래 그림은 git clone으로 설치해서 cd로 해당 디렉토리로 이동하고 ./configure와  make를 한다. 뭐가 문제인 지는 모르겠지만 컴파일이 오래 걸리길래 딴 걸 했는데 대충 1시간은 지난거 같다. (그만큼 용량이 크나? 라즈베리파이가 문제인건가?)

 

 

 

 

컴파일을 하고 아래 명령어를 쳐서 번호를 물으면 올바르게 설치 된 것이다. 




마치면서


설치하면서 라이브러리때문에 많은 시간이 걸렸다. 역시 새로운 환경에서 개발을 한다는 것은 개발보다 환경구축에 많은 심력을 소모하게 된다는 나의 지론(?!)을 다시 생각나게 했다. 그리고 다음 포스팅에는 내 텔레그램으로 봇에 명령을 내리기 위해서 가상번호를 만들면서 생긴 우여곡절기와 간단히 만든 텔레그램 봇을 보여주도록 하겠다.

관련 상품


라즈베리파이2 보드: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005652343

라즈베리파이2 베이직 키트: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005655515

손톱두이노: 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P005668577

라즈베리파이 전용 방열판 (소): 

http://www.icbanq.com/shop/product_detail.asp?prod_code=P002110427

 

 

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]


  

 

[아이씨뱅큐 ICbanQ 파워블로거 2기] TFT-LCD에 X윈도우 없이 바로 창 띄우는 2가지 방법

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로아이씨뱅큐의 지원을 받아 작성되었습니다]


[ 사용한 품목 ]

 

- 라즈베리파이 B+, 로터리 엔코더 

- TFT-LCD

 

 

[ 내  용 ]

 

1. Python으로 작성한 Tkinter UI 띄우는 방법


  [목표] Python으로 작성안 GPIO제어 스위치 대화창을 TFT-LCD에 X윈도우 실행없이 바로 출력
    
    아래이 모든 작업은 /home/pi에 작성한다.  
    
       [ Tkinter UI파일 작성 후 저장]
$ sudo nano gui_switch.py

       -아래 파일 작성(라즈베리파이 쿡북 참조)-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from Tkinter import *
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
 
class App:
    
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        self.check_var = BooleanVar()
        check = Checkbutton(frame, text='Pin 18'
                 command=self.update,
                 variable=self.check_var, onvalue=True, offvalue=False)
        check.grid(row=1)
 
    def update(self):
        GPIO.output(18, self.check_var.get())
 
root = Tk()
root.wm_title('On / Off Switch')
app = App(root)
root.geometry("200x50+0+0")
root.mainloop()
 
 
cs
        
        [ start.sh 쉘스크립트 작성 ]
$ sudo nano start.sh
1
2
3
4
 
#!/bin/sh
openbox &
python /home/pi/gui_switch.py
cs
[ TFT-LCD에 띄우기 ]
$ sudo FRAMEBUFFER=/dev/fb1 xinit ./start.sh
       [인증 샷~~]



2. JAVA로 작성한 Swing UI로 띄우는 방법


  [목표]  java으로 작성안 UI 대화창을 TFT-LCD에 X윈도우 실행없이 바로 출력
    
    아래이 모든 작읍은 /home/pi에 작성한다.  
    
       [ Swing을 이용한 UI파일 작성 후 저장]
$ sudo nano hello.java

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
 
/**
 */
public class hello extends JFrame 
    implements ActionListener{
 
    JTextArea textArea;
    JButton buttonHello;
     
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
 
    private static void createAndShowGUI() {
        hello myFrame = new hello();
 
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
        myFrame.prepareUI();
 
        myFrame.pack();
        myFrame.setVisible(true);
    }
     
    private void prepareUI(){
        textArea = new JTextArea();
        textArea.setEditable(false);
        JScrollPane panel = new JScrollPane(textArea);
        panel.setPreferredSize(new Dimension(300100));
         
        buttonHello = new JButton("Hello");
        buttonHello.addActionListener(this);
         
        getContentPane().add(panel, BorderLayout.CENTER);
        getContentPane().add(buttonHello, BorderLayout.PAGE_END);
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        textArea.setText("Hello from Raspberry Pi");
    }
 
}
cs

        
        [ 컴파일 하기]
         hello.java파일이 있는 같은 폴더에서 실행
javac hello.java


        [ start.sh 쉘스크립트 작성 ]
$ sudo nano hello.sh
1
2
3
4
 
#!/bin/sh
openbox &
java hello
s
[ TFT-LCD에 띄우기 ]
$ sudo FRAMEBUFFER=/dev/fb1 xinit ./hello.sh
       [인증 샷~~]