お世話になっています。
さきほど、Aruduinoにて動作確認を行ったとろろ、エラーが発生しました。以前から、何度か動作確認を行っていますので、Arducom Mini 2MP側で不具合があるということになります。
申し訳ありませんが、一旦これでこの課題は終了とさせていただきたいと思います。
大変ありがとうございました。
また、なにかありましたらご相談させていただきます。
石井@行田
お世話になっています。
さきほど、Aruduinoにて動作確認を行ったとろろ、エラーが発生しました。以前から、何度か動作確認を行っていますので、Arducom Mini 2MP側で不具合があるということになります。
申し訳ありませんが、一旦これでこの課題は終了とさせていただきたいと思います。
大変ありがとうございました。
また、なにかありましたらご相談させていただきます。
石井@行田
ありがとうございます。
OS :win10 64bit Web:Google Chromになります。
どうもおかしいので、自己診断をしてみたところ、
obniz idを入れたところ、テスト結果にIDを出力して何も表示されませんでした。browserでF-12キーでログ表示したころ以下のようなエラーメッセージを表示。再現します。
どこか壊したのかもしれませんので、少し整理して考えてみたいと思います。
(1)自己診断結果については、以前は、各ポートごとに問題がないか表示されていたように記憶しています。こちらのハードの不具合化しているのかの確認。
何か確認すべきことがあればコメントお願いします。
(2)Obniz本体のI2c通信での不具合の可能性については、一度Arduinoでの動作確認等を行ってみたいと思います。その後は、動くところと動かないところの確認を進めていきます。
お世話をおかけいたします。
石井@行田
--- log by F12 key on Google Chrome ---
Uncaught Error: Error: firmware 2.0.0 needs obniz.js version 2.0.0 or higher. see https://obniz.io/doc/hw_firmware
at Obniz.error (obniz.js:8553)
at Obniz.notifyToModule (obniz.js:8519)
at Obniz.wsOnMessage (obniz.js:7660)
at Obniz.<anonymous> (obniz.js:7742)
error @ obniz.js:8553
notifyToModule @ obniz.js:8519
wsOnMessage @ obniz.js:7660
(anonymous) @ obniz.js:7742
早々のreplyありがとうございます。
sampleプログラムを以下のように修正し、TypeErrorはなくなり、SPIのデータ転送が行われました。
しかしhtmlにimageは表示されませんでした。
また転送byte数表示は image size=8200byte。 init()ではsetsize(320x240)なので少々少ないのでは。(よくわかっていません) もう少し追いかけてみます。できることがありましたらコメントいただければ幸いです。
石井@行田
<!-- HTML Example -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@2.0.0/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<img id="image">
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
obniz.io11.output(true);
var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, gnd:4, vcc:5, sda:6, scl:7, spi_frequency:1000000 });
await cam.spi_pingpongWait();
cam.setMode('MCU2LCD');
const chipid = await cam.getChipIdWait();
if (chipid != 0x2642) {
throw new Error('unknown chip ' + chipid)
}
cam.init();
cam.flushFIFO();
cam.flushFIFO();
cam.startCapture();
while (true) {
if ((await cam.isCaptureDoneWait())) { break; }
}
const jpegData = await cam.readFIFOWait();
console.log("image size = " + jpegData.length + " bytes");
const base64 = cam.arrayToBase64(jpegData);
document.getElementById("image").src = "data:image/jpeg;base64, " + base64;
}
</script>
</body>
</html>
お世話になっています。
ファームウエアのバージョンアップありがとうございます。
ArduCamMiniでの関連部分につきまして、確認してみました。
1)Frequency及びdriveの確認:frequenctについては2MでSPIのregisterへのwrite/readはOKになりました。(まだ不安定なんで今のところ、1Mに設定しています。)driveは電圧確認でOKです。ご対応ありがとうございました。
2)ただ、画像を表示する、最初のサンプルコードは、htmlへの表示ができませんでした。個別のサンプルプログラムでチェックしましたところ、[await]isCaptureDoneWait()関数でエラーとなっています。
GoogleChrome F12でのLog表示で(TypeError: this.isCaptureDoneWait is not a function at Obniz.obniz.onconnect)。
できる範囲での確認ですが、取り急ぎご報告いたしました。
石井@行田
ありがとうございます。
getFreeSPI()の関数にテストしました。
frequency : "4M", drive:"5v" ではloopbalkでエラーでしたが、
drive:"3v",の場合frequency:"2M","1M"で動作確認できました。
先日オシロ(100Mhz,1Ghzサンプル,2ch)が調達できましたので、いろいろ条件を変えた所、4Mhz時は専用の5V電源のほうが安定。オシロプローブを付けたほうが成功確率が高いなど、不安定要素があるようです。ArduCAMMiniのいろいろ関数を個別に使ってみましたが、4Mhz, 3V でも不安定になるよです。しかし残念ながら、本質的なタイミング上の問題を再現、理解でいていません。
ご指摘のようにspiオブジェクトを使ってみます。ただ初心者なので、少し勉強しながら進めていきます。
ご支援ありがとうございます。
石井@行田
お世話になります。
問題がありましたので、ご確認上教えていただければ幸いです。
下記に実行したプログラムとログです。
spiのclock(プログラムではfrequency、ログ上ではclockと表示している)を1000000に変更してみましたがprogram内指定の4000000で変更されていません。defaultでは3vのdrive()のパラメータを5vに変更してみましたが、Obnizeがsendした内容では変更されていません。
恐縮ですが、オシロはありませんので、現物信号をみてはいません。
宜しくお願い申しあげます。
石井@行田
<!-- HTML Example -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<img id="image">
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.debugprint = true;
obniz.onconnect = async function () {
obniz.io11.output(true);
var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3,frequency:1000000, drive:"5v", gnd:4, vcc:5, sda:6, scl:7 });
await cam.spi_pingpongWait()
}
</script>
</body>
</html>
Obniz: connected to ws://192.168.10.8
Obniz: send: [{"io11":true}]
Obniz: send: [{"io5":{"output_type":"push-pull5v"}}]
Obniz: send: [{"io5":true}]
Obniz: send: [{"io4":{"output_type":"push-pull5v"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"io0":true}]
Obniz: send: [{"system":{"wait":100}}]
Obniz: send: [{"io3":{"output_type":"push-pull3v"}}] !!! push-pull5vに変更されていない!!!!
Obniz: send: [{"io1":{"output_type":"push-pull3v"}}] !!! push-pull5vに変更されていない!!!!
Obniz: send: [{"io2":{"output_type":"push-pull3v"}}] !!! push-pull5vに変更されていない!!!!
Obniz: send: [{"io3":{"pull_type":"float"}}]
Obniz: send: [{"io1":{"pull_type":"float"}}]
Obniz: send: [{"io2":{"pull_type":"float"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"spi0","pin_name":"gnd"}}}}]
Obniz: send: [{"spi0":{"mode":"master","clock":4000000,"clk":3,"mosi":1,"miso":2}}]
!!!! clock:1000000に変更されていない!!!
Obniz: send: [{"io6":{"output_type":"open-drain"}}]
Obniz: send: [{"io7":{"output_type":"open-drain"}}]
Obniz: send: [{"io6":{"pull_type":"pull-up5v"}}]
Obniz: send: [{"io7":{"pull_type":"pull-up5v"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"i2c0","pin_name":"gnd"}}}}]
Obniz: send: [{"i2c0":{"sda":6,"scl":7,"mode":"master","clock":100000}}]
Obniz: send: [{"display":{"pin_assign":{"0":{"module_name":"Cam","pin_name":"cs"},"1":{"module_name":"Cam","pin_name":"mosi"},"2":{"module_name":"Cam","pin_name":"miso"},"3":{"module_name":"Cam","pin_name":"sclk"},"4":{"module_name":"Cam","pin_name":"gnd"},"5":{"module_name":"Cam","pin_name":"vcc"},"6":{"module_name":"Cam","pin_name":"sda"},"7":{"module_name":"Cam","pin_name":"scl"}}}}]
Obniz: send: [{"io0":false}]
Obniz: send: [{"spi0":{"data":[128,85],"read":false}}]
Obniz: send: [{"io0":true}]
Obniz: send: [{"io0":false}]
Obniz: send: [{"spi0":{"data":[0,0],"read":true}}]
Obniz: send via local
Obniz: recvd via local
Obniz: {"spi0":{"data":[31,255]}}
Obniz: send: [{"io0":true}]
Error: spi bus fail
Obniz: send via local
以上
早々にありがとうございます。
昨日までの進捗をまずはご連絡いたします
1)csの件:理解しました。aruduinoのスケッチからLOW true信号と判断して進めました。
2)プログラムからの問題調査
下記のプログラムを実行すると、await cam.spi_pingpongWait()関数でエラーになります。
spi_pingpongWait()関数では、spiのtest register(0x00)へ0x55をwriteしてreadして正しいかどうかのテストをしています。
この時readで0x55ではない値のため、throw new ERROR('spi bus error')となります。帰ってくるreadデータは、不定。
直接原因は分かりました。
<!-- HTML Example -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<img id="image">
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.debugprint = true
obniz.onconnect = async function () {
obniz.io11.output(true);
var cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, gnd:4, vcc:5, sda:6, scl:7 });
await cam.spi_pingpongWait()
}
</script>
</body>
</html>
3)ご指摘の通り、電源周りの問題がありようなので、ご指示通りおこなう。
3-1) IO11をvccに接続。
何度か、電源投入手順等変更しながらですが、一度成功しましたが、それ以外は失敗。
3-2) Obnizのvcc/gndのスルーホールにピンを立て、そこからArduCamMiniへcvv/gnd供給をする。
すべて失敗でした。
現状での結論
プログラムとしては問題はないと思います。(一度成功している)
SPI接続のハード上の問題(漠然としていますが)
これから
Obniz + ArduCamMinの+5Vの供給は2Aあり電流計測では02A程度ですので容量的に問題ありません
オシロスコープとか持っておりませんので、いろいろトライしてみますが、進捗は期待できません。
原因推定の想定から知りたいことでは、
spi通信も転送モードはあっているのか?(arducamminiはmode0)
現象から、クロックとデータのマージンが少ない、あるいはgndレベルが上がっているとの想定です。
確認していただきたいことがあれば指示いただければ、やってみたいとおもいますのでよろしくお願いします。
石井@行田
お世話になります
AuduCAMMiniのサンプルが、応答がなく動きませんので調査しています。
関数テストが色々ご用意されていますが、課題を代表的に表している(と思っています)
[await] spi_pingpongWait() の関数テストにて再現しますのでこれにてご説明します。
「obniz.debugprint = true」を追加して実行、Chromのconsoleでの表示をおこなうと
下記のようになります。
Obnizのdebugprint()は、エラー表示等はありませんが、ChromeのWeb consoleには、
「Uncaught (in promise) TypeError: n.stack.match is not a function」以下エラー発生表示になっています。
なお、ArduCAMMini OV2640 2MPについて、Camera TutorialのサイトからArduino Uno R3,Win10の環境にて、
functions testとVdeo_streamingのスケッチを入れて実行、正常動作を確認しました。
疑問点があります。問題でしょうか?
CS=false状態でspi0へデータを送っている。
02:23:56 Obniz: send: [{"io0":true}]
02:23:56 Obniz: send: [{"io0":false}]
02:23:56 Obniz: send: [{"spi0":{"data":[0,0],"read":true}}]
また、事前に確認すべきことがありましたら、教えていただきたいとおもいます。
まだ不慣れですができるだけ対応していきます。
よろしくお願いいたします。
石井@行田
-------- [1] Obniz debugprint log -------------------------------
02:23:56 Obniz: send: [{"io4":false}]
02:23:56 Obniz: send: [{"io0":true}]
02:23:56 Obniz: send: [{"system":{"wait":100}}]
02:23:56 Obniz: send: [{"io3":{"output_type":"push-pull3v"}}]
02:23:56 Obniz: send: [{"io1":{"output_type":"push-pull3v"}}]
02:23:56 Obniz: send: [{"io2":{"output_type":"push-pull3v"}}]
02:23:56 Obniz: send: [{"io3":{"pull_type":"float"}}]
02:23:56 Obniz: send: [{"io1":{"pull_type":"float"}}]
02:23:56 Obniz: send: [{"io2":{"pull_type":"float"}}]
02:23:56 Obniz: send: [{"io4":false}]
02:23:56 Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"spi0","pin_name":"gnd"}}}}]
02:23:56 Obniz: send: [{"spi0":{"mode":"master","clock":4000000,"clk":3,"mosi":1,"miso":2}}]
02:23:56 Obniz: send: [{"io6":{"output_type":"open-drain"}}]
02:23:56 Obniz: send: [{"io7":{"output_type":"open-drain"}}]
02:23:56 Obniz: send: [{"io6":{"pull_type":"pull-up5v"}}]
02:23:56 Obniz: send: [{"io7":{"pull_type":"pull-up5v"}}]
02:23:56 Obniz: send: [{"io4":false}]
02:23:56 Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"i2c0","pin_name":"gnd"}}}}]
02:23:56 Obniz: send: [{"i2c0":{"sda":6,"scl":7,"mode":"master","clock":100000}}]
02:23:56 Obniz: send: [{"display":{"pin_assign":{"0":{"module_name":"Cam","pin_name":"cs"},"1":{"module_name":"Cam","pin_name":"mosi"},"2":{"module_name":"Cam","pin_name":"miso"},"3":{"module_name":"Cam","pin_name":"sclk"},"4":{"module_name":"Cam","pin_name":"gnd"},"5":{"module_name":"Cam","pin_name":"vcc"},"6":{"module_name":"Cam","pin_name":"sda"},"7":{"module_name":"Cam","pin_name":"scl"}}}}]
02:23:56 Obniz: send: [{"io0":false}]
02:23:56 Obniz: send: [{"spi0":{"data":[128,85],"read":false}}]
02:23:56 Obniz: send: [{"io0":true}]
02:23:56 Obniz: send: [{"io0":false}]
02:23:56 Obniz: send: [{"spi0":{"data":[0,0],"read":true}}]
02:23:56 Obniz: send via local
02:23:56 Obniz: recvd via local
02:23:56 Obniz: {"spi0":{"data":[0,106]}}
02:23:56 Obniz: send: [{"io0":true}]
02:23:56 Obniz: send via local
------- [2] log on console of Chrome ---------------------------------
Obniz: connecting to wss://1.ws.obniz.io/obniz/xxxx-xxxx/ws/1?obnizjs=1.15.2&accept_binary=true
Obniz: ws connected
Obniz: {"ws":{"ready":true,"obniz":{"firmware":"1.1.0"},"local_connect":{"ip":"192.168.10.8"}}}
Obniz: send: [{"ws":{"reset_obniz_on_ws_disconnection":true}}]
Obniz: local connect to ws://192.168.10.8
Obniz: connected to ws://192.168.10.8
Obniz: send: [{"io11":true}]
Obniz: send: [{"io5":{"output_type":"push-pull5v"}}]
Obniz: send: [{"io5":true}]
Obniz: send: [{"io4":{"output_type":"push-pull5v"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"io0":true}]
Obniz: send: [{"system":{"wait":100}}]
Obniz: send: [{"io3":{"output_type":"push-pull3v"}}]
Obniz: send: [{"io1":{"output_type":"push-pull3v"}}]
Obniz: send: [{"io2":{"output_type":"push-pull3v"}}]
Obniz: send: [{"io3":{"pull_type":"float"}}]
Obniz: send: [{"io1":{"pull_type":"float"}}]
Obniz: send: [{"io2":{"pull_type":"float"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"spi0","pin_name":"gnd"}}}}]
Obniz: send: [{"spi0":{"mode":"master","clock":4000000,"clk":3,"mosi":1,"miso":2}}]
Obniz: send: [{"io6":{"output_type":"open-drain"}}]
Obniz: send: [{"io7":{"output_type":"open-drain"}}]
Obniz: send: [{"io6":{"pull_type":"pull-up5v"}}]
Obniz: send: [{"io7":{"pull_type":"pull-up5v"}}]
Obniz: send: [{"io4":false}]
Obniz: send: [{"display":{"pin_assign":{"4":{"module_name":"i2c0","pin_name":"gnd"}}}}]
Obniz: send: [{"i2c0":{"sda":6,"scl":7,"mode":"master","clock":100000}}]
Obniz: send: [{"display":{"pin_assign":{"0":{"module_name":"Cam","pin_name":"cs"},"1":{"module_name":"Cam","pin_name":"mosi"},"2":{"module_name":"Cam","pin_name":"miso"},"3":{"module_name":"Cam","pin_name":"sclk"},"4":{"module_name":"Cam","pin_name":"gnd"},"5":{"module_name":"Cam","pin_name":"vcc"},"6":{"module_name":"Cam","pin_name":"sda"},"7":{"module_name":"Cam","pin_name":"scl"}}}}]
Obniz: send: [{"io0":false}]
Obniz: send: [{"spi0":{"data":[128,85],"read":false}}]
Obniz: send: [{"io0":true}]
Obniz: send: [{"io0":false}]
Obniz: send: [{"spi0":{"data":[0,0],"read":true}}]
Obniz: send via local
Obniz: recvd via local
Obniz: {"spi0":{"data":[0,106]}}
Obniz: send: [{"io0":true}]
Uncaught (in promise) TypeError: n.stack.match is not a function
at Object.parse (logger.min.js?rev=b4a1fcd13b763a55cbf867530711284c4a212284:1)
at logChecker.<anonymous> (logger.min.js?rev=b4a1fcd13b763a55cbf867530711284c4a212284:1)
at promise.catch.err (VM894 obniz.js:8044)
parse @ logger.min.js?rev=b4a1fcd13b763a55cbf867530711284c4a212284:1
(anonymous) @ logger.min.js?rev=b4a1fcd13b763a55cbf867530711284c4a212284:1
promise.catch.err @ obniz.js:8044
Promise.catch (async)
_callOnConnect @ obniz.js:8043
_callOnConnect @ obniz.js:8525
_callOnConnect @ obniz.js:8649
ws.onopen @ obniz.js:7940
Obniz: send via local