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

2026年7月2日木曜日

XIAO MG24のD1とD3に気をつけて

D0 - D3にロータリーディップSWをつないで使用しました。

症状:特定の数値の時にハングしたりLED点灯しっぱなしになったり。

原因:D1(PC1)とD3(PC3)がブート時に特殊機能を持つピンだった。

  • D1(PC1) = DEEP_SLEEP_ESCAPE_PIN:
    • ArduinoLowPower.cppの escape_hatch() が setup() より前に実行される
    • D1がLOW → LED_BUILTIN点灯 + 無限ループ (ユーザーコードに到達しない)
  • D3(PC3) = GeckoブートローダーGPIOアクティベーションピン:
    • Geckoブートローダーが escape_hatch() よりさらに前に実行される
    • D3がLOW → ブートローダーがUART XMODEM待機モードに入りアプリ未起動

ということだそうです……(白目

D1とD3は、出力ピンとして使いましょうね。

まぁXIAO ESP32 C3も使えないピンがたくさんあって苦労しましたが、Seeed JPの方のブログに救われました。XIAO MG24についてはwikiに特に警告ないので、何も考えずにピンアサインしたのですが……いやはや。

まぁClaude Opusさんに救われました。症状が出た時に「動かないのは気のせいだろ」「起動しない場合はパスコンを追加するといいですよ」とか言われたんですが(意訳)、「ブートモードにでもハマってるのではございませんか? 他のピンに変えたいけど、安全なピンをお探しくだせえ」とヒントを投げたら、ドキュメントやソースコードを深く深く掘り下げて原因を見つけ出してくれました。

私だったらあんな山のようなドキュメントやソース読む気力ないから、D0-D3全部入れ替えちゃえ!って無駄な苦労をしてたでしょうね(笑)。

2020年7月9日木曜日

Arduino IDE + DRV8835 + ステッピングモーター



Seeed Xiaoと秋月のDRV8835基板を使って、さくっと動かします。

モーターはオリジナルマインドから中古で買ったオリエントモーターの42mmサイズバイポーラー。定格17V。

XIAOとDRV8835の結線は以下の通り。

XIAODRV8835その他の接続相手
GNDGND外部電源のGND, Volumeのmin側
5V出力Vcc, MODE
3.3V出力Volumeのmax側
3AIN1
4AIN2
5BIN1
6BIN2
7Volumeの中間
AOUT1モーターの黒
AOUT2モーターの緑
BOUT1モーターの青
BOUT2モーターの赤
VM外部電源の+側(5-17V)


DRV8835をステッピングモーター用に使う場合には、MODEをHIGHにします。こうすると、AIN2, BIN2 = HIGHのときだけ出力が有効になり、LOWにすると出力の電流がカットされます。AIN1に1個パルス(LOW->HIGH->LOW)を入れると正転、BIN1だと逆転します(モーターの配線や仕様によって変わりますので注意)。

今回、両手が塞がる用途でモーターを使うので、ミシン用のフットペダルを用意しました。3.5mmφのモノラル用ミニプラグ出力で踏まないと0Ω、踏むと約10kΩになります。GND - ペダルの片方 - XIAOの7ピン - 10kΩの抵抗 - 3.3V出力、という風につなぎました。こうするとXIAOへの電圧は0-約1.65Vの間で変化します。これをアナログポートで読み取ります。

ところで、リファレンスやググると出てくるサンプルコードを見るとスピード指定関数setSpeedの引数が rpm になっているけど、試したところではpps(1秒あたりのパルス数)みたいです。本家ArduinoでStepperクラスを使ったことないけど(あるいは忘れている)、少なくともXIAOでは。

ということで、ソースコードはこんな感じ。


#include <Stepper.h>

Stepper myStepper(200, 3, 5);

bool running = false;

void setup() {
  Serial.begin(115200);
  pinMode(4, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop() {
  int value = analogRead(7) / 2 - 5;
  if (value < 0) {
    if (running) {
      digitalWrite(4, LOW);
      digitalWrite(6, LOW);
      running = false;    
    }
    delay(50);
  } else {
    if (!running) {
      digitalWrite(4, HIGH);
      digitalWrite(6, HIGH);
      running = true;    
    }

    Serial.println(value);
    
    myStepper.setSpeed(value) ;
    myStepper.step(value / 10);
  }
}


2020年3月21日土曜日

電池でニキシー管を点灯させる

秋月でリチウム電池CR1225がやけに安かったので思いつきました。1個4円て。

真面目な実験ではないです。子供の頃から一度やってみたかった。後悔はしていない。

なおちっこいリチウム電池といえども山程つかえばそれなりの電圧はでます。感電などの事故や廃棄時の火災などには十分気をつけてください。

点灯中の写真取る前にバラしてしまった……


■回路■

SN74141互換のKM155ID1でニキシー管をドライブし、Seeeduno XIAOで制御します。XIAO用の電源はそのままUSBから取ります。ニキシー管駆動電圧はCR1225を44-45本直列にして約145Vを発生させます。

電池のGNDとマイコンとKM155ID1のGNDが浮かないようにしっかり配線すること以外は特に注意することはないです。KM155ID1のABCDとXIAOのGPIO4本を接続します。KM155ID1のVCCはXIAOの5Vピンと接続します。XIAOは3.3V動作ですが、XIAOからの出力電圧は、KM155ID1の入力スレッショルド電圧より充分高いので問題ありません。

KM155ID1が勿体ないので16ピンのICソケットを使っています。ニキシー管IN-12Bは今6本で3-4000円ぐらいでしょうか。ニキシー管用ソケットとKM155ID1はアマゾンで買いました。IN-12Bはウクライナの業者さんから500本買ったうちの1本です。これもアマゾンでも買えます。

XIOAは基板にピンソケットを取り付け、XIAOにはピンヘッダをはんだ付けしています。なんかソケットだらけの基板ですわ。

■電池ボックス■

Orange 30で出力しました。SK水洗いレジンを使ってます。このレジンは少し厚くなりやすいので、電池の直径の12mmに0.5mmプラスした筒を作り、両端にカバーを作りM3のネジ穴をあけ、上をカバーで覆っています。手で電池を入れるとあぶないので、セラミックピンセットが通る隙間を立てに開け、中心付近からも電池を入れられるスリットを作りました。

私にしては珍しく出力一発目で完璧でしたっ



STLデーターこちらからダウンロードできます。

SK水洗いレジンに限りませんが、SLA方式3DプリンタでのM3, M4などの細いネジをモデル化した場合、一応ネジっぽいものが出力されますが、ネジを通すとカスが大量にでます。タップを買っておいて、中仕上げと仕上げを通しておきましょう。タップハンドルなくても手で回せますし(ただ刃で手を切らないように気をつけて)、金属にねじ山を切るときのように1/2回して1/4戻す、とやらなくても大丈夫です。これだけでネジがするっと入るようになりますし、ネジ山崩れにくくなります。まぁ……力入れすぎるとボリって崩壊しますけども。そのためにスプリングワッシャーで「ギリギリ強く締めなくても緩みにくい」ようにしておきましょう。


■配線■

秋月のD基板上に配線します。

最近またジュンフロン使ってます。ちょっと前まで架橋ポリエチレン被覆を使っていたのですが、ジュンフロン被覆はワイヤストリッパー要らないんですよね。


  1. ハンダゴテに少し多目にハンダを乗せる。
  2. ハンダゴテの表面に垂直にジュンフロン線を当てて2-3秒
  3. ジュンフロン被覆がツーッと縮んで1〜1.5mmぐらい導線が出てくる
  4. フラックスを塗って、改めてハンダメッキする


これだけで使えます。熱で縮んだ分だけ末端が少し太くなりますが。



電池は電池ケース両端のネジ穴にM3のネジを通して電線を巻きつけました。スプリングワッシャを入れて電線を押さえつつ、電池を潰さない程度に押さえます。

くれぐれも感電しないよう気をつけてください。GNDとつみあがった電池の中間付近でも70V出ていますので結構ビリっとくるはずです(私はやらかしませんでした。感電こわい)。

■ソフト■

ソフト呼ぶのも恥ずかしいほど簡単ですな。ビットが順番に並んでいないのは、KM155ID1/SN74141のABCDが順番に並んでいないためです。

私はこういう場合、配線がGPIOとピン並びが平行になることを優先します。プログラムの処理が複雑にならない場合は、ぱっと配線を見て確認できる方が間違えも少なくなりますし、基板にしたときも簡単です。まぁこれ基板起こすことないと思うけども。

void setup() {
  // put your setup code here, to run once:

  Serial.begin(115200);
  pinMode( 7, OUTPUT);
  pinMode( 8, OUTPUT);
  pinMode( 9, OUTPUT);
  pinMode(10, OUTPUT);  
}

int num = 0;


void loop() {

  digitalWrite(10, (num & 1) ? HIGH : LOW);
  digitalWrite( 9, (num & 8) ? HIGH : LOW);
  digitalWrite( 8, (num & 2) ? HIGH : LOW);
  digitalWrite( 7, (num & 4) ? HIGH : LOW);

  num++;
  if (num > 9) num = 0;           
   
  delay(200);
}

2020年1月15日水曜日

Seeeduino XIAOが見えない(again)…今度はシリアルポートが消えた(解決)(追記あり)

Arduino Proに書き込もうと思ったUSB Hostのプログラムを間違ってXIAOに書き込んだら、シリアルポートが見えなくなってしまいました……そりゃそうだ……。

Seeed Studioさんのサポートに泣いてすがったところ、教えていただけました。ってか、Seeed XIAOのwikiに書いてあるわね……。Noteのところ。

てことで、電源つないだ状態で、ジャンパワイヤでRSTとその隣のパッドをちょい、ちょい、と2回ショートさせるとオレンジランプが点灯します。その状態でシリアルが見えるようになっているはずです。

【追記】Seeedのサポートさんから、こっちの方がわかりやすいぜとGIFを送っていただいたので、貼ります。



【追記終わり】

指している2つのパッドをショートさせます

しかし小さいので老眼では見えない。間違って変なところショートさせないようヘッドルーペを装着して実施しました。

2020年1月11日土曜日

Seeediuno XIAOが見えない(解決)

おお、久しぶりのマイコンネタ。

■XIAO、そそるぜ■

SeeedstudioのXIAO、中々良さげです。あ、日本語サイトできてる。

ピンヘッダ/ピンソケットがはんだ付けされていないし、何よりGroveコネクタに場所を取られることなくGPIOを有効に活用できます。

まず、注文する前に環境を入れて、当面使ってみたい用途(USB Host)でビルドが通るかを確認しようと思います……私も大人になったものだ。以前は買ってからビルドが通らない!ってことが多々ありましてですね。

■ボードが見えない■

それはともかくSeeedのWikiに従ってボード情報を登録し、ボードマネージャでXIAOを……入れても一覧に出てきません。


結果として、Wikiでの記述が間違っていました。



Preferenceに緑の字のURL「https://raw.githubusercontent.com/Seeed-Studio/Seeeduino-Boards/master/package_seeeduino_index.json」を貼れと書いてありますが、その下のスクリーンショットには「https://raw.githubusercontent.com/Seeed-Studio/Seeed_Platform/master/package_seeeduino_boards_index.json」となっていて、こちらが正解です。これをpreferenceに貼ってください。

これで無事XIAOがボードマネージャにあらわれて、インストールでき、サンプルも無事ビルドできました。

よかったよかった。

■解決までの道のり■

以下の手順で気づきました。次回ハマったときのためにメモしておきます。

~Library/Arduino15/cache/の下を見ると、raw.githubusercontent.com/Seeed-Studio/Seeeduino-Boards/master/package_seeeduino_index.jsonがダウンロードされているが、開いてみるとここにはXIAOがない。

一方でSeeed Studioのgithubを見ると、XIAOがある。

よく見たらファイル名違うやんけ←ココ