2018年4月27日金曜日

ST Microelectronicsの距離を測るセンサ

ST Microelectronicsの  VL6180X VL53L0X VL53L1X をArduinoで利用する話が完結しました。

距離を正確に測る
 赤外線VL6180X
 レーザーVL53L0X
 レーザーVL53L1X


2018年3月26日月曜日

2018年3月14日に発売されたRaspberry Pi 3 Model B+

 Raspberry Pi 3 Model B+は、前のモデルから少しクロックが速くなり、CPU(SOC)表面が金属になりました。表面温度を測ってみると、前のモデルより温度が低いようです。

http://www.denshi.club/pc/raspi/raspberry-pi-3-model-b.html




 2018-3-13版のOSから、無線を無効にするデバイス・ドライバが用意されたので、有線LANでRaspberry Pi 3 Model B+を使うことができます。
 Raspberry Pi 3 Model B、ZERO-Wには外部アンテナ接続ができるランドが用意されていたのですが、このモデルでは廃止になったようです。

2018年2月22日木曜日

薬屋のひとりごと

Webの更新が半年ほど止まっている「薬屋のひとりごと

これって、書籍は、2種類ある。

ヒーロー文庫 


コミカライズも2種類ある。

ビッグガンガンコミックス


サンデーGXコミックス

2018年2月12日月曜日

Raspberry Pi と Mozilla’s Things Gatewayを使ったLチカの記事を公開しました。https://goo.gl/j8W9hZ

2018/02/22 作りこみのほうの解説が増えたけど、利用できるデバイスは増えていない。

2018年1月29日月曜日

Industrial I/O Subsystem:

調べてみる。情報は少ない。
●特徴
 カーネル・ドライバ=ローダブル・デバイス・ドライバとして開発。百を超えるセンサに対応している。
 一覧表が見つからない。
見つかったかもしれない。

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio


●使い方
 どこかに記述する。
lsmod?で確認できる。
/sys/bus/iio/devices/iio:device1 ディレクトリに設定と読み出しようのファイルがいるはず。しかし、readmeは存在しない。


●資料







2018年1月28日日曜日

ADC A-Dコンバータの利用

 24ビット SPI ADS1220 ラズベリーパイ
 24ビット I2C LTC2400 Arduino


18ビット I2C MCP3424 ラズベリーパイ

16ビット I2C ADS1115 ラズベリーパイ
16ビット I2C LTC2450 ラズベリーパイ
16ビット I2C SX8725C ラズベリーパイ
16ビット I2C ADS1110 ラズベリーパイ
16ビット I2C LTC2461 ラズベリーパイ
16ビット SPI ADS1120 ラズベリーパイ

12ビット I2C AD7991 ラズベリーパイ
12ビット I2C ADS1015 ラズベリーパイ
12ビット I2C MCP3425 ラズベリーパイ

2017年12月31日日曜日

誰の役に立つわけでないPythonのTips

フラグが立つまで待つ
 0x20はフラグの位置。
while (readdata(xx) & 0x20 ) :
        continue


2の補数の符号判断
 16ビットの例。ビット数に合わせて0と1の数を増減
def sign16(x):
        return ( -(x & 0b1000000000000000) | (x & 0b0111111111111111) )

バイト・スワップ
def swap16(x):
        return (((x <<8) & 0xff00) | ((x >> 8 ) & 0x00ff))

ビット反転
 16ビット長。長さがわかっているとき。
data ^ 0xffff

ビット反転して、LSBに1を加える
~data ^ 0xffff

数値データを1と0の文字列で得る
 dataの上位が 0のときは0がなくなるので、完全な1,0の文字列にはならない。
bin(data)[2:]
 元に戻す
hex(int(bin(data)[2:],2))

数値の長さの1を得る
len(bin(data)[2:])
マスクを作る
int(("1"*(len(bin(data)[2:]))),2))
任意長の数値のビット反転。ただし、先頭に1がくる数値。
data ^ int(("1"*(len(bin(data)[2:]))),2))

移動平均
 切り出しただけ。

datas=[]
while 1:
                if len(datas)<10 :
                        datas.append(readADC())
                else:
                        del datas[0]
                idou = sum(datas)/len(datas)
                print round((Vref * (sign16(int(hex(idou),16))) / 32767.0),5),"V "

for文
for i  in range(10) 0~9まで

for i in range (1,10) 1~9まで

for i in range (2,10,3) 2~10まで、ステップ3。結果2,5,8

 for (i,x) in enumerate(data)
data='1101'であれば、最初に1を取り出す。(0,1) (1,1),(2,0),(3,1)
data=['Spring', 'Summer', 'Fall', 'Winter'] Springを最初に取り出す。

-----
イテレート(iterator) 反復


イテレーション

イテラブル (iterable) 
イテラブルからリストを生成  list(range(5))

タプル 組 カンマで値を区切ったリストのようなもの。要素を変更ができない?

CRC8-ATM

def crc8atm(data) : #data=0x654321
        data =data <<8
        length = len(bin(data)[2:])
        for i in range(length):
                if int(bin(data)[2:3],2) == 1 : #MSB =1
                        nokori = bin(data)[11:]
                        sentou = (int(bin(data)[2:11],2)) ^ (int('100000111',2))
                        data = int((str(bin(sentou)[2:11])+str(nokori)),2)
                data=int(bin(data),2) #MSB=0
                if len(str(bin(data)[2:]))<9:

                        return(hex(data))