【RBR】庶民派エンジョイ勢、USBハンドブレーキを全力修理する

毎度ありやす。

USB端子がもげてしまったハンドブレーキを全力で修理。アロンアルファ()や中途半端な半田技術では手に負えないことが分かり、追いアロンアルファをしたところで、僕と基板とUSB端子のライフがゼロになりました。さすがにアロンアルフアは無謀でした。

メイン基板の交換を決意

ピンの場所を記録。

電子工作やプログラムの分野はまったくの素人ですが、三日三晩検索し続けた結果、無知に毛が生えたレベルまで到達。直せたのは奇跡だったと思います。以下、検索しまくって分かった事のまとめ(素人による備忘録)。

青い板のこと

・青くて小型の基板は全部Arduinoだと思ってた。ハンドブレーキに使われていたのは「Pro Micro」という互換機でした。Pro Microは、Arduino Pro MiniのLeonardo版で、Leonardo?を調べたら廉価品的な意味でした。Arduino互換なんだけどSparkFunってところが製造しているのでArduinoの冠が付かないそうです。よく分からん。
・Pro MicroのUSB端子はもげやすい!と有名で、もげにくくした製品もありました(スイッチサイエンス版)。
・価格は一枚800円くらいでAliexpressだともう少し安いかも。
・Pro Microには5V版と3.3V版があり、うちのは5V版でした。
・ICには「ATMEL MEGA32U4-MU 1736E PH A9K9MA」の印字。

・通電させると基板にある赤色LEDが点灯(製品によって緑色に光る物もあるみたい)。
・両サイドの穴に差してあるのはピンヘッダで、差し込まれるタイプはピンソケットというみたい。

3本の脚が生えたやつのこと

「503 341」と印字のある黒い物体は、磁石を近づけると磁気を検出して電気抵抗が変化させるセンサー(ホールセンサー)でした。価格は一個100円くらい。

黒い板のこと

黒い基板には「藤原漂 移店V4.0」と印字。ホールセンサーはこの基板に乗っています。

もげた原因

グリップの位置を変えつつ、立てて使ってたらボルトが当たってました。

▼これはセーフ

▼ぶつからない

▼これはアウト

▼ぶつかる(もげる可能性大)

必要なソフトウェアをインストール

基板にプログラムを書き込むにはArduino IDEというソフトを使います。そしてインストール後にボードマネージャーからPro Micro用のドライバ?的なファイルを追加。

ファイル>環境設定>「追加のボードマネージャのURL」の欄に以下のURLを追加。
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

URLの追加後、ツール>ボード>SparkFun AVR Boards>SparkFun Pro Microを選択。ツール>プロセッサは「ATmega32U4(5V,16MHz)」に合わせますが、もし3.3Vを選んだ状態でプログラムの書き込みを行うと文鎮化(デバイスとして認識しなくなる)するのでお気をつけください。もし文鎮化した場合は、基板にある「RST(リセット)」と「GND(グランド)」を素早く2回ショートさせると5V設定で再度書き込みが行えます。ショートさせる専用器具もあるみたいですが僕はクリップで代用しました。

Lチカ?

LEDを点灯させることを言うLチカというみたい。
「Hello World」的な儀式?か分からないけど、とりあえずやってみました。

▼拾ってきた
#define TX_LED 30
#define RX_LED 17

void setup() {
pinMode(TX_LED, OUTPUT);
pinMode(RX_LED, OUTPUT);
}

void loop() {
digitalWrite(TX_LED, LOW);
delay(1000);
digitalWrite(TX_LED, HIGH);
digitalWrite(RX_LED, LOW);
delay(1000);
digitalWrite(RX_LED, HIGH);
delay(1000);
}

Arduino IDEにスケッチを書き込んだらコンパイルボタンを押します。
以下、借りてきたスケッチを解読します。

defineでTX_LED 30とRX_LED 17のLEDを定義(基板上のLED部分)
※RXはReceiver(受信)の略称
※TXはTransmitter(送信)の略称

void setupはスケッチが実行された時に1度だけ実行されるもの。
void loop()は繰り返し実行される内容。

LOWで付けて、HIGHで消す。
delay(1000)は、カッコの数字分だけ停止。
※時間の単位はミリ秒で1000ミリ秒は1秒。

ふむふむ・・・。
実行したスケッチは基本的にループし続けるみたいです。
breakとかwhileで疑似的に止めるみたいだけど、今は関係ないですね。

本題

Arduino IDEにスケッチと呼ばれるプログラムコードを書き、コンパイルボタンを押せば基板に書き込んでくれる。という所まで分かったので本題に進みます。ホールセンサ-用のスケッチを探します。

(2日後)

ついに見つけました。
ホールセンサーの動作確認用スケッチと、ハンドブレーキに使われていたであろうスケッチを!

ホールセンサーの動作確認用スケッチ

void setup() {
Serial.begin(9600);
}

void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
}

※たぶんこんな事が書いてる
A0のピンからアナログ入力を読み取って電圧に変換する。
結果をシリアルモニターに出力します。

※使ってみた感想
手持ちのホールセンサーをよく見ると、A0じゃなくてA2に繋がっていたので、A0をA2に書き替えたら動きました。

探し求めていたハンドブレーキ用スケッチ

#include <Joystick.h>

void setup()

{pinMode(A2, INPUT);
Joystick.begin();}

const int pinToButtonMap = A2;

void loop()

{int pot = analogRead(A2);
int mapped = map(pot,0,1023,0,255);
{Joystick.setThrottle(mapped);}}

※使ってみた感想
ハンドブレーキを動作させるには、このスケッチの他に、Arduinoをゲームコントローラーとして認識させる「Joystick.h」というライブラリが必要でした。
ライブラリファイルの配置場所はインストールディレクトリにあるlibrariesです。

※#includeはライブラリの読み込むおまじないです。
※テスト用と同様にA0をA2に書き替えます。

よっしゃ、直った

後日、新USB端子はエポキシを盛りまくりました。

スポンサーリンク
sponsored link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

テキストのコピーはできません。