モーターとモータードライバーは eBay で調達しました。1セット 358 円。
モーターは 4相 DC 5V の 28YBJ-48 で1ステップ 5.625 (=360/64) 度がさらに 1/64 に分周されているらしい。
ドライバーは ULN2003。ドライバーといっても ULN2003 は単なるトランジスタアレイなので「1度右に!」とかじゃなくて、正しい順番にコイルを励磁してあげる必要があるらしい。
こちらを参考に ブレッドボード使って

こんな感じで繋ぐ….

ステッピングモーターはあまり早く動かすと脱調するらしい。ここの PDF によると 28YBJ-48 は 100Hz らしい。(ん~、64*64=4,096 だから 1周最速40秒かかるのか。)
Python でプログラムを書くことにする。
高いトルクが得られる2-2相励磁にで…
とりあえず回転することを確認したいので適当なコードで…
[python]
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.output(17, GPIO.LOW)
GPIO.output(18, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
GPIO.output(22, GPIO.LOW)
for i in range(0,360):
GPIO.output(17, GPIO.HIGH)
GPIO.output(18, GPIO.HIGH)
GPIO.output(27, GPIO.LOW)
GPIO.output(22, GPIO.LOW)
time.sleep(0.02)
GPIO.output(17, GPIO.LOW)
GPIO.output(18, GPIO.HIGH)
GPIO.output(27, GPIO.HIGH)
GPIO.output(22, GPIO.LOW)
time.sleep(0.02)
GPIO.output(17, GPIO.LOW)
GPIO.output(18, GPIO.LOW)
GPIO.output(27, GPIO.HIGH)
GPIO.output(22, GPIO.HIGH)
time.sleep(0.02)
GPIO.output(17, GPIO.HIGH)
GPIO.output(18, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
GPIO.output(22, GPIO.HIGH)
time.sleep(0.02)
GPIO.cleanup()
[/python]
回った!
クラス、適当に設計していきます。
カヤックのバウ先には硬質発泡ウレタンを削ってフットブレイスを作成することがあるけど内側だしどんな感じで作成するのか結構難しい。
最近、Kickstarter を見てると Rubicon 3D scanner や eora 3D のようにラインレーザーを使用したプロジェクトがいくつか見つかります。
う~む、これらは対象物を回転させるタイプなのでバウ先のスキャンには使えなさそう….
でもラインレーザーを使うと3Dスキャナって簡単に作れるの?と情報を探すと….『【俺センシング】『Webカメラで3Dスキャナ!』』「【3Dスキャナへの道】」のところに原理が….
をっ、なるほど!作れなくもないかも….とりあえず部品集め。
カメラは…Raspberry Pi を使おう。ラインレーザーとステッピングモーターは…eBay を探す。どっちも 500円しないくらいで買えるじゃん。早速注文。
ちゃんとした形にくみ上げる前にちょっと実験。
先日インストールした Python で….グレースケールにする。
[python]from PIL import Image
import ImageOps
if __name__ == "__main__":
img = Image.open("C:/devel/IMG_1234.JPG")
img2 = ImageOps.grayscale(img)
img2.save("C:/devel/IMG_1234Glay.jpg","JPEG")
[/python]
えっ?こんな簡単?

いいじゃん。
横1ラインで一番明るい1点のみにしてみる。
[python]from PIL import Image
import ImageOps
if __name__ == "__main__":
img = Image.open("C:/devel/IMG_1234.JPG")
img2 = ImageOps.grayscale(img)
img2.save("C:/devel/IMG_1234Glay.jpg","JPEG")
w, h = img2.size
pix = img2.load()
for y in range(0, h):
c=0
for x in range(0, w):
if c<pix[x, y]:
c=pix[x, y]
for x in range(0, w):
if c==pix[x, y] and c>127:
pix[x, y]=255
c=999
else:
pix[x, y]=0
img2.save("C:/devel/IMG_1234GlayLine.jpg","JPEG")
[/python]
こんな感じかな。

さぁ、計算だ!
と思ったけど、写真縮小しちゃいけないし、カメラごとに補正しなきゃいけないので計算はするのやめました。本番は Raspberry PI のカメラを使う予定なので。
『Python for Windows インストールメモ』を参考にインストール。
(最初、3.5 をインストールしたけど OpenCV と PIL の対応が 2.7 だったから 2.7 をインストールしなおした。(Pillow の存在を知ったのはさらにその後だったりします。))
とりあえず
この辺をインストール
Blynk は KickStater で『5分でアプリがビルドできる』と始まったプロジェクトで面白そうと出資してたので使えるようにしたい。
ドキュメントはこちらにありますが、ESP8266 の設定については こちらに書かれています。
インストール手順は….こちらにもありますが、以下の手順です。
なんか苦労してます。
新しく技適マークのついたモジュール買うつもりだからこれはここで一旦諦めます。
ESP8266 のファームのバージョンを確認してみる。
AT+GMR
AT version:0.21.0.0
SDK version:0.9.5
OK
SDK リリースのアナウンスを確認する。
Ver.1.4.0 が最新らしい。
これらをダウンロードしろとなっているのでダウンロードする。
展開して知ったが、AT_v0.50 bin files は Click to Download の先でダウンロードした物に含まれるのでいらない。
さらに V1.4.1 のファームは V1.4.0 と同じなのでやはりいらない。
書き換えツールは…「Flash Download Tool」のトピックがあるので Python じゃない方の「Flash Download Tool」をダウンロードし、展開する。
ESP_DOWNLOAD_TOOL_V2.4.exe があったのでとりあえず実行!
FLASH SIZE? SPI SPEED?
知らんぞ。
ん~、確か、AT+RST するとなんか情報いっぱいでたな….と試しに
AT+RST
OK
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf
2nd boot version : 1.2
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size : 4Mbit
jump to run user1
sdC
Ai-Thinker Technology Co. Ltd.
ready
あった!
あれ?ツールのダイアログに「SpiAutoSel」ってチェックボックスがある。これチェックすると勝手に設定してくれそう。
それでいいや。
ファイルは何をどう指定すれば…atディレクトリの下の readme.txt に情報があった。
4Mbit だと NON-BOOT MODE しか選択できないのか。
download
eagle.flash.bin 0x00000
eagle.irom0text.bin 0x40000
blank.bin 0x3e000 & 0x7e000 (Flash size 4Mbit)
esp_init_data_default.bin (optional) 0x7c000 (Flash size 4Mbit)
らしい。

このまま START を押しても失敗する。どれかを GND にプルダウンする必要があるらしい。
STARTを押して Progress bar が右端まで行くのをまつと….

成功した!
AT+GMR
AT version:0.50.0.0(Sep 18 2015 20:55:38)
SDK version:1.4.0
compile time:Sep 18 2015 21:32:07
OK
Wifi に接続してみます。(行頭が “> ” の行が実際の入力行です。”–“や”//”や”()”で囲まれた行は説明なので実際には入力しません。
// WIFI モードをステーション・モードに設定する。
> AT+CWMODE=1
OK
------------------------
// 利用可能なアクセスポイントを探す。
> AT+CWLAP
+CWLAP:(4,"60..........",-93,"00:0f:0f:04:0e:0d",1,-14,0)
+CWLAP:(4,"9C..........",-91,"0c:06:06:07:09:08",1,-12,0)
+CWLAP:(2,"FD..........",-48,"00:0d:0b:01:07:01",11,-11,0)
OK
------------------------
// 接続情報を取得する。
> AT+CIPSTATUS
STATUS:5
OK
(説明書に記載のないコードが返ってきました。)
------------------------
// DHCP モードを Enable セットします。
> AT+CWDHCP=1,0
OK
------------------------
// SSID とパスワードを指定して自宅のアクセルポイントに接続してみます。
> AT+CWJAP="FD..........","c5.........."
WIFI CONNECTED
+CWJAP:1
FAIL
WIFI DISCONNECT
(一度繋がるけどすぐ切断されました。)
------------------------
// DHCP を Disable に設定します。
> AT+CWDHCP=1,1
OK
------------------------
// 再度自宅のアクセスポイントに接続してみます。
> AT+CWJAP="FD..........","c5.........."
WIFI CONNECTED
WIFI GOT IP
OK
(接続できたし IP も取得したようです。)
------------------------
//接続しているアクセスポイントを確認します。
> AT+CWJAP?
+CWJAP:"FD..........","00:0d:0b:01:07:01",11,-53
OK
(自宅のアクセスポイントに接続していました。)
------------------------
// 取得した IP アドレスを表示します。
> AT+CIPSTA?
+CIPSTA:ip:"192.168.1.12"
+CIPSTA:gateway:"192.168.1.1"
+CIPSTA:netmask:"255.255.255.0"
OK
(確かに自宅のローカルIPが振られています。)
------------------------
// 接続ステータスを確認します。
> AT+CIPSTATUS
STATUS:2
OK
(Got IP が返ってきました。)
DHCP 設定の Enable / Disable の設定が説明書の記載されているものと逆だったりしましたが接続できて IP アドレスの取得もできました。
YS-CH341T から ESP8266 に接続する。
YS-CH341T の設定は UART、 USB供電 3.3V
結線は、
RXI – TXD
TX0 – RXD
GND – GND
VCC – VCC, CH_PD
Tera Term を立ち上げて、Setup の Serial Port で Baud rate:115200、Data:8 bit、Stop:1 bit に設定。
Setup の Terminal で Receive:CR、Transmit:CR+LF に設定
接続し、
AT+RST
で返事が届く。接続に成功しました。
EMS8266 へ接続するのに、RapberryPi からではなく PC から接続したかったので、外部電源なしで 3.3V が供給できて I2C が使えそうなドングルを eBay で探した。
値段はあまり変わらないけど、SPI/I2C/UART/ISP へ変換できる「YSUMA01-341A」と、I2C/UART へ変換できる「YS-CH341T」が見つかった。
機能シンプルでいいやと「YS-CH341T」を選んで購入。10月21日購入1,114円、翌22日発送されて27日到着しました。結構早かった。
備忘録としての情報を少し….
赤のジャンパーは USB コネクタを奥に見て、左から REGO, V3, V3, VCC, VBUS, REGI。
接続ターミナルは
RXI TX0 GND VCC SDA SCL
Windows7 に刺したらドライバが見つからないっていう。
とりあえずググるも、簡単に情報が見つからない….
ちょっと違うけど
『USBシリアル変換ケーブルドライバ(CH341)が自動でインストールされないときの対処法』を頼ることにする。
紹介先の Driver Scape には Download ボタンが3つ。
一番上は Driver Toolkit なのでドライバー本体ではないので上から2番目の Download ボタンを選んでダウンロードする。
以下はドライバーのインストール手順。ちょっと面倒だったので備忘録として丁寧に説明します。
YS-CH341T を PC に刺すとデバイスマネージャの表示は

のようになるので「不明なデバイス」を選んで右クリック。

プロパティを選ぶ。

ドライバーの更新を押す。

自動検索しても見つからないので手動で検索して…を選ぶ。

ここでダウンロードしたドライバーを指定してもないって言われるので「デバイスドライバーから選択」を選ぶ。

「ポート (COM とLPT) 」を選んで「次へ」。

ここで「ディスク使用」を押す。

ここでダウンロードしたドライバー書庫を解凍したディレクトリを指定して「OK」を押す。

どれを選んでいいのか迷ったけど根拠なく「CH341A」でいいと信じて「CH341A」を選んで次へを押す。

なんか心配してくれるけど気にせず「はい」を選択する。

インストールできた!
閉じると….
正常に動作してるしてる!

COM ポートは 3 番らしい。
ちなみに…USB 別のところに刺すと再度ドライバーのインストールが必要。
手順はほぼ一緒だけど、ディスク使用を選んだ ダイアログの製造元に「wch.cn」が追加されてるのでそれでインストールすることができるからファイルはいらないけど。
でも決まったところに刺せばいいか。
あとは実際に繋ぐだけ。
走行距離は 35,768 km
ちょっと前にウエイトローラー交換したんだけど、効果は薄く、さらにパワーが無くなってきた。
なのでプーリーを交換することにしました。前回から1年持ってないことになります。
今回は「横綱ハイスピードプーリーキット アドレスV100」を選択、ベルトも減ってるかと思い「NTB A6-18-690S Vベルト」も一緒に購入。
今回2度目の作業だし…写真撮っても前回と同じ写真になるし…と今回はほとんど写真を撮っていません。
で、作業に入るとプーリーフェイスが外れない。
途中作業を止めて、youtube の動画で確認すると逆ネジのナットを外すと簡単に外れている。ラスペネ吹いても外れない。
時間切れてで作業を中止したのは先週のこと。
プーリーフェイスを外すために、プレート式フライホイールプーラーが使えそうと少しして気付きました。長さ 40mm の 4mm のキャップボルトを購入して今週末を迎えました。
また、交換しようかどうしようか迷っていたプーリーフェイスも購入。プレート式フライホイールプーラーで外す際に壊れたら暫くのれないし、一度も交換していないし。
プーリーフェイスはやっぱり簡単に外れないので予定通り、プレート式フライホイールプーラーを使用。簡単に外れてくれました。
ネジ径に対して溝幅が広いので 4mm のキャップボルトに対して 5mmナット、6mm なっととつけて使いました。
外したプーリーフェイスは鋳物なのかな。細かい穴がいくつもあるし、途中で角度が変わっているので交換して正解だったと思います。
「横綱ハイスピードプーリーキット アドレスV100」にはクラッチ用のスプリングが付いているのでそれも交換。外して交換してそれをユニットにはめる方が簡単でした。
「横綱ハイスピードプーリーキット アドレスV100」のプーリーって裏蓋ないんですがいいの?ねじ穴もないし。
あとアドレスじゃないけど、嫁のムーブの左前ドアの割れたアウターハンドルを交換しました。
前回カヤック用に時計購入欲しいけど…と eBay で安物買いした中華製腕時計は3気圧防水だったはずなのに、使用開始初日に

こんな感じで即日使用不可能に。
もう少しお金払ってまともな物買うかと考えてヤフオクで即決 2,000円、込み込みだと 2,200円で落札したのがBaby-G でソーラー電波のこれ。
即決2,000円とお安い理由は明るい場所では表示するけど、暗所では消えちゃうとのこと。
ひょっとしたらしっかり充電したら動くんじゃない?もしダメなら電池交換すればいいと思っての落札。
届いてしっかり日に当ててみたら…暗所で消えちゃう。あっ、やっぱ電池交換しなきゃダメだ。
裏蓋に書かれた型番を見ると BGT-2500 だって。
「BGT-2500 電池交換」でググると『カシオ腕時計(CASIO)Baby-G/2832/BG1-2500電波デジタル電池交換』が見つかる。電池の型番が「CTL1616」であること、電池交換の手順も確認できた。
電池の CTL1616 は….Amazon とヨドバシにはない。eBay と ヤフオクに見つかった。ヤフオクの方が安い。
ということでヤフオクで入札。即決 1,692円、込み込み 1,872円で手に入った。
ということで早速交換。
手順は上述のページの通りネジ4本を外してパッキンをどかす。4本のうちネジ2本が馬鹿になってる。これはこれで直さないと。
シールには電池交換した際のリセットのしかたがちっさい字で書かれている。
結局 4,072円で高いか安いかよくわかんなくなったけど電池新品だし、細かいこと考えるのやめよう。
っていうか、自分用に電池交換が必要な Junk 品でいいから 一つ欲しくなったなぁ…
この週末は座架依橋下流のプールへ。
長袖ドライトップのネックリースは接着中で、寒かったらどうしようと思ったけど暑かったので半袖で漕げました。ラッキー!
バックデッキロールは相変わらず上がらない。
スターンステーションは姿勢に入る確率があがったのかな。でも止まってられずにゆっくり倒れる。
チャレンジ自体あまりしてないけど、静水ループ、再開後やっと飛べました。
6/29に頼んで7/8に届いたネックシールの交換は済みました。

接着剤、どうせ自分でやるなら何か新しいこと試さないとと思い、一般的なアクアシールや、同じウレタン系でセメダインから販売されてて少し安いUT110ではなく、今回はシリコーンゴム系のスーパーX(無印)使ってみました。
元々は一般的な接着剤で着かないとされるシリコーンゴムのネックシールを使おうと思って買った接着剤ですけど。
(無印)としてるのは硬化時間が短めな X2 でも、ゴールドでも、ハイパワーワイドでもく無印のスーパーXという意味です。治具があるので硬化にいくら時間がかかろうがほっておけばいいので、作業時間がゆっくりとれる無印のスーパーXが向いていると考えたため。
(UT110 はホームセンターでもっと安く買えます。)
また直すものができた。