안녕하세요^^


이번시간엔 아두이노는 아두이노인데, 블루투스가 함께 내장된 아두이노인 블루노(Bluno), 그 중에서도 비틀(Beetle)에 대해 포스팅을 해보도록 하겠습니다.



(주말이라 교회 모임가기전에 간만에 카페에서 여유롭게 포스팅을...!ㅎㅎ)


먼저 블루노 비틀은 위와같이 생긴 칩이고, 블루투스가 되는 모듈도 있고, 안되는 모듈도 있으니 잘 확인하시고 구매하시기 바랍니다^^


우선 하드웨어 스펙부터 살펴볼게요


이 제품은 위키(wiki)가 정말 잘 되어있어서 여기만 보셔도 무난할 듯 하지마,

 처음부터 쭈욱 설명드리도록 하겠습니다!



먼저 메인 MPU로는 ATmega 328을 사용하고 있습니다. 때문에 기존 아두이노와 같이 사용이 가능하구요, 다만 물리적으로 핀이 좀 적게 나와있어서 불편할 수도 있지만, 복잡한 시스템을 만드실게 아니라면 충분하실 듯 하네요ㅎㅎ



그럼 한번 만들어 볼까요?


# 1


무선 정보 설정하기


먼저 블루노 비틀은 블루투스를 사용하기때문에, 컴퓨터나 핸드폰에서 장치를 찾을 수 있습니다.



저는 윈도우에서 확인했습니다만, 보시면 'Bluno'라는 이름이 보이시죠?

바로 기본적으로 세팅된 이름이 'bluno'로 되어있기 때문이랍니다.


사실 사용하는 목적에 따라 블루투스 이름을 바꿔주는게 사용하기도 편하겠죠?

그럼 어떻게 이름을 바꾸는지 알아봅시다.


먼저, 'AT-command'라는 몇몇 명령어들이 있습니다.

이를 이용하면 이름, 통신속도, 암호화방법, 등등 수많은 옵션들을 바꿀수 있답니다.



이름을 바꾸려면 먼저 비틀을 PC와 연결하고, 아두이노IDE를 실행합니다.



먼저 보드 세팅을 UNO로 맞춰주시고, (비틀은 UNO로 맞춰져있더라구요~)

포트를 맞춰서 잡아주세요ㅎㅎ


그 다음은 시리얼 모니터를 켜셔서 아래와 같이 

"No line ending"

을 선택해주시고, Baudrate도 115200으로 설정해주세요~!

그리고 +++를 입력하시고, 

아래처럼 'Enter AT Mode'라는 말이 뜨면 AT-command mode로 들어간겁니다.

만약에 안뜬다면, 설정을 다시 한번 확인해보세요^^



자 그럼 AT-command mode에 접속했으니, 명령이 잘 먹히는지 확인해봅시다.

AT-command를 사용할때는 line설정을 또 바꿔줘야합니다.

"Both NL & CR"

을 선택하셔야해요!!


그런 뒤 AT를 입력하면 아래처럼 OK라는 문구가 뜨면 성공!



이제 이름을 바꿔볼까요~?


이름은 

AT+NAME=원하는 이름

이렇게 설정하시면 됩니다.



그리고 세팅을 마치고나서는 AT-command mode를 나가야겠지요?


AT+EXIT을 입력해서 설정을 마칩니다.


그리고 PC나 폰에서 확인하시면 이름이 변경되어있을거에요~!

혹시나 변경이 안되어있으면, 블루노를 껐다 켜시거나, 

PC나 폰의 Bluetooth를 껐다 켜보시면 될겁니다.


그 외에 몇가지 설정해야할것들이 더 있는데, 보통의 블루투스는 페어링할때 암호를 필요로한답니다.

하지만 모드를 HID connection로 변경하면 암호를 입력하지 않아도 연결이 되요~!


이 외의 많은 명령어들이 있는데, 포스팅의 마지막에 둘테니 한번 참고하세요^^



# 2


아두이노에서 사용할 수 있는 기능들


자 이제 제대로 블루노를 사용해볼까요?


사실 함수는 대단한것들이 있지는 않아요~

Serial 함수를 통해 데이터를 보내면 자동으로 블루노 하드웨어에 있는 블루투스 칩으로 데이터가 전송이 되고, 

이 블루투스 칩에서 전달받은 데이터를 무선으로 쏴준답니다ㅎㅎ


참 쉽죠잉~!


# 3


스마트폰을 통한 무선 시리얼 모니터링



자 그럼 테스트를 한번 해볼까요?


먼저 아두이노에서 Serial통신을 세팅해서 1초에 2번 아날로그 데이터를 전송하도록 코딩을 합시다.


void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

}


void loop() {

  // put your main code here, to run repeatedly:

  Serial.println(analogRead(A0));

  delay(500);

}


위 코드를 업로드 하고, 폰에서 앱을 다운받습니다.


안드로이드나 아두이노나 Bluno를 검색하면 앱이 나올거에요~^^

저는 아이폰이라서 앱스토어에서 검색하니 Bluno terminal이라는 앱이 있더라구요



앱을 다운받아 실행하고, 따로 페어링이나 옵션을 설정안해도 자동으로 연결이 된답니다. (신기신기..)



그리고 이 블루투스로 전송되는 신호는 PC에서도 모니터링이 된답니다.



Debug 세팅이 ON이 되어있다면 가능한거구요, 이 설정을 끄면 PC에서는 모니터링이 안됩니다.

아래 AT 명령어에서 11번을 참고하세요^^


이상으로 테스트는 끝!



# 4


블루노를 위한 AT 명령어들 (AT-command sets)



1. "AT+FSM" change the working mode

AT+FSM=FSM_TRANS_USB_COM_BLE<CR+LF>USB-UART BLE transparent mode
AT+FSM=FSM_HID_USB_COM_BLE_AT<CR+LF>USB-UART BLE HID mode
AT+FSM=?<CR+LF>Request the working mode (default: FSM_TRANS_USB_COM_BLE)

여기서 Transparent mode블루노  <ㅡ>  블루노 의 통신을 할때를 의미합니다.

이때는 블루노 하나는 Central로, 또 다른 하나는 Peripheral로 설정을 해야한답니다. (11번 설정 참고!)

HID mode는 블루노 <ㅡ> 스마트폰. PC등과 연결할때 필요한 설정입니다^^


1*. "AT+KEY" to simulate pressing some buttons in HID mode, read FAQ 16 below for How to use HID mode.
AT+KEY=keyValue0<CR+LF>To simulate one button was pressed
AT+KEY=keyValue0+keyValue1<CR+LF>To simulate two buttons was pressed
AT+KEY=keyValue0+keyValue1+keyValue2<CR+LF>To simulate three buttons was pressed


2. "AT+ROLE" change the CENTRAL-PERIPHERAL configuration

AT+ROLE=ROLE_CENTRAL<CR+LF>BLE CENTRAL mode
AT+ROLE=ROLE_PERIPHERAL<CR+LF>BLE PERIPHERAL mode
AT+ROLE=?<CR+LF>Request the CENTRAL-PERIPHERAL configuration (default: ROLE_PERIPHERAL)


3. "AT+MIN_INTERVAL" change the minimum connection interval

AT+MIN_INTERVAL=10<CR+LF>Recommended minimum connection interval (10ms) for PC and Android
AT+MIN_INTERVAL=20<CR+LF>Recommended minimum connection interval (20ms) for IOS
AT+MIN_INTERVAL=?<CR+LF>Request the minimum connection interval (default: 10)


4. "AT+MAX_INTERVAL" change the maximum connection interval

AT+MAX_INTERVAL=10<CR+LF>Recommended maximum connection interval (10ms) for PC and Android
AT+MAX_INTERVAL=40<CR+LF>Recommended maximum connection interval (40ms) for IOS
AT+MAX_INTERVAL=?<CR+LF>Request the maximum connection interval (default: 10)


5. "AT+UART" change the baud rate of UART

AT+UART=115200<CR+LF>Set the baud rate to 115200
AT+UART=?<CR+LF>Request the baud rate of UART (default: 115200,8,N,1)


6. "AT+BIND" bind another BLE chip. BLE can only connect to the BLE chip with this MAC address

AT+BIND=0x0017ea9397e1<CR+LF>Set the BLE binding (destination) MAC address to 0x0017ea9397e1
AT+BIND=?<CR+LF>Request the binding (destination) MAC address (default: 0x8A6D3B8A6D3B)


7. "AT+CMODE" set whether the connection of BLE is binding or arbitrary

AT+CMODE=UNIQUE<CR+LF>BLE can only connect to the BLE chip with binding(destination) MAC address (see "AT+BIND" command)
AT+CMODE=ANYONE<CR+LF>BLE can connect to any other BLE chips
AT+CMODE=?<CR+LF>Request the binding connection mode(default:ANYONE)


8. "AT+MAC" Request MAC address

AT+MAC=?<CR+LF>Request MAC address of the BLE


9. "AT+NAME" Set the name

AT+NAME=DFBLEduinoV1.0<CR+LF>Set the name of BLE to "DFBLEduinoV1.0".The length is limited to 13 Bytes or below
AT+NAME=?<CR+LF>Request the name of the BLE (default: DFBLEduinoV1.0)


10. "AT+RESTART" restart the BLE

AT+RESTART<CR+LF>Restart the BLE chip


11. "AT+SETTING" change the default setting (new in BLE firmware 1.6)

AT+SETTING=DEFAULT<CR+LF>Restore the default settings, same as PERIPHERAL mode
AT+SETTING=DEFPERIPHERAL<CR+LF>Restore the default settings for PERIPHERAL mode
AT+SETTING=DEFCENTRAL<CR+LF>Restore the default settings for CENTRAL mode
AT+SETTING=?<CR+LF>Request the setting mode (default: DEFPERIPHERAL). If the settings are changed by AT command, "UNKNOWN" will be replied.



12. "AT+BLUNODEBUG" When Bluetooth is connected and BLE chip(CC2540) received the UART message from MCU(ATMEGA328), send the UART message not only to the Bluetooth, but also to the USB port. So that when Bluetooth is connected, we can use the serial monitor to get the UART message. (new in BLE firmware 1.6)

AT+BLUNODEBUG=ON<CR+LF>Turn on the BLUNO DEBUG so that when Bluetooth is connected, we can use the serial monitor to get the UART message.
AT+BLUNODEBUG=OFF<CR+LF>Turn off the BLUNO DEBUG so that wireless programming will be more stable.
AT+BLUNODEBUG=?<CR+LF>Request the BLUNO DEBUG state (default: ON)

여기서 이 Debug function을 활성화 시키면, 블루투스로 전송하는 신호를 시리얼 모니터를 통해 어떤 신호가 나가는지를 모니터링(디버깅)할 수 있게 도와주는 설정이랍니다.

크게 필요한 경우가 아니라면, 안정적인 데이터 전송을 위해 꺼주세요~! 왜냐하면 블루투스 하나로 보낼 신호를 USB포트를 통해서 한번 더 보내주기 때문에 신호가 꼬이거나, 왜곡되는 현상이 발생할 수 있답니다!


13. "AT+USBDEBUG" When Bluetooth is connected and BLE chip(CC2540) received the Bluetooth message from IOS or Android device, send the data not only to the UART, but also to the USB port. So that when Bluetooth is connected, we can use the serial monitor to directly get the Bluetooth message. (new in BLE firmware 1.6)

AT+USBDEBUG=ON<CR+LF>Turn on the BLUNO DEBUG So that when Bluetooth is connected, we can use the serial monitor to directly get the Bluetooth message from IOS or Android device.
AT+USBDEBUG=OFF<CR+LF>Turn off the USB DEBUG so that wireless programming will be more stable.
AT+USBDEBUG=?<CR+LF>Request the USB DEBUG state (default: OFF)


14. "AT+TXPOWER" Change the Transmitted Power which will change the signal range. (new in BLE firmware 1.6)

AT+TXPOWER=0<CR+LF>Change the Transmitted Power to fit the iBeacon calibration. (4, 0, -6 -23 is acceptable)
AT+TXPOWER=?<CR+LF>Request the Transmitted Power (default: 0)


15. "AT+IBEACONS" Enable the iBeacons feature(new in BLE firmware 1.6)

AT+IBEACONS=ON<CR+LF>Enable the iBeacons feature.
AT+IBEACONS=OFF<CR+LF>Disable the iBeacons feature.
AT+IBEACONS=?<CR+LF>Request whether the iBeacons feature is enabled. (default: ON)


16. "AT+VERSION" the version of the firmware(new in BLE firmware 1.6)

AT+VERSION=?<CR+LF>Request the version of the firmware.


17. "AT+RSSI" Request the RSSI of the BLE (new in BLE firmware 1.6)

AT+RSSI=?<CR+LF>Request the RSSI of the BLE(if there is no connection, "-000" will be returned)


18. "AT+MAJOR" Set the major number of the iBeacons (new in BLE firmware 1.6)

AT+MAJOR=0<CR+LF>Set the major number of the iBeacons to "0". (0 to 65535 is acceptable)
AT+MAJOR=?<CR+LF>Request the major number of the iBeacons.(default "0")


19. "AT+MINOR" Set the minor number of the iBeacons (new in BLE firmware 1.6)

AT+MINOR=0<CR+LF>Set the minor number of the iBeacons to "0". (0 to 65535 is acceptable)
AT+MINOR=?<CR+LF>Request the minor number of the iBeacons.(default "0")


20. "AT+EXIT" Exit the AT Command Mode (new in BLE firmware 1.8 ),

AT+EXIT<CR+LF>

Exit the AT Command Mode.

네 이제 진짜 끝!ㅎㅎ


첫째날

# 대영박물관 -> 코벤트가든/쥬빌레 마켓 -> 트라팔가 광장 -> 내셔널 겔러리 -> 런던아이 -> 빅벤 -> 숙소


둘째날

# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor -> 숙소


셋째날

# 세인트폴 대성당 -> 스카이가든 -> 런던탑 -> 타워브릿지(템즈 강) -> 에미레이트 스테디움 -> Poppies Fish&chips 

-> 타워브릿지 -> 숙소


넷째날

# 빅토리아 역(옥스포드 튜브) -> 커버드 마켓 -> 크라이스트 처치 -> 엘리스 샵 

-> University Church of St. Mary the Virgin -> Radcliffe Camera ->  Nando`s -> 방황 -> 런던 -> 숙소



하루가 지나고 둘째날이 되면 조금 덜 설렐줄 알았는데, 아침 일찍부터 눈이떠지더군요ㅎㅎ




# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소


숙소에서 길따라 쭉쭉 걸어가다보니 말로만 듣던 베이커가(Baker Street)이 보입니다ㅏㅎㅎ



나름 사진좀 찍어보겠다고 찍었는데 전봇대만 없었어도... 나름 구도가 괜찮았는데ㅠㅠ

아무튼 저 건물사이 코너를 지나서 쭉 걸어가다보면!



짜잔~! 보이시나요...??

잘 안보이시죠??



그럼 이제 보이시나요ㅎㅎㅎ

아마 셜록 드라마나 소설을 보시는 분이라면 꼭 한 번쯤 가고싶은 곳일거에요!

바로 셜록의 집이랍니닼ㅋㅋ



실제 촬영지나 셜록이라는 인물이 지내던 곳은 아니구요,,,

셜록홈즈 드라마나 소설에 나오는 내용을 기반으로 박물관으로 만들어 둔 곳이랍니다ㅎㅎ



사실 저는 막 덕덕덕 스러울 정도로 셜록을 챙겨보진 않지만, 

나름 관심을 가지고 보던 책과 드라마여서 꼭 한 번쯤은 와보고싶어서

일정에 우겨넣었답니다ㅎㅎㅎ



개장시간은 매일 오전 9:30 ~ 오후 6:00까지라고 합니다.

늦게가면 줄이 길것 같아서 아침 첫 일정으로 잡고 왔지요~


우선 입장하기 전에 1층 기념품샵에서 입장권을 구매하셔야해요~!

위에 사진에서 큰게 입장권이랍니다



아침 일찍갔다고 생각했는데도 사람들이 꽤나 있더라구요,,

그치만 저희는 제일 먼저 입장해서 좋은점들이 많았어요ㅎㅎ



바로 요 사진~! 

사람이 없을때가 없기때문에, 처음 입장할때 말고는 아무도 없는 사진을 찍을수가 없다고 합니다ㅠㅠ

나름 뿌듯하긴 했지만, 지금와서 보니 왜 굳이 저걸 위해서,,,라는 생각이 들기도 하네요

건물이 총 4층인지라 보고나서 계단따라 올라가는데ㅔㅔ.



깜놀.....!!

계단뒤에 숨어있는 밀랍인형이 있더라구요... 정말 심쿵

무섭긴 한데

자세히 보니깐 와 정말 잘만들었다 싶더라구요ㅋㅋㅋㅋ




층마다 돌다보면 이런 셜록이 사용했던 물품들이 꽤 많이 전시되있습니다~



아마 셜록 시리즈를 좀 알고 계신분들은 이 소품들을 보면서 

어떤 씬에 나왔던 도구다!

라고 번뜩 떠오르실거에요ㅎㅎ

저는 저 총보고 번뜩!



그리고 신기했던게 3층에 가시면 창가에 방명록이 있어요ㅋㅋㅋ

여기도 저희가 처음가서 맨 먼저 이름이 있어요~


혹시나 싶어 앞장을 넘겨봤는데, 대부분 한국인이었답니닼ㅋㅋㅋㅋㅋㅋㅋ



둘러보면 밀랍인형이 꽤 많은데, 보여드리기가 섬뜩한것들이 많아서 못올리겠네요ㅠㅠ

그나마 이런 인형들이 조금 무난한 설정이었어요~



박물관을 다 돌고나면 뭐니뭐니해도 기념품이겠죠~?ㅎㅎ

별에별 기념품을 많이 팔고있었는데, 저는 샷잔을 모으고있어서

셜록 샷잔 하나와 셜록빠순이 친구를 위한 키체인을 샀어요^^


그렇게 아침일찍부터 셜록박물관을 둘러보고는

다음 일정인 포토벨로 마켓을 향해 출발~!



# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소



포토벨로마켓은 길거리 시장이라고 보시면 되요~

상인들이 나와서 먹을거리부터 옷, 기념품 등등 잡다한것도 많이 판답니다^^

특히 포토벨로마켓은 토요일에 핫하다고들었는데,

이 날이 토요일이었지욯ㅎㅎㅎ


잔뜩 기대를 안고 Baker Street Station에서 지하철을 타고 가기로 했습니다.



워우... 뭔가 느낌있는 지하철이더군요..



왠지 모르게 스파이더맨 시리즈중에 리저드맨 시리즈가 떠오르더라구요

그 교수가 지하에서 연구하던 장소같기도 해서ㅎㅎ



언뜻 봐도 굉장히 오래되보이는 지하철이었죠??ㅎㅎ

옆에있던 판떼기를 살펴보니 1863...?! 허허허헣ㅎㅎ

저때부터 지하철이 다녔을까요....??ㅋㅋㅋ


아 참 지하철을 타다보니 머릿속에 자꾸 한 문장이 맴돌아요ㅋㅋㅋ

"Mind the gap!"

"승강장과 열차사이 간격이 넓으니 발조심하세요"라는 뜻인데,

문이 열리면 저 문장이 3~4번은 반복되면서 무의식중에 박혀버렸나봐요ㅎㅎ



따란~! 드디어 도착!!

Ladbroke Station에서 내려서 올라오기만 하면 바로 포토벨로마켓 거리가 시작됩니다ㅎㅎ

아무것도 못먹었던터라 매우 배가고팠는데...ㅠㅠㅠ

맛있는게 많고, 꽤 긴거리에 걸쳐서 가게가 있다고 해서

어어어어엄청 맛있어보이는 가게가 아니면 휙휙 넘어갔어요ㅋㅋ



이것두 맛있어보여 군침이 돌았지만... 과감히 패쓰..!!

무슨 족발같은거였어요ㅋㅋㅋ



그러던찰나!!

눈에 띈것이 있었으니 바로 소세지 샌드위치(...?)!!!

짭잘한 맛이 먹고싶던때에 있었던 가게ㅎㅎ

이름이 초리조!(Chorizo) 라는거 였는데 소세지긴 한데 엄청 짠 소세지였어요ㅋㅋㅋ



그래도 혹시나 길가다 더 맛있는집이 나올수도 있으니 하나만 사서 노나먹었는데...

바보같이 초리조를 길에 흘려버렸답니다ㅠㅠㅠㅠ


하지만 상당히 깨끗하게(?) 흘려서...

그리고 먼지도 없었고 무엇보다 배가 고파서...

네...ㅎㅎ 잘 먹었습니다! 데헷~!



그러고 길가다가 들리고싶었던 가게가 있었어요!

바로 Whittard of Chelsea 

여기는 대단하다기 보단, 찻집이에요ㅎㅎ


상당히 오랜기간동안 있었던 체인 찻집인데, 런던가면 꼭 사보라는 말에 들어가봤답니다.

원하는 티를 시음해볼수도 있고, 이거 향좀 맡을수 있냐 물어보면

엄청 친절하게 설명까지해주면서 차를 건네더라구요ㅋㅋㅋ


나름 기분좋게 찻잎이랑 차 우려먹는 거름망(?)을 사서 돌아다녔지요



근데....누가 그랬어요....길다고....

우린 초리조 하나밖에 못먹었는데 이렇게 포토벨로마켓이 끝나면 어쩌라는거죠ㅠㅠㅠㅠ

젠장!!!


여러분 맛난거 보이면 그냥 막 드세요ㅋㅋㅋㅋ


고르지말고 그냥 먹는게 답입니다..

다 먹고 배부른데 맛있는게 보인다구요??

또 드세요~! 먹는게 남는거에요ㅋㅋㅋㅋ


이제 배고픈 몸을 이끌고 하이드파크로 가볼까요!


아 참!! 그리고 여행 동선 짜실때, 북쪽 -> 남쪽으로 이동하시면 

상당히 눈부시고 역광이라 사진이 잘 안나온답니다!!

되도록이면 남쪽 -> 북쪽으로 동선을 선정하시길 추천합니다^^



# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소



이제 하이드파크로 가야할텐데, 처음엔 쉽게쉽게 걸어가면 될줄 알았는데 이게 정말 무지막지하게 커요....!!

진ㅉㅏ 걸어가면 각오하고 가세요...ㅋㅋㅋ

저희는 아침부터 걸어다녀서 너무 힘들었답니다ㅠㅠ


여기가 바로 하이드파크 초입이랍니다ㅎㅎ

이때까지만 해도 그렇게 큰 줄 몰랐....



걷다보니 중간에 호수도 엄청 크게 있고,

진짜 강아지랑 산책하는 분들이 엄청 많더랍니다ㅋㅋㅋ

사람만한 리트리버를 데리고오신분도 있고









부부끼리 사이가 좋아보여서 한장 찍었는데, 잘 나온거같아욯ㅎㅎㅎ

얘들도 커플인데 갈라놓고 올껄 그랬나봐요ㅠㅠ



그렇게 다리가 터져라 걸으며 남동쪽으로 공원을 나와 조금만 더 걸어가면 해롯 백화점이 나온답니다ㅎㅎ




# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor -> 숙소




요기 앞에 보이는 곳이 바로 해롯 백화점입니다.

근데,, 뭔가 심상치 않은 분위기가 흐르더라구요;;

당시 반 트럼프시위가 런던에서도 있었거든요ㅠㅠ

피켓까지 들고 구급차도 왔다갔다해서ㄷㄷ...


그리고 백화점 가도 저희가 볼게 없을것 같아 패쓰...!!

일정을 파괴하고 다른곳을 향해 갔습니다ㅋㅋㅋㅋ



처음에 버스를 타고 목적지를 향해 가고있었는데,

버스기사 아저씨께서 갑자기 다음 정류장이 마지막 정류장이라고 내리라 하더군요ㅠㅠ

무슨 상황인지 파악이 안되 런더너들께 물어봤는데 그분들도 어리둥절....??!?

알고봤더니 반트럼프 시위때문이었다능....!!!


급하게 버스에서 내리는바람에  Whittard에서 샀던 차를 통째로 두고왔답니닿ㅎㅎㅎㅎ

내 20유로ㅠㅠㅠㅠ


슬픈마음을 접어두고 꿋꿋히 걸어서 목적지까지 걸어갔습니다.



그 곳은 바로 햄리스(Hamleys) 라는 장난감 가게입니다ㅎㅎ

건물이 꽤 높아서 위에서 내려오면서 구경하니 볼 거리가 꽤 많더라구요



이건 맨 꼭대기층에 있는 레고 모델(?)들이랍니다ㅎㅎ



인상적이었던게, 다른 인형가게들과 달리 인형이 가죽밖에 없어욬ㅋㅋㅋㅋ

첨에 보고 흠칫...! 했는데, 

그 자리에서 바로 솜을 넣어 만들어준답니다ㅎㅎ



일정이 파괴되서 방황하던때 다시 Whittard 가게를 찾아 돌아다녔어요ㅋㅋㅋ

차를 너무 사고싶어서..



가던길에 보이는 애플 샵!

건물이 너무 멋져서 들어가봤어요ㅋㅋㅋ






내부공간이 엄청 넓고 2층구조더라구요~!

샌프란시스코에서 갔던 애플샵과 비슷한 느낌이었네요ㅎㅎ



다른 Whittard 가게에서 차를 사고 나오니 Fortnum & Mason 이 코앞에!

때마침 정시에 도착했더니 정문 시계탑에서 인형들이 나와 춤을 추고는 다시 들어가네요ㅎㅎ

여기도 차로 유명하답니다.



내부 공간이 상당히 넓고, 저 종탑에 돌아가면서 판매하는 모든 차가 있답니다ㅎㅎ

향을 맡아볼 수도 있고, 뒷편에 아저씨께서 친절히 차를 내려주기도 한답니다^^


차 뿐만 아니라 다과나, 간식거리류를 많이 팔아서 지인분들 선물을 사기에는 딱 좋은 곳인것 같아요!

저는 집에서 마실 블렌딩 티와 레몬커드를 샀는데, 진짜 맛있어요ㅋㅋㅋㅋ

더 사올걸 그랬나봐요ㅠㅠ




# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소





이날 진짜 3만보를 걸었던가요...

이번엔 버킹엄 궁정을 향해 노예처럼 걷고 또 걸었답니다ㅠㅠㅠ


도착하고나니 해질무렵이라 잔잔한 느낌...?



원래 근위대 교대식을 할때 구경을 많이 하실텐데,

시간도 지났고 그걸 보는게 무슨 의미가 있나....

싶어서 쿨하게 찍고 턴~!


근데 경비보는 근위병들 멋지긴 하더라구요ㅋㅋㅋ



# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소





웨스트민스터 사원을 향해 가던 길, 어제 봤던 경찰마들이

차에 실려가고있더라구요ㅋㅋㅋ

이 또한 문화 충격..!!



길 가다 얻어걸린 사진이라지요ㅋㅋㅋ 저 멀리 보이는 빅벤!

역시 영국은 이런 느낌의 사진이 어울리는 도시!!

폰 배경사진으로 걸어두고 다닌답니닿ㅎㅎ



여기는 웨스트민스터 대성당입니다.

정말 웅장하죠??

하지만 길거리 돌아서기만 하면 이런 멋진 성당이 천지빼까리라서
나중에 되면 그러려니...한답니다ㅋㅋㅋㅋ



사실 이 웨스트민스터 대성당이 의미있었던 이유는

기독교인이라면 한번쯤 들어보셨을

'웨스트민스터 신앙고백서'가 발생하게 된 곳이라 신기했었답니다.


이 신앙고백서를 위해 당시 성직자분들이 모여 

약 1000회 이상의 회의를 통해 종교적 신념 39가지를 정리했다고 하지요ㅎㅎ


그것이 바로 '소요리 문답' 과 '대요리 문답' 이랍니다.



여기는 국회의사당!

뭔가 으리으리하죠??ㅎㅎㅎ



# 셜록홈즈 박물관 -> 포토벨로 마켓 -> 하이드파크 -> 해롯 백화점 -> 버킹엄 궁전 -> 웨스트민스터 성당

-> Hawksmoor ->  숙소




아..드디어 하루의 마지막을 행복하게 장식할 저녁...!

Hawksmoor 라는 레스토랑을 갔답니다.


진짜 저녁먹으러 갈때만큼은 서로가 버스를 간절히 원해서

다리 안아프게 잘 타고 왔답니다ㅋㅋ


아마 Hawksmoor가 여러지점이 있을텐데,

저희가 간 지점은


Seven Dials

라는 지점이었어요!



처음에 입장하고나니 예약시간보다 이르게 와서,

바에 앉아 바텐더와 수다를 떨며 맥주를 홀짝홀짝ㅎㅎ



그러다 자리가 생겨서 앉았는데,

참 우리같은 아시아인은 하나도 안보이더군요...

그래서일까요 막 옆테이블에서 쳐다보면서 얘기를 하는것만 같은...?


그럼 어때 내가 돈주고 왔는걸!

난 맛있는걸 먹고 가야겠어ㅋㅋㅋ



저 두 요리가 정말 맛있었답니다...ㅠㅠㅠ 또 먹고싶어ㅠㅠ

하나는 바게뜨빵에 무슨 참치마요 같은걸 발라먹는 음식인데,

알고보니 고등어를 이용해 만든 소스(?) 더라구요ㅎㅎ


짭짤하게 정말 꿀맛..!



하지만 이 관자요리가 제일 대박이었습니다!!!

꼭 시켜드세요!!

나눠먹지 말고 혼자 시켜서 다드세요!!!


마늘향이 확 나면서 엄청나게 부드럽답니다ㅠㅠ



요건 스테이큰데.... 사실 너무 질겼어요ㅋㅋㅋㅋ

저거보다 옆에있는 버터 고구마 오븐구이가 더 맛있었습니다...



다 먹고나면 당연하다는 듯이 메뉴판을 다시 줍니다ㅋㅋㅋㅋ

디저트 때문이죠ㅋㅋㅋㅋ

왠지 그냥 먹고 바로 일어나면 흥이 깨질것만 같아 디저트를 시켰어요ㅋㅋ

땅콩버터가득한 아이스크림과 쿠키?? 같은 메뉴였답니다ㅎㅎ



저희가 시킨 메뉴는 요러하답니다ㅋㅋ

다행히 팁은 따로 안내도 자동으로 다 붙어나옵니다...쥬륵


이까지 왔는데, 그래, 이 돈 내고 먹어야지 어쩌겠습니까ㅠㅠ

그나마 돈 아끼는 방법은...!!

가게에서 Would you like something to drink?

라고 물으면, 당당하게 대답하세요!


Just Tap water Please :)



이렇게 둘째날도 무사히 여행을 마쳤답니다..!


포스팅 너무 힘들어ㅠㅠㅠㅠ

다음 포스팅은... 언젠가... 올라올겁니다... 아마두....??




이번시간에는 아두이노의 고급 기능중 타이머에 대해 알아보겠습니다~



만약에 아두이노에 LED를 달고 1초 간격으로 깜빡이고 싶다면 어떻게 하시나요??


아마 예제에 있는 Blink처럼 짜면 되겠지요?ㅎㅎ



// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin LED_BUILTIN as an output.

  pinMode(LED_BUILTIN, OUTPUT);

}


// the loop function runs over and over again forever

void loop() {

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);                       // wait for a second

  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);                       // wait for a second

}



자 그럼, 1초간격으로 LED는 깜빡이면서, 1초에 10번 아날로그 신호를 읽으려면 어떻게 해야할까요??


// the setup function runs once when you press reset or power the board

void setup() {

  // initialize digital pin LED_BUILTIN as an output.

  Serial.begin(9600);

  pinMode(LED_BUILTIN, OUTPUT);

}


// the loop function runs over and over again forever

void loop() {

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

  delay(1000);                       // wait for a second

  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

  delay(1000);                       // wait for a second


  Serial.println(analogRead(A0));

  delay(100);

}


먼저 딜레이를 줘서 깜빡이는것 까지는 이해가 되지요?

그럼 이 상황에서 시리얼 모니터를 켜보면.... 엥??

1초에 10번이 아니라, 거의 2초에 한 번 정도 업데이트가 되죠?


이유는 바로 이 delay()함수 때문이에요!

delay()함수가 실행되면 해당된 시간이 지나기전까지는 그 뒤의 코드로 넘어가지 않습니다.


그럼 도대체 어떻게 해야


1) 1초 간격으로 LED를 깜빡이면서,

2) 1초에 10번 아날로그 신호를 받는 것


이 가능할까요??


바로 타이머(Timer)를 이용하는 겁니다.


타이머란,

아두이노 회로의 오실레이터에서 생성되는 클럭을 이용해 물리적인 시간을 측정하는 것으로,

딜레이의 경우, delay(1000) 이면 1000ms동안 생성되는 클럭이 있더라도 아무 일을 못하는 경우지만, 

타이머로 1000ms을 준다면, 1000ms 주기의 클럭이 생길 때 마다 특정일을 하므로

멀티테스킹(멀티쓰레드)과 비슷한 효과를 줄 수 있습니다.



http://playground.arduino.cc/Code/Timer

위 페이지로 가시면, 타이머 라이브러리에 대한 설명이 있고,


https://github.com/JChristensen/Timer

위 페이지에서는 해당 라이브러리를 다운받을 수 있습니다.


다운받고 압축을 푸시면 폴더가 생길텐데, 이 폴더를 내 문서->Arduino->Library 폴더에 통째로 넣어주시고

아두이노를 다시 실행하세요!


예제에 가시면 Timer-master -> blink2 가 있을거에요

열어서 실행해보시면 딱히 변한거 없이 LED가 깜빡이는걸 보실 수 있을겁니다


그럼 1초당 10번 아날로그 신호 모니터링은 어떻게 할까요?


바로 every 함수를 사용하면 해결할 수 있습니다.




#include "Timer.h"


const int LED1 = 13;

const unsigned long PERIOD1 = 1000;    //one second


Timer t;                               //instantiate the timer object

Timer led;                            //timer for analogRead function.


void setup(void)

{

    Serial.begin(9600);

    pinMode(LED1, OUTPUT);

    t.oscillate(LED1, PERIOD1, HIGH);

    led.every(100,readData);

}


void loop( )

{

    t.update();

    led.update();

}


void readData(){

  Serial.println(analogRead(A0));

  return 0;

}



자 그러면 깔끔하게 해결이 되지요ㅎㅎ


다만!! 메인 루프에 딜레이를 넣는순간 모든 타이머들이 뒤로 밀려나기때문에 조심하셔야되요!


이상 타이머를 이용한 멀티테스킹이었습니다^^

+ Recent posts