PIC18F14K50+HIDブートローダ

PIC18F14K50にArduino+9V電池方式でHIDブートローダを書込んでみたらベリファイでエラーが出ました。
コンフィグビット0x30002番地に0x01を書いたのに読出したら0x21になっています。

300000+    0  1  2  3  4  5  6  7  9  9  A  B  C  D
書込値 :00 32 01 1e -- 00 01 -- 03 c0 03 e0 03 40
Arduino読:00 32 21 1e 00 00 01 00 03 c0 03 e0 03 40
PICkit3読:00 32 01 1e 00 00 01 00 03 c0 03 e0 03 40

PICKit3で読むと0x01ですがArduinoだと0x21になるのです。
違いはbit5が0か1かですが、このbitはデバイス上で何にも割り当てられていません。PIC18F14K50のデーターシートによると割り当てが無い番地は0として読める事になっているのでPICkit3の結果が正しくArduinoの結果が間違いです。

しかしArduinoのスケッチを見ていますが特に問題なさそうに見えます。またこの番地のこのbit以外は問題が発生していないのも納得がいきません。因みにデバイスを交換しても変化なしでした。

書込み自体はできており問題なく動作はするのですが・・・謎です。

ArduinoでPICマイコンに書込む~AE-PIC18F14K50編~

先日HOI-Linkを製作した時、秋月電子のPIC18F14K50基板「AE-PIC18F14K50」Arduiono UNOを使ってブートローダーを書き込みました。その際以前書いた「ArduinoでPICマイコンに書込む~OpenStickLite(PIC18F14K50)編~」とは若干変更する必要がありました。
またブートローダーだけでなくHOI-Linkのファーム全体を書いてみました。
なおArduinoに入れる書込み用スケッチにミスっていた箇所があったので修正版を掲載しています。

AE-PIC18F14K50基板は秋月電子で¥800 (現時点) で売られています。DIPパッケージ単体では¥220ですが発振子やUSBコネクタも買う事を考えると基板もそんなに割高ではありません。
以前DIP版のPIC18F14K50にArduinoからブートローダーを書き込んだのと同様にこの基板にも書込んでみました。

前回DIPパッケージ版と今回のAE-PIC18F14K50とで異なるところ

前回の回路図はこれ。この時マイコンのVDDにはArduinoから3.3Vを供給し、VUSB端子もVDDに直結していました。

PIC14K50WriteByUNOsch
ArduinoUNOでPIC18F14K50に書き込んでみた回路図。

一方AE_PIC18F14K50基板はVUSB端子が外部に出ていません。VUSBはチップ内にレギュレータを持っていて3.3Vが出力されるのでVDDに少し高い電圧(まあ5Vですよね)を入れてやればVUSBには外から印加する必要はありません。PICkit3でもそうなっていますしね。

という事で次の様な回路で上手くいきました。
上と違うのは電源を5Vに変えたのとVUSBには接続していない事。
なおVUSB端子はGNDとの間にコンデンサを接続する必要がありますがAE-PIC18F14K50は基板内に0.22μFを内蔵しています。

AE-PIC18F14K50基板に書き込む配線

ブートローダーだけでなくファームウェア本体も書いてみる。

といつもはブートローダーだけを書き込み、そのブートローダーから本体のファームウェアを書き込んでいました。今回ちょっと試しにブートローダー+HOI-Linkのファーム全体を書き込んでみます。

まずその前に書き込みデータを作ります。PICkit3を接続してファーム書込み済のマイコンからプログラムを読み出し、HEXファイルに書きだしました。このファイルにはフラッシュに書かれたプログラムとコンフィグデータ以外にEEPROMの内容も含んでいます。しかしArduino上の書込みスケッチをEEPROMには対応させていないのでテキストエディタでEEPROMに関する行を消しておきます。

そして出来たのがこのファイル→HOI-LinkAndBootloader.zip
解凍すると次のHEXファイルが出てきます。
HOI-LinkAndBootloader.hex
これをメモ帳で開いてTeratermにコピペする事でAE-PIC18F14K50に書き込みます。このあたりの手順は前回の記事に書いています。

そしてファーム全体を書き込むと1分程度で何事もなく終わりました。
因みにブートローダーだけだと約10秒です。Teratermの設定で速度を下げているので専用PICライタに比べると時間が掛かりますが、これは 書き込みデータ全てを Arduinoのメモリーに保存できないのでシリアル通信でPCから順次送りながら書き込んでいる為です。この時PCとArduinoの間でフロー制御できればよいのですが、Arduinoの素の状態ではこれが出来ないので送り込み速度の方を落としているのです。

続いてベリファイをしてみると・・・なんだかエラーが出ます。調べてみるとArduino上の書込みスケッチのベリファイルーチンでチェックサムの計算をミスっていたので、これを修正するとベリファイもエラー無く終了しました。
なお書込みルーチンでもチェックサムを計算していますがこちらは正常です。
書き込みとベリファイは殆ど同じ処理なので上手くサブルーチンで共有すればいいのに面倒になってコピペで作成した為、デバッグの時にベリファイ側の修正を忘れていた様です。

修正版のArduino UNO用書込みスケッチ→PICWrite18F14K50_190621.zip

という事で・・・

秋月電子のAE-PIC18F14K50基板に専用PICライタを使わずファームを書き込めるようになりました(Arduinoは必要ですけど)。 直接ファームを書いても良し、ブートローダーを書いてUSB経由でファームを送り込むのも良しでお手軽にUSB工作が楽しめます。

HOI-Link:S-BUS→PC接続 完成

前回の続きです。前回は秋月電子のPIC18F14K50搭載基板をブレッドボードに挿して実験していました。今回は完成版として基板に収めるのでDIPパッケージで製作します。

まずKi-cadで回路図を書いて・・・

基板のパターンを作って・・・

片面基板なので表パターン(赤の配線)は実装時に導線で接続します。

CNCで削って基板を作ります。

FRISKケース(何年か前から大きくなった120%Booster版)に入れてみました。

寸法を合わせて作ったので当然ですがピッタリです。

ところでFRISKケースの場合ソケットを使ってマイコンを実装すると高すぎて蓋が閉まらなくなります。なので基板に直付けする前にブートローダーを書き込んでおきます(後からでも書けるけどブレッドボードに載せられる実装前の方がやりやすいので)。前に書いた9V電池書きこみ方式で・・・

006Pの9V電池書き込み方式

そして部品取り付け。
私のコントローラーはフタバのFASST方式ですが息子はFHSS方式なので受信機を取り替えられる様にします。最初はXHコネクタの3ピンを使うつもりでしたがL字型のポストが部品箱にありません。L字型でないとコネクタを刺す方向が縦になっておさまりが悪いのです。
代りにL字のピンヘッダがあったのでこれを基板にとりつけ、ここにRCサーボ等で使う3pinコネクタ(QIとかデュポンコネクタとか呼ぶやつ)で接続します。
但し逆刺しができてしまうのは要注意。

完成の図。

そして当初の目的であったドローンシミュレータ実行中。

参考のためマイコンに書いたファームウェアを載せておきます(例によってソースは試行錯誤の後が残ったままで汚いです)。コンパイルはMPLAB-IDEのバージョン8で行っていますが今となってはかなり古い環境だと思います。最新の環境でビルドできるかどうかは確かめていません。
また本来USB機器には固有のVID,PIDを書き込んでおく必要がありますがこのプログラムには適当な値を書いてあるのでそのまま使われる場合は自己責任でお願いします( 確率は低いですがもしVID,PIDがダブった機器を接続した場合に上手くつながらなくなる可能性あり)。
なおOpenStickLiteで使ったのと同じブートローダーから書き込む仕様でビルドしています。

HOI-Link:S-BUS→PC接続

PC上でドローンシミューレータを動かすとき、今までこんなコントローラーを使っていました。

10年くらい前、ムサシノ模型のモスキートモス号を作った時に練習用に買ったコントローラー

私レベルだとこれで問題ありません。しかし息子によると実物の送信機とは感覚が違うのでレースの練習はやりにくいとの事。
そこでトレーナーコネクタからPCに接続するインターフェースの購入も検討したのですが、その前に手元にあるものでなんとかできないか考えました。

まずトレーナーコネクタというのは送信機の裏についているこういう四角いコネクタ。ここからPWM信号が出ているらしいです。

右上の四角いコネクタがトレーナーポートです。

まずこのコネクタをどこで入手できるかというところから検討しなければなりません。またここから信号を取出せたとしてパルス幅をチャンネル数分カウントし、HIDデバイスとしてUSBに伝える処理も必要で何となく面倒です。

そこでRC受信機が出すS-BUS信号をマイコンで取り込んでUSBに伝えるのなら、OpenStickのファームウェアを少し改造して実現できそうです。しかもシリアル通信なのでパルス幅を数えるよりも精度が良い筈。但し受信機が一つ余分に必要なのと電波が出っぱなしになるのがちょっと気が引けますが、たぶんトレーナーコネクタから取り出す方式でも電波は出ているんではないですかね?(想像ですが)

こんな構造にしようと思います。

受信機はSBUSが出せれば何でもよいので、まずはこれで試してみます。

REDCON FT4X
ケースは外していました。

マイコンは秋月電子で買って放置していたPIC18C14K50搭載ボードです。このマイコンはOpenStickLiteでも採用しているので馴染みがあります。

そしてRAM領域の不足に悩まされましたが何とか動作し始めました。S-BUSは18チャンネル分のデータが含まれていますが私のT6EXで出せる6CHまでしか確認していません。あとで息子のT10Jで10chを試してみようと思います。


T6EXで実験中。ちょっと古いFASST方式ですが現役です。

実物のコントローラーだしケーブルをつなぐ必要もなく操作性は良いです。
何か他の事にも使えそうな気がします・・・今すぐ思いつきませんが・・ラジコン送信機でPCを操作する何か・・・
またPCの画面の前にカメラを置いてVTXで画像を飛ばし、ゴーグルで見ながらシミュレーターをやったらもっとリアルになるかも(かなりオタクだなぁ)。

現状はブレッドボードですが、この後ちゃんとした基板に載せ、ケースにも入れて完成させたいと思います。FRISKのケースあたりが良いかな?

MakerFaireKyoto2019 行ってきました。

前回の投稿に書いた通り、5月4日、5日に開催されたMakerFaire kyoto 2019に行ってきました。ゴールデンウィーク後半の開催なので実家の神戸に車で帰省してそのまま参加し、東京会場だとちょっと持って行けなかったモーション・フライトシミュレーターを運んで展示する事が出来ました。

話はちょっと遡って熊本出発前日、最終状態で組み立てて確認中の図。

そして神戸まで走って二日ほど過ごしたのですが、この間にもうちょっと安全性を高めた方が良いかなと思って急遽ホームセンターで2×4材を購入。こういう補強材を作成しました。

これを会場で写真の様に取付けるとかなり安心感が出て、安全のため横にエアーマットを敷いてはいたのですが必要性は感じませんでした。

また今回試乗頂く方には身長と体重の制限を設けさせていただきました。
身長はラダーペダルに足が届くかどうかを考慮しています。ペダルを操作せずにエルロンだけで曲がると横Gが多く加わり座席が傾き過ぎるのを心配しての事
(まあ危険な程でもないのですが念の為)。

また体重制限は構造がどれくらい持つか分からないのでまずは自分がピーク時にのって大丈夫だった65Kgを実績として採用しました。その後会場で人柱 体重オーバーの方に念のためにヘルメットを着用頂きながら最大80Kgの方まで実績が出来たのですこしずつ制限を緩めていきました。

体重オーバの方用ヘルメット

なお身長を制限してはいたものの、乗れなくて残念そうな子供もいたので結局は息子にペダルだけ操作させ、もっと小さい子供はモーションもOFFにして乗ってもらいました。

お子様向けペダルかさ上げ冶具。
(発泡スチロール製。でも5cmm程度しか高くならない・・)

今回はやはりモーション機構に興味を持たれた方が多かったと思います。
リニアアクチュエータの値段をよく聞かれました。
その際、Aliexpressで約1800円+送料と答えていましたが、今確認すると勘違いで実際は約3000円+送料でした。申し訳ありません。 お詫びして訂正いたします。
>>会場で御質問頂いた方々。

やはり座席が動くと「おおっ」と言ってもらえます。
なお高校生の息子が説明もしてくれるので助かる様になってきました。

そんなこんなであっという間に二日間が過ぎ、若干のフライングで撤収して六甲アイランドまで走り、フェリーで新門司に渡って戻ってきました。
(なおフライングの撤収は交通の事情など仕方ない場合は認められますが極力は最後まで展示してくださいとの事でした。)

今回近畿地方では初のMakerFaireで、場所的には「京都」となっていますがどちらかというと奈良に近く、京都、奈良、大阪の県境付近の会場でした。正式な出展者数は分かりませんが200組ぐらいではないかと思います。東京だと自分で出展しながらすべてを見るのは無理がありますが、200組だと丁度いい感じで見て回れました(今回は昼休みに1時間の休憩を入れた事もありますが)。またゴールデンウィークの中に組みこまれているので色々な面で行きやすく、来年も開催されれば嬉しいなと思いました。

この後は会場で撮影した写真をいくつか、順不同で掲載させていただきます。

生きた鶏と着物
骸骨はPETを真空成型されたそうです。
R2D2
おなじみヒゲキタさんのドームですが、なんだか巨大です。
だいぶ後ろにさがって撮影したつもなのにこんな感じでした。
細かいところまで全部手作りで作り込まれているそうです。
垂直にホバーリングできるとの事。
クワッドコプターのフライトコントローラ(恐らくTiny用?)が載っている様でした。
デモがあったのですが時間が合わず見損ねました。
IOT系ボードobniz
巨大な絵本にプロジェクターで投影し、本の範囲もはみ出して動きまくっています。

MakerFaire Kyoto 準備

ゴールデンウィークに入りMFK2019の準備も大詰めです。
今回、モーション・フライトシミュレータに絞って展示しますが、家の外に持ち出すのは初めてですし、どこが壊れても展示が出来なくなってしいます。
不安なところは強化しましたが・・・。

色々なところを強化した本体。
でも展示は初ですし期間中に壊れなければ良いのですが・・・
MotionSim1-1
Aliexpressで買ったリニアアクチュエータも予備はありません。
どちらかが壊れたら動作不能です。
大丈夫だとは思いますが念のため、来客の方々に試乗して頂く際は
キャンプ用のエアーマットを横に敷いておこうと思います。安全第一
諸々の資料。
身長制限は娘を乗せてみたところラダーペダルにギリギリ足が届くのがこのあたりかなと。
体重制限は私がピークの時に乗った実績から。もっといけると思うのでそれ以上の方は要相談で・・(人柱ともいう)
という事で制限の数値は期間中に変更するかもしれません。
動かすのはかなり古いノートPC。
色々あって使えるのはこれだけなのです。(コイツも心配)
ACアダプターとかも忘れたらおしまいなので気を付けます。
持っていくものをシートに広げて整理します。

他に忘れ物はないかな・・・


MakerFaire Kyotoに来られる場合は是非、ほいほい堂本舗のブースにお立ち寄りください。
ブースの場所は1階のE2-4です。公式プログラムに配置が掲載されています。



卓上ボール盤のベルト ~3~

卓上ボール盤「HARD HEAD HDP10A」を使おうとしたらベルトが切れていました。

このボール盤のベルトは5年前にこんな投稿をした通り、木工旋盤用のベルトを流用して使っています。

SK11 BELT
SK11 木工旋盤YH-100用ベルト

このベルトは純正よりも音が静かな上、2本入りで値段も安いので気に入っていましたが今回2本目が切れてしまいました。もしかすると耐久性は低いのかも知れません。 が、 そうだとしても5年持っているし音が静かなのは捨て難く、今回も同じベルトに交換します。 ところが新たに購入したベルトはなんだかサイズが合いません。

購入したベルトは「SK11 ミニ木工旋盤 YH-100」用ですが、良く調べると部品番号53と52の2種類のベルトがある様です。前回購入して使っていたのは52、今回購入したのは53.53は少し周長が長くてこのボール盤には大きすぎます。

改めて近所のホームセンター「ハンズマン」に部品番号52を注文したところ本日届きました。今度はバッチリです。
次回からは間違わずに「部品番号:52」を購入する事にします。

ところで「部品番号:53」の方は使い道がありません。返品するにもレシートがもうどこに行ったか分からないし、どなたか要ります?

ハンズマン ガラクタ市2019春

ハンズマンガラクタ市レポートです。投稿が遅くなってしまいガラクタ市はもう終了していますが恒例行事なのでレポートします。
今回は春休み中の息子と共に6:45に到着したところ、丁度オープンして人々が入っていくところでした。年々オープンが早くなっている気がします。

ハンズマン 菊陽店


で、早速ですが買ったもの・・・
今回はあまり多くはありません。このところ見なかった10円のねじ袋が復活しています。 3.5mmのナベネジが珍しいので、これも10円だし何となく購入。
リベッター1500円が安いのかどうか分かりませんが丁度欲しかったので購入。充電式ルーターは息子が購入。なおパーツクリーナーはガラクタ市商品ではなく普段の価格です。


いつもなら初日の夜も行くのですが今回は仕事が忙しくて行けず、二日目に行きました。
良くわからないサイズですがベアリングが大量に入って95円。二袋買いました。
その他色々と工具類とか。


結局、今回は2回しか行けませんでした。
もうちょっとマメにチェックしたかったんですけどね。

モーションフライトシミュレータ強化~2~

またまた前回の続きで、モーション・フライトシミュレータのリンク機構を強化していきます。

2×4材の両面を鉄板で補強するので、その分の厚みを減らすため両面をCNCで削りました。片側1mm、反対側1.5mmで合計2.5mm減らしています。
鉄板は3mm厚×2枚なので6mm分の厚みが増えており、差し引きすると3.5mm厚くなっています、元々キャスターとの隙間が大きすぎてワッシャーを挟み込んでいたのでこれくらいがちょうどよいのです。

厚さ調整のため切削中。4Φのエンドミルで。

そしてベアリングを嵌め込む溝を掘ります。

こっちは2Φのエンドミルで。

削り終わりました。

両面から同じ切削をします。そして中心はドリルで貫通させます。

これで2×4材の加工は完成です。ベアリングを嵌め込んだ写真は撮り忘れました。

前回作成した鉄板で挟み込んで座版に取付けます。

穴あけをミスった側。

本体に取付けて補強は完成。

ベアリングを入れた効果があるのかイマイチ不明ですが、鉄板のお陰で安心感が上がり、少なくとも崩壊してバラける事は無いはず(と思いたい)。

モーションフライトシミュレータ強化

このところ風邪をひいたり色々あって作業の進みが遅くなっていますが、前回に続きMakerFaireKyotoに向け、モーション・フライトシミュレータのリンク機構を強化していきます。

まず鉄板工作の部分を溶接しました。

相変わらず綺麗に溶接できません。

出っ張りがあっては困る部分をグラインダで削って平らにします。

削ってしまえば溶接の汚さが少しは隠せる・・・

そして穴あけですが、一か所間違って空けなおしたので二つながった穴になりました。不要な部分を溶接で埋めようかとも思いますが・・・まずはこのまま様子を見ます。

教訓:”布を切る前に七回測れ”

この2×4材の出っ張り部分にはベアリングを埋め込む予定なので、穴位置を鉄板とぴったり合わせるため作り直します。

また鉄板の厚みが3mm×2枚とかなり厚くなるので、2×4材の方を削って薄くします。カンナでやろうとも考えましたが、厚みを一定に保つためCNCで切削しました。

この続きはまた後日・・・。