半田ごてを握ったら書くブログ 2nd

半田ごてを握ったら書くブログの続きです。

VISHAY TEPT4400のデータシートを勝手に日本語化

VISHAY社のTEPT4400はフォトトランジスタの照度センサです。
これを個人的に使いたいなと思いデータシートを探したら、英語版しかないようなので自分用に日本語に翻訳しました。
もしかしたら日本語でデータシートが読みたい人がいるかもと思い公開します。

 

PDF形式で下記からダウンロードできます。

https://www.dropbox.com/s/svsdf3irabxzlzh/tept4400_j.pdf?dl=0

 

データシート自身は英語力が必要とされるほど難しい文章はありませんが、私が光センサーは使ったことがないので、翻訳が間違っているかもしれません。そこは広い心で原文と照らし合わせて読んでください。

なお、このデータシートは私が自分用に勝手に翻訳したものなので、VISHAY社とはまったく関係がありませんので、この翻訳に関してVISHAY社へ問い合わせはしないでください。

 

 

AnalogDevices SigmaDSPのデータシートを勝手に日本語化

ADAU1401AはAnalogDevicesのSigmaDSPシリーズのチップです。

で、昨年(2017年)の前半に仕事でADAU1401Aを実験的に使った時、データシートを読む時に自分に必要な分だけ自力で翻訳したので、これを公開します。
AnalogDevice社はいくつものDSPチップを発売してますが、SigmaDSPに関しては日本語での情報がほとんどなく、安価で扱いやすい興味深いチップなのにもったいないと個人的には歯がゆかったので、微力にでもなればと思い稚拙な日本語ですが公開します。
ちなみに写真のような実験をしてました。

f:id:ohneta:20170509195214j:plain
f:id:ohneta:20170524032005j:plain

f:id:ohneta:20170524025407j:plain

また、ADAU1401AはSigmaDSPでは最もメジャーなADAU1701の車載向け用のチップなので機能的には変更/追加はないのでADAU1701の日本語データシートとしても読めるとおもます。


なお、これは私が個人的におこなったものですのでAnalogDevices社とはまったく関係ありません。
この勝手な日本語版を公開に先立ってAnalogDevices社への許認可も行っておりませんので、権利関係で消える場合があるかもしれませんのであしからず。
訂正等ご指摘があればこちらのブログコメントでいただければ反映したいと思います。

下記のURLで公開しています。
https://www.dropbox.com/s/i4uink0gpta06b9/ADAU1401A_J.pdf?dl=0

 

ADAU1401A(ADAU1701互換)のデータシートを勝手に日本語化

ADAU1401AはAnalogDevicesのSigmaDSPシリーズのチップです。

で、今年の前半に仕事でADAU1401Aを実験的に使った時、データシートを読む時に自分に必要な分だけ自力で翻訳したので、これを公開します。
AnalogDevice社はいくつDSPチップを発売してますが、SigmaDSPに関しては日本語での情報がほとんどなく、安価で扱いやすい興味深いチップなのにもったいないと個人的には歯がゆかったので、微力にでもなればと思い稚拙な日本語ですが公開します。
ちなみに写真のような実験をしてました。

また、ADAU1401AはSigmaDSPでは最もメジャーなADAU1701の車載向け用のチップなので機能的には変更/追加はないのでADAU1701の日本語データシートとしても読めるとおもます。


なお、これは私が個人的におこなったものですのでAnalogDevices社とはまったく関係ありません。
この勝手な日本語版を公開に先立ってAnalogDevices社への許認可も行っておりませんので、権利関係で消える場合があるかもしれませんのであしからず。
訂正等ご指摘があればこちらのブログコメントでいただければ反映したいと思います。

下記のURLで公開しています。
https://www.dropbox.com/s/i4uink0gpta06b9/ADAU1401A_J.pdf?dl=0



それではよい新年を!!

みんな大好き気象観測

昨年の夏から連続稼動させている、ご家庭気象観測。
センサーはBME280。秋月のブレイクアウト基板のヤツ
FRDM-K64F(mbed化済み)で気温、湿度、気圧を常時計測してawsに置いてるPostgreSQLに貯めてる。

とりあえず、回路図。
書き忘れてるけどI2Cのとこは(たしか)2kΩの抵抗でプルアップ。


回路図(PDF)

貯めた気象情報はこんなふうに表示。

blackfin の Mac開発環境 (gcc 6.3.0)

自分用のメモ。

■目的
Interface誌の別冊
「音遊び!Blackfin DSP基板でディジタル信号処理の部屋」の付属基板「IFX-49」をmacで開発するためのgcc/ライブラリの類をできるだけ最新(2017-02-17時点)にするためのメモ。

なお、Blackfin-toolchainはgcc4.3か4.5のみのサポートのため、下記のようにgcc6.3.0をインストールするのはオススメできません。こんなブログを参考にする人はいないと思うのですが、これはあくまでgcc6.3.0がインストールできた!といって自己満足した方法ですのあまり本気にしないでくださいね。

■参考にしたURL
http://rohi.hatenablog.com/entry/2015/05/19/DSP%E5%9F%BA%E6%9D%BF%E7%94%A8%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92Mac%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B
http://blog.livedoor.jp/ooonzzz555/archives/cat_1244809.html

ほぼこのサイトに書いてある通り。多謝。多謝。


■インストール先ディレクト
/usr/local/bfin-elf

export PATH=$PATH:/usr/local/bfin-elf/bin


binutils
https://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.bz2

      • -

tar xjf binutils-2.27.tar.bz2
cd binutils-2.27
./configure --target=bfin-elf --without-newlib --prefix=/usr/local/bfin-elf --disable-nls --disable-shared
make
make install


gcc 1回目
https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2

      • -

tar xjf gcc-6.3.0.tar.bz2
cd gcc-6.3.0
mkdir build
cd build
../configure --disable-multilib --enable-languages=c --with-gmp --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-isllib=/usr/local/lib --with-mpfr --with-mpc --prefix=/usr/local/bfin-elf --target=bfin-elf --disable-shared --disable-threads --disable-nls --with-newlib --without-headers --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc


■newlib
ftp://sources.redhat.com/pub/newlib/newlib-2.5.0.tar.gz
最新はnewlib-2.5.0だけど、ビルドに失敗するのでとりあえず2.2.0-1でやってみる。

ftp://sourceware.org/pub/newlib/newlib-2.2.0-1.tar.gz

      • -

tar zxvf newlib-2.2.0-1.tar.gz
mkdir build-newlib
cd build-newlib
../newlib-2.2.0-1/configure --target=bfin-elf --prefix=/usr/local/bfin-elf
make all
make install


gcc 2回目
cd gcc-6.3.0/build
../configure --disable-multilib --enable-languages=c --with-gmp --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-isllib=/usr/local/lib --with-mpfr --with-mpc --prefix=/usr/local/bfin-elf --target=bfin-elf --disable-shared --disable-threads --disable-nls --with-newlib --with-gnu-as --with-gnu-ld --disable-libssp
make all
make install


gdb
http://ftp.gnu.org/gnu/gdb/gdb-7.12.1.tar.gz

      • -

tar xjf gdb-7.12.1.tar.gz
mkdir build-gdb
cd build-gdb
CFLAGS="-O1" CC="clang -std=gnu89" ../gdb-7.12.1/configure --prefix=/usr/local/bfin-elf --target=bfin-elf --enable-sim-bfin
make all
make install


ldr
https://osdn.net/projects/sfnet_adi-toolchain/downloads/2014R1/2014R1-RC2/src/blackfin-toolchain-2014R1-RC2.src.tar.bz2/

      • -

mkdir blackfin-toolchain-2014R1-RC2
mv blackfin-toolchain-2014R1-RC2.src.tar.bz2 blackfin-toolchain-2014R1-RC2/
cd blackfin-toolchain-2014R1-RC2

tar xjf blackfin-toolchain-2014R1-RC2.src.tar.bz2
tar xjf uClibc.tar.bz2 uClibc/include/elf.h
tar xjf ldr-utils.tar.bz2
cd ldr-utils
cp ../uClibc/include/elf.h .
./configure --prefix=/usr/local/bfin-elf CFLAGS="-Wno-gnu-designator"
make
make install
ln -s /usr/local/bfin-elf/bin/ldr /usr/local/bfin-elf/bin/bfin-elf-ldr


■libdsp
(PATH に /usr/local/bfin-elf/bin が通ってること)

cd blackfin-toolchain-2014R1-RC2
tar xjf libdsp.tar.bz2
cd libs
make CROSS=bfin-elf-
make CROSS=bfin-elf- install DESTDIR=/usr/local/bfin-elf/bfin-elf

rm libdsp/libbfdsp.a
make CROSS=bfin-elf- LIBC_HAS_NO_CMATH=1
make CROSS=bfin-elf- LIBC_HAS_NO_CMATH=1 install DESTDIR=/usr/local/bfin-elf/bfin-elf

    • -

一応、これでツール類はすべてビルドされるが、まだBlackfinを触りはじめたばっかりなので、なにか問題あるかもしれない。


[追記 2017-02-19]
上記の方法だとbfin-gdbproxyが入らないみたいだ...

gcc6.3.0でサンプルをコンパイルすると一部動かないものがあるみたいです。少なくともUSB DACのサンプルコードは動作しませんでした。

体温を測りたいのさ!!

前回のつづきです。

前回 : 体温を測りたいのさ!

前置き

ブログを書くにあたってこの体温計の名称がないとなんとも書きづらいのでサーミスタの型番からBLE103AT-11と呼ぶことにします。

体温計の続き...

一応、温度は測れるようになったので、使い勝手を考えて他に必要な機能を検討することにした。

体温の変化を記録するのに常にiPhoneでデータを取り続けるのは現実的に厳しそう。BLEはちょこちょこ接続が切れるし、iPhoneの電源が常にONってのも前提とはできない。
なので、BLE103AT-11はスタンドアロンでデータを記録しておいて、iPhoneがつながったときに記録したデータを転送する方法にしようと考えた。

てことは、BLE103AT-11自身が定期的に温度を測ってメモリに保存して置かなければならない。BLE103AT-11が、それように(だいたい)正確な時間も保持しておく必要がある。

計測データと時間データをまとめて送れるようなBLEのサービスやキャラクタリスティックがあるかどうか調べてみたが、ピッタリくるようなものはないみたいなので、これは自分でキャラクタリスティックを決めてサービスを定義することにした。
Temperature Measurementキャラクタリスティックが使えそうです!なのでこっちを使う方向で!(2015.10.20)


ただ時間に関しては Current Time Service (CTS) なるものがあるようなので、まずは「時間」についてはこのCTSを使ってどうにかしようと思う。

で、CTSってなに?

大雑把にいうと BLEデバイスが自分自身のもつ時計機能によって日時を提供するサービスで、それに伴ったキャラクタリスティックもいくつか定義されている。
詳細はBLEのデベロッパポータルあたりを参照。
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx

この仕様をみると1秒以下の時間とかタイムゾーンの扱いとかいろいろと細かいところもあるのだけど、CTSを名乗るには「現時点の日時」を返せるだけで、とりあえずOKのようだ。これはキャラクタリスティックの "Current Time"で実現する。

BLEの規格によるとCTSはCurrent Timeキャラクタリスティックの Read、NotifyとCCCD(Client Characteristic Configuration Descriptor)が最低限サポートしなければならないようだが、BLE103AT-11はそれ自身がRTC(Real Time Clock)を持っていないので、なんらかの方法で起動直後に日時を設定する必要がある。
一旦BLE103AT-11に日時が設定できれば、あとはTickerで 1秒毎に割り込んで擬似的にRTCを実現できる。この設定はCurrent TimeキャラクタリスティックのWriteで実現することにした。Current Timeキャラクタリスティックに Writeを用意して、ときどき外部(今回はiPhone)から設定してあげれば現実的なのではないかなと。

てことでCTS実装

mbed BLE用にCurrent Time Serviceを実装してみたのがこちら。
https://developer.mbed.org/users/ohneta/code/BLE_CurrentTimeService/

で、これCCCDの部分がよくわからなくて未実装のままだが、ソースコードを読んでみた限りではmbed BLEライブラリがなんかいい感じでCCCDをサポートしてくれているっぽい。
ただmbed BLEではonUpdatesEnabled/onUpdatesDisabledのコールバック関数のポインタはGapオブジェクトが持つので、複数のサービスをサポートする場合はどのサービス/キャラクタリスティックへのNotifyなのかを判断するすべが必要なようだ。そこんとこがよくわからなかったのでonUpdatesEnabled/onUpdatesDisabledは未実装のままで公開した。

あと特筆すべきWriteのサポート! wてか、これがないとベースとなる時間が設定できませんからねw


Writeで書き込んだ日時をepoch timeに変換して1秒ごとにupdateするだけの簡単なコードを書いて、2日目終了。
あー、なんか疲れた、、、本当は体温計を作ろうとしていたのに、なにやってんだろ、おれ(^^;;;