アナリティクス

ラベル Arduino の投稿を表示しています。 すべての投稿を表示
ラベル Arduino の投稿を表示しています。 すべての投稿を表示

2023年8月14日月曜日

ESP32-WROOM-32D/UにCH340K経由でUSBから書き込み

今までESP32-WROOM-32を使って色々試していたけど、USBから書き込みできる基板として作りたくなったのでCH340Kを使って作ってみた。

参考にしたもの


  1. ESP32-S3-KEY-R2(microfan社製)
    マイクロファン社製(といっても今回初めて知った)のブレッドボードを占領しないS3のボード。CH340Cが載っていたのでMacでもドライバ使ってちゃんと書き込みできるか手っ取り早く確認するために購入。秋月電子のCH340GにあるWCHダウンロードページからドライバファイル(CH341SER_MAC.ZIP)をダウンロードしてインストールすれば使えた。
  2. Esptool.py Documentation
    Esptool.pyの資料。プログラム書き込みのモードにする流れがBoot Mode Selectionに載っている。Automatic Bootloader を読むと自動書き込みにおいて、シリアル通信モジュールのRTSをESP32のENに、DTRをESP32のGPIO0に繋げるとある。
  3. ESP32-WROOM-32D&ESP32-WROOM-32U Datasheet
    WROOM-32D/32Uのデータシート。Peripheral SchematicsのページでIO0がBOOT OPTIONのボタンでGND落ちるようになっている。
  4. ESP32-DevKitC-V4 Reference Design r2.1(zipファイルがダウンロードされます)
    DevKitCのリファレンスデザイン。展開して01_schematic/ESP32-DevKitC-V4_SCH_20180607A.pdfを見るとDevKitCの回路図を見ることができる。
    これが俺を狂わせる。

出来てしまったもの


話長いので完成品から


要はPULL UPされているRSTとDTRをESP32のENとGPIO0に繋ぐと出来てしまったという話。


何で混乱したの?


これが原因


ESP32が次のようにダウンロード待機の状態になってくれないと書き込みが始められないはずなのだが上の回路でどうやっても出来なかった


説明元 説明
Esptool.py Documentation Manual Bootloaderを読むと書き込みモードにするには
  • Bootボタンを押す(GPIO0=LOW)
  • Resetボタンを押す(EN=LOW)

ならんよ?
この状態からResetボタンを離した時に waiting for download になるよ?
ESP32-DevKitC-V4 Reference Design r2.1 EN:GPIO0=LOW:LOW を出来なくしてるけど?

出来ないものは出来ない。少なくとも俺には出来ない。
でも手元のDOIT DEVKIT V1見ると載ってるんだよな。2個のJ3Y...

俺だって用意したんだよ。
2個のBSS138。



確認と愚痴


CH340Kだから動いてしまうのか?
CY7C65123でもRTS-EN,DTR-GPIO0で自動で書き込めたよ。


最後に整理してCH340Kで


はい書き込めた。
書き込めちゃったんだよ。
だからこの話はここでおしまいなんだ。

2022年9月3日土曜日

BuellToothへの恨み

ECMDroidを使ってみたくてBuellToothRevisionMotoから買ってみたけど、まぁまぁ酷い製品だった。

BuellTooth


BuellToothはショートモードで壊れるのでヒューズをたくさん一緒に持っていってください。 / BuellTooth will break in short mode, so please take plenty of fuses with you.

RevisionMotoから購入ですよ。
カッコいいステッカー付きですよ。

BuellToothはショートモードで壊れるのでヒューズをたくさん一緒に持っていってください。 / BuellTooth will break in short mode, so please take plenty of fuses with you.

ECMDroidでも通信ばっちりですよ。買った時はPC繋がないでTPSリセットできて大喜びだったんだけどね。

ヒューズ吹っ飛び


ターンパイクを駆け上がってるといきなりエンジンが止まった。というか電装が全部ダメになった。

BuellToothはショートモードで壊れるのでヒューズをたくさん一緒に持っていってください。 / BuellTooth will break in short mode, so please take plenty of fuses with you.

ヒューズを確認すると案の定切れていて、ヒューズを変えて試すと一瞬で切れたので何かがショートしている。いつもはBuellToothをつけずに走っていたけど、ロギングを試してみたかったのでその時はつけていた。48ドルもしたので壊れていないことを祈ったが、BuellToothを外してヒューズを交換してみると普通に動いた。

BuellToothに代わるもの


色々あるけど、結局9600bpsのシリアル通信を中継しているだけなので、勉強がてらに作ってみることにした。が、Bluetoothモジュールが(技適を通っているものは)結構なお値段するので(DSDTechのHC-06とか使っちゃダメですよ?めっちゃ安くて設定も簡単で、Bluetooth初心者にも使いやすいとか、設定アプリがとてもしっかりしてても技適通ってませんよ?捕まっちゃいますよ?通報されますよ?電源入れちゃダメですよ?とりあえず技適死ね)、ESP32とArduinoIDEのESP32ExampleにあるESP32-Serial-Bridgeでどうにかしてみることにした。

ESP32での試作


ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

開発ボードからブレッドボード上でTTLレベル変換噛ませてECUへのアダプタに接続。

ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

ちゃちゃーん(Win95世代)

ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

読み取り完了

ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

ライブデータもOK(当たり前)

搭載用にまともなのをつくる


ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge
ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

走行中にブレッドボード乗せてロギングするのは流石にしたくないので、もうちょっとまともなものを作ってみた。

で、これで試走してみたところ見事に壊れました。LXDC55の電圧範囲がMAX14.0Vなのでさもありなんと思っていたのですが、やっぱりLXDC55が壊れて(ただしヒューズが飛ぶようなことはない)、秋月電子のBP5293-33にしたところ問題なく動作。自分の使うものなのでこれでも良いけど、搭載の仕方がイマイチになってしまったので再度検討。

搭載用にもうちょっとまともなのをつくる


AliExpressで降圧コンバータを探すと結構出てくる。

ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

3A必要とは思えないけど、とりあえず強そうだったので使ってみたいと思い再度設計してみたら基板スペースに余裕があったのでSDカードをつけてみた。目的などない(いやホントはマップを保存して呼び出すとかできたらいいなと。アプリ作る気力ないなと。)。
結局1Aの3端子レギュレータ互換のもので普通に壊れず動作するようになったが、1A+既存の設計だと若干基板からはみ出る。新基板だと3Aのインダクタがかっこいいのでこっちをつけっぱなし。
ESP32シリアルブリッジそのままだとファームの書き換えができないので、そこはOTA(AdHoc)でWiFi経由で書き換え可能に改造している。

ESP32 Bluetoothシリアルブリッジを介したBuellとECMDroidの接続 / Buell to ECMDroid via ESP32 Bluetooth Serial Bridge

基板なら腐るほどあるんや。DT06-4Sのコネクタも余っとるんや。
誰かいらん?¥3,000ぐらいでお好きなデバイス名つけて提供可能です。

2022年8月2日火曜日

ニキシー管をできるだけ狡賢く操りたい


Top view nixie tubes controlled via NXYI2C

ニキシー管でで色々遊んでいるとIN-12以外のニキシー管も当然目に入る。ただ、そのピン配置は管ごとに異なるし、そもそもニキシー管を何に使うかもあまり考えていないインチキな人間はこう思ってしまう。

  • 自分がいくつの管使うかなんてわからない
  • 違うニキシー管を取っ替え引っ替え遊びたい
  • ニキシー管を変えたからって別のメインプログラムなんか組みたくない
  • 電源なんて俺が作るよりももっと良いモジュールが出ている(僻み全開)
  • メインプログラムから複数管の点灯パターンをなんて面倒見たくない。ワーカースレッドを割り当てるが如く勝手によろしくさせたい。

クズである。
で、このクズがI2Cなんぞ学んでしまうと「点灯パターンを予めプログラムしたMPUをニキシー管ごとに割り当てればいいんじゃね?」という大きな無駄を許容するクズに成り果てるのである。

  • ニキシー管をいくつ使うかわからなければ、ニキシー管ごとに基板を割り当てればよい
  • ニキシー管をいくつ使うかわからなければ、コマンドを分配させる基盤を中継させれば良い
  • 取っ替え引っ替え遊びたければ、ニキシー管の刺さった基板ごと差し替えればよい
  • 別のメインプログラムを組みたくなければ、コマンドぶん投げるだけにしておけば良い
  • 電源をモジュールから受けるなら、高電圧を分配させる基盤を中継させれば良い。
  • 点灯パターンの制御はニキシー管に割り当てたMPUにやらせれば良い。

基板を美しく見せようとか、高電圧電源にチャレンジしようという意欲が皆無である。とにかく楽をすることしか考えていない。ここでとっくに紹介しているんだけど、WordPress向けアタックぐらいしか訪問者がいない。

NXYI2C


NXYI2C
NXYI2C
PCB for tube
PCB for tube
NXYI2C
NXYI2C
PCB for tube
PCB for tube
Your microcontroller
Your microcontroller
Your High Voltage power supply
Your High Voltage power supply
I2C Hub
I2C Hub
NXYI2C
NXYI2C
NXYI2C
NXYI2C
NXYI2C
NXYI2C
PCB for tube
PCB for tube
PCB for tube
PCB for tube
PCB for tube
PCB for tube
I2C Hub
I2C Hub
Your High Voltage power supply
Your High Voltage power supply
NXYI2C
NXYI2C
PCB for tube
PCB for tube
Use a 5-pin cable to connect NXYI2C to the I2C Hub.
Connector : 1.25mm pitch (Micro JST)
Use a 5-pin cable to connect NXYI2C to the I2C Hub....
Use a 14-pin IDC flat cable to connect NXYI2C to the PCB for tube.
Connector : 1.27mm pitch IDC box header
Use a 14-pin IDC flat cable to connect NXYI2C to the PCB for Nixie...
More modules can be added by
connecting the I2C Hub to each other.
More modules can be added by...
Cable : 2-pin 2.5mm pitch (XH)
Cable : 2-pin 2.5mm pitch (XH)
Connect the four wires.
* VCC
* GND
* SDA
* SCL
Connect the four wires....
Viewer does not support full SVG 1.1

要はNXYI2Cと名前をつけた単体ニキシー管制御基板を、I2CHubにグサグサ刺す。I2CHubに高電圧モジュールと任意のマイコンを繋げば好きな数だけのニキシー管を制御できる仕組み。I2CHub同士を繋げて拡張すれば20個だろうが50個だろうが制御できる...ハズ?20個までしかやった事がない。
自分が電子工作を始めた頃のレベルでニキシー管工作を始めるならこれぐらいお膳立てされてないと嫌なんだが、世間的にはそうではないのだろうか?堕落した人間が少なくて困る。
ダメな点をあげればキリがないがこんなところがダメなのだろう。

堕落していいのはリスクを背負う覚悟の有る者だけである。
やっぱこのコンセプトはマズったかなぁ...w
いいじゃん、毎日点灯ほったらかしで何時間でも動くよ?
ニキシー管の内面メッキするような事も無いよ?
スタティック点灯きれいだよ?
各種ニキシー管にそこはかとなく対応しておりますよ?

2020年5月13日水曜日

レーザーカッターが壊れたので (5) bCNCによるgcodeのArduinoへの送信

bCNCでのgcode取り込みからArduinoへの送信

gcodeの取り込み、Arduinoへの接続


[ファイル]タブで以下を行う

  1. Arduinoへの接続
  2. gcodeファイルへの接続

Arduino/CNC Shieldへの転送


[control]タブの再生ボタン[▶︎]でgcodeが送られる。CNC Shieldへの電源が来ていない(+24VがONになっていない)でも、画面上でgcodeが送られていくさまが見られるのが面白い。

実際に切りたい掘りたいなら+24の方の電源を投入して


おしまい

レーザーカッターが壊れたので (4) SVGからのgcode生成

bCNCに食わせるgcodeをSVGから作る流れ。

元データ


イラレで作成。Incscapeで作れるようになればアドビ税回避できるのに。

Incscapeでの取り込み


Incscapeは原点が左下にある。これをレーザーカッターの動作開始原点に合わせるやり方。
まずはファイルを新規作成して、インポートでSVGを取り込む

取り込んだオブジェクトを用紙左下の下側に配置する。

そんだけ

プラグインでのgcode出力


プラグインでgcodeを出力する前に、まずは全てをパスに変換しておく。
そのあとメニューから[エクステンション] →[Generate Laser Code]→[J Tech Photonics Laser Tool]
次のダイアログが現れる

トラベルスピードや、レーザーを出している間のスピード、レーザーの強さを設定して[Apply]でファイルに出力。

最初「レーザーの強さを調節できるのか、PWMさまさまだな」と思って10なんて設定してやっていた。で何にもレーザーが出なくてどハマり。255にしても出てこない。Z+に来ている電圧を測ったら1.25V。TLP785の順電圧考えればスイッチはONになるハズだけどな?と、首を傾げながらLaser Power=12000で試したところ、Z+は4.95V。このままいってしまえとやったら動作できた。時間ができたらどうにかPWMの動作を伝えてレーザーの出力を変えられるようにしたい。が、とりあえず12000。フォトカプラを高速なものに変えればできるのかなぁ?
2020-05-15追記 : GRBL の $30(Max spindle speed, RPM)が1000でレーザーの強さを255で出したとする。だいたい1/4と考えて 5.0V/4=1.25V... $30の設定で正しく動かなかった疑惑。
ここの [5. GRBL Laser Mode] を読んでて$30=255にせよって、8ビット階調で考えると...

出力が終わると、Incscape上のオブジェクトの表示がこんな感じに。
矢印の方向にヘッドが動いていく。

レーザーカッターが壊れたので (3) GRBLパラメータの調整

描画の通りにレーザーが出力できるよう、色々調整

GRBLの動作パラメータ


bCNCの右上にあるTerminalを使うと、GRBLへ色々コマンドをマニュアルで送れる。使うのは

  1. $$ : 設定値一覧の表示
  2. $XXX=NNN : 設定の書き込み。XXXとNNNの意味はここ

で、とりあえずの設定は以下の通り

とりあえずZ軸はつかわないけど、同じパラメータに。

とりあえず変えたのはこの辺り。Homingは END STOP 使っていないから意味ないのかも。

  1. $25 : Homing seek
  2. $32 : Laser mode
  3. $100, $101, $102 : steps/mm
  4. $110, $111, $112 : Max rate, mm/min
  5. $120, $121, $122 : Acceleration, mm/sec^2

steps/mmは出力した結果を使って調整。モーターのステップ数やギアの直径で計算しても、結局調整するハメになると思われ。

2020年5月12日火曜日

レーザーカッターが壊れたので (2) ハードの設定と接続

CNC Shield とレーザーカッターを接続するので、その配線と自分が行ったハード上の調整。


ステッピングモーターの分割設定


1ステップを16分割32分割にして細かく動くようにしたいので、下記のようにジャンパを接続する。(X軸Y軸ともに)
ここで見ると、真ん中のジャンパは繋いでも繋がなくても同じかも。


モーターへの電流設定


とりあえず、試して動いた設定

最初、何も動かしていない(反時計回りでとまるところ)で試していたら、モーターがピックっピックっとその場から動けなかった。時計方向に動かしきっても同じで、どっちもダメなら移動パラメータが早すぎるのか?と思ってしばらく試すが症状改善せず。頭が禿げそうなところで少し戻したら動いた。そのあとは結構移動パラメータを速くしても動いたのでやっぱり禿げそう。 ここ読んでて気がついたけど、最大にしてた時、モーターがめっちゃ熱かった。加熱するほど電流流して動かんってどういうことだろう?


モーター用の電源とレーザーのスイッチ


電源ユニットからうまいこと配線を利用する


もしかしたら+24V電源右側2本がレーザーの配線なのかも。試してないけど。

引っ張り出した配線とCNC Shieldをこんな感じで接続。というか中継基板を作る。

ダサいけど、下手だけど、意味ない配線あるけど参考に

このモーターよくわからん

レーザーカッターが壊れたので (1) メモ/整理中

以前購入した中華レーザーカッターからレーザーが出なくなった。と言ってもレーザーのON/OFFを制御している部分だけが逝った(テストボタンではレーザーが出る)ので、直すついでに環境の改善も含めて見直しをかけた。
故障した箇所への対処については制御をどこで行っているかを突き詰めるのがダルいので、テストボタンの背面から配線を引っ張り、フォトカプラでON/OFFを制御することにした。

Before


  • イラレからビットマップに出力(ベクター系ファイルが動作しない)
  • レーザーカッターへの出力操作にWindowsが必要(専用ソフト)
  • ビットマップピクセルのアウトラインで切る為か、ピクセルの内側外側で2重に切る動作が発生

After


  • イラレからSVGに出力、InkScapeでインポート
  • Inkscape + J Tech Photonics Laser Tool プラグインでgcodeに出力
  • bCNCでgcodeをArduino/CNC Shieldに転送

改善される内容


  • ファイル形式 : ビットマップからベクター系へ
  • 2重切りがなくなる
  • grbl v1.1のアクセラレーションのおかげで動きがスムーズ
  • 全部Macで扱える(VM不要)

失うもの


  • ビットマップを使った彫刻
    なんかやり方ないかな?

必要なもの(イラレ以外)


----- ハード (主要なもの) -----
----- ハード(細々したもの) -----
----- ソフト(イラレ以外、Inkscape使いの人はイラレもイラネ) -----

何したっけ? :


----- インストール(は参考にしたリンクと簡単な説明のみ) -----
  • GRBLのコンパイル(要Arduino IDE)
  • ArduinoへのGRBL書き込み
    要はここからダウンロードしたものをライブラリに置くと、スケッチ例にgrblUploadが現れ、これを「マイコンボードに書き込む」するだけでコンパイルとArduinoへの書き込みが行われる。いつものスケッチアップロード。
    HEX書き込みとかそういうのいらない。
  • Incscape v0.92.2のインストール
    dmgでインストールできる。J Techのプラグインが1.0には用意されていないので0.92。Mac0Sでは0.92.5が動かないので0.92.2。Catalina様なMacは御愁傷様。自分は今だにMojave。XCodeが使えなくなったら即死。
  • J Tech Photonics Laser Tool (Incscapeプラグイン)のインストール
    ここからダウンロードして、Macなら /Applications/Inkscape.app/Contents/Resources/share/inkscape/extensionsの下に、プラグインのZIPにある全てのファイル(laser.py, laser.inx, dxf_input.py, dxf_input.inx)を置くだけ。
  • bCNCのインストール
    ここのインストールを参考に色々ハマる。TclTkを使えるようにするところで超ハマる。Command Line Tool フザケンナってなる。何をどうやって入れきったか忘れた。エラーメッセージとGoogleだけが頼り。

----- ハードの設定と接続 -----
  • ステッピングモーターの分割設定
    16分割32分割にするので、X軸Y軸各々のジャンパースイッチは3つ全部接続
  • モーターへの電流設定
    DRV8825モータードライバの可変抵抗器を時計回りの最大から1/8回転ほど戻す
  • CNC shield ↔︎ モーターへの配線
    Shieldは左からB+, B-, A+, A-、モーター側はA+,A-, B+, B-なのでこれを合わせるケーブルを作る。grblの設定でモーター回転方向を逆にすることもできるので、ABは逆でも良いかも。というか、自分は逆。今気がついた。モーターが逆に回ってもジャンパでどうにかできるのがV3.0の良いところ。V4.0にないのはなんでなんだぜ?
  • レーザーのスイッチ
    grbl v1.1 で使えるレーザーモードだと Shield 上にある END STOPS の Z+ がレーザーON/OFFの信号を出してくれる。ここから配線を引き、フォトカプラの 1.アノード, 2. カソード に接続、レーザーのテストボタンから引っ張った配線を、フォトカプラの 3.エミッタ 4.コレクタ に接続する。リレーでも良いけど何回もカチカチやったら壊れそうなのでフォトカプラ。直結してるので壊れそうだけどフォトカプラ。
----- GRBLパラメータの調整 -----
----- SVGからのgcode生成 -----
----- bCNCによるgcodeのArduinoへの送信 -----

2019年12月31日火曜日

Arduinoとニキシー管(IN-12の接続)

高圧電源、Arduino、K155ID1、IN-12の接続例

写真とFritzingの図は極力同じ配色、レイアウトにしています。


-- 写真 --
  • ニキシー管の数字の上は写真の上方向
  • K155ID1の1番ピンは左上角

-- Fritzingによる接続図 --
  • ニキシー管の数字の上は図の左方向
  • K155ID1の1番ピンは左下角
  • ブレッドボード右上のMOLEX基板は高圧電源を示す

-- 配線図 --

-- サンプルプログラム --
ニキシー管をK155ID1を利用して0から9まで順番に点灯するためのプログラムです。 試したい方はこちらからクローンするなり、コードをArduino IDEに貼り付けるなりしてください。

2017年5月1日月曜日

ATOMでArduinoを操る(3)

ESP-WROOM-02 を WebSocket の鯖にしてみた。

最終的にはこんな形
ソースとWebSocketを試すHTMLサンプル
作り方 :
自分自身で WebSocket や JSON をパースする実装など出来るわけも無いのでライブラリを探す。とりあえずプロジェクトを作る。

プロジェクトを作ったらライブラリを取り込む表示にする


まずはJSONのライブラリを入れる。ArduinoIDEで使えるライブラリはメジャーなものは大体あるのではないかと。


探して見つかったらインストール。


インストール先を聞いてくるので、グローバルにでもプロジェクト単位でも好きな方で


インストールが終わるとカッコイイ通知


同じノリで WebSocket 用ライブラリも入れる


冒頭のリンクのソースでは対応済みだけど、ビルドすると Hash.h が見つからないとして怒られた。


同じソースを ArduinoIDE でビルドすると下のインクルードの指定でも通る。


PlatformIO だとビルドインのライブラリに関するヘッダは、追加ライブラリの側から参照出来ないのだろうか?
とりあえず...

色々インクルードする前に <hash.h> をインクルードして対応。

2017年4月8日土曜日

ATOMでArduinoを操る(2)

ATOMでArduinoとシリアルでお話しする方法


これして

これする

以上

VSCodeでこれ出来れば、VSCodeを使いたい
platform-io使うとATOMの起動が重い...

2017年3月30日木曜日

AtomでArduinoを操る(1)

VSCodeが素晴らしいエディタと言ったか?アレもウソ

と言うよりも、良いエディタなんだけど、Arduinoをやるには一つ足りなかった。
Arduinoにプログラムを書き込むところまでは良かったけれど、シリアルでデバッグしようとしたときに「シリアルモニタは?」という事に気がつき、捜してみたもののこれといったものが見つからなかった。シリアルモニタを捜しているときに見つけたのがplatformioで、それが対応していたのがAtom
Reactなシンボルが気になるけどJSは放置。

Atomはダウンローダーから落としてインストール。その後の話。
こっちはえらい簡単に環境が整った。

プロジェクトを開いて


インストーラ(?)を開いて


arduinoと入れて探して


候補から platformio-ide を見つけて Install


インストール中がオシャレ


通知もカコイイ

Restartで再起動して終わり

以上、インストール

インストールを終えるとこんな画面。とりあえず既存のArduinoプロジェクトからインポートして試してみる。
※プロジェクトをインポートするとArduinoプロジェクトのフォルダ構成が変わるので、念のためプロジェクトフォルダのバックアップを作成しておくのがおすすめ


プロジェクトのフォルダを指定して

ボードを選んで・・・・・・はぁぁぁぁぁぁぁ!?


元プロジェクトとボードが決まったので Import


プログラムのビルドとアップロードはサイドの矢印で


ビルドとアップロードが始まって、うまく行くと緑にピカッとなる


楽だわ。
そして多機能だわ。
そしてターミナルに何も吐かないプロジェクトを選んでしまった俺。