29 3月

Workshop Report 2017/3/18


今年3回目のプログラミング・ワークショップ「ITキッズラボ」が、3月18日に開催しました.
小学生3名、中学生1名、農工大の学生スタッフ3名が参加してくれました.

3回シリーズ始めた HTML〜JavaScript の最終回でした.

phina.js を使って HTML5 のキャンバス上に描いた画像を動かしたり、クリックして消したりすることができるようになりました.
そのあとで javascript のシンタックスを復習したのですが、説明文が英語なので翻訳アプリを使いながら理解していきました.

今回はもう一つ.久しぶりに、Arduino とセンサーキットを使ってフィジカルプログラミングに挑戦です.

次回ワークショップは4月15日(土)を予定しています。
テーマは「ArduinoプラスONE」 です.お楽しみに!



ではまた!
Happy hacking 😉

12 2月

角度を指示して動かす


サーボモータは、回転する角度を指示して動かすことができるモータなんだ。ロボットの腕や足に使われてるよ。

1. 準備するもの

名前 仕様
マイコン Arduino UNO
サーボモーター SG90

2. つなぎかた

モーターから出ている線を Arduino に直接つなぐ。

  • 赤い線を Arduino の電源5V のソケットに挿す
  • 黒い線を Arduino のGnd のソケットに挿す
  • 黄色い線を Arduino の 8pin に挿す

スクリーンショット 2015-02-11 18.10.17

3. プログラム

10度、11度、12度と1度づつ角度を変えて170度までモータ回す。
170度までいったら、今度は180度から1度まで逆回転させる。

#include <Servo.h>

Servo myservo;
int pos = 0;

void setup()
{
    myservo.attach(8);       // 8 pin is used for signal
}
void loop()
{
    for(pos = 10; pos <= 170; pos += 1)
    {
        myservo.write(pos);
        delay(15);                       // waits 15ms
    }

    for(pos = 180; pos >=1; pos-=1)
    {
        myservo.write(pos);
        delay(15);                       // waits 15ms
    }
}

Arduino IDE を使っている場合は、以下の手順で Arduino にプログラムを書き込む。

  1. メニューのスケッチから検証・コンパイルを選ぶ。
  2. メニューのファイルからマイコンボードに書き込む。

INO を使っている場合は、コマンドラインで次のコマンドを打つ。

$ ino build
$ ino upload

うまくいったらモータが回り始めるはずだよ 😉

11 2月

[14-Feb-2015] 教材として使うものリスト


IT キッズラボで使用するもののリストです。値段は2015年2月時点の販売価格であくまで目安として考えてください。

ITEM

購入先

内容

値段

Arduino UNO R3
arduino-picture
スイッチサイエンス Arduinoマイコン本体 ¥3,240
USBケーブル(A-Bタイプ)50cm
usb-cable-ab
スイッチサイエンス Arduino UNO とパソコンをつなぐためのケーブル ¥129
Freaduino UNO Rev1.8
freaduino-picture
ヴイストン ロボットショップ Arduino UNO と同じものだが、USBケーブルが付属していて、モーターとつなぐためのソケットが準備されている。さらにArduino UNO と比べて値段も安いのでコチラがお勧め。 ¥2,041
サーボ・モーターSG90
servo-motor-sg90
Amazon サーボモータ 2個 ¥890
ブレッドボード
breadboard
スイッチサイエンス 各種電子部品やジャンパ線をボードの穴に差し込むだけで、 はんだ付けをしなくても、手軽に電子回路を組むことの出来る基板。 ¥520〜
ジャンパー・ワイヤー(オスーオス)
jumper-wire
スイッチサイエンス Arduino、ブレッドボード、モーターを結線するために使います。 ¥360/10本
AC アダプター
ac-adapter
スイッチサイエンス Arduiono Uno 用の DC 電源。パソコンをUSBケーブルでつなげば電源がなくても動作するが、Arduiono Unoにモーターやセンサーをつなぐと動作が不安定になるので必要になります。 ¥945
ARDUINO IDE
arduino-ide
ARDUINO Arduino で動くソフトを開発するためのツール。Windows/Mac/Linux版があります。 無料
05 2月

[基本編] BeagleBoneBlack と Arduino を Bluetooth で接続


「コンピューターとしゃべる(Bluetooth)」で示したように、Arduino に HC-06(JY-MCU) を接続して、BeagleBone のアプリケーションと通信するまでを説明するよ。

SDPに必要なサービスを登録する

BeagleBoneBlack に SPP が登録されているか確認する。

$ sdptool browse local

登録されていないので、以下のコマンドで登録する。

$ sdptool add --channel=22 SP
Serial Port service registered

SPP が登録された。

# sdptool browse local
Service Name: Serial Port
Service Description: COM Port
Service Provider: BlueZ
Service RecHandle: 0x10007
Service Class ID List:
  &quot;Serial Port&quot; (0x1101)
Protocol Descriptor List:
  &quot;L2CAP&quot; (0x0100)
  &quot;RFCOMM&quot; (0x0003)
    Channel: 22
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  &quot;Serial Port&quot; (0x1101)
    Version: 0x0100

Bluetooth デバイスの登録

Bluez-simple-agent で libffi.so ライブラリが必要なのでソースをダウンロードしてインストールしておく。
シンボリックリンクを張るのを忘れずに。

$ wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
$ tar xzvf libffi-3.2.1.tar.gz
$ cd libffi-3.2.1
$ ./configure &amp;&amp; make

# make install 
# ln -s /usr/local/lib/libffi.so.6 /usr/lib/

Arduino の Bluetooth デバイス HC-06 を検索する。

$ sudo  hcitool scan
Scanning ...
  30:14:10:15:02:64 HC-06

RFCOMM ポートとアダプタをバインドする。

# rfcomm bind 1 30:14:10:15:02:64

# rfcomm
rfcomm1: 30:14:10:15:02:64 channel 1 closed

rfcomm bind コマンド

指定したリモートのBluetoothデバイスと仮想シリアルポートを関連付ける。 bindコマンド実行後、/dev/rfcommDEV(DEVはポート番号)というデバイスファイルが作成されるので、 以降はこれを使って通信ができる。 bindコマンドでは、デバイスファイルを作るだけで実際にリモートデバイスと接続は行わない。 アプリケーションがデバイスファイルをオープンする段階で接続処理が行われる。

Bluetooth デバイスへの接続

HC-06 が見つかったので、MAC アドレスを指定してペアリングする。
ピンコードは 1234 を入力する。

*bluez-simple-agentは python 2.7系で動かない。

$ sudo bluez-simple-agent hci0 30:14:10:15:02:64
RequestPinCode (/org/bluez/399/hci0/dev_30_14_10_15_02_64)
Enter PIN Code: 1234
Release
New device (/org/bluez/399/hci0/dev_30_14_10_15_02_64)

現在のセッションのみで接続する。

$ sudo hidd --connect 30:14:10:15:02:64

minicom で通信確認

minicom のインストール&セットアップ

$ sudo apt-get install minicom

minicom を起動して、Serial port setup で以下のように設定する。

$ sudo minicom -s
A - Serial device: /dev/rfcomm1
E - Bps/Par/Bits: 115200 8N1

Configuration 画面から exit すると受信データが表示される。

Welcome to minicom 2.6.2

OPTIONS: I18n
Compiled on Feb  8 2013, 05:09:59.
Port /dev/rfcomm1

Press CTRL-A Z for help on special keys

hello world!
:

pySerial でシルアル通信確認 (python 3.3のみ有効)

$ pip install pyserial
$ sudo easy_install -U pyserial

注意:python 2.7 から python 3.3 へ移行したとき pip でエラーが発生したが 以下の手順でうまくいった。

# curl https://bootstrap.pypa.io/ez_setup.py | python

# easy_install --upgrade pip
# pip install --upgrade setuptools

pyserial を使って受信データを表示する。

> import serial
> ser = serial.Serial('/dev/rfcomm0', timeout=0.1)  # timeoutを秒で設定(default:None)ボーレートはデフォルトで9600
> c = ser.read(10)  # 10文字読み込み
> print(c)
> ser.close()

node-serial で通信

必要モジュールのインストール

BeagleBoneBlack に Node.js と Snowshoe 環境はインストールされているものとする。

シリアル通信モジュール インストール

$ npm install serialport

シルアル通信用のコード serialtest.js

var serialport = require('serialport');

/* ポートの設定 */
var portName = '/dev/rfcomm1';
var sp = new serialport.SerialPort(portName, {
        baudRate: 115200,
        dataBits: 8,
        parity: 'none',
        stopBits: 1,
        flowControl: false,
        parser: serialport.parsers.readline("n")
      });

/* イベントハンドラ */
sp.on('data', function(input) {
      console.log('Received : ' + input);
      });

実行結果

$ node serialtest.js
Received : hello world!
Received : hello world!
Received : hello world!
:
05 2月

コンピューターとしゃべる (Bluetooth)


JY-MCU Bluetooth モジュールを Arduino UNO に装着して Mac と通信してみるよ。

準備するもの

名前 仕様
マイコン Arduino UNO
Bluetoothデバイス JY-MCU Bluetooth to UART Wireless Serial Port Module for Arduino

参考

接続図

JY-MCU と Arduino はクロス配線となるように接続する。
JY-MCU の RX 端子を Arduino デジタルピン 1番(TX) につなぎ、JY-MCU の TX 端子を Arduino デジタルピン 0 番 (RX) につなぐ。

arduino-bluetooth-fig1arduino-bluetooth-fig1

ソースコード

Arduino に以下のコードをアップロードしておく。

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(1000);
  Serial.println("hello world!");
}

Mac からデバイスに接続する

  1. システム環境設定 > Bluetooth を開く。
  2. デバイスに HC-06 と表示されるので、ペアリングを押す。
  3. ペアリングできませんでしたと表示されるので、オプションを選択してコード欄に 1234 と入力して再度ペアリングを押す。
  4. HC-06 接続済みとなる。
  • 2回目以降は、Bluetooth 画面のデバイスから HC-06 を一度削除すると、再度 HC-06 が表示され、ペアリング釦が現われるので、上記2 から実行する。

通信の確認

iTerm で ttyデバイスを探す。

$ ls -al /dev/tty.*
crw-rw-rw-  1 root  wheel   18,  14 12 14 15:13 /dev/tty.HC-06-DevB

HC-06 から受信したデータを表示する。

$ screen /dev/tty.HC-06-DevB
hello world!
hello world!
hello world!
  :

screen を終了するには、screen の画面で ctrl + a を押し、次に k を押す。
すると画面左下に Really kill this window [y/n] と表示されるので、 y を押すと screen が終了する。