So-net無料ブログ作成
前の10件 | -

組み立てた基板が全て動いた [電子工作]

(2017.11.21)
Pic-coloの試作基板(5枚)がようやく動きました。

いや~、長かった!まさか、USBシリアルのLOOPBACKテストにこれ程手こずるとは思いませんでした。orz

全ての基板(5枚)がFT231XS単独のLOOPBACKテストに通るまで(半田付けの手直しを含む)に二日。その後、PICを含めたLOOPBACKテストに通るまで三日掛かりました。今回のLOOPBACKテストで、これまで使ってきたJAVAのCOMMライブラリにバグが三つ見つかりました。

喜ぶべきなのか、悲しむべきなのか、ちょっと複雑です。

LOOPBACKテスト(115kbpsで64バイトブロックのデータを1Mバイト連続送受信する)では、リング・バッファのアクセス競合や、受信バッファのオーバーフローがJAVA側とPIC側双方で起きました。

不具合原因があちこち変化する場合はデバッグが長引きがちです。

一方の不具合をデバッグしていて(<==確かにバグがあった)、そこに手を入れてもなかなか改善しないとき、『もしかして別の側で不具合が生じている?』と考えるのは、確認作業に相当時間を費やしたあとです。今回はそれが二度三度と続き、流石に三度目は『今度はどっちかな~?』というスタンスになりましたが・・・

LOOPBACKテストを終え、Pic-coloコンソール・プログラムとPic-coloデバッガ・プログラムを動かすと、これまで以上にシリアル通信がスムーズです。プログラム書き込みが早くなりました。
パチパチパチ~

ようやくPic-coloの開発を先に進めることが出来ます。
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

LOOPBACKテストが動いた [電子工作]

Pic-colo基板が動かない原因を探るため、ジャンパピンの設定を変えて基板上のUSBシリアル変換IC単体でLOOPBACKテストを行うことにしました。

先ずは1バイトずつ送受するテストを行いました。これが駄目な基板は半田受け不良が疑われます。

3枚合格、2枚不良という結果で、不良になった基板を子細に調べるとRxDピンのブリッジが見つかりました。どうやら不具合原因が一つ明らかになったようです。

ブリッジの修理は後回しにして、合格した3枚で64バイトずつ、合計1Mバイト送受するテストを行いました。このテストで、使っていたCOMMライブラリ(<==自作)のバグが見つかりました。送受二つのThreadを使うのですが、Threadセーフになっていませんでした。Threadとリングバッファにロックを設けて、ようやく1MバイトのLOOPBACKテストに合格しました。ブリッジが見つかった基板も修理して1MバイトのLOOPBACKテストに合格しました。

やれやれ、これにて一件落着?

残念ながら、そうは問屋が卸してくれませんでした。
3枚の基板で、コンソール・プログラムがまともに動作しません。orz

次は、PICを加えたLOOPBACKテストを行います。

nice!(1)  コメント(0) 
共通テーマ:日記・雑感

Pic-colo基板が動かない [電子工作]

Elecrowに注文した基板が届いたので組み立ててみました。

pic-colo.jpgPic-colo基板

ところが思うように動いてくれません。orz
USBケーブルを挿すと(5枚とも)COMMポートが開くのでFT231XSは動いているようです。しかし、PICとホスト・コントローラとの通信でエラーになります。

UARTの接続に問題があるのでしょうか?
一番疑わしいのはやはりFT231XSの半田付けです。とくにRxD、TxDの半田付けが気になります。
何度も見直し、何度も手直ししました。しかし、一度は動いた基板が動かなくなったりして、状況は改善しません。orz

だんだん・・・UART通信が不安定なのはFT231XSの半田付け以外に原因があるのかもしれないと思うようになりました。ここは一つ腰を据えて、F231XS単体のループバック・テストで通信エラーの発生率を確認するところから始めようと思います。
(Arduino IDEのシリアル・コンソールを使った簡単なループバック・テストでは問題は見つからなかった)













nice!(1)  コメント(0) 
共通テーマ:日記・雑感

ESP32を搭載したRaspi用ドータ・ボードってありなのか? [電子工作]

(2017-11-07)
ラズパイマガジン が雑誌連動企画で「パイ専ボード」を販売する(している?)ようです。
http://itpro.nikkeibp.co.jp/linux/raspi/

人様の企画にけちを付けるつもりは無いのですが・・・
ESP32単体をArduino IDEで開発するというなら、『Wi-Fi対応IoT工作』というネーミングも納得します。(これではラズパイマガジンの企画にならないという事情はお察しします)

あるいはRaspberry pi3で『Wi-Fi対応IoT工作』というのも有りでしょう。
(これは既にやった?)

しかし、ESP32を搭載したRaspi用ドータ・ボードって、どうなんでしょう?
屋上屋を重ねるって、まさにこれではないでしょうか?

ESP32をどう使えば良いか?色々悩んでいる身にとって、この企画はあまりに安易なものに映ります。

意外にもこれが大受けして『目から鱗』になったら・・・
潔くシャッポを脱いで(<==古語表現)学ばせて頂きます!

nice!(1)  コメント(0) 
共通テーマ:日記・雑感

MCCに騙された [MPLABXとXC8]

(2017-11-06)
MCC(MPLAB Code Configurator)はMicrochip社が提供しているコード生成ツールです。PICのペリフェラルを制御するライブラリの自動生成、制御レジスタの初期設定、割り込みハンドラの自動生成など、プロジェクトの立ち上げ時に必要な作業の多くを代行してくれる『優れもの』です。

新しいPICデバイスを使うときは、どんな制御レジスタがあって、どんな設定が必要か、予め調べる必要がありました(今でも必要が無くなった訳ではない)が、今は先ずMCCで粗々設定することが多くなりました。タイマー割り込みでLチカ程度のプログラムなら、自動生成されたプログラムのメイン・ループにポートのON/OFFを書き足すだけで、動いてしまいます。

で、ついついMCCに頼ってしまうのですが・・・

PIC16F1788の5bitDAC(二つ)と8bitDAC(一つ)を組み合わせて12bitDACとして動作させることが出来ないか?試してみることにしました。

MCCでDAC1、DAC2,DAC4の初期設定を行い、Pic-coloで設定値を書き換えながらDACの出力をADCで計測して画面に表示してみました。しかし、何だかDAC2とDAC4の出力が変です。

ここで始めてマニュアルに目を通して、DAC制御レジスタの値を調べました。

あれ?MCCで行った設定と制御レジスタの値が対応していません。
2017_1106_1.pngFVR2とVccとVrefの三択

DACx Positive Source Select bitの設定は”1”でVref+の設定になっています。
2017_1106_2.pngレジスタはVccとVref+の二択

Vref+にはDAC2の出力を接続するので、これではDAC2もDAC4も正しく動作しません。orz


便利に使っているMCCなんですが、こういう不具合を経験するのは初めてではありません(実はちょくちょく有る)。MCCが無かった頃のことを思えば、これくらいは大目に見てあげても良いかなぁ~










nice!(1)  コメント(0) 
共通テーマ:日記・雑感

秋月電子に注文した部品が届いた [電子工作]

(2017.11.01)
昨日の続きです。

秋月電子に注文した部品が届きました。開梱して先ずは検品・・・とは言っても国内の通販で異品や不良品が届いたことは無いので儀式みたいなものです。

ムフフ・・・注文した部品を眺めていて何となくこみ上げるこの喜びって一体何なんでしょう?
しかしUSBケーブルを手にして、直ぐに顔が引き締まりました。

開封して、ため息を一つついて・・・試作基板とPCのUSBポートを接続しました。



接続後に画面右下に出ていたUSB機器の接続異常を知らせるメッセージは出ていません。
(全く接続できないときもアラートは出ないのでまだ分からない)

コントロール・パネルからデバイス・マネージャーを開き、COMポートを見てみると・・・

2017_1101_1.pngCOMポートとして認識された
ビンゴ~~~

試作した回路は三つとも正常に動作しました。
パチパチパチ~

試作回路が動かない間、色々考えました。
------------------
初めて使う部品の使い方に誤りは無いのか?
配線に誤りは無いのか?
SSOPの半田付けはちゃんと出来ているのか?
熱を加え過ぎて部品を壊していないか?
PCのUSBポートの給電容量は足りているのか?
etc.
------------------

リファレンスの無い開発作業の難しさ、いわゆる『産みの苦しみ』って奴なんだと思います。

『ケーブルの不具合』は全く想定外でした。Web検索であの情報に出会わなければ、今頃はFT231XSの使用を諦め、別の策に走っていたに違いありません。(<==その覚悟を決めていた)

危ない、危ない。

----------------------------------
試作に使っていたUSBケーブルをゴミ箱に投げ入れました。

お前のお陰で苦労させられたよ!
ふぅ~








nice!(1)  コメント(0) 
共通テーマ:日記・雑感

秋月電子に発注した [電子工作]

(2017-10-31)
秋月電子に部品を注文しました。

<注文部品リスト>
【C-07607】 USBケーブル Aオス-マイクロBオス 1.5m A-microB
【I-11885】 PICマイコン PIC16F1788-I/SP
【M-11653】 Wi-Fiモジュール ESP-WROOM-02 (10個入)
【P-04053】 チップインダクター(フェライトビーズ) 330Ω[2012] ムラタBLM21P
【P-08669】 クリスタル(水晶発振子) 12MHz
【P-11626】 チップ積層セラミックコンデンサー 22pF50V[1608] (40個入)
【P-10497】 SSOP20ピン(0.65mm)・SOP20ピン(1.27mm)DIP変換基板

 一番欲しいのは『USBケーブル Aオス-マイクロBオス』@¥120です。今、抱えている不具合がケーブルの不良によるものかどうか確かめるためです。

実はFT231XSを使ったUSBシリアル変換回路が動いてくれません。SSOP20pinのデバイスで、半田付けがちょっとだけ厄介です。少し前に2個試作して2個とも動かず。気を取り直して昨日3個目を試作して、やはり同じ結果(コード10またはコード43エラー)になってUSBシリアルとして認識しません。orz

”FT231XS 接続できない”と検索しても、デバイス・ドライバーのアップ・デートくらいしか情報が見つからなかったのですが、その中に(一つだけ)、USBケーブルを交換したら直った(USBケーブル不良)というのがありました。試作した3個とも同じUSBケーブルで確認していたので、『USBケーブルの不具合』である可能性は否定できません。

と、ここまで書いてUSBシリアル変換モジュールも注文するべきだったと気づきました。『ケーブルの不良によるもの』であって欲しいという願望が冷静な不具合探索を妨げているようです。

確認その1
動くと期待される”USBシリアル変換モジュール”と今まで使っていたUSBケーブルの組み合わせで、エラーになる。
確認その2
購入した”USBケーブル”と”USBシリアル変換モジュール”の組み合わせでUSBシリアルとして認識する。
確認その3
購入した”USBケーブル”と試作したUSBシリアル変換回路の組み合わせで???

確認その2が無いと、購入した”USBケーブル”に不具合が無いとは言えないのです。

USBケーブルが届けば”USBシリアル変換モジュール”の要否もはっきりします。
全ては明日・・・

-------------------------
通販を利用するようになって以来、秋月電子の店舗を訪れる機会がめっきり減りました。
もし、”USBシリアル変換モジュール”が必要になったら久しぶりに出かけようか?
通販で”USBシリアル変換モジュール”一個だけ注文というのも気が引けるし・・・

nice!(2)  コメント(0) 
共通テーマ:日記・雑感

JAVAのMQTT接続で変なことが起きた

こちら(↓)や
https://qiita.com/shohei1913/items/b355ad7d1bb27141176b
こちら(↓)を参考にして、JAVAでMQTT接続してみました。
http://dotnsf.blog.jp/archives/1035416534.html

最初に試したのは昨日です。同じプログラムを(ブログを書くために)今日も動かしたのですが・・・
昨日と今日でpublishした後の動作が異なっているのです。orz

昨日はpublishする度にconnectionLost関数が呼ばれた(disconnectした)ので、reconnectする処理を追加して、動かしました。(そういう仕様だと思っていた)

それが、今日は(何故か)disconnectしなくなっています。

???

ここ(↓)にConnectionLost メソッドが呼び出される場合の要因が記されていました。
https://www.ibm.com/support/knowledgecenter/ja/SSFKSJ_7.5.0/com.ibm.mq.tro.doc/q039410_.htm

しかし該当するものは見つかりません。orz

原因不明のトラブルですが、良い(使いやすい)方向に変わったので不満はありません。
(ちょっと気持ちが悪いだけ)

こういうときの基本スタンスは『結果オーライ』なので、このまま先に進みます。

nice!(1)  コメント(0) 
共通テーマ:日記・雑感

esp8266_MQTTで嵌まった [電子工作]

『ESP8266を使ったMQTT接続』で参考にしたのはこちら(↓)のサイトです。
電子工作界隈で話題のWi-Fiモジュール「ESP8266」でMQTTを使う方法 | 株式会社LIG

必要な作業がまとめて記されているので、初めての方でも取り組みやすいのではないか、と思います。(ただし、一点を除いて)

必要な準備は整っていたので、これ(↓)をコピペして実行する所から始めました。
esp8266-mqtt-quicktest/mqtt_esp8266_test.ino at master


ところが、実行してみるとException (3)を起こし、リスタートを繰り返してしまいます。orz

---------------------
Exception 3: LoadStoreError: Processor internal physical address or data error during load or store

Decoding 9 results
0x402301e0: sleep_reset_analog_rtcreg_8266
0x40202f76: Adafruit_MQTT::connect()
0x40203408: Print::println()
0x40201e08: MQTT_connect()
0x40201e3a: loop
0x40203768: loop_wrapper
0x40100718: cont_norm

---------------------

Adafruit_MQTT::connect()を呼び出したあと、LoadStore命令で不正アクセスを起こしたようです。


しかしWeb検索を掛けても、、Arduino IDEでMQTT_connect()から先の処理を調べる方法が見つかりません。sleep_reset_analog_rtcreg_8266が何なのか?それも分かりません。orz

半日近くあれこれ調べ、”MQTT Exception 3”で検索を掛けてようやくこれ(↓)を見つけました。
mqtt.connect() throws Exception (3) rst cause:2, boot mode:(1,6) · Issue #68 · adafruit/Adafruit_MQTT_Library · GitHub


どうやらコピペしたサンプル・コードに使われている”PROGMEM”が悪さをしていたようです。
”最新のexampleを調べろ”ということなので、スケッチ例-->Adafruit MQTT Library-->mqtt_esp8266を実行すると・・・


WiFi connected
IP address:
192.168.2.108
Connecting to MQTT... MQTT Connected!

Sending photocell val 0...OK!

Sending photocell val 1...OK!


動きました!

勿論、こちらのコードにはPROGMEMは使われていません。¥(^_^)

Arduino IDEを使っていると、ライブラリが頻繁にアップデートされます。ネット上のサンプル・コードではなく、ライブラリと一緒に提供される『スケッチ例』を最初に試すべきなのだと気づきました。

経験値がまた一つ上がりました。

それにしても・・・Arduino IDEでプログラムの動作を追いかけるには、どうしたら良いのでしょうか?

謎だ!
経験値がまだまだ不足しているようです。

nice!(1)  コメント(0) 
共通テーマ:日記・雑感

ESP-WROOM-02を動かして見た [電子工作]

(2017.10.25)
ESP-WROOM-02ピッチ変換用基板《シンプル版》(これ)にESP8266を半田付けしたのは2年くらい前です。適当な電源が見つからず、ず~っと放置していました。(^_^;)

秋月電子から3.3V 2AのACアダプタを購入して、ようやく準備が整いました。
ブレッドボードに取り付け、IO0,IO2,EN,RSTを10kΩでプルアップして、電源(3.3vとGND)を接続して、USBシリアルのTX,RX,GNDを接続して配線完了です。

こちら(↓)に記されていた回路接続を参考にしました。
ESP-WROOM-02動作確認 - <<梅>>備忘録

ATコマンド操作例は多くの方がアップしているので、迷うことなくWifi接続まで出来ました。
パチパチパチ~

Arduino IDEを使ったHello Worldプログラムもこちら(↓)を参考に環境を整え、コンソール表示出来ました。
keijirotanabe.github.io
パチパチパチ~

事件が起きたのは、この後です。

”Hello World”の文字列を変更して、コンパイル、書き込み、実行・・・
なにやらコア・ダンプのようなものを何度も繰り返し表示しています。orz

自動スクロールを止めて見ると”wdt reset"の文字が読み取れます。

ウォッチドッグタイマによるリセット?
書き込みに失敗してる?

もう一度、コンパイル、書き込み、実行すると、今度は動きました。

???
何が起きたのか分かりませんが、『こういうこともある』という経験を一つ積み重ねて先に進みました。

後は、ESP8266のスケッチ例を使ってWifiWebServerまで動かすことが出来ました。
2017_1024_5.JPGWifiWebServerのシリアル出力

ところがこの後、MQTTの接続で大嵌まりします。

nice!(1)  コメント(0) 
共通テーマ:日記・雑感
前の10件 | -