본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.



 오랫만에 icbanq 카페를 둘러보다 마이크로비트WIFI를 연결하여 IoT 서비스를 할 수 있는 제품이 출시 되어 무상체험 이벤트에 참여하게 되었어요. 그럼 Gravity 마이크로비트 IoT 스타터 키트(Gravity IoT Starter Kit for micro:bit)가 어떻게 구성 되어 있는 볼께요.


[정면사진]


 한글이 아닌 영어로 되어 있어요ㅠㅠ. 그래도 'IoT'와 'OBLOQ Wi-Fi Module' 글씨가 제일먼저 보이네요 @.@. 아직까진 MQTT 프로토콜를 이용하여 외부(휴대폰 또는 인터넷)에서 직접 IoT 기기들을 제어해본 적이 없지만, 사용 연령 12+인걸 보니 쉽게 할 수 있겠단 생각이 들었어요. 그럼 케이스를 열어 볼께요! ^^


[열려진 케이스]


 덮개는 디바이스 사진, 이름 그리고 SKU 넘버가 있는 출력물이 있고, 상자안에는 SKU 별로 아래의 사진처럼 잘 포장이 되어 있어요. 예전에 아두이노 디바이스 세트를 중국에서 산 적이 있는데 칸이 나눠진 케이스에 디바이스만(포장X) 있어서 이게 새거인지 중고인지 모르겠더라구요(지저분한 디바이스도 꽤 있었음). 이제품은 개봉하는 맛이 있어 좋았어요^^. 


[잘 포장된 부품들]


[포장에서 벗어난 부품들]


큰 이미지를 보고 싶다면 ->  이미지.pdf



 마이크로비트와 마이크로 서보 이외에 'GRAVITY'이름을 가진 디바이스들은 정말 고급지게 보이는데 요즘 다크모드가 트렌드인지 몰라도 블랙PCB라 더 좋은거 같아요^^. 

 제일 관심이 많았던 Obloq Wi-Fi Module퀵가이드 대로 따라해 봤는데요!. 문제는 있었지만, 너무나도 쉽게 인터넷을 통해서 마이크로 비트에 연결된 디바이스를 제어 할 수 있었어요!. 그럼 Obloq Wi-Fi Module과 Micro:Mate Expansion Board 알아 볼께요.


 Obloq Wi-Fi Module은 아래 표에 있는 특징과 사양을 보면 '표준 MQTT 프로토콜' 지원해요. '표준 MQTT 프로토콜'에 따라 MQTT서버에 메세지만 보내면 되기 때문에 휴대폰 앱이든 일반 PC프로그램 이용하여 IoT 디바이스들을 제어 할 수 있어요. 집에서 와이파이를 통하여 접속이 안된다면 'Encryption type' 및 'Wireless mode' 확인해 보면 될거 같아요.


Obloq Wi-Fi Module 

특징

  • Built-in low-power 32-bit CPU: Can be used as an application processor
  • Built-in protocol: TCP / IP stack
  • Encryption type: WPA WPA2 / WPA2-PSK
  • 무선 애플리케이션에 표준 MQTT 프로토콜 및 TTL 직렬 포트에 대한 연결 지원
  • 사양

  • Operating Voltage: 3.3-5V
  • Supply Voltage: 3.3 ~ 5.5V
  • Baud rate: 9600 bps
  • Wireless Frequency: 2.4GHz
  • Interface Type: Gravity UART 4PIN
  • Wireless mode: IEEE802.11b / g / n
  • SRAM: 160KB
  • External Flash: 4MB
  • Supports low power consumption: <240mA
  • Dimension: 35mm * 32mm / 1.38inch * 1.26inch
  • Weight: 16g
  •  Micro:Mate Expansion Board은 Obloq Wi-Fi Module 및 디바이스들을 마이크로비트에 쉽게 연견해 주는 확장보드에요. 3 웨이 아날로그 입력 및 6-way 디지털 입력 / 출력 (PWM)과 반전된 연결 보호가 눈에 보이네요.


    Micro:Mate Expansion Board

    FEATURES

  • Color coded Gravity 3-Pin interface, compatible with hundreds of plug&play electronic modules
  • 3-way analog input; 6-way digital input/output (PWM); 3V/5V jumper switch; 3.5mm audio jack
  • External Micro USB power port, up to 5V 2A power output.
  • Well-designed component lay-out and silk-screen. Reversed connection protection.
  • SPECIFICATION

  • Interface: 6 x Gravity 3Pin
  • Operating Voltage: 5V/3.3V
  • Input Power: <10W
  • Measuring Range: 0-3.3V (Analog), 0-5V (Digital):
  • Dimension:68.5 * 53.3mm/ 2.7 * 2.1 inches
  • Weight:22.8g
  • * 나머지 디바이스에 대한 특징과 사양은 아래 링크를 이용하면 되요. *


    제품

    Gravity 마이크로비트 IoT 스타터 키트(Gravity IoT Starter Kit for micro:bit) 


    구성품 

    QuickStart Guide

    micro:bit

    Micro:Mate Expansion Board

    Obloq Wi-Fi Module 

    Analog Capacitive Soil Moisture Sensor

    Waterproof DS18B20 Sensor Kit

    Digital PIR (Motion) Sensor

    Digital 5A Relay Module

    Digital Speaker Module

    Analog Sound Sensor For Arduino

    9g Metal Gear Micro Servo


    icbanq에서 개별로 구매 할 수 있는 부품 링크

    구성품


    dfrobot.com에 있는 구성품 정보 링크




     간단하게 'Gravity 마이크로비트 IoT 스타터 키트(Gravity IoT Starter Kit for micro:bit)' 개봉을 해봤어요. 구성품 중에 링크로만 소개한 디바이스들과 Obloq Wi-Fi Module을 이용하면 IoT 서비스를 체험하고 만들기엔 충분하고, 초보자가 IoT에 관한 아이디어를 현실로 쉽게 구현 할 수 있는 제품이라고 생각되네요. 단지 영어때문에 못하는 사람을 위한 한글 퀵가이드가 있으면 좋겠다고 생각해요.


     다음 체험 활동퀵가이드의 내용을 기본으로 MQTT, Broker, Subscribe, Publish, 및 IoT 서비스를 이해해 볼 생각이에요. 그럼 구독 추천 부탁해요~~



    마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 https://www.icbanq.com/

    아이씨뱅큐 공식 카페 : https://cafe.naver.com/icbanq

    아이씨뱅큐 공식 블로그 : https://blog.naver.com/icbanq

    마이크로비트 공식 카페 : https://cafe.naver.com/bbcmicro

    나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ




    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

    본 체험 제품은 element14 의 후원을 받아 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다


    현재 아쉽게도 메모리 관련 오류로 테트리스를 완성하지 못했다. 이번 단품팩 체험단에서는 난이도 있는걸 해 볼려구 했는데, 하지만 정확하지는 않지만 원인도 알거 같고 필요 없는 모듈 빼고 해보고, c++ 개발환경에서 해보면 어느정도 답은 나올듯 하다. 아크릴판은 구매 했는데...... 다음주엔 꼭 셀프자작소 가서 완성하고 이벤트 해야 겠다.


    아래 링크는 실패담을 적은 게시물이다. 

    http://cafe.naver.com/bbcmicro/1072


    다시 도전해 봐야 겠다.!


    본 체험 제품은 element14 의 후원을 받아 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

    마이크로비트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/

    엘리먼트14의 특장점 - 글로벌 전자부품 유통회사, 6만원 이상 무료배송, 60만가지 재고 보유, MOQ 없음, 한글 웹사이트, 국내서비스센터 운영

    (http://kr.element14.com/?CMP=DSP-ODB-KR-JAN2018-BLOG-ICBanQ1-HOMEPAGE)

    마이크로비트 공식 카페 : http://café.naver.com/bbcmicro

    아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq



    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

    본 체험 제품은 element14 의 후원을 받아 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


    http://cafe.naver.com/bbcmicro/1070



    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
    58
    59
    60
    61
    62
    63
    64
    65
    from microbit import *
    import random
     
    randomNumber = 0
    inputNumber = 1
    gameStatus = 0
     
    def gameStart():
        global randomNumber, gameStatus, inputNumber
        randomNumber = random.randint(19)
        inputNumber = 1
        gameStatus = 1
        
        display.scroll("Game Start"80)
        
    def aPressed():
        global inputNumber, gameStatus
        
        if gameStatus != 1:
            display.scroll("Please press button AB",80)
            return
     
        if inputNumber > 1:
            inputNumber -= 1
            
        display.show(str(inputNumber))
        
    def bPressed():
        global inputNumber, gameStatus
        
        if gameStatus != 1:
            display.scroll("Please press button AB",80)
            return
            
        if inputNumber < 9 :
            inputNumber += 1
            
        display.show(str(inputNumber))
        
    def shake():
        global inputNumber, randomNumber
        if randomNumber == inputNumber:
            display.scroll("^^")
        elif randomNumber > inputNumber:
            display.scroll("UP")
        else:
            display.scroll("DOWN")
            
        display.show(str(inputNumber))
        
    while True:
        if button_a.is_pressed() and button_b.is_pressed():
            #display.scroll("AB")
            gameStart()
        elif button_a.is_pressed():
            #display.scroll("A")
            aPressed()
        elif button_b.is_pressed():
            #display.scroll("B")
            bPressed()
        elif accelerometer.was_gesture("shake"):
            shake()
        
        sleep(100)
     
    cs


    마이크로비트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/

    엘리먼트14의 특장점 - 글로벌 전자부품 유통회사, 6만원 이상 무료배송, 60만가지 재고 보유, MOQ 없음, 한글 웹사이트, 국내서비스센터 운영

    (http://kr.element14.com/?CMP=DSP-ODB-KR-JAN2018-BLOG-ICBanQ1-HOMEPAGE)

    마이크로비트 공식 카페 : http://café.naver.com/bbcmicro

    아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq



    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

    본 체험 제품은 element14 의 후원을 받아 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


    운이 좋게 마이크로비트 체험단에 당첨이 됐다. 항상 뭔가를 기다리는 마음은 설렌다. 단품팩이라 박스 하나만 있다. 마이크로 비트는 색을 선택할 수가 없다. 그래서 개봉전에 무슨 색일까 무지 궁금했다.

    짜잔~ 노란색이다!. 좋다. 그냥 좋다. 개봉기는 조촐하게 "노란색 마이크로비트"로  끝내야 겠다.


    이번에 체험단 신청하면서 목표를 몇개 세웠다.

     1. 파이썬으로 코딩 할것!

     2. 아크릴 케이스를 만들것!

     3. DOT MATRIX & HT16K33 모듈을 이용하여 테트리스를 만들것!

     4. 어떤것이든 이벤트를 할것!


    2주안에 못 할 수도 있지만, 시도하다 보면 좋은 결과가 있을거라 생각 한다.  아래 동용상은 MU 에디터를 이용하여 간단한 파이썬 코딩을 하였다. REPL이 되서 참 좋다. 


    마이크로비트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/

    엘리먼트14의 특장점 - 글로벌 전자부품 유통회사, 6만원 이상 무료배송, 60만가지 재고 보유, MOQ 없음, 한글 웹사이트, 국내서비스센터 운영

    (http://kr.element14.com/?CMP=DSP-ODB-KR-JAN2018-BLOG-ICBanQ1-HOMEPAGE)

    마이크로비트 공식 카페 : http://café.naver.com/bbcmicro

    아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq



    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

     돼지등DIY 카페에서 처음 DIY를 시작하는 분들이 간단하게 만드는 것중에 하나다. 값싸게 재료를 구할 수 있고, 작은 노력으로 집에서 평상시에 사용할 수 있다. 개인적으로 터치센서네오픽셀제어하기 위해 마이크로비트사용 하였다.


    돼지등 만들기

    (마이크로비트로 동작 확인 하기)

    1. 돼지등이란


    2. 재료













    3. 동작 확인 동영상























    4. 네오픽셀로 안에 들어갈 LED 만들기
























































    5. 마이크로비트에 네오픽셀과 터치센서 연결하기

























































    6. 터치센서 동작의 이해






















    7. 블록코딩 하기


































































    8. 자바스크립트 코드

     DIY 시작하는 분들이 값싼 재료를 이용하여 만드는 무드등이다. 


     스위치

     LED -> 네오픽셀 : 일반 LED 대신 색을 제어하기 위해 네오픽셀을 사용

     배터리 -> 요즘 DIY에서 흔히 많이 쓰는 18650배터리다

                   휴대폰 보조배터리로도 많이 사용한다.

     1셀충전회로 -> TP4056이다. 충방전 회로가 있는건 사용하면 된다

     전선

     돼지저금통

     글루건

     납땜 세트

     ----------

     추가 터치 센서 

     추가 마이크로비트


     

     <https://youtu.be/iSLO6EvCeZY>


     터치할 때마다 등의 색이 바뀐다.



     

     <네오픽셀로 LED등 만들기 사진>

    네오픽셀 6개로 등을 만들었다. 그냥 큐브(주사위) 각 면에 LED를 붙혔다고 생각하면 된다. 사실 둥글게 만들고 싶었지만 막손이라...... 각지게 만드는게 편해서 큐브 모양으로 만들었다.


     

     <네오픽셀등 완서된 사진>



     

    <마이크로비트, 네오픽셀, 터치센서 사진>


     

     <fritzing로 만든 연결 사진>


     위 사진대로 연결 해 주면 면된다.

     P0 - DI -> 네오픽셀

     P1 - I/O -> 터치 센서


     터치센서동작은 3가지로 구분 할 수 있다.

      1. 터치 센서에 손가락을 처음 댄 상태        현재 상태 1 이전상태 0

      2. 처음 대고 그 상태를 유지한 상태           현재 상태 1 이전상태 1

      3. 대고 유지한 상태에서 손가락을 땐 상태  현재 상태 0 이전상태 1


     여기서 더 구분을 할 수 있으나, 돼지등에 터치 기능을 구현하는데는 3번만(1번으로 해도 된단) 필요하기 때문에 다음과 같이 블록을 만들었다. 

     

    <터치센서 동작 부분 블록코딩 사진>

     

     

     <블록코딩 사진> 

    microbit-네오픽셀터치센서누르는2 (19).hex


    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
    let item: neopixel.Strip = null
    let eventCount = 0
    let event = 0
    let last = 0
    let current = 0
    current = 0
    last = 0
    event = 0
    eventCount = 0
    item = neopixel.create(DigitalPin.P0, 6, NeoPixelMode.RGB)
    basic.forever(() =&gt; {
        current = pins.digitalReadPin(DigitalPin.P1)
        if (current == 0 &amp;&amp; last == 1) {
            event += 1
            eventCount = event % 3
        }
        last = current
    })
    control.inBackground(() =&gt; {
        while (true) {
            basic.showNumber(eventCount)
            if (eventCount == 0) {
                item.showColor(neopixel.colors(NeoPixelColors.White))
            } else if (eventCount == 1) {
                item.showColor(neopixel.colors(NeoPixelColors.Red))
            } else {
                item.showColor(neopixel.colors(NeoPixelColors.Red))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.Orange))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.Yellow))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.Green))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.Indigo))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.Violet))
                basic.pause(200)
                item.showColor(neopixel.colors(NeoPixelColors.White))
                basic.pause(200)
            }
        }
    })
     
    cs

    1. 쉽게 할 수도 있었는데...... run time error는 미리 알 수도 없고, 실제 소스 올리고 나서 나는 것들인데...... 에러나면 그냥 멈춘다...... 그것도 모르고 나는 고생을 했다. 0 / 3 ......


    2. 네오픽셀을 단색으로 표현하는건 쉽다. 그러나 화려하게 레인보우를 적용하면 쓰레드가 필요한데...... 마이크로비트에서는 어떻게 해야 할지...... 백그라운드 실행으로 할려고 했으나, 내가 이전에 했던 생각한것처럼 안되어 이 글에는 빼 버렸다. 검색을 해야 겠다.


    3. 동작 확인으로 마이크로비트를 사용했다. 이번 글에서 아쉬웠던건 실제 사용할 수 있도록 꾸밀 수가 있었는데, 그 부분이 조금 아쉽다. 마이크로비트로 동작 확인것이기 때문에 이걸로 만족한다.


    4. 아래는 원래 목표했던 돼지등이다. 배터리와 충전회로를 넣어서 제품(?)처럼 만들었다. 이 글을 쓰는 시점에서 완성 되었다. 이것 또한 정리해서 올려야 겠다.




    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

     예전부터 만들어 보고 싶었던 돼지등이다. 간단하게 동작 되는것만 확인 하기 위해서 만들었다. 마이크로비트는 동작 확인만 한 것이고, ATTINY85 MCU를 이용하여 최소한의 비용으로 만들 것이다. 

    <흐린날 책상 앞에서...... 동영상>


    <캄캄한 침실에서 동영상>


    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

     마이크로비트로 8X8 도트매트릭스를 연결하여 간단하게 제어 하는게 목표다. 정확하게 말하자면 64개의 도트를 켰다 껐다 하는것이다. 이걸 하는 최종 목표는  HT16K33 IC를 이용하여 문자를 도트맥트릭스로 보여주는 것이다.


     언제나 그랬듯이 동영상을 보자

    <마이크로비트로 제어하는 8X8 도트매트릭스 동영상>


     8X8 도트매트릭스 핀 사진과 DATASHEET는 아래와 같다.

    <8X8 도트매트릭스 실제 사진>


    <8X8 도트매트릭스 데이터시트 사진>

    처음 연결할 때 혼동이 조금 있었다. 핀의 위치를 정확하게 기억하자.


    ---------------------------------------->

    13 14 15 16 17 18 19 20 21 22 23 24

    12 11 10 09 08 07 06 05 04 03 02 01

    <----------------------------------------


    핀의 위치를 해석해 보면

    1      -> 2        -> 3     -> ...... 

    ROW -> GREEN -> RED -> ......


    마이크로비트는 연결할 수 있는 핀의 개수가 제한되어 있어 24개 전부 연결 할 수 없다. 그래서 ROW PIN 8개와 COL PIN 8개(그린)만 사용한다. 지금은 단색으로만 제어 하고, 나중에 HT16K33 IC를 이용하여 24개 제어하여 3가지 색을 제어할 것이다.




    이제 마이크로비트에 8X8 도트매트릭스를 연결해 보자

    <마이크로비트와 8X8 도트매트릭스 연결 사진>


    <fritzing으로 표현한 연결 사진>

     사진이 보이는 것 처럼 마이크로비트, 8X8 도트매트릭스, 브레드보드, 브레이크아웃 보드 아탑터, 점퍼선이용하여 연결해 준다.


     중요한 사실! 처음에 마이크로비트 0, 1, 2핀을 빼고 3부터 사용하여 20번까지 이용하여 제어를 시도 하였으나 col1에 해당하는 부분에 불이 안들어 오고 두 줄씩 켜지는 문제가 발생 했다. 


    마이크로비트    8X8 도트매트릭스

    P19 SCL  -----> 22 

    P20 SDA -----> 23


     도트매특릭스 22, 23 핀은 1행과 1열에 관련된 핀으로 마이크로비트 P19, P20에 해당되고, 이 핀들은 I2C 통신에 관련한 핀들이다. 그래서 나중에 


    마이크로비트    8X8 도트매트릭스

    P0         -----> 23 

    P1         -----> 22


    변경하여 연결하였다.


     8X8 도트매트릭스를 제어를 위한 연결은 다 됐다. 블록 코딩을 해보자.

    <블록코딩 #1 사진>


    <블록코딩 #2 사진>

    microbit-8X8도트매트릭스 (2).hex

     간단한 예제순차적으로 64개의 도트ON/OFF 하는 것이다. 그러나 기존 블록으로는 원하는대로 도트매트릭스를 제어 할 수 없다. 그래서 블록이 아닌 필요한 부분만 javascript로 직접 코딩하여 작업 했다. 회색으로 나온 블록들이 그런것들이다. 걱정할 필요 없다. 그냥 몇개만 더 써주면 되는것이니까!!!!!! 


     잠깐! 블록을 보고 의문이 들 것이다. DigitalPin.P1...... 순서대로 쓰면 되지 왜 번호가 뒤죽박죽일까?? 이유는 간단하다. P1, P2 순서대로 쓸려니 처음 마이크로비트와 도트매트릭스를 연결할 때 이것저것 생각해가면서 연결해야 하고, 잘못 연결하면 찾기도 불편하다. 그래서 핀은 순서대로 연결하고 프로그램상에서 마춰주기로 했다. 훨씬 편하고, 문제가 생겼을 때 금방 찾아서 고칠 수가 있다


     1행 1열에 있는 도트를 ON 할려면 

    R1의 값은 1

    C1의 값은 0 으로 설정하면 된다. 반대로 하면 OFF가 된다.




    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
    let cols: number[]
    let rows: number[]
    rows = [DigitalPin.P1, 
            DigitalPin.P3, 
            DigitalPin.P15, 
            DigitalPin.P5, 
            DigitalPin.P13, 
            DigitalPin.P7, 
            DigitalPin.P11, 
            DigitalPin.P9]
    cols = [DigitalPin.P0, 
            DigitalPin.P4, 
            DigitalPin.P16, 
            DigitalPin.P6, 
            DigitalPin.P14, 
            DigitalPin.P8, 
            DigitalPin.P12, 
            DigitalPin.P10]
    led.enable(false)
    basic.forever(() => {
        for (let indexRow = 0; indexRow <= 7; indexRow++) {
            pins.digitalWritePin(rows[indexRow], 1)
            for (let indexCol = 0; indexCol <= 7; indexCol++) {
                pins.digitalWritePin(cols[indexCol], 0)
                basic.pause(500)
                pins.digitalWritePin(cols[indexCol], 1)
                basic.pause(500)
            }
            pins.digitalWritePin(rows[indexRow], 0)
        }
    })
     
    cs

    javascript는 참고!


    그럼 하트를 표현 할려면 어떻게 해야 할까?? FND나 도트매트릭스에 항상 따라다니는 것이 있다. 스태틱 제어다이나믹 제어다. 아래의 동영상 마지막 부분에 보면 밝지는 않지만 다 켜진것처럼 보였을 것이다. 빠르게 ON/OFF 하여 항상 켜진 것처럼 보이는 잔상 효과를 이용한게 다이나믹 제어다. 

    <전류가 부족하여...... 동영상>


    몇개의 핀으로 도트매트릭스를 제어할 수 있는  HT16K33 IC를 알리에서  주문해 놨다. 

    https://www.aliexpress.com/item/5pcs-lot-CJMCU-HT16K33-LED-Dot-Matrix-Drive-Control-Module-Digital-Tube-Driver/32688435492.html?spm=a2g0s.9042311.0.0.HHKFFa


    기다리면서 관련 라이브러리와 부족한 전류를 해결 할 수 있는 방법을 찾아봐야 겠다.

    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

     오늘은 마이크로비트서보모터제어하여 무선으로 전등을 켜고/끄는 IOT 제품흉내 내볼까 한다. 항상 그래 왔듯이 동작하는 동영상을 먼저 보자. 흉내를 내는 것이기 때문에 깔끔하게 조립하지는 않았다. 그냥 프로토타입이라고 생각하면 된다.


     첫번째 동영상은 전등 스위치에 장착 하기전동작이 잘되는지 확인 하는 동영상이다.

    <동작 확인 동영상>


     두번째 동영상실제 전등 스위치설치하여 동작 해보는 동영상이다.

    <실제 전등 스위치에 설치하여 동작 확인하는  동영상>


     세번째 동영상전등 스위치쪽 동작 확인 하는  동영상이다.

    <전등 스위치쪽 테스트 동영상>


     마이크로비트 2개서보모터제어하여 전등 스위치 IOT를 흉내낸 것이다. '서보모터가 안보이는데? 그리고 동영상 속의 길고 하얀 그것은 무었일까? 그럼 저안에 서보모터가 들어있는건가?'라고 생각 할 것이다. 맞다! 그렇다! 저 안에 서보모터가 들어가 있다. 블록코딩을 하기 전에 서보모터가 들어가 있는 그것에 대해 알아 보자. 


    그것은 스위처! <- 클릭


    홈페이지상에 있는 제품과는 많이 다르다. 맞다. 내가 가지고 있는건 몇년전에 구매한 스위처다. 클라우딩펀드로 구매한 스위처 첫번째버전! 여자친구가 침대에 있다가 잘려고 불 끄러 갈때 잠이 깨서 휴대폰으로 끌 수 있는 제품을 찾다가 구매한 제품이다. 이외에 다른 제품도 있는데, 스위처는 전등 스위치에 붙히고 블루투스로 연결하여 편하게 쓸수 있는 제품이다. 스위치배선에 연결하는 제품은 설치가 쉽지 않아서 이 제품을 구매했다. 그러나 완벽함을 추구하는 여자친구는 가끔 블루투스가 정상적으로 연결이 안되어서 불편함을 호소하여 지금까지 내가 가지고 있었다. 그리고 마이크로비트로 전등 스위치 IOT를 흉내내 보자 해서 뚝딱 하고 마들어 봤다. 정말 뚝딱 하고 만들어 졌다.


     그럼 이제 시작해 보자. 부제인 '단지 서보모터를 제어했을 뿐인데'를~~~~~~~~ GO GO GO!


     블록코딩 하기 전스위처 안은 어떻게 생겼는지 보자! 아래 사진처럼 서보모터(SG90), 조도센서(Cds), 충전모듈(TP4065), 블루투스&MCU로 구성되어 있다. 내가 필요한건 하우징& 서보모터다! 나머지는 마이크로비트가 제공하는 기능으로 할 것이다. 

    <스위처 내부 사진>


     마이크로비트와 위의 재료로 전등 스위치 IOT를 흉내 낼건지 큰 그림그려보자.

    <큰 그림>



    필요한 재료

    마이크로비트 2대

    마이크로비트 확장보드 1개

    서보모터(SG90) & 스위처 하우징

    보조배터리


     

    <준비된 사진>


     준비는 되었다. 그럼 블록코딩을 해보자.

    <송신쪽 마이크로비트 블록코딩> 

    microbit-전등mb1 (2).hex

     

    송신쪽 마이크로비트 블록코딩간단하다.

    A버튼을 누루면 1송신

    B버튼을 누루면 0송신


    1 -> 전등 켜기

    0 -> 전등 끄기



    <수신쪽 마이크로비트 블록코딩>

    microbit-전등mb2 (2).hex


     

    수신쪽(서보모터 제어) 마이크로비트 블록코딩도 간단하다.


    무선으로 값을 받으면 서보모터제어한다.

    값이 1이면 전등 스위치 켜기

    값이 0이면 전등 스위치 끄기


     마이크로비트 2개를 가지고 전등 스위치 IOT흉내 내어 보았다. 기존 제품품질이나 디자인이나 성능은 많이 차이가 난다. 왜냐면 목적 자체가 무선으로 켜고/끄기간단하게 동작 원리만 흉내낸 것이기 때문인다. 스위처 처럼 제품으로 만들려면, 비용적인 부분, 디자인적인 부분, 기능적인 부분, UX적인 부분 이외에도 많은 부분을 고려해야 한다. 어쨋든 나는 마이크로비트를 가지고 아이디어를 표현하고, 제품으로 가능성이 있는 것들전문가한테 맡겨야 겠다. 


     내일 부터 설연휴다. 재미있게 보내자!



    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.

    <펄러비즈 하트 사진> 

    출처 : http://blog.naver.com/amin0831/220667134588

     

     사진에 보이는 것처럼 펄러비즈로 만든 하트 모양을 마이크로비트 네오픽셀 LED를 이용하여 만들어 보려고 한다.  


    재료는 아래와 같다.

     * 마이크로비트 1개 

     * 네오픽셀 RGB LED 27개

     * 점퍼선 3개

     * 하트모양 아크릴 앞 뒤 한개씩

     * 고정 너트(3개)와 볼트(6개) 



    완성된 것을 먼저 보자

    <27개의 네오픽셀에다가 레인보우적용한 것>


    <27개의 네오픽셀에다가 내가 원하는 색을 적용한 것>


    첫번째화려하지만, 오늘 목표두번째다. 자 이제 작해 보자! 크게 두 부분으로 나눠서 해야 된다. 한 부분은 내가 원하는 동작을 할 수 있게 재료들연결 해줘야 한다. 즉 피지컬(물리적인) 부분이다. 다른 한 부분소프트웨어다. 내가 원하는 색으로 네오픽셀 LED동작하게 끔 마이크로비트 블록코딩을 해야 한다. 먼저 소프트웨어 부분 부터 해보자.


     

    <간단하게 목표 정리한 노트>

     

     다음은 종이에 정리한 내용이다.


     * 얼굴 부분과, 눈 부분 각각 제어

       한번에 전부 제어 할려면, 눈 모양 만큼 똑같은 걸 반복해야 해서, 

       반복을 피하려고 얼굴 부분과 눈 부분을 분리하여 제어 한다.


     * 오른쪽 하트속의 숫자

       네오픽셀 위치다. 위치는 0부터 시작 하기때문에 0~26을 사용 한다.


     * 을 제어할 네오픽셀 위치

       눈의 위치는 5, 6, 8, 9, 12, 13, 15, 16다.

       00 00 ->  5  6  8  9

       00 00     1223 1516


     * 눈 모양은 8가지로 한다.

       OO OO | OO OO | OO OO | OX  XO | XO  OX | XO  XO | OX  OX | OO OO 

       XO XO  | OX  OX | OX  XO | OO OO | OO OO | OO OO | OO OO | XO  OX




    종이에 정리한 내용을 가지고 블록코딩을 하자.  microbit-하트 (8).hex

    얼굴 부분




    눈 부분

     

    얼굴 부분 - face 배열 변수에는 얼굴 부분에 해당하는 네오픽셀 LED 위치가 저장되어 있다.

    *얼굴색바꾸기 함수는 face 배열 변수의 있는 값을 하나씩 꺼내 그 위치에 있는 LED 색을 그린으로 설정한다.


    눈 부분 - eyes 배열변수에는 눈 부분에 해당하는 네오픽셀 LED 위치가 저장되어 있으며, eyeShape 배열 변수에는 0,1로 눈 모양을 표현한 값들이 들어 있다. 예들 들면 다음과 같다.

      00 00 -> 0, 0, 0, 0 

      0X X0     0, 1, 1, 0

    *눈모양바꾸기 함수는 랜덤으로 0~7 중에 한 숫자를 선택하여 눈모양을 결정하고, eyes 배열 변수와 eyeShape 벼열 변수의 값들을 가지고 눈 모양 위치에 있는 LED 색을 정해진 색으로 지정한다


    <블록코딩 사진>


    얼굴 부분과 눈 부분을 쉽게 제어하기 위해 배열을 사용했다. 블록코딩으로 배열은 가독성이 떨어져 코드로 아래와 같이 표현 한다.

    face = [0, 1, 2, 3, 4, 7, 10, 11, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]

    eyes = [5, 6, 8, 9,
    12, 13, 15, 16]
    eyeShape = [[0, 0, 0, 0,
    1, 0, 1, 0],
    [0, 0, 0, 0,
    0, 1, 0, 1],
    [0, 0, 0, 0,
    0, 1, 1, 0],
    [0, 0, 0, 0,
    1, 0, 0, 1],
    [0, 1, 1, 0,
    0, 0, 0, 0],
    [1, 0, 0, 1,
    0, 0, 0, 0],
    [1, 0, 1, 0,
    0, 0, 0, 0],
    [0, 1, 0, 1,
    0, 0, 0, 0]]

     

     


    이제 다른 한 부분피지컬(물리적인) 부분을 보자. 완성된 피지컬 부분은 아래 사진과 같다.

    <만든어진 하트를 마이크로비트와 점퍼선으로 연견할 사진>


    <하트모양 아크릴 & 네오픽셀 LED>


    내가 사용한 네오픽셀은 스트립 타입이다. 그래서 옆의 사진처럼 필요한 만큼 짤라서 쓰고 이어서 쓸수 있다. 개수로 27개가 필요하다. 아크릴은 예전에 수원 셀프제작소에서 레이저로 잘라 만든 것이다. 시중에서 파는 것이 아니다...... 일단 저렇게 고정해 놓고, 잘린 부분은 선으로 이어 주면 된다.

     

    <선을 연결 하기 전>


    <선 연결 후>


    사진에 보이는 대로 래 한줄인 네오픽셀 스트립을 필요한 만큼 잘라 하트 모양을 만들고 잘려진 부분을 으로 연결한 것이다. 네오픽셀 스트립을 이용하는 이유는 3선으로(GND, +5V, DI)로 쉽게 제어가 가능하기 때문이다.

    피지컬(물리적인) 부분은 이것으로 완성이다. 


    네오픽셀 LED는 사용&제어가 쉬워서 응용할 수 있는 부분이 많다. 할 수 있는 것들을 찾아봐야 겠다.

    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.


    이번에 알리익스프레스에서 구매한 GPIO 확장 보드다. 집에는 다른 종류의 확장 보드들이 있지만 심플하고 가격착하여 몇개 구매를 했다. 지인도 하나 줄겸^^ 간단하게 테스트할때는 악어클립을 이용하도 괜찮겠지만 간단한거 이외에 여러개를 연결할 경우 보드에 직접 땜질 할 경우가 아닌 이상 너무 불편하다. 그냥 보드에 땜질하는건 아무리 생각해도 아닌거 같다--.--. 싸게 구매해서 막써도 괜찮을 거 같다 ㅋ~

    <BBC micro:bit GPIO Expansion board 사진>


    그리고 아래사진은 마이크로비트 핀맵이다.

    <마이크로비트 핀 맵 사진>

    몇개의 LED랑 연결된 핀에 LED 연결하여 시험하면 제대로 동작 안되는 것들이 있으니깐 주의해야 겠다.

    블로그 이미지

    김코치 나미쵸

    컴퓨터 코치 김코치 컴퓨터 자격증 취득과 아는 힘의 즐거움을 드립니다. 나도 할 수 있다는 자신감은 덤으로 드립니다. 기초부터 실무까지 김코치를 찾아 주세요.