ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示
ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示

2020年12月13日日曜日

Ender 3のX軸をリニアレール化

Ender 3用のX軸リニアレール&ダイレクトドライブ化キットを購入しました

https://ja.aliexpress.com/item/1005001279027583.html?spm=a2g0s.9042311.0.0.8cf34c4dYPtJIk

 届いた中身がこちら。取り付けの取説はありません。


取り付け前の状態はこちら。BLTouchを追加しています。

まずは既存のX軸のパーツを全部外します

 
Tナット12個をレール背面に全部付けて...

アルミフレームに仮取り付け

X軸センサーにブロックが当たるように調整します

ヘッド取り付け用プレート、ベルト、ヒートヘッドの順で組み立てて完成。
ダイレクトドライブ化はまた今度やります。


2017年12月28日木曜日

思いつきで買ったサーマルプリンタが結構使えた

先日行われた『ゆかり公式生放送を見る忘年会』にてこんなレシートを作ってみました。



割烹着ゆかりさんのお店...割烹ゆかり。そのままですね。
会場が和室だったので「それならやるしかないやん!」って思いつきでサーマルプリンタを買って使ってみたところ案外使えました。
買ったのはコレ↓
Aibecy POS-5805DD USBサーマルプリンタ

USB接続だけで良いならもう少し安いものがありますが、Bluetoothに対応していたこととバッテリ内蔵、あと見た目がこっちのほうが良いという点で選びました。
型番で調べてみると一応日本語も印刷できるっぽい、程度の認識で購入したので思い通りに印刷できるようになるまで苦労するorダメかもと思っていました。
ところがWindows用ドライバを使ってみるとInkscapeから直接印刷できて拍子抜けしてしまう程簡単でした。導入まで一癖あるのでメモを残しておきます。

USB接続の場合、サーマルプリンタの電源をONにして、PCに接続。デバイスマネージャーに"プリンターが接続されていません"と表示されることを確認します。

Bluetooth接続の場合、プリンタの電源を投入。まずはペアリングを行います。
BluetoothPrinterを選択。PINは1234


Bluetooth設定を開いて方向が発信のCOMポート番号を確認。この場合COM5。
amazon商品ページ説明欄からドライバをダウンロードして実行。
Portsに確認したCOMポート番号を選択して、OSはWindows10、Select PrinterはPOS-58を選択してBegin Setupをクリック。


そしてCOM(232C)接続...
電圧を確認したところTTLレベルではなく、±5.4Vが出ているので232Cレベル変換が必要です。
そしてピンアサインは下記の通り。マニュアルに載っておらず、調査したものです。
1:GND
2:TXD(プリンタからの出力)
3:RXD(プリンタへの入力)
4:???

1番にGNDがあることによって、USBとCOM両方を同じPCのUSBポートに接続すると+5VとGNDがショートするという恐ろしい仕様になっております。

通信仕様はボーレート115200bps,データ8bit,ストップ1bit,パリティなし
FRDM-K64Fボードと232Cレベル変換ICを介して接続してみたところうまく動きました。

使わせて頂いたソースはこれ。
https://os.mbed.com/users/aross34/code/Thermal_HelloWorld/

AdafruitThermal.cppの29行目のボーレートを115200に変更して動作しました。
ただし一部のコマンドが動いていないようで、真ん中あたりのLarge,Midium,smallはそれぞれ文字の大きさが変わるようですが、変わっていません。

Android端末からBluetoothで印刷する場合、ペアリングを行うところまでは普通のbluetoothデバイスと同じです。印刷はサーマルプリンタ用アプリを使用します。
画像を印刷するだけであれば iPrint が簡単かつ綺麗に印刷できました。


2016年12月18日日曜日

FRDMボードのデバッガチップを復旧させた話

この記事はmbed adventカレンダー2016 18日目の記事です。

長くなったのでいきなり3行でまとめると...
・FRDM-K64Fボードのファーム飛んだ
・Keil uVision5+サポートするデバッガ(J-Link、LPC-Link2、他mbedボードのCMSIS-DAPデバッガ)で復旧できた
ARMバンザイ、mbedバンザイ

こんな人に特にオススメの記事となっています
・FRDMボードのファームふっ飛ばして積み基板にしている人
・keil uVision5からhexファイルの書き込み方について知りたい人

最近FRDM-K64Fボードを買いまして、早速Lチカ!...の前にファームのアップデートを
Windows10マシンにて試みたところ、ファームが吹っ飛びました

この件調べるまで知りませんでしたが、どうもOpenSDAブートローダーとWindows10の相性が悪いらしいです。
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA

ページ上方の続きを表示をクリックすると...
oh...

復旧の方法については調べたところ、主に2通りの方法があるようです。
①J-LinkやULINK2等の外部デバッガよりブートローダー書き込み
  https://community.nxp.com/docs/DOC-330935
②別なFRDMボードからブートローダー書き込み
  https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/
 
J-Link EDUを買って復旧することに成功しましたが、
LPC-Link2(CMSIS-DAPファーム、もしくは他のmbedボードでSWD信号引き出せられるもの)
+Keil uVision5
+ubuntu(VirtualBox上からでもOK、もしくはwindows7、Mac、Linux等の別マシン)
からでも復旧できることが分かったのでその方法を記載しておきます。


ブートローダー復旧編


LPC-Link2とFRDMボードを接続しておきます。
電源はFRDMボードにUSBから供給するのでLPC-Link2のJP2はオープンにしておきます。

uVisionからバイナリファイル書き込み方法は以下を参照しました。
µVision4 User's Guide (Japanese): HEX ファイル
http://www.keil.com/support/man/docs/uv4jp/uv4jp_fl_hexdownload.htm

書き込みプロジェクト作成前にK20シリーズのDFPをインストールしておきます。
メイン画面のPack Installerをクリック

 画面左側のツリーよりNXP→K20 Seriesを選択、右側のKeil::Kinetis_K20_DFPのInstallをクリック

インストール完了したらPack Installerを閉じます。
Reload Packs?と問い合わせが出るのではいをクリック。
いいえをクリックしてしまったらuVision5を再起動。

Keil uVision5で書き込み用プロジェクトの作成
タイトルバー下のメニューよりProject→New uVision Project
適当なフォルダにOpeSDAFirmwareWriteなど、適当な名前でプロジェクト作成。
Select Device画面でSearch欄にMK20DX128xxx5と入力。
ツリーのMK20DX128xxx5をクリックしてOKをクリック。

コンポーネントは何も追加せずOKをクリック


OpenSDAブートローダーのダウンロード
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA
復旧対象のボードを選択して、OpenSDA bootloaderのバイナリをダウンロード。

解凍して、プロジェクト作ったフォルダにk20dx128_bootloader_0x5000.axfをコピーします。

Options fot Targetをクリック。

 Outputタブを選択し、Name of Exe~欄にダウンロードしたOpenSDA bootloaderのバイナリ名(k20dx128_bootloader_0x5000.axf)を入力します。

DebugタブにてデバッガをCMSIS-DAP Debuggerに変更。
Settingsをクリック。

 Connectをunder Reset、ResetをHW RESETに変更

メイン画面に戻り、Downloadボタンを押せばbootloaderが書き込まれます。
正常に書き込まれればBuild Outputはスクリーンショットと同じ内容になるはずです。

SWDケーブルを外してSW1を押しながらmicroUSBケーブルを接続し、
WindowsからBOOTLOADERドライブが認識されれば正常に書き込みできています。

アプリケーション復旧編

OpenSDAアプリケーション書き込み用にWindows10ではないマシン(VirtualBox上のubuntu、別マシンのWindows7など)で以降は作業します。

VirtualBox上のubuntuから復旧させる場合、仮想マシンの設定より
USBデバイスフィルタを登録しておきます。
Windowsにブートローダードライブが認識されている状態でMBED CMSIS-DAPを追加します。 
この設定をした状態でubuntuを起動、再度SW1を押しながらFRDMボードのUSBを接続すれば
自動的に仮想マシンのubuntuへ接続されます。


Windows10において対策版のOpenSDAブートローダーがリリースされるまで、JLinkかP&E Microどちらかを使うことが推奨されているので今回はJLinkを使います。

https://www.segger.com/downloads/jlink
J-Link OpenSDA - Board-Specific Firmwaresより対象のボード用バイナリをダウンロードします。
今回はFRDM-K64F用のバイナリをダウンロードします。

ダウンロードしたバイナリ(02_OpenSDA_FRDM-K64F.bin)をBOOTLOADERドライブにD&D

USBケーブルを抜き、そのまま差せば...復旧しました!


LチカもOK!

で、ここまでやってようやく気づいたのですが、uVision5がサポートするデバッガなら、どれでも復旧できたんじゃね?と

SWDコネクタ出ているLPCXpresso824-MAXボードからでも...

SWD関係のピンを引き出したmbed LPC1114ボードからでも...

nucleo-F401REボード上のST-Linkからでも...

復旧できました!!
なんのためにJ-Link買ったんだろ。なんでもデバッグできるデバッガ手に入ったしいいや。



2016年12月3日土曜日

へぇボタンをmbedで改造して任意SE鳴らせるようにしてみた

この記事はmbed adventカレンダー2016 3日目の記事です。

ある時へぇボタンの声をVOICEROID結月ゆかりさんに差し替えられない?と相談されまして、
それをmbed nucleo F303K8で作りました。
鳴ってる様子はこちら


へえボタンケースを追加工してmicroSDカードとロータリーディップスイッチ、音量調整用可変抵抗を取り付けています。


 ハード














回路図
















PDF版;https://drive.google.com/file/d/0B_nriOFsja6DNlRFazhraVllaFE/view?usp=sharing

・microSD
・スピーカー駆動用アンプ
・SE選択用ロータリーディップスイッチ
・へぇボタンについていたプッシュスイッチ信号横取り
・へぇボタン電源の単3電池4本
以上をmbed nucleoF303K8に接続して作り上げました。
改造というより中身ほぼ総取り替えですね(;´Д`)


初めてnucleoF303K8を使いましたが、、、注意して使わなければならないことにいくつかブチ当たりました。いずれもnucleoボードの回路図を注意して見ないとわからないことばかりでした。

まとめたツイート
https://twitter.com/i/moments/edit/804529900371591168

そのほかにも...
・電源をVINからではなく、+5Vから供給した場合、ST-Linkに電源供給されないためかResetがLに落ちっぱな状態になり動作しない
→ST-Linkからのリセット線の0Ωジャンパ外して引き出し、外部スイッチで接続・切り離しできるようにした
・ST-LinlとA7(PA2)はUART_TX、A0(PA0)はMCOとして接続されており、空きポートだと思って使うとトラブルの元になる→A0はSB17をカットして対応、A7は元々空きだったので痛い目見ず済んだ。
を作りました。

ソフト

https://developer.mbed.org/users/nameless129/code/F303_WAVPlayer/

実機のへぇボタン同様SEを連打して鳴らせたかったのとwavファイルの勉強兼ねて再生用ライブラリを作りました。
なるべく環境に依存する部分を組み込まないように作ったので他のPSoCやAVR等で使えるとはずですが、まだライブラリを独立させて試していないのでそれはまた近いうちに公開予定です。

2016年5月27日金曜日

【mbed】NUCLEO-F303K8でRTCを使う

NUCLEO-F303K8でSDカード扱おうとしたら”RTC error: LSE clock initialization failed.”とシリアルに表示された。
RTCの初期化に失敗したらしい。

調べてみると、mbedライブラリのデフォルトではLSEクロックを使用する。
(device.hの#define DEVICE_RTC_LSIが0)
NUCLEOボードのジャンパは購入時の状態ではX1が接続されていない。
上記回路図画像はSTM32 Nucleo-32 Schematics packの回路図(MB1180.pdf)より

RTCを使うための方法は2通り
①標準のmbedライブラリからmbed-devライブラリに変更して、mbed-dev\targets\hal\TARGET_STM\TARGET_STM32F3\TARGET_NUCLEO_F303K8\device.h
の #define DEVICE_RTC_LSIを1に書き換えて使う。
精度は落ちるがGPIO減らないしソルダジャンパしなくてもいいのでお手軽。

②ボードのSB5、SB7をソルダジャンパしてX1を接続。(動作確認していません)
その場合ピンPF0、PF1が使用できなくなるが精度は良いはず。

今回はSDカードの読み出しをやりたいため、ソフトで対応しました。

2016年5月17日火曜日

目覚まし時計をLEDシーリングライト連動にしてみた

赤外線リモコンでコントロールできるLEDシーリングライトをウチには取り付けています。それを目覚ましのブザーと連動させれば快適に起きられそうじゃん?と
なぜこの発想に至ったのかはお察し下さい・・・

まずは目覚まし時計のブザー信号の仕様確認から。
 (写真はすでに引き出し用の線をハンダ付けしています。撮るの忘れてた

 

恐らく圧電ブザー、片側の端子をGNDかVDDにつないで動作させてるだろうと予測。電池のマイナス端子でGNDを取り、オシロのプローブ当てると・・・

 

GNDとICの出力ピンにつながっているようです。逆起電圧出てるのでダイオードで制限して使うことにします。

 続いてLEDシーリングライトのリモコン信号解析
以前会社の寮でON・OFFタイマがついていないエアコンのコントロールをmbedでやっていたことがあるので、同じライブラリで信号を読み取ることに。
実用ライブラリシリーズ:赤外線送受信ライブラリ

さくっとブレボに受信用ICやら赤外線LEDを組んで試してみて・・・あれ?
アイリスオーヤマのリモコンですが、SONYフォーマットで、どのボタン押しても同じコードが表示される・・・。まさか・・・!ロジアナで確認してみると・・・

_人人人人人人人人_
> 独自フォーマット <
 ̄Y^Y^Y^Y^Y^Y^Y^YY ̄
ロジアナでパルス幅取るのもいいけど、ここはmbedで楽することに。パルス幅の時間を取得するプログラムが公開されていました。これなら独自フォーマットでも対応できますね。
リモコンの信号の取得
こちらのサイトをソースを少し改変。1sec経過で新規信号扱い(ターミナルで改行するだけ)、1フレーム目の時間が最後に受信したパルス~新規で受信したパルス間の時間になっているのを修正しました。
IRreceiver_PulseWidth

取得したパルス時間を送信用プログラムにコピペ。
取得したリモコン信号の送信 

IR_LED_Send

動作テスト

使ってみて数日ですが、ブザーで起きたのち眩しいので2度寝する気がなくなり、いい感じです。
朝弱い方はぜひお試し下さい

 回路図はこちら
マイコン基板にみんなのラボのLPC812 300mil board使いました。
なぜそれをって?積んでたからデスヨ





2015年7月8日水曜日

LPC-Link2のCMSIS-DAPファームを更新したら認識しなくなったけど解決

LPCScrypt(最近リリースされたLink2やLPCXpressoV2/V3系ボードのファームを焼くためのツール)で最新のCMSIS-DAPファームを書き込んだら、PCから認識しなくなって、困って、解決しますた。

原因は、CMSIS-DAPファームのバージョンアップに合わせて、PCのドライバも更新していなかったためです。

ドライバを更新してない時の症状は、デバイスマネージャーにCMSIS-DAPデバッガが表示されず、シリアルポートの「LPC-LinkⅡ UCom Port」のみが表示されます。

LPCXpresso最新版(v7.8.0_426)にもLPCScryptと同じCMSIS-DAPファームが入っているので、LPCXpressoでも同様の現象が発生するかもしれません。(JP1刺さずUSBブートでCMSIS-DAPファーム利用する場合など)

インストールを行う前に古いドライバを削除しておくことをオススメします。
ドライバのインストーラはLPCXpresso v7.8.0_426に同梱されています。
デフォルトのままインストールされているなら、インストーラのパスは
"C:\nxp\LPCXpresso_7.8.0_426\Drivers\lpc_driver_installer.exe"になります。

インストールが成功し、CMSIS-DAPファームを焼いた状態でLink2を接続すると以下の画像のように認識されて正常に動作します。



2015年7月4日土曜日

D&DでCMSIS-DAPデバッガから書き込みを行うバッチファイル

昨日に引き続きバッチファイルネタです(;´∀`)
バッチファイルにD&Dでbinファイルをぶち込むとCMSIS-DAPデバッガを通じてターゲットに書き込みが行えます。

https://developer.mbed.org/users/kazu_zamasu/notebook/USE-to-IRC-on-mbedlib/
ざますさんのノートブックにredlinkへ引数としてバイナリを渡して書き込む方法があったので
それをバッチファイル化しました。

ざますさんのと少し違うのはLPC-Link2をredlink化せず、CMSIS-DAPデバッガのまま使うことです。
CMSIS-DAPデバッガのまま書き込めたので省略しました。
(LPC-Link2のCMSIS-DAPデバッガ化はLPCScryptを使ってください)

手持ちのNXPチップのmbed4種(LPC1768,LPC11U68,LPC1114,LPC824)対応のバッチファイルを作りました。

mbedとしてPCにUSBで接続してる時も使えます(CMSIS-DAPデバッガとしても認識されてるため。USBストレージあるからあまり意味ないけど)
LPC-Link2をCMSIS-DAPデバッガとして動作させている時に同様に使うことができます。
これで非mbedなボードでSWD書き込みが捗ります。今まではCoFlash使ってたけど、824とか対応してなかったんですよね。。。

batファイル3行目のLPCXpressoインストールパスを修正してから使ってください。現状では最新のLPCXpresso v7.8.0_426のパスになっています。
D&Dでbinファイルをbatファイルに放り込むと書き込んでくれます。書き込み後はリセットがかかり、焼いたバイナリが走り出します。

2015年7月3日金曜日

D&Dでbinファイルをhexファイルに変換するバッチファイル

LPCXpresso内のobjcopy.exeを利用して変換するバッチファイルを書きますた。
D&Dでbinファイルを放り込むと同じフォルダに同名のhexファイルが生成されます。

LPCXpressoが必要です。
3行目は適宜LPCXpressoがインストールされてるフォルダに変更してください。

2015年7月1日水曜日

EFM32 Giant Geckoを触ってみた

 ちょっと触らせて頂く機会があったのでいろいろやってみました。

青マーカーが付いているように見えますが、保護フィルムです。剥がしません。

下側のmicroUSBポートはUSBHost/Device用で、左下の電源選択のスライドスイッチをDBG、左側のminiUSBポートに刺すことで電源が入ります。

初期のファームはタッチセンサのデモ。触れると数値が変化します。

環境構築から。
いきなりオンラインIDEでソース書いてバイナリ作ってD&D、かと思いきや初期状態ではできないのでファームウェアをバージョンアップする必要がありました。
そのために純正IDEの「Simplicity Studio」をダウンロードします。アップデータのダウンロードやらでそこそこ時間かかりました。詳細は↓
https://developer.mbed.org/teams/SiliconLabs/wiki/Silicon-Labs-Firmware

で、mbed化もできたところで色々試してみました。
まずはLチカ。これは難なく作成できました。ついでに拙作の「mbed AutoTransfer」も試しましたが、うまく動いてくれました。
ちなみにLEDですがGPIOのPE2,PE3に当たっています。ヘッダにも出ている上、UART1とも被っているので要注意です。というか他のポートでもよかったのでは。。。


次にLCD。サンプル見ればーと思いきや、

この通り書いても動かないんですが(´・ω・`)
他のサンプルソース見て対処しますた。

その他光センサも乗っかってたので、これの値をADで読むのかなーと思いきや普通のポートだったりしたので、それをGPIOで読んだり。
テスタの値は光センサの出力電圧

光センサの電圧が高くなったので、読んでるGPIOもH判定、それに合わせて液晶下の右側LEDを点灯させてます

LCセンサはうまく使えなかったのでスルーしたり。。。

PCとシリアル通信させてみたり。これが一番悩まされました。
mbedとして見えてるドライブの中のReadMeの中身が↓
Silicon Labs J-Link MSD volume.

Copying a binary file here will flash it to the MCU.
Supported binary file formats:
 - Intel Hex (.hex)
 - Motorola s-records (.mot)
 - Binary (.bin/.par/.crd)

Known limitations:
 - Virtual COM port speed is currently fixed at 115200 bps
 - Using other kit functionality such as energy profiling or debugger while flashing is not supported.
   Workaround: Pause any energy profiling and disconnect any connected debug sessions before flashing.
ほうほう、hexだけでなく、mot、bin、までとはなんでもござれっすなあと思った次の段。
ふむ、デフォルトのCOMポートは1115200bpsで固定されてるのね、と。

そしてシリアル通信テストのmbedソフトをボーレート指定せず書いてみるも、PCに通信が来ない。
もしかしてと思い、mbedソフトのボーレートを115200bpsに指定してみるも何も表示されない。
丁度ヘッダにもピンが出ているのでそこをUSB-UARTで覗いてみれば表示される。
ジャンパ飛ばさないといけないのかと色々調べてみると・・・

https://developer.mbed.org/teams/SiliconLabs/wiki/Using-stdio-on-Silicon-Labs-platforms

Board Controller Enable Signal

えぇー・・・('A`;)
ヘッダが出ているPE0とPE1とJ-LinkのUARTが共有になっているので、
J-Linkのチップ保護のためのEnable信号(PF7)・・・ということかなあ。。。
PCと通信させるときはPF7をHにしてからにしましょう。
あとmbedのボーレート指定も115200bpsで。これ以外はmbedチップが通せんぼします。


LCDのパーツがいろいろあったので表示させてみたり。


最後に、mbedチップのバージョンアップ来ませんかね。。。バイナリ転送するたびにシリアル再接続しないといけないし、ボーレートも固定だし、正直、易しくないボードだなあと思いました。
ただボタン電池1コで駆動するのは、小さい機器への組み込みに魅力的ですね。

Simplicity Studioを使ってサンプルを書き込んでみたりしましたが、LPCXpresssoと同じくmsys-1.0問題(勝手に呼んでる)が発生しました。
msys\1.0\bin\make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
↑のメッセージがLPCXpressoでも見たので同じように改善版をダウンロード↓
http://www.support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull
置き換えすることで解消しました。

最後になんだかんだ試したソースを置いておきます。
参考になれば幸いです。
https://developer.mbed.org/users/nameless129/code/blinky_EFM32_Giant/


 参考資料など

EFM32GG-STK3700 Giant Gecko スターター・キット・ユーザ・ガイド
http://www.silabs.com/Support%20Documents/TechnicalDocs/efm32gg-stk3700-ug.pdf

アプリケーションノート一覧
http://www.silabs.com/products/mcu/Pages/32-bit-mcu-application-notes.aspx

回路図
http://www.silabs.com/Support%20Documents/TechnicalDocs/BRD2200A_A03.pdf