PSoC 4 BLE で、Lチカしてみる(1)
Cypress BLE Pioneer Kitを使って、Lチカしてみます。
PSoC 4 BLEをさしたBaseboardをPCにUSBケーブルでつなぎます。
PSoC Creatorを起動します。
1. プロジェクトの作成
メニューから「File」「New」「Project」を選択
PSoC 4100 BLE / PSoC 4200 BLE Design を選択
・プロジェクト名
・保存場所
・ワークスペース名
を設定
Project templete を「Empty schematic」にして、「OK」を押す
2. Digital Output Pin を配置する
右上のComponent Catalogの検索窓に、「pin」と入力
「Digital Output Pin」を、TopDesign.cysch にドラッグ&ドロップする
Digital Output Pinは、「Pin_1」という名で、生成される。
※写真は、Zoom In で拡大してます。
これをダブルクリックする。
Nameを「LED」に変更。
「HW connection」のチェックをはずして、OKを押す。
LED01.cydwrをダブルクリックする。
「LED」を、ドラッグ&ドロップで、P2[6] につなぐ。
メニューから「Build」「Generate Application」を実行。
(もしくは、Generata Applicationボタンを押す)
これで、現在のハードウェア構成にあわせて、関数群が生成される。
3. コードを書く
左の Workspace Explorer の main.c を、ダブルクリックする。
2行加えて、こんな感じ
#include <project.h> int main() { CyGlobalIntEnable; /* Enable global interrupts. */ /* Place your initialization/startup code here (e.g. MyInst_Start()) */ for(;;) { LED_Write( ~LED_Read() ); CyDelay(1000); } }
コードの説明(ざっくり)
現在のLEDの値が1であれば0に、0であれば1にする。
1000msec(1秒)待つ。
これをひたすら繰り返す。
メニューから「Debug」「Program」を実行
(もしくは、Programボタンを押す)
設定やコードに間違えがなければ、書き込みデータ生成され、チップに書き込まれ、実行される。
問題なく実行されれば、LEDが点滅する。
4. おまけ
このLEDは、3色LEDなので、色を変えられます。
LED01.cydwr を表示して、「LED」を、ドラッグ&ドロップで、P3[6] につなぐ。
Programボタンを押す。
うまく動けば、LEDが緑色で点滅する。
LED01.cydwrをダブルクリックする。
「LED」を、ドラッグ&ドロップで、P3[7] につなぐ。
Programボタンを押す。
LEDが青色で点滅する。
Cypress Bluetooth Low Energy Pioneer Kit
Bluetooth Low Energy(BLE) を調べている時に出会った Cypress の Bluetooth Low Energy Pioneer Kit なかなかおもしろそうです。1チップの中に、ARM Cortex-M0、BLE、プログラマブルな回路を詰め込んだPSoC 4 BLE / PRoC BLE の開発キットです。技適も通ってます。
CY8CKIT-042-BLE Bluetooth® Low Energy (BLE) Pioneer Kit
http://japan.cypress.com/documentation/development-kitsboards/cy8ckit-042-ble-bluetooth-low-energy-ble-pioneer-kit
この小さいのが、モジュール本体で、これにコードを書き込んで、電源だけ供給すれば、これだけで、BLE通信が可能です。左がPSoC 4 BLE Module で、右がPRoC BLE Moduleです。
開発時は、Baseboardにさして使います。Baseboardには、LEDやスイッチが載っていて、それぞれGPIOにつながっていますので、このキットだけで、すぐに遊べそうです。
さらに、Windows / iOS / Android 用に CySmartというアプリが提供されていて、キットとスマホ間でBLE通信を試してみることも可能です。
ちなみに、国内であれば、
共立エレショップ
http://eleshop.jp/shop/g/gF36121/
マクニカオンラインストア
https://store.macnica.co.jp/products/cypress_cy8ckit-042-ble
海外なら、
Mouser
http://www.mouser.jp/ProductDetail/Cypress-Semiconductor/CY8CKIT-042-BLE/
Cypress Store
http://japan.cypress.com/documentation/development-kitsboards/cy8ckit-042-ble-bluetooth-low-energy-ble-pioneer-kit
などで入手できます。
あと、定期的(2~3ヶ月に1度?)に、東京/大阪でワークショップが開かれていて、これに参加すると、もらえるようです。
ワークショップ(Cypress)
http://japan.cypress.com/workshops
Raspberry Pi 2で、I2C LCDモジュールを使ってみる
Raspberry Pi 2で、I2C LCDモジュールを使ってみました。
使ったもの
- Raspberry Pi 2 (Raspbian/NOOBS 1.4.1)
- I2C LCDモジュール
- キーボード、マウス、MicroSDカード、ブレッドボードなど
1. I2C LCDモジュール
I2C接続の小型LCD搭載ボード(3.3V版)
実験用に買ってみました。 お手頃です。
スイッチサイエンス 商品ページ
https://www.switch-science.com/catalog/1405/
2. I2Cを有効化する
デフォルトでは、I2Cは有効になっていないので、使えるようにしてあげる必要があります。
2-1. sudo raspi-config
$ sudo raspi-config
「8 Advanced Options」「A7 I2C」を選択
[<はい>] を選択します。
2-2. 再起動
$ sudo shutdown -r now
2-3. /boot/config.txt
dtparam=i2c_arm=on
があることを確認します
なかったら行追加します
2-4. /etc/modules
i2c-dev
があることを確認します
なかったら行追加します
2-5. I2CTools
I2CTools をインストールします
$ sudo apt-get install i2c-tools
2-6. シャットダウン
配線するため、シャットダウン
$ sudo shutdown -h now
3. 配線
以下のように配線します。
Raspberry Pi 2 | LCDモジュール | |
---|---|---|
3.3V | - | VDD |
GND | - | GND |
I2C_SDA1 | - | SDA |
I2C_SCL1 | - | SCL |
LCDモジュールを抜いている状態
LCDモジュールをさしている状態
4. I2Cデバイスの接続を確認する
$ sudo i2cdetect 1
を実行すると...
pi@raspberrypi ~ $ i2cdetect 1 WARNING! This program can confuse your I2C bus, cause data loss and worse! I will probe file /dev/i2c-1. I will probe address range 0x03-0x77. Continue? [Y/n] y 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
このLCDモジュールのI2Cアドレスが、0x3eだと確認できます
5. LCDモジュールにコマンドを送る
最初の1発目は、失敗することがありました。その場合は、再度、コマンドを送ってみてください。
コマンド表は、秋月電子通商のページにあります。 http://akizukidenshi.com/download/ds/xiamen/AQM0802.pdf
pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i Error: Write failed pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6f i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6c 0x6f i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6c 0x6f i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0x00 0xc0 i pi@raspberrypi ~ $ sudo i2cset -y 1 0x3e 0x40 0x52 0x61 0x73 0x70 0x62 0x69 0x61 0x6e i pi@raspberrypi ~ $
実行結果
ちょっと写真が暗いですね....orz
Raspberry Pi 2で、UARTサウンドモジュールを使ってみる
Raspberry Pi 2でUART通信してみました。
手元にあったサウンドモジュールを使いました。Raspberry Pi 2 単体で音が鳴らせるでしょ?って突っ込みはなしで。
使ったもの
- Raspberry Pi 2 (Raspbian/NOOBS 1.4.1)
- Sound Module SOMO-II
- キーボード、マウス、MicroSDカード、ブレッドボードなど
1. Sound Module SOMO-II
小型のサウンドモジュール。mp3などに対応。スピーカをドライブ可能です。
国内で見つけたらなかったので、Mouserから買いました。
4D Systems:SOMO-II
Mouser 商品ページ
2. Raspberry Pi 2の設定変更
まず、Raspberry Pi 2 をデバイスとUART通信できるようにします。
※編集するファイルは、必要に応じてバックアップします。
2-1. /boot/cmdline.txt の編集
[編集前] dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait [編集後] dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait
2-2. 再起動
$ sudo shutdown -r now
2-3. /etc/inittabを編集
[編集前] T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 [編集後] #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
2-4. python-serial のインストール
$ sudo apt-get install python-serial
2-5. シャットダウン
配線するため、シャットダウン
$ sudo shutdown -h now
3. 配線
以下のように配線します。
Raspberry Pi 2 | SOMO-II | |
---|---|---|
3.3V | - | VCC |
GND | - | GND |
UART_TXD | - | RX |
UART_RXD | - | TX |
4. 音楽データを準備
MicroSDカードに、音楽データを作成します。 フォルダ構成はこんな感じ。
01 / 01music.mp3 02music.mp3
5. UART通信
python を使って、サウンドモジュールに信号を送ります。 コマンド一覧はデータシート参照。
pi@raspberrypi ~ $ python Python 2.7.3 (default, Mar 18 2014, 05:13:23) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import serial >>> ser=serial.Serial("/dev/ttyAMA0") >>> ser.baudrate=9600 >>> ser.write("\x7e\x01\x00\x00\x00\xff\xff\xef") # Play Next 8 >>> ser.write("\x7e\x05\x00\x00\x00\xff\xfb\xef") # Volume Down 8 >>> ser.write("\x7e\x04\x00\x00\x00\xff\xfc\xef") # Volume Up 8 >>> ser.write("\x7e\x16\x00\x00\x00\xff\xea\xef") # STOP 8 >>> ser.close() >>> exit() pi@raspberrypi ~ $