jendo1969 のすべての投稿

Intel Quark D2000 Zephyr Rotary Encoder


D2000にロータリーエンコーダを接続してみました。ロータリーエンコーダは、なるべく安いものを探して以下の物をアマゾンで購入しました。

エンコーダー 元 AB 相 5-24v 400 パルス 増分の光学式ロータリーエンコーダー 本体サイズ 39 * 35.5 mm NPN 出力
https://www.amazon.co.jp/gp/product/B076Q5W251/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
分解能が違いますが以下の取説を見つけました。
https://uamper.com/products/datasheet/LPD3806-360BM.pdf
エンコーダの出力は、NPNのオープンコレクタ出力です。D2000には、AB出力を4.7kΩの抵抗で3.3Vにプルアップして接続しています。
入力ピンの割り込みを利用して位相計数を行いました。アップエッジ、ダウンエッジの両方で割り込みをかけて4倍の分解能としました。400pprなので一周1600カウントとなります。正転でカウンタ増加、逆転でカウンタ減少が確認できました。

サンプルプログラムは以下にあります。
https://github.com/jendo1969/d2000/tree/master/RotEncoder

ESP-WROOM-02 RECOVERY

ESP-WROOM-02をArduinoで使用しようと思いましたが
ステルスのSSIDに対応できなかったのでATコマンドの出荷状態に戻そうと思います。
Wi-Fiモジュール ESP-WROOM-02 DIP化キット
http://akizukidenshi.com/catalog/g/gK-09758

元に戻すために準備するものは、フラッシュのダウンロードツールとファームウェアになります。
ダウンロードツールは、以下にあります。
◆ダウンロードツール
https://www.espressif.com/en/support/download/other-tools?keys=&field_type_tid%5B%5D=14
Flash Download Tools (ESP8266 & ESP32)
◆ファームウェア
https://www.espressif.com/en/support/download/sdks-demos?keys=&field_type_tid%5B%5D=14
ESP8266 NONOS SDK V2.2.0

ダウンロードファイルをそれぞれ解凍します。
ファームのファイルは、ESP8266\ESP8266_NONOS_SDK-2.2.0\binフォルダに入っています。
ダウンロードツールESPFlashDownloadTool_v3.6.3.exeを起動します。
以下のドキュメントに沿ってファイルとメモリアドレスを設定します。
https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf
1.2.6. 32 Mbit Flash, Map: 1024 KB + 1024 KB

ESP-WROOM-02(ESP8266EX)を起動するときピンの電圧を設定する必要があります。今回は、書き込みモードなので以下のようにします。
GPIO pin   書き込みモード
GPIO0    LOW
GPIO2    HIGH
GPIO15     LOW
この状態で電源を入れた後、ダウンロードツールをSTARTします。
書き込みが終了したら、電源を切って、ピンの電圧を以下のようにします。この状態で電源を入れると実行モードになります。
GPIO pin  実行モード
GPIO0    HIGH
GPIO2    HIGH
GPIO15     LOW

TERA TERMを以下の設定で起動してESP-WROOM-02と接続します。
115200bps, 8N1
改行コード: RX=CR, TX=CR+LF
ATと入力してEnterキーを押すとOKが返ってくれば成功です。

Raspberry PI2 + Chainer


Raspberry PI2でAIを試すためChainerをインストールしました。
https://chainer.org/
Pythonは、raspbian9.1に初めからインストールされています。
バージョンは、Python 2.7.13 を使用しました。
以下の物をインストールしました。
sudo apt-get install python-dev
sudo pip install chainer
Chainerは、3.3.0がインストールされました。
テストのため デモプログラムtrain_mnist.pyを実行しました。
sudo python train_mnist.py
動作完了までに112091 秒かかりました。約31時間かかったことになります。
いろいろやってみようと思います。

Intel Quark D2000 Zephyr XBEE

XBeeで無線接続しました。
Arduino用プロトタイピングボード (Prototyping Shield For Arduino)上にXBeeを接続しました。http://akizukidenshi.com/catalog/g/gM-07033/
XBeeのピッチ変換基板は、
XBee用2.54mmピッチ変換基板を使用しました。
http://akizukidenshi.com/catalog/g/gP-05060/
XBeeは、
XBeeWi-Fi(S6B)モジュール(PCBアンテナタイプ)を使用しました。
http://akizukidenshi.com/catalog/g/gM-06676/

XBeeの場合、通信の大部分をモジュール側で行うので通信の可否はモジュール設定で決まります。

USBからの給電では、ZigbeeのXBeeしか動かせません。
AC-DCコンバータ経由での給電では、WiFiのXBeeも動作しました。

通信確認は、以下のサンプルプログラムを使用しました。
https://github.com/jendo1969/d2000/tree/master/Bmc150_MAG

Intel Quark D2000 Zephyr Grove LCD

D2000のZephyrのサンプルにGrove LCDのプログラムが含まれています。

今回はこのLCDを使用してみました。
Grove RGBバックライト液晶モジュール
http://akizukidenshi.com/catalog/g/gP-09283/
LCDとBase Shield V2は、セットに含まれているものを使用しました。
Grove-Arduinoスターターキット
http://akizukidenshi.com/catalog/g/gK-09167/
http://wiki.seeed.cc/Base_Shield_V2/
LCDの電源は、5VなのでシールドのVCC設定を5Vに設定します。
LCDはI2Cコネクタに接続します。
起動すると簡単に表示が確認できます。

このLCDは、バックライトがカラーLEDになっており、設定により色が変化します。サンプルプログラムは、色の設定を100msec毎に変化させ、設定値をLCDに表示します。
Groveのサンプルは、LCDしかありませんがライブラリ側に対応センサがいくつかあるようです。

Intel Quark D2000 Zephyr BMC150 Magnetometer

BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150

今回は磁気センサにアクセスします。

QMSIのサンプルMagnetometerと
mbedのBMC150サンプルを参考にしました。
https://os.mbed.com/users/Dautor/code/BMC150/file/1d1123b3df76/bmc150.cpp/
ありがとうございます。

加速度計のアドレスは、0x12です。
#define BMC150_I2C_MAG_ADDR 0x12

磁気センサの初期化でレジスタ0x4Cで0x38を設定しています。出力データレートを30Hz、操作モードをノーマルにしています。

磁気データは、0x42レジスタから2バイトづつXYZ軸の順に入っています。6バイトを一度に読み込んでいます。

温度と加速度と磁気値を500ms毎に取得し、シリアル経由でパソコンに表示しました。

以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_MAG

Intel Quark D2000 Zephyr BMC150 ACCELOMETOR

BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150

今回は加速度計にアクセスします。

#define BMC150_I2C_ADDR 0x10
温度センサとI2Cのアドレスは同じです。
加速度の取得の前にレンジとフィルターの設定を行っています。フィルターは更新時間64ms、レンジは、±2gに設定しました。

加速度データは、0x02レジスタから2バイトづつXYZ軸の順に入っています。6バイトを一度に読み込んでいます。

温度と加速度を500ms毎に取得し、シリアル経由でパソコンに表示しました。

以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_ACC

Google AIY VOICE KIT ASSEMBLY

Google AIY VOICE KITを組み立てます。
カラー冊子のマニュアルに詳しい組立方法が記載されています。
またプロジェクトのホームページにも組立方法があります。
https://aiyprojects.withgoogle.com/voice#assembly-guide
樹脂の支柱を2本取り付けてVoice HATを取り付けます。支柱の取り付けは固いので破損させたり、怪我したりしないように注意してください。

付属品の他に、小さいプラスドライバと両面テープが必要です。プラスドライバは、スピーカ接続に使用します。

ケーブルでマイクボードを接続します。

ボタンケーブルを接続します。

次に箱ケースを組み立てます。

中箱を組み立てます

スピーカをはめ込みます。

中箱を箱ケースに収めます。

ボタンを上蓋にはめ込み配線します。配線ピンを間違えないように接続します。

両面テープは、マイクボードを貼り付けるに使用します。マイクはボードの左右にあり、箱の小さい穴にマイクが合うように貼り付けます。

蓋を閉じて完成です。

次にSDカードを焼き、起動確認します。

Google AIY VOICE KIT


Google AIY VOICE KITを購入しました。
Google AIY Voice Kit
http://akizukidenshi.com/catalog/g/gK-12835/
Raspberry PI3も必要なので同時に購入しました。
RaspberryPi3 Model B (ラズベリーパイスリーモデルビー) element14版
http://akizukidenshi.com/catalog/g/gM-11425
電源も同時に購入しています。
スイッチングACアダプター (USB ACアダプター) 5V3A
http://akizukidenshi.com/catalog/g/gM-12001/


KITには、カラー冊子のマニュアルが付属しており、詳しい説明があります。段ボールケース、拡張ボード、マイクボード、スピーカ、ケーブル、ボタンが付属しています。
SDカードは付属していません。OSイメージは、AIYのホームページからダウンロードできます。
https://aiyprojects.withgoogle.com/voice/#project-overview
まずは組み立てて行こうと思います。

Intel Quark D2000 Zephyr BMC150 TEMPERATURE

BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150には、加速度センサ側に温度測定を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150

#define BMC150_I2C_ADDR 0x10
#define ACCD_TEMP_REG 0x08
I2Cアドレスが0x10 、温度値のレジスタが0x08です。

温度は、取得した数値が0の時、23℃です。数値1が0.5℃に対応しています。下が変換式はです。
temp_val = ((float)data) / 2 + 23;

1秒ごとに温度を取得し、シリアル通信USART_Aでパソコンに送りました。

数℃実際の室温より高いので校正が必要です。
BMC150 ICを触ると温度が上がるので計測はできているようです。

以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_Temp

© 2014 Spineedge Corporation.