0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MicroBit IoT Project: Motion Sync Network

Posted at

image.png

外出したとき、家にいるペットがどのように動いているか、大切な物がちゃんとその場所にあるか気になりませんか
MicroBitのモーション検知機能とEthernet通信機能を組み合わせて、遠隔モーションディテクターとディスプレイ装置を作ってみました!

しかし、MicroBitはEthernet機能をサポートしておらず、関連する機能も提供していません。
そこで、Ethernetが可能なMicroBit FWも自分で作成しました!(作成過程は次の投稿で)


HW設定

MicrobitとW5500モジュールを用意します。
より快適に開発するために、MicroBitアダプターも購入しました。
WIZnetのW5500シリーズ製品、Wiz850ioとPico-Ethernet-Hatを使用しました。
(価格面ではHatを、サイズではWiz850ioをお勧めします。)

image.png
image.png

ピンマップです。
image.png

Micro:Bit

image.png

Wiz850io

image.png

Pico Ethernet Hat

image.png
image.png

SW設定

FWアップロード

公式のファームウェアではEthernet機能を使用することができません。ですから、私が作成したカスタムFWを以下のGitからダウンロードしてください。

https://github.com/wiznetmaker/MicroBit_Ethernet/releases/tag/proto

ファームウェアファイルをMicrobitフォルダにコピーするだけでアップロードが可能です。
WindowsのバージョンによってはBootselボタンを使用することもあります。アップロード方法は公式ウェブサイトに説明されています。

Code

コード

二つのデバイスにそれぞれ異なるファイルを入れます。
ファイル名を変更しないでください。 ファイル名はmain.pyに設定する必要があります

https://github.com/wiznetmaker/MicroBit_Ethernet/tree/main/examples/Projects/MotionSyncNet

コード中のネットワーク設定のために、あなたの環境に合わせてNetwork Infomationを修正してください。
以下のnic.ifconfig()関数のパラメータとして、デバイスIP、ネットマスク、ゲートウェイ、DNSの順に入力します。
* このプロジェクトではサーバーIPを入力する必要があるため、DHCPよりも静的IPを使用します。

def w5x00_init():

   nic = network.WIZNET5K() 

   nic.active(True)

   

   nic.ifconfig(('192.168.11.20','255.255.255.0','192.168.11.1','8.8.8.8'))

   print('IP address :', nic.ifconfig())

   

   while not nic.isconnected():

       sleep(1)

DisplayはServerとして、Motion DetectorはClientとして設定します。
Motion Detectorには、DisplayデバイスのIPをServer IPとして入力 します。
main関数のs.bind()のパラメータとして、Motion DetectorデバイスのIPとクライアントで設定したポート番号を入力します。

def main():
    w5x00_init()
    s = socket()

    s.bind(('192.168.11.20', 5000)) #Motion_Detector IP

MicroBitで提供されているコードを基に作成しましたが、動きに応じて異なるアイコンを変更することも可能です。
Exampleを参考にして、Displayのアイコンを修正してみてください。

コードはDisplay/main.pyで以下を修正すればいいです。

def display_gesture(gesture_bytes):
    gesture_to_display = {
        "shake": Image.CONFUSED,
        "up": Image.ARROW_N,
        "down": Image.ARROW_S,  
        "face up": Image.HAPPY,
        "face down": Image.SAD,  
        "left": Image.ARROW_W,
        "right": Image.ARROW_E,
        "freefall": Image.SURPRISED,
        "3g": 3,
        "6g": 6,
        "8g": 8,  
    }

私は騒がしいのが苦手なので入れていませんが、アラームも追加できます。

MicroBitの基本機能を使って、さまざまにカスタマイズしてみてください。
コードの作成が完了したら、両方のデバイスにFWとコードをアップロードしてください。
私はThonnyIDEを使用しています。

Demo

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?