資産運用メモ

キャピタルゲイン税

日本では、譲渡所得扱い。申告分離課税なら所得税15.315% + 住民税5% = 合計20.315% ボッタクられますが、香港では0%です。

外国税額控除

米国株にかかる税金は米国で10%,日本でさらに2重課税で20.315%取られます。

配当100USDなら、手元に残るのは71.7USD。重税であります。

しかし、米国で取られた税金分の金額が確定申告することで控除されて戻ってくる。それが外国税額控除。ぜひ申請すべしです。

結果、80.7USDが手元に残りますので日本のキャピタルゲイン税と同じくらいになります。

信託(トラスト)

自分の財産を信頼できる人(会社)に管理・運用してもらう制度です。

委託者:自分のこと

受託者:財産の預け先

受益者:自分の配偶者や子供

財産の所有権は受託者のものになり、受益者は「利益を受け取る権利」、信託受益権を持つことになります。

メリット

  • 倒産隔離機能;受託者が倒産しても影響を受けない。
  • 所有権から信託受益権に転換されるので管理事務手続きが簡単になる。

ラズパイ4:GPIOを使ってLEDを点滅させる

GPIOを使ってLEDを点滅させてみました。

 

 

 

 

 

 

ラズパイ4:ディスプレイに繋げない状態でVNC接続する方法

ラズパイ4をディスプレイにつないでいない状態の場合では、VNC接続しても画面が表示されません。

/boot/config.txt ファイルの中にhdmiの設定があるので

sudo nano /boot/config.txt で内容を確認して

hdmi_force_hotplug=1 の部分のコメントアウト「#」を削除して、有効化しましょう。

最後に、 sudo reboot すると、以後ディスプレイが接続されていなくてもVNC接続できるようになります。

FT232HとI2Cデバイスの複数接続(MPU-6050)

前回に引き続き

Windows10でPythonから加速度センサMPU-6050を動作させる

I2Cの複数接続をやってみます。

接続方法

2つ目のMPU-6050を接続する場合は2つ目のMPU-6050のVCCには何も入れず、代わりにADO(データアウト)へ対して+5Vを入れるとI2アドレスが0x69になってくれます。よって、スクリプトでは1つ目が0x68, 2つ目が0x69として値を渡してあげればよいのです。※データシートを熟読できていないので、もしかしたら、+3.3Vが正しいのかもしれません。

スクリプト

ポイントは、インスタンスを作るときにI2Cアドレスを引数として指定することです。ここだけです。

mpu1 = adafruit_mpu6050.MPU6050(i2c, address=0x68)

mpu2 = adafruit_mpu6050.MPU6050(i2c, address=0x69)

 

Windows10でPythonから加速度センサMPU-6050を動作させる

前回、Noobsが入ったラズベリーパイ3のGPIOピンを使ってI2C接続を試み、見事成功いたしました。

今回は、普段から使っているWindows10のモバイルPCでMPU-6050を動かせないか検討しました。

モバイルPCで一般的な入出力といえばUSBなので、これをGPIO的な何かに変換できれば行けるだろうという思惑です。

FT232H使用 USB⇔GPIO+SPI+I2C変換モジュール

http://akizukidenshi.com/catalog/g/gM-08942/

探した結果、こんなんがありました。Adafruit(エイダフルート)の変換モジュールです。下の方に「メーカー資料」とありますので、クリックしてみると。

https://learn.adafruit.com/adafruit-ft232h-breakout/mpsse-setup

いきなり現れる「非推奨」の文字!

どうやらPython2でやり方を書かれている古い情報のようです。

大丈夫です、代替方法が用意されてありました。

BLINKAとサーキットPythonライブラリ

https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h

これによると、Python3の他にBLINKAとCIRCUIT_PYTHON なるソフトウェアが必要だそうです。

sensors_board_ft232h.png

FT232HをUSBへ認識させる

※実は、この項目は必要ないかもしれません。後述するBLINKAなどのセットアップが終わりテストスクリプトを走らせたあと、気がついたら、ここで行ったことがなかったことになっていました。しかしちゃんと動いています。参考までに残しておきます。↓↓↓

https://www.ftdichip.com/Drivers/VCP.htm

とその前に、先にこれをやらないといけません。基本的にはFT232H側マイクロUSB~PC側USB とケーブルで接続すれば勝手に認識されます。

確認方法は、デバイスマネージャーを開いてポート(COMとLPT)の直下に新しいCOMx(xは数字)が作成されていればOKです。またポートと同層にあるユニバーサルシリアルバスコントローラーの直下にUSBコンバーターが作成されていればOKです。この詳細設定でVCPをONにしなければ動かない場合があるそうなので念の為ONにしておきます。

うまくいかない場合。

まず、ちゃんと正常なマイクロUSBケーブルを用意します。

これが今回最も手こずった所です。マイクロUSBは少し前のスマホでよく使われていましたが、今はUSB-Cに取って代わられています。マイクロUSBの致命的な欠点はその接触の悪さです。

一本目はナイロンで保護されている高級そうなケーブルで試してみました。「ピロポン♪↑」というUSB認識の音がなり、デバイスマネージャーを確認すると勝手にドライバーが入る手はずなのですが、COMとして認識された瞬間に接続が切れ、何回接続し直したりrebootしたりしても改善されません。

他のケーブルを試してみましたが、電源のみのケーブルというのも混在しており見分けが付きません。電源LEDは点灯すれどもUSB接続の「ピロポン♪」という音がなりません。これを3本ほどやりました。ぐぬぬぅ・・・。

さらに、ケーブルを替えてうまく認識されたと思いきや、1時間作業後に再び切れ、FT232Hの電源LEDすら点灯しなくなるという事態になりました。

(電源線を間違えてFT232Hが壊れたか・・・。OTZ)

結果、そんなことはありませんでした。奇跡的に見つけた最後のケーブルを使うと、なんの問題もなくプラグアンドプレイできてるじゃないですか。

ちゃんと正常なマイクロUSBケーブルを用意しましょう。

それでもプラグアンドプレイできないときは、https://www.ftdichip.com/Drivers/VCP.htm

のwindows セットアップ実行ファイルでインストールしましょう。

Windowsへのセットアップ

 

https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/windows

このページの通りにざーっとやると良いです。Python3はAnaconda3とかでなく素の状態で入れました。バージョンは3.7.7。

ZadigでFT232Hを接続してドライバーを修正

FT232Hデバイス用のlibusbドライバーを簡単にインストールするツールです。 ※これをやるから、前項が必要なくなる?

ツールを実行する前に、コンピュータからすべてのFTDIデバイスを取り外します

FT232Hだけを接続して、PCに接続されている唯一のFTDIデバイスになるようにします。

オプション ]メニューをクリックし、以下の[ すべてのデバイスをリスト ] 項目を選択します。

FTDIBUSに等しいドライバーと0403 6014に等しいUSB IDを持つデバイスを選択してください!

USB Serial Converter > FTDIBUS(v2.12.28.0)

libusb-win32(v1.2.6.0)

0403 6014 にして Replace Driverボタンをおします。

デバイスマネージャーを開くとlibusb-win32 devices とその直下にUSB Serial Converterが出来上がっています。

pyftdiとpyusbをアンインストールしてからインストールする

まず、以前にpyusbとpyftdiを入れてしまっている可能性がある場合はアンインストールしておきましょう。

$ pip uninstall pyusb

$pip uninstall pyftdi

Windowsに影響するバグを修正するには、pyusbのフォークを取得します。

$ git clone https://github.com/minkustree/pyusb.git

gitでエラーが出たときは

https://git-scm.com/download/win

で、gitをインストールします。

PowerShell管理者モードを再起動させてから、今一度

$ git clone https://github.com/minkustree/pyusb.git

です。

$ cd pyusb

$ pip install pyftdi

で、インストールが完了です。

pyusbとpyftdiをテストする

FT232Hを接続しておいた状態で

これで DEVICE IDが出てくればOKです。

 

Adafruit Blinkaをインストールする

$ pip install adafruit-blinka

環境変数を設定

PowerShell管理者権限で入っている場合は

$とenvにはスペースを入れない状態で

$env:BLINKA_FT232H=1

cmdなら

set BLINKA_FT232H=1

です

プラットフォーム検出確認

 

python3を起動して

 

で、エラーが発生せず、利用可能なすべてのピンのリストが表示される場合は、準備完了です。

 

インストール後のチェック

https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/troubleshooting

 

python3で

とやって

ならOKです

Python環境変数の確認

import os
os.environ[“BLINKA_FT232H”]

数字が返ってくればOK ’1’など。

import board

エラーが出なければOK。

ピン配列を確認

https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/pinouts

電源ピン

5V-これはUSB入力からの5V電源です。

GND-これは、すべての電源とロジックに共通のグラウンドです。

3V電源出力 – 新しいバージョンには、最大500mAの3.3V電源出力ピンがあります

GPIOピン

D4にD7は -デジタル入力または出力のいずれかとして使用することができます。C0へC7は -デジタル入力または出力のいずれかとして使用することができます。

I2Cピン

FT232HとMPU6050とのI2C接続です。D1とD2を短絡させる必要がありました。

SCL -I2Cクロック信号はD0にあります。

SDA -I2CデータはD1   D2にあります。

I2Cスイッチ – 新しいバージョンには、D1とD2を接続してI2Cインターフェースを容易にするスイッチがあります。

I2CやSTEMMA QTコネクタを使用するには、スイッチをONに動かします。その後、SDAにD1またはD2を使用できます。

元のバージョンのみ:I2Cを使用するには、2つのピン(D1とD2)があることに注意してください。

SPIピン

FT232HとMPU9250/6500のSPI接続(のはず)です。まだ動かすことができていません。

SCLK -SPIクロック信号はD0にあります。
MOSI-マスター出力、スレーブ入力はD1にあります。
MISO-マスター入力、スレーブ出力はD2にあります。
CS0-チップセレクトはD3にあります。これはBlinkaでは使用されず、代わりに上からGPIOピンの1つを使用します(例のセクションを参照)。

 

MPU6050用 Pythonモジュールのインストール

https://pypi.org/project/adafruit-circuitpython-mpu6050/

 

スクリプト

結果出力

今後について

I2Cデバイスの複数接続

MPU-6050がまだ3つほどあるのでチャレンジします。

FT232HとI2Cデバイスの複数接続(MPU-6050)

SPI通信

本当はこっちをやりたかった。

MPU-9250/6500を購入しましたが、いい感じのライブラリとか知らないのでどうしたものか悩んでいます。

SPIデバイスの複数接続

最終的な目標。

MPU-9250/6500を2個購入しましたので、なんとしてもやりきりたいです。

 

以上、まだまだ続きます。

 

追記1

PowerShell管理者権限で入らないと実行できません。

PowerShellをリブートしたら、同じスクリプトなのに実行できませんでした。

 

PowerShell管理者権限で入って

$env:BLINKA_FT232H=1

をすると、何事もなく実行できました。一体なんでしょう・・・?

 

 

追記2

PowerShellで管理者権限でない状態でスクリプトを実行するとimport boardが機能しないことがわかっています。

boardモジュールがないのでインストールしてくださいというエラーメッセージの通りに pip install boardを行うとインストールできますが、機能しません。board.なんちゃらはメソドを持っていませんというエラーがでるので、別物のboardではないでしょうか?。

pip uninstall boardして管理者権限に移行して、追記1の通り$env:BLINKA_FT232H=1 をしてからスクリプトを実行したところ、実行されません。先程pip uninstall boardしたことで何かがおかしくなってしまったのでしょうか。

解決策としては、ずーっと前まで戻って

$ pip uninstall adafruit-blinka

$ pip install adafruit-blinka

することで、再度import boardできるようになりました。

まだ理屈がわかってません。

FT232HとMPU-9250/6500

お世話になりました。

https://qiita.com/kotai2003/items/0c96143b7d6e84629d99

https://zadig.akeo.ie/

https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/windows

Python:datetimeモジュールで細かい時間(msec, μsec)を出したいとき

datetimeで作った時刻データでは、秒よりも細かい6桁の数字が含まれています。

単位はマイクロ秒 なので ミリ秒で出したいときは下記のように出せます。

結果出力

Python: numpyとlistのappendの違い

numpyとlistのappendの違い

センサーから時系列で入ってくるデータを変数に格納したい時、ありますよね。

普段はlistとしてli = []のような空リストを作ってからli.append(入ってくるデータ) でどんどんリストの要素として追加していましたが、時間方向の分解能を高めるために、numpyを使おうとすると、直感ではうまくできなかったので、メモしておきます。

numpyのappendは破壊的でないため、変数に再代入しなくてはappendの結果が反映されません。注意点はここだけです。

 

 

python:flaskの基本2 GET, POST, PUT, DELETE

今日はflaskが実行されているサーバーのIPアドレス127.0.0.1:5000に対して、クライアントからPOSTするやりかたを見ていきます。

flaskサーバー側のスクリプト

flaskのメインスクリプトに下記の関数を追加します。

これをVScode右上の再生ボタンでRUNさせておきます。

127.0.0.1:5000でRUNし始めたはずです。

クライアント側のスクリプト

これに対して、クライアント側からPOSTするために、pythonファイルを新規作成してrequestsモジュールのpostメソドを使ってアクセスしてみます。

で、これをVScode上ではなくて、cmdを開いてそこから実行すると。

cmdでクライアント側のスクリプトを実行

(‘username’, ‘mike’)が返ってきています。

 

以上、GET, PUT, DELETEも同じやり方です。