STP8M のピン配置

www.aitendo.com

aitendo で購入した300円のステッピングモータ。データシートがないので、ピン配置をテスターで調べてみた。2個のステッピングモータなので8ピンのコネクタになっている。コードの色が違うので、どっちのモータに繋がっているのかはすぐわかる。

4本の端子がA相とB相に別れるわけだが、テスタによると隣り合う2ピンが導通していた。これだけわかれば、回転させられるはず。

 

ちなみに。コネクタは1.25mmピッチだが秋月で購入しておいた 1.27mm なピンヘッダを挿すことができた。ピンヘッダを使ってテスタのプローブを当てることができた。

clang でカバレッジ

foo.cpp

12 #define BAR(x) *1$
13 template <typename T> void foo(T x) {$
14 for (unsigned I = 0; I < 10; ++I) { BAR(I); }$
15 }$
16 int main() {$
17 foo<int>(0);$
18 foo<float>(0);$
19 return 0;$
20 }$

 

build.sh

1 #!/bin/bash$
2 $
3 clang -fprofile-arcs -ftest-coverage -c foo.cpp$
4 clang --coverage foo.o -o foo$
5 ./foo$
6 llvm-cov gcov -f -b foo.gcda$
7 lcov -d . -b . --gcov-tool ./llvm-gcov.sh -c -o foo.info$
8 genhtml foo.info -o html$

 llvm-gcov.sh

1 #!/bin/bash$
2 exec llvm-cov gcov "$@"$

 

*1:x) || (x

【Maixduino】スピーカーと動画

Maixduino上にDACとアンプが載っているため、スピーカーをつなぐだけで音が鳴らせる。

Maixduino · kzono/RISC-V Wiki · GitHub

標準で搭載されているコネクタが 1.25mm ピッチなのが困ったところ。これにあうハウジングがなかなか見当たらないし、自分でピンを圧着するのもかなり面倒。

しかし、今回は aitendo でちょうどいいコネクタ付きケーブルを見つけることができた。また、aitendo でミニスピーカーも安価に購入した。

 

実際に鳴らしてみると、思ったよりいい音で鳴った。

 

調子に乗って Video の再生デモを動かそうとしたが、音はでるものの何故か画像が表示されない。いまのところ原因不明。

 

試しに録画するデモを動かしたところ、動画ファイルが作成された。それを動画再生デモで再生すると、無事に動画が再生された!

 

今日はここまで。

【Maixduino】micropython でサーボモータを回す

本当はC/C++VSCode + PlatformIO + kendryteSDK な環境でサーボモータを回したかったのだが。

ビルドには成功するものの、何故か書き込んでも動かない。

 

正確には、platformio:upload は、ファームウェア書き込み用の python コードがエラーになって書き込めない。そこで、GUI な kflush.py を使って書き込んだのだが、動かない。

firmware.bin を書き込むのだが、書き込む際にその先頭アドレスを指定できる。書き込むべきアドレスを間違えている気がしている。0x00000 がデフォルト値。

割り込みベクタテーブル(特にリセット時の割り込みベクタ)がそこにあるようなきがする。

Maixpy のイメージファイルを書き込む場合は、そのアドレスに書き込んで正しく動いている。

 

kendryteSDK で作った firmware.bin の書き込み先アドレスは何番地が正しいのか?

 

仕方がないので、maixpy をMaixduino に書き込み、micropython でサーボモータを PWM で制御するコードを書いたところ、無事に動いた!

Maixduino · kzono/RISC-V Wiki · GitHub

 

ampy を使うと、書いたスクリプトをダウンロードして実行できるようだ。

blog.goediy.com

```

ampy --port=/dev/ttyUSB0 --baud 115200 run maixduino_pwm.py

``` 

[Maixduino でサーボモータを回してみた]()

USB顕微鏡

先日、aitendo に行ったとき、店頭展示されていたUSB顕微鏡が気になった。外付けモニタに出力できて、基板上のICの足が極大に移されていた。顕微鏡と基板との距離もそこそこ取れていて、半田ごてではんだ付けするのに邪魔にならなそうだった。

 

ぐぐってみたところ、購入者の使用レポートを発見した。

cafe2p54.at.webry.info

gataro-avr-ken.cocolog-nifty.com

いい感じである。

早速、aitendo で検索したが、

www.aitendo.com

は在庫切れ。その代わりに、後継機種らしい

www.aitendo.com

を発見。お値段は上がるが性能も上がっている。

ただし、実際に使うにはこれ以外に

www.aitendo.com

www.aitendo.com

は必須。液晶モニタはPC用のものを流用。HDMIケーブルも持っているものを使える。

あと、オプションとして、

www.aitendo.comがある。

ということで、1セット揃えると

 

  • カメラスタンド 4980円
  • レンズ 9500円
  • カメラ 18800円
  • LED照明 1980円

となり、合計35,260円(税別)。これに消費税🔟%なので、38,786円(税込み)となる。

今日の進捗(2020/02/04)

platformio で maixduino なビルドは普通にできた。しかし、platformio upload はアップロードに失敗する。

pip uninstall enum34

 では解決しなかった。しかし、kflash_gui を使えば、バイナリファイルのダウンロードはできた。

 

残念ながら、サーボモータは回らなかった。がまず、ピンアサインとソースコードのピン指定を確認する必要がある。

そのうえで、オシロスコープで該当端子の電圧変化を見よう。

http://akizukidenshi.com/img/goods/2/M-08761.jpg

【Maixduino】今日の進捗

ハードウェアPWMのコードを書き、ビルドまで通った。

必要なヘッダファイルと関数の使い方がわかった。

また、タイマのPWM出力をGPIOのどの端子へ設定するか、マッピングの仕方もわかった。Maixduino は、Arduinoフォームファクターに合わせているため、入出力ピンの数がかなり少ない。注意が必要。

Maixduino · kzono/RISC-V Wiki · GitHub

ピン配置の情報もなんとか見つけた。

http://acoptex.com/uploads/maixduino_pins.png

自力でコネクタに繋がっているピンを確認するには、公開されている回路図を確認する必要がある。

 

Maixpy IDE から公開されているデモコード(カメラの画像をLCDへ表示する)の実行を確認できた。

 

しかし、VSCode + PlatformIO でビルドはできたがダウンロードに失敗した。

```

CURRENT: upload_protocol = kflash
Looking for upload port...
Auto-detected: /dev/ttyUSB0
Uploading .pio/build/sipeed-maixduino/firmware.bin
Traceback (most recent call last):
File "/home/kzoo/.platformio/packages/tool-kflash-kendryte210/kflash.py", line 13, in <module>
import argparse
File "/usr/lib/python3.6/argparse.py", line 89, in <module>
import re as _re
File "/home/kzoo/.platformio/penv/lib/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
*** [upload] Error 1

```

これの原因調査は明日以降。割り込みやPWM等を使うには micropython ではなく C言語でコードを書きたいので、platformio な環境から書き込みに成功したい。

あ、コマンドラインから kflash で書き込めるかを先に検証すべきかも。