ラベル microbit の投稿を表示しています。 すべての投稿を表示
ラベル microbit の投稿を表示しています。 すべての投稿を表示

2021年8月17日火曜日

OpenSCADとUltimaker Curaを使用して、micro:bitをLEGOブロック上に縦置きできるホルダーを作成する

OpenSCADとUltimaker Curaを使用して、micro:bitをLEGOブロック上に縦置きできるホルダーを作成するには以下の手順を実行します。

〇micro:bitをLEGOブロック上に縦置きできるホルダーの写真
白い部分が3Dプリンターで作成したmicro:bitを縦置きできるホルダーです。そのほかは純正のLEGOブロックです。ホルダーの上下にLEGO互換の突起・穴がついています。
ブロックの中央に溝がついているので、そこにmicro:bitを差し込みます。

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
3Dプリンタの種類や設定によって、パラメータを微調整してください。

// プレートの厚さ
PLATE_THICK=7;

// LEGOの1ブロック
LEGO_SQUARE=7.95;
// 突起の直径
LEGO_PEG=4.9;
LEGO_PEG_R=LEGO_PEG/2;
LEGO_PEG_H=1.8;
// LEGOの側面の厚さ
LEGO_WALL=1.5;
// LEGOの底面の円の直径
LEGO_BOTTOM_CIRCLE=6.4;
// 底の側面の高さ
LEGO_BOTTOM_H=2.6;

// プレートのサイズ(ブロック単位)
NUM_HOLE_W=8;
NUM_HOLE_D=2;

// 柱の高さ
PILLAR_H=38.5;

// レールの厚さ
RAIL_THICK=2.2;
RAIL_DEPTH=3;

difference(){
    union(){
        // 上面プレート
        translate([0, 0, 0])
        linear_extrude(height=PLATE_THICK){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_SQUARE*NUM_HOLE_D]);
        }

        // 左側柱
        translate([0, 0, PLATE_THICK])
        linear_extrude(height=PILLAR_H){
            square([LEGO_SQUARE, LEGO_SQUARE*NUM_HOLE_D]);
        }
        // 左側突起
        for( ld = [0 : NUM_HOLE_D-1] ){
            translate([LEGO_SQUARE/2, LEGO_SQUARE*ld+LEGO_SQUARE/2, PLATE_THICK+PILLAR_H])
            linear_extrude(height=LEGO_PEG_H){
                circle(LEGO_PEG_R, $fn=50);
            }
        }

        // 右側柱
        translate([LEGO_SQUARE*(NUM_HOLE_W-1), 0, PLATE_THICK])
        linear_extrude(height=PILLAR_H){
            square([LEGO_SQUARE, LEGO_SQUARE*NUM_HOLE_D]);
        }

        // 右側突起
        for( ld = [0 : NUM_HOLE_D-1] ){
            translate([LEGO_SQUARE*(NUM_HOLE_W-1)+LEGO_SQUARE/2, LEGO_SQUARE*ld+LEGO_SQUARE/2, PLATE_THICK+PILLAR_H])
            linear_extrude(height=LEGO_PEG_H){
                circle(LEGO_PEG_R, $fn=50);
            }
        }

        // 側面
        translate([0, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_WALL]);
        }

        translate([0, LEGO_SQUARE*NUM_HOLE_D-LEGO_WALL, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_WALL]);
        }

        translate([0, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_WALL, LEGO_SQUARE*NUM_HOLE_D]);
        }

        translate([LEGO_SQUARE*NUM_HOLE_W-LEGO_WALL, 0, -LEGO_BOTTOM_H])
        linear_extrude(height=LEGO_BOTTOM_H){
            square([LEGO_WALL, LEGO_SQUARE*NUM_HOLE_D]);
        }

        // 下の円柱
        for( lw = [0 : NUM_HOLE_W-2] ){
            for( ld = [0 : NUM_HOLE_D-2] ){
                translate([LEGO_SQUARE*(lw+1), LEGO_SQUARE*(ld+1), -LEGO_BOTTOM_H])
                linear_extrude(height=LEGO_BOTTOM_H){
                    circle(LEGO_BOTTOM_CIRCLE/2, $fn=50);
                }
            }
        }
    }
    translate([LEGO_SQUARE-RAIL_DEPTH, LEGO_SQUARE-RAIL_THICK/2, PLATE_THICK-RAIL_DEPTH])
    linear_extrude(height=PILLAR_H+RAIL_DEPTH){
        square([LEGO_SQUARE*(NUM_HOLE_W-2)+RAIL_DEPTH*2, RAIL_THICK]);
    }
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

OpenSCADまとめ

OpenSCADとUltimaker Curaを使用してRaspberry Pi Picoのケースを作成する

2021年3月17日水曜日

MicroPythonを使用してmicro:bitに接続したGrove光センサーの値を取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitに接続した光センサーの値を取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

〇Micro:bitに接続したGrove光センサー
P0/P14ポートに接続します。

光センサーの値を取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    val = pin0.read_analog()
    uart.write("light sensor:" + str(val) + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(1000)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

・Raspberry Pi ZeroとGrove Base HATを利用してGrove Light Sensorを接続する場合は、以下の記事を参照してください。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで、明るさを取得する

Groveデバイスまとめ

2021年3月16日火曜日

MicroPythonを使用してmicro:bitに接続したGroveボタンの状態を取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitに接続したGroveボタンの状態を取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

〇Micro:bitに接続したGroveボタン
P0/P14ポートに接続します。

Groveボタンの状態を取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    val = pin0.read_digital()
    uart.write("grove button:" + (" pressed" if val == 1 else " not pressed" ) + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(1000)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

Groveデバイスまとめ

2021年3月15日月曜日

MicroPythonを使用してmicro:bitに接続したタッチセンサーの値を取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitに接続したタッチセンサーの値を取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

〇Micro:bitに接続したタッチセンサー
P0/P14ポートに接続します。

タッチセンサーの値を取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    val = pin0.read_digital()
    uart.write("touch sensor:" + str(val) + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(1000)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年3月14日日曜日

MicroPythonを使用してmicro:bitに接続したGrove Rotary Angleセンサーの値を取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitに接続したGrove Rotary Angleセンサーの値を取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

〇Micro:bitに接続したGrove Rotary Angleセンサー
P0/P14ポートに接続します。

Grove Rotary Angleセンサーの値を取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    val = pin0.read_analog()
    uart.write("rotary angle sensor:" + str(val) + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(1000)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年2月19日金曜日

MicroPythonでmicrobitのGrove Shieldに接続したGrove LEDを、USBシリアル通信を通して光らせる

MicroPythonでmicrobitのGrove Shieldに接続したGrove LEDを、USBシリアル通信を通して光らせるには、以下の手順を実行します(制御側はPC側)。

実行手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial

cd ~/pyserial

pipenv --python 3

pipenv install pyserial

pipenv shell

3. PC側送信プログラムの保存
以下をcontrol_led.pyとして保存します。
import serial
import time

try:
  ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
  ser.write(b"led_on")
  time.sleep(3)
  ser.write(b"led_off")
finally:
  ser.close()
4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.HEART)
while True:
    line = uart.readline()
    if line == b'led_on':
        pin0.write_digital(1)
    if line == b'led_off':
        pin0.write_digital(0)
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        break
    sleep(1000)
uart.init(115200)

5. PC側の受信プログラムの実行
シェルで以下を実行後、LEDが3秒間点灯後に消灯することを確認します。AボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。
python control_led.py

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

Groveデバイスまとめ

2021年2月16日火曜日

MicroPythonを使用してUSBシリアルで送信した文字列をmicro:bitのLEDマトリックスに表示する

micro:bitはMicroPythonでプログラミングする事もできます。MicroPythonを使用してUSBシリアルで送信した文字列をmicro:bitのLEDマトリックスに表示するには、以下の手順を実行します。

実行手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial

cd ~/pyserial

pipenv --python 3

pipenv install pyserial

pipenv shell

3. PC側送信プログラムの保存
以下をsend_message.pyとして保存します。
import serial

try:
  ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
  ser.write(b"microbit sample")
finally:
  ser.close()

4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.HEART)
while True:
    line = uart.readline()
    if line is not None:
        display.scroll(line)
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        break
    sleep(100)
uart.init(115200)

プログラムをmicrobitに保存後、Thonnyを閉じておきます(※受信プログラムを使用せずにUSBシリアルの出力を見たい場合は、閉じないでおきます)
Micro:bitが反応しなくなった場合は「ThonnyからMicoPythonのプログラムをmicro:bitに転送する設定」の手順でMicroPythonを再インストールします。

5. PC側の送信プログラムの実行
シェルで以下を実行後、micro:bitのLEDマトリックスに文字列が表示されることを確認します。AボタンやBボタンを押したときのメッセージが表示されることを確認します。最後にAボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。
python send_message.py

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年2月11日木曜日

MicroPythonを使用してmicro:bitの温度を取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitの温度を取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

ジェスチャーを取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    temp = temperature()
    uart.write(str(temp) + "C\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(1000)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年2月6日土曜日

micro:bitの加速度センサーの3軸の値をMicroPythonを使用して取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitの加速度センサーの3軸の値を取得してUSBシリアルで送信して、PCで受信するには、以下の手順を実行します。

実行手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial

cd ~/pyserial

pipenv --python 3

pipenv install pyserial

pipenv shell

3. PC側受信プログラムの保存
以下をoutput_accelerometer.pyとして保存します。
import serial

try:
  ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
  while True:
    line = ser.readline()
    ary = line.decode('utf-8').strip().split(',')
    if len(ary) == 3:
      print(ary)
finally:
  ser.close()

4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.HEART)
while True:
    values = "{},{},{}".format(accelerometer.get_x(), accelerometer.get_y(), accelerometer.get_z())
    uart.write(values + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        break
    sleep(100)
uart.init(115200)

プログラムをmicrobitに保存後、Thonnyを閉じておきます(※受信プログラムを使用せずにUSBシリアルの出力を見たい場合は、閉じないでおきます)
Micro:bitが反応しなくなった場合は「ThonnyからMicoPythonのプログラムをmicro:bitに転送する設定」の手順でMicroPythonを再インストールします。

5. PC側の受信プログラムの実行
シェルで以下を実行後、micro:bitのAボタンやBボタンを押したときのメッセージが表示されることを確認します。最後にAボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。PC側のプログラムはCtrl+Cで終了します。
python output_accelerometer.py

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年2月1日月曜日

MicroPythonを使用してmicro:bitの加速度センサーからジェスチャーを取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitの加速度センサーからジェスチャーを取得しUSBシリアルで送信して、PCで受信するには、以下のプログラムを実行します。

ジェスチャーを取得して、USBシリアル送信するMicroPythonプログラム

micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
display.show(Image.TRIANGLE)
while True:
    gesture = accelerometer.current_gesture()
    uart.write(gesture + "\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    sleep(100)
uart.init(115200)

その他のPC側の受信設定などは「micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する」の手順を参考にして設定します。

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年1月27日水曜日

micro:bitのA/Bボタンの状態をMicroPythonを使用して取得・USBシリアルで送信する

micro:bitはMicroPythonでプログラミングする事もできます。micro:bitのA/Bボタンの状態を取得してUSBシリアルで送信して、PCで受信するには、以下の手順を実行します。

実行手順

1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. pyserialのインストール
以下のコマンドでpyserialをインストールした仮想環境を作成します
mkdir -p ~/pyserial

cd ~/pyserial

pipenv --python 3

pipenv install pyserial

pipenv shell

3. PC側受信プログラムの保存
以下をserial_output.pyとして保存します。
import serial

try:
  ser = serial.Serial('/dev/ttyACM0',115200,timeout=None)
  while True:
    line = ser.readline()
    print(line)
finally:
  ser.close()

4. micro:bitとPCを接続して、Thonnyなどで以下のプログラムをmain.pyとして保存します。
from microbit import *

uart.init(115200)
while True:
    if button_a.is_pressed() and not button_b.is_pressed():
        display.show(Image.ARROW_W)
        uart.write("A button is pressed.\n")
    if not button_a.is_pressed() and button_b.is_pressed():
        display.show(Image.ARROW_E)
        uart.write("B button is pressed.\n")
    if button_a.is_pressed() and button_b.is_pressed():
        display.clear()
        uart.write("stop.\n")
        break
    if not button_a.is_pressed() and not button_b.is_pressed():
        display.show(Image.SMILE)
    sleep(500)
uart.init(115200)

プログラムをmicrobitに保存後、Thonnyを閉じておきます(※受信プログラムを使用せずにUSBシリアルの出力を見たい場合は、閉じないでおきます)
Micro:bitが反応しなくなった場合は「ThonnyからMicoPythonのプログラムをmicro:bitに転送する設定」の手順でMicroPythonを再インストールします。

5. PC側の受信プログラムの実行
シェルで以下を実行後、micro:bitのAボタンやBボタンを押したときのメッセージが表示されることを確認します。最後にAボタンとBボタンを同時押してmicro:bit側のプログラムを終了します。PC側のプログラムはCtrl+Cで終了します。
python serial_output.py

関連情報

・Thonnyに関する記事は、こちらを参照してください。

・Micro:bitに関する記事は、こちらを参照してください。

2021年1月26日火曜日

ThonnyからMicoPythonのプログラムをmicro:bitに転送する設定

Thonnyから直接MicroPythonのプログラムを転送して実行する事ができます。

設定手順

1. Thonnyを起動して、「ツール」メニューの「Options...」を選択します。

2. Thonny Optionsダイアログで「インタプリタ」タブを選択します。

3. 「Thonnyはコードの実行にどのインタプリタまたはデバイスを使用すればよいですか?」で「MicroPython (BBC micro:bit)」を選択します。

4. Portはではmbed Serial Portを選択します。

5. 「Open the dialog for installing or upgrading MicroPython on your device」ボタンをクリックします。
「Install latest MicroPython to BBC Micro:bit」ダイアログで「インストール」ボタンをクリックします。
※あらかじめmicro:bitは接続しておいてください。

関連項目

・Thonnyに関する他の記事は、こちらを参照してください。

2020年10月30日金曜日

TFab Worksのmicro:bit用温度・湿度・気圧センサーのデータをBluetoothでRaspberry Piに送信する

TFab Worksのmicro:bit用温度・湿度・気圧センサーのデータをBluetoothでRaspberry Piに送信するには、以下の手順を実行します。

実装手順

1. microbitで以下のプログラミングを行う
ネームスペースnsに「S000」を10進数に変換した数値1395666992を指定して、インスタンスとして16bit(65536)シフトした温度、8bit(256)シフトした湿度、800引いた気圧をアドバタイズします。
2秒アドバタイズしたあとは、598秒停止して10分おきにデータを送付します。

・mirobitのプログラム画面

2. Raspberry Piで受信プログラムを作成する
bluepyをインストールしたうえで下のプログラムを入力します。
advertise-env.py
from bluepy import btle
import bluepy
import datetime

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '00000000000053303030':
          val_temp = int(value[34:36], 16)
          val_humidity = int(value[36:38], 16)
          val_atomosphere = int(value[38:40], 16) + 900
          now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
          path = "./advertise-env.log"
          with open(path, mode="a") as lf:
            lf.write('{},{},{},{}\n'.format(now.strftime('%Y-%m-%d %H:%M:%S'),val_temp, val_humidity, val_atomosphere))
          print('{},{},{},{}\n'.format(now.strftime('%Y-%m-%d %H:%M:%S'),val_temp, val_humidity, val_atomosphere))

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

3. 以下のコマンドで、日時、温度、湿度、気圧をファイルに記録します。
/usr/bin/python3 advertise-env.py >> ./advertise-env.log

・micro:bitとTFab Worksのmicro:bit用温度・湿度・気圧センサー
 
Panasonicのエボルタ1950mAhの電池2本で 約9日くらい持つようです。

関連情報

・microbitに関する記事は以下を参照してください。
http://serverarekore.blogspot.com/search/label/microbit

2020年1月20日月曜日

microbitに接続したGrove音センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したGrove音センサーの値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットを音センサーの値として使用します。

3. 音センサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-a0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16)
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseで音センサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py

〇Groveシールドと音センサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月17日金曜日

microbitのABボタンの状態値をBluetoothのAdvertiseでRaspberry Piに表示する

以下の手順でP0にABボタンの状態値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位2ビットをBボタンの状態値/Aボタンの状態値として使用します。

3. ABボタンの状態値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-buttons.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val_a = int(value[38:40], 16) & 1
            val_b = int(value[38:40], 16) & 2
            print('val_a:%d' % val_a)
            print('val_b:%d' % val_b)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでABボタンの状態値を表示するプログラムの実行
sudo python3 advertise-buttons.py

〇参考情報
Bluetooth Developer Studio Level 3 Profile Report


2020年1月16日木曜日

microbitに接続した光センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続した光センサーの値をBluetoothのAdvertiseで表示する事ができます。

実行手順

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットを光センサーの値として使用します。

3. 光センサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-a0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16)
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseで光センサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py

〇Groveシールドと光センサーを接続したmicrobit

参考情報

Bluetooth Developer Studio Level 3 Profile Report

・基板を見えないようにするためにGrove Light Sensorのケースを作成する場合は以下の記事を参照してください。
OpenSCADとUltimaker Curaを使用してGrove Light Sensorのケースを作成する

・Raspberry Pi ZeroとGrove Base HATを利用してGrove Light Sensorを接続する場合は、以下の記事を参照してください。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで、明るさを取得する

Groveデバイスまとめ

2020年1月13日月曜日

microbitに接続したRotary Angleセンサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したRotary Angleセンサーの値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットをRotary Angleセンサーの値として使用します。

3. Rotary Angleセンサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-a0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16)
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでRotary Angleセンサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py

〇GroveシールドとRotary Angleセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月12日日曜日

microbitに接続したボタンの状態値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したボタンの状態値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位1ビットをタッチセンサーの値として使用します。

3. ボタンの状態値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-d0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16) & 1
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでボタンの状態値を表示するプログラムの実行
sudo python3 advertise-d0.py

〇Groveシールドとボタンを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月11日土曜日

microbitに接続したタッチセンサーの値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したタッチセンサーの値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位1ビットをタッチセンサーの値として使用します。

3. タッチセンサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-d0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16) & 1
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでタッチセンサーの値を表示するプログラムの実行
sudo python3 advertise-d0.py

〇Groveシールドとタッチセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月9日木曜日

microbitに接続した水分センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続した水分センサーの値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットを水分センサーの値として使用します。
3. 水分センサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-a0.py
from bluepy import btle
import bluepy

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)
    self.lastseq = None

  def handleDiscovery(self, dev, isNewDev, isNewData):
    if isNewDev or isNewData:
      for (adtype, desc, value) in dev.getScanData():
        #print(adtype, desc, value)
        if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
          seq = (int(value[32:33], 16) & 0xC) >> 2
          if seq != self.lastseq:
            self.lastseq = seq
            val = int(value[38:40], 16)
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseで水分センサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py

〇Groveシールドと水分センサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report