前回途中で諦めた Blynk から ESP8266 ですが、同じことを新しく購入した ESP-WROOM-02 のモジュールで確認したらやっぱり動かない。
Arduino からアンインストールしてインストールし直すことにします。
Arduino は最新バージョンの 1.6.7 をインストールするし、ボードマネージャーでは最新の 2.0.0 をインストール。
でも、やっぱりダメ。
『技適済み格安高性能Wi-FiモジュールESP8266 コピペでWiFi接続出来るArduinoIDE用ソースコードとその解説』を参考にし、スケッチをコピペして試すも宅内wifi アクセスポイントに接続させようとするも繋がらない….
フラッシュの中身を最新に書き戻して AT コマンドで接続させると繋がる….
でも Arduino IDE からスケッチをコンパイルして書き込むと繋がらない…
が、突然!上記を何度か繰り返すと不思議なことに繋がった。
意味わかんない。
何かおかしいところがあって繰り返す内にそれを直したんだろう。
『技適済み格安高性能Wi-FiモジュールESP8266 コピペでWiFi接続出来るArduinoIDE用ソースコードとその解説』のスケッチではIO5のピンに Wifi の接続状態を示す出力があるので回路を
のように修正して試すと期待通り接続すると LED が点灯した。
いいねぇ。
調子に乗って Blynk の『ESP8266_Standalone』を試すことにする。
上記スケッチを新規ファイルとして IDE に貼り付ける。
スマホを取り出し、Blynk を起動して
「Create New Project」をタップ、
ここの AUTH TOKEN に書かれた文字列を、ArduinoIDE に貼り付けたスケッチの 34行目の ”YourAuthToken” ところに書き込む。
そして、上には「Lチカ」と入れて、Select your hardware で ESP8266 を選んで CONTINUE、
「Create」を押す。
そしたら を押して
BUTTON を選ぶ。
BUTTON をタップすると設定画面になるので
適当に名前をつけて、OUTPUTの設定には Digital で gp5 を選んで CONTINUE、PUSH ではなく SWITCH を選んで
画面上の←で戻る。
Arduino IDE に戻って、マイコンボードに書き込む。
そしたら Blynk のを押してプロジェクトを実行。
不思議なことに本当にBUTTON をタップすると LED が点灯するし、消灯する。
Blynk すごい!
おうちの鍵があけっぱなしかどうかも LED のウィジェット使って取得できました。
詳細は別に書きますが、電源等のパーツ少々入手する必要があるので。
技適マークのない ESP8266 をちょっと触ったりして、ちょっとうまく動いたり動かなかったりしましたが、動かなかったときに本気で原因調査をしなかったのは近日技適マーク付きのモジュールを買うつもりだったからだったんですが、やっと買いました、ESP-WROOM-02。
最初、秋月で買おうかと思ったけど『ESP8266ブレークアウトボード比較』なんてページを見つて記事読んでお勧めしてない aitendo でいいやって感じで買いました。
ブレークアウトボードとセットで2個買ってとりあえず1個だけハンダ付け。
手前は いままで遊んでいた ESP8266。ちょっとサイズ大きくなったのが残念です。
YS-CH341T との接続を データシートで確認すると、フラッシュ・ブート・モードでの接続は
こんな感じかな。
Teraterm で接続….
[code]AT+GMR
AT version:0.25.0.0(Jun 5 2015 16:27:16)
SDK version:1.1.1
compile time:Jun 5 2015 21:03:10
OK
AT+RST
OK
ets Jan 8 2013,rst cause:1, boot mode:(3,7)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0
2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
sdテs・
ready
[/code]
ついでにファームのバージョンアップも。手元にVer.1.4.0 があるけど、確認したら Ver.1.5.0 が最新なのでとりあえず落として展開して…
SpiAutoSet にチェックつけた状態で実行すると FLASH SIZE とか検出して 設定してくれるのですが、検出された FLASH SIZE の設定のファイルとアドレスの指定を readme.txt で確認・設定して書き込みます。
書き込む際には
このように GPIO0 を GND に落とすよう接続してSTART をクリック。
書き込みが終了したら GPIO0 を HIGH になうよう接続しなおして Teraterm で接続。ところが Fatal exception がたくさん表示されます。なにか失敗したようです。
readme.txt に書かれた他の設定を試します。
この際、SpiAutoSet にチェックがあるとツールの FLASH SIZE の設定が 32MBit になるので SpiAutoSet のチェック外して実行します。
readme.txt に書かれた 32MBit-C1 の設定を試します。ツールの FLASH SIZE は 32MBit-C1 をチェック。
ファイルとアドレスの設定を
[code]boot_v1.4(b1).bin 0x00000
user1.2048.new.5.bin 0x01000
blank.bin 0xfe000
esp_init_data_default.bin 0x3fc000
blank.bin 0x3fe000
[/code]
にすると….書き込みに成功したようです。 Fatal exception がでなくなりました。
[code]AT+GMR
AT version:0.51.0.0(Nov 27 2015 13:37:21)
SDK version:1.5.0
compile time:Nov 27 2015 13:58:18
OK
AT+RST
OK
ets Jan 8 2013,rst cause:1, boot mode:(3,7)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0
2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 32Mbit(1024KB+1024KB)
jump to run user1 @ 1000
s$テsl
緜
ready
[/code]
成功したらしい。
自宅のアクセスポイントに繋いじゃう!
[code]AT+CWMODE=1
OK
AT+CWLAP
+CWLAP:(4,"60………",-92,"00:0f:0f:04:0e:0d",1,-14,0)
+CWLAP:(2,"9C………",-91,"0c:06:06:07:09:08",1,-12,0)
+CWLAP:(2,"FD………",-42,"00:0d:0b:01:07:01",11,-11,0)
OK
AT+CWDHCP=1,1
OK
AT+CWJAP="FD………","c5………"
WIFI CONNECTED
WIFI GOT IP
OK
AT+CWJAP?
+CWJAP:"FD………","00:0d:0b:01:07:01",11,-50
OK
AT+CIPSTA?
+CIPSTA:ip:"192.168.1.15"
+CIPSTA:gateway:"192.168.1.1"
+CIPSTA:netmask:"255.255.255.0"
OK
[/code]
繋がった!
走行距離 6,340 km。
何か不具合があったわけではありませんが、単気筒だから数いらないし、今後気にすることを減らせるのでイリジウム・プラグ交換しておきます。
交換の手順はグーグル先生に聞くといろいろ紹介してくれるので割愛。
また、ライトを覗き込んだら電球のガラスが黒く見えたので予備のライトバルブを購入しておきました。
本当なら LED 化したいけど、既製品としては選択肢が少ないみたいなので、今後の改造用の部品にすることもできるし。
アドレス V100 からの買い替えで、アドレス V125S をヤフオクで落札しました。
走行距離 6,220km の低走行車の CF64MA-127xxx です。UZ125SL0 です。
まだきれいでしょ。
本日登録やら保険の車両入れ替えを済ませ、乗れる状態になりました。
排気量のせいでしょうか、2ストと4ストの違いのせいでしょうか、結構フィーリングが違います。
これから慣れていきます。
モーターとモータードライバーは 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
で返事が届く。接続に成功しました。