PRoC BLE で、Lチカしてみる
新しいプロジェクトから、PRoC BLE プロジェクトを作ってもいいのですが、なぜか、PRoC BLE 用に Empty schematic テンプレートが
用意されていない(8/10現在)ので、PSoC 4 BLE 用のプロジェクトを、PRoC BLE 用に変更する方法で、プロジェクトを作成してみます。
1. プロジェクトの準備
yamagoya.hatenablog.jp
上記記事を参考に、プロジェクト「LED01」を作成します。
その後、プロジェクト「LED01」をフォルダごと、バックアップするか複製などします。
2. Baseboardの準備
Baseboard から、PSoC 4 BLE モジュールをはずし、PRoC BLE モジュールをセットします。
3. プロジェクトの対象デバイスの変更
Components タブを選択します。
Project を選択、右クリックから、Device Selector を呼び出します。
Family のフィルタで、PSoC 4 BLE のチェックをはずし、PRoC BLE のチェックをつけます。
BLE Pioneer Kit についてる PRoC BLE のモジュールには、CYBL10563-56LQXI (同梱されているモジュールを確認してください)と書いてあるので、それを選択し、OK を押します。
4. 実行
「Build」「Clean and Build LED01」で、リビルドします。
Programボタンで、実行
5. 参考
PRoC BLE
PSoC 4 BLEから、アナログ系のコンポーネントなどをカットした廉価版のチップです。
ちなみに、Baseboard にさしたとき、LED や SWITCH が同じピン配置になっています。
PRoC BLE
http://japan.cypress.com/products/proc-ble-bluetooth-smart
EZ-BLE
PRoC BLE を積んだ小型のモジュールです。指先にのるサイズ。なんかプラモデルかなにかに組み込んで、スマホで操作するには最適(?)です。
ただ、ほんとに小さいので、IO を引き出して、配線するのは、ちょっと技術がいるかも。
EZ-BLE
http://japan.cypress.com/products/ez-ble-proc-module-bluetooth-smart
PSoC 4 BLE で、Lチカしてみる(4)
「PSoC 4 BLE で、Lチカしてみる」の4本目。
LEDの明るさを制御してみます。
今回は、PWMを使います。PWMは、PRoC BLE / EZ-BLE でも使えます。特に EZ-BLEは小さいので、プラモデルなんかに組み込んで、BLE で LEDをコントールとかも出来そうです!
1. プロジェクトの作成
プロジェクト「LED04」を作成します。
2. コンポーネントを配置する
2-1. コンポーネントの配置
Component Catalog から、
・Clock
・PWM
・Digital Output Pin
・Logic Low '0'
を持ってきて、TopDesign.cysch に配置する。
2-2. Clockコンポーネントの設定
2-3. PWMコンポーネントの設定
2-4. Digital Output Pinコンポーネントの設定
2-5. コンポーネントの接続
各コンポーネントの設定後、このように接続します。
2-6. 配線
LED04.cydwr を開き、LEDを P2[6] につなぐ。
「Generate Application」ボタンを押す
3. コードを書く
Workspace Explorer から main.c を、開く。
コードはこんな感じ。
#include <project.h> int main() { CyGlobalIntEnable; /* Enable global interrupts. */ int led_output = 0; PWM_Start(); for(;;) { PWM_WriteCompare(led_output); led_output++; if(led_output > 255) led_output = 0; CyDelay(5); } }
4. 動作の説明(ざっくり)
PWM_WriteCompare( led_output ) で、LED の点灯時間を設定します。点灯時間は、led_output / 255 となります。led_output が255の時は、ずっとついていて、0なら消灯します。
このプログラムでは、led_output を1ずつ大きくしていって、255 になったら、0 に戻しています。
これで、LEDは、だんだんと明るくなり、明るくなったら、消灯に戻り、また明るくなるというのを繰り返します。
5. 実行
Programボタンを押して、実行。
PSoC 4 BLE で、Lチカしてみる(3)
「PSoC 4 BLE で、Lチカしてみる」の3本目、今回は、ベースボード上のスイッチを使って、LEDをON/OFFします。
だんだんとざっくりになってきました。1本目、2本目は、多少丁寧に書いているので参考にしてください。
yamagoya.hatenablog.jp
yamagoya.hatenablog.jp
1. プロジェクトの作成
プロジェクトを作成します。
2. コンポーネントを配置する
2-1. コンポーネントの配置
Component Catalog から、
・Digital Input Pin
・Digital Output Pin
を持ってきて、TopDesign.cysch に配置する。
2-2. Digital Input Pinコンポーネントの設定
2-3. Digital Output Pinコンポーネントの設定
2-4. 配線
LED03.cydwr を開き、LEDを P2[6] につなぎ、SW1をP2[7]につなぐ。
「Generate Application」ボタンを押す
3. コードを書く
Workspace Explorer から main.c を、開く。
LED_Write( SW1_Read() );
を1行足して....
#include <project.h> int main() { CyGlobalIntEnable; /* Enable global interrupts. */ /* Place your initialization/startup code here (e.g. MyInst_Start()) */ for(;;) { LED_Write( SW1_Read() ); } }
4. 実行
Programボタンを押して、実行。
User Switchを押すと、LEDが点灯、スイッチを離すと、LEDが消灯します。動作としては、非常に普通な感じですね....
PSoC 4 BLE で、Lチカしてみる(2)
yamagoya.hatenablog.jp
前回は、コードによって点滅させましたが、せっかくのPSoCですので、回路を使って点滅させます。
1. プロジェクトの作成
プロジェクトを作成します。
2. コンポーネントを配置する
2-1. コンポーネントの配置
Component Catalog から、
・Clock
・PWM(TCPWM mode)
・Digital Output Pin
を持ってきて、配置する。
各コンポーネントがつながるように気をつけてください。
2-2. Clockコンポーネントの設定
2-3. PWM(TCPWM mode)コンポーネントの設定
2-4. Digital Output Pinコンポーネントの設定
2-5. 配線
LED02.cydwr を開き、LEDを P2[6] につなぐ
「Generate Application」ボタンを押す
3. コードを書く
Workspace Explorer から main.c を、開く。
PWM_Start();
を1行足して....
#include <project.h> int main() { CyGlobalIntEnable; /* Enable global interrupts. */ PWM_Start(); for(;;) { /* Place your application code here. */ } }
4. 動作の説明(ざっくり)
コードは、PWMを開始だけして、あとはなにもしていません。
点滅は、回路側で行っています。
PWMは1000カウント周期で動作します(Priodの値)。Clockが1KHzなので、1秒周期で繰り返し動作します。クロックがCompare値より小さい時は、LEDは、Lowになり、大きいときは、Highになります。
Programボタンを押して、実行
設定やコードに間違えがなければ、LEDが点滅を始めます。
5. おまけ
PWMの設定を変えてみます。
Compareの値を小さくすると、間隔はそのままに、点灯時間が短くなります。
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