2021年7月31日土曜日

3Dプリンタでケース作り

ワクチン接種後、微熱が続いていて調子が戻りません。今日で接種から5日目ですが、37度ちょっとで頭痛も続いています。夏風邪をひいたのか?

そんな中ですが、先日作った 3x4のキーパッド と 小型液晶モジュール基板 を収めるケースを作っています。Fusion360で設計を行い、3Dプリンタで印刷です。このような四角いケース作りには慣れてきました。と言っても寸法を間違えていて手戻りがありましたが。


ケースの内側には、基板をビス止めするボスがあります。以前、ボスが折れる失敗があったので末広がりにテーパをつけてあります。

基板はタッピングビスで固定しました。あまり強く締めるとネジ穴を舐めそうなので軽めに締めています。

基板取り付け後の表側の様子です。電卓か大昔の携帯電話のようです。

Arduinoは裏蓋側に載せる予定ですが、設計はこれからです。最初からきちんとした図面がある訳ではなく、行き当たりばったりで少しずつ設計と試作を行って徐々に完成形に近づけていくスタイルです。徐々にカタチになって行くのでモチベーション維持にも効果があるかと思っています。途中で辻褄が合わなくなって大きな手戻りになったりもしますが、それも楽しんでいます。

頭痛のため本日の工作はここまで。早く治まって欲しい。

2021年7月28日水曜日

小型液晶モジュール基板作成

昨日、新型コロナウィルスのワクチン1回目の接種をしてきました。念のため本日は休暇をとっています。午前中は腕の痛み程度だったのですが、午後から37度台の熱が出てきました。普段の平熱が35度台なので結構きついです。

発熱する前に小型液晶モジュールを基板に載せてみました。この液晶モジュールはピンピッチが2.54mmではないのでユニバーサル基板に刺さりません。秋月では変換基板とのセット品も販売されています。

今回は、先日 FMラジオ用に作った基板 を流用して載せてみます。FMラジオでは他にFMラジオモジュールとPICマイコン、タクトスイッチなどが載ります。

この基板、レジスト漏れがあるので送料のみ100円で頒布中でまだ残っています。詳しくは こちらをご覧下さい。


裏面には液晶モジュールを動かすのに必要なコンデンサ3個と抵抗2個、ピンヘッダを載せました。ピンヘッダのスルーホールは元々PICのICSP用に確保してあったものです。ここから電源とI2C信号を供給するために2本だけジャンパ配線しました。

表側はこんな感じです。

ブレッドボードに挿して、動作確認です。

折角の休みですが不要不急の外出もできないので、工作したかったのですが発熱で怠いので横になってこの記事を書いています。

2021年7月25日日曜日

3Dプリンタでボルト・ナットなど印刷

4連休の最終日、夏バテ気味のカラダに鞭打って、午前中 先日の続きの障子張り替え を2枚行いました。暑さで集中力が落ちてしまい1日2枚が限界です。残り4枚はお盆の夏休みの課題です。

午後は疲れてしまい昼寝してしまったため工作は殆んど進まず、3Dプリンタで作った部品の組み合わせ確認程度です。今回、初めて袋ナットを印刷してみました。内部にサポート材が詰まるので、それをうまく取り除けるかが心配でした。ちなみにM10です。


穴に詰まったサポート材は細身のラジオペンチで捻りとった後、内側ネジ山の谷部分はデザインナイフで削りながら整形し、最後にM10のタップでキレイにして完了です。

タップはアマゾンで購入した金属のネジ山を修正するため(新規のネジを切るものではない)のセットものです。評価ではネジが切れないとか、精度が低いとかありますが、PLA樹脂を切るには十分でした。安いし。なお、ボルト側もダイスで仕上げています。

2021年7月24日土曜日

タクトスイッチで3x4キーパッド試作

今朝、ちょっと思いついて10キー(3x4) キーパッドを作ってみました。ステッピングモータを使った工作に使う予定です。

手元にあった部品で作ったのでユニバーサル基板も狭い切れ端です。基板がもう少し広ければ、4x4にしたかったのですが。取り合えず3x4で間に合います。動作確認用にキーを押すと小型LCDに表示するようにしてみました。まぁ、シリアルモニタでPC側で確認してもよいのですが。

回路は 秋月電子の4x3キーパッド とほぼ同じです。組立説明書 に回路図が載っています。350円なので部品を自分で揃えるならこのキットを買った方が楽です。

スケッチは自分で書いてみました。無保証です。
バグがあったので修正('21.07.26)
//--------------------------------------------------------------
//                                                 21.07.24 naka
//                                                 21.07.26 naka bug fix
//  3x4キーパッド
//--------------------------------------------------------------
#include <FaBoLCDmini_AQM0802A.h>
FaBoLCDmini_AQM0802A lcd;

// Arduino pinアサイン
#define KeyColSize 3
#define KeyRowSize 4
char pin_key_col[KeyColSize] = {8,7,6};
char pin_key_row[KeyRowSize] = {5,4,3,2};
// キーマップ
char key_map[KeyRowSize][KeyColSize] = {
  '7', '8', '9',
  '4', '5', '6',
  '1', '2', '3',
  '0', 'X', 'Y'
};

void setup() {
  // I/O port設定
  int i;
  for (i=0;i<KeyColSize;i++) {
    pinMode(pin_key_col[i], OUTPUT);
    digitalWrite(pin_key_col[i],HIGH);
  }
  for (i=0;i<KeyRowSize;i++) {
    pinMode(pin_key_row[i], INPUT);
  }

  // モニタLCD設定
  SetupLCD();
  dispLCD_msg("KeyPad  ","");
  delay(1000);
}

void loop() {
  char key;
  key = check_key();
  if (key!=' ') {
    disp_key(key);
    while(check_key()!=' '); // キーが離されるまで待つ
  }
  delay(10);
}

char check_key() {
  int key_row,key_col;
  for (key_col=0;key_col<KeyColSize;key_col++) {
    digitalWrite(pin_key_col[key_col],LOW);
    for (key_row=0;key_row<KeyRowSize;key_row++) {
      if (digitalRead(pin_key_row[key_row])==LOW) {
        digitalWrite(pin_key_col[key_col],HIGH);  // bug fix '21.07.25
        return key_map[key_row][key_col];
      }
    }
    digitalWrite(pin_key_col[key_col],HIGH);
  }
  return ' ';
}

void disp_key(char key) {
    static char buff[9];
    static int col = 0;
    if (col==8) {
      dispLCD_msg("","");
      col = 0;
    }
    buff[col++] = key;
    buff[col] = 0;
    dispLCD_msg(buff,"");
}

void dispLCD_msg(char msg1[],char msg2[]) {
  lcd.clear();
  lcd.print(msg1);
  lcd.setCursor(0, 1); // Col,Raw
  lcd.print(msg2);
}

void SetupLCD() {
  lcd.begin();
  lcd.command(0x38);
  lcd.command(0x39);
  lcd.command(0x14);
  lcd.command(0x73);
  lcd.command(0x51);  // 5V
//  lcd.command(0x56);  // 3.3V
  delay(2);
  lcd.command(0x6c);
  delay(300);
  lcd.command(0x38);
  delay(1);
  lcd.command(0x01);
  delay(2);
  lcd.command(0x0c);
  delay(2);
}


土曜日ですが午前中、Aliexpressで購入したUSB Type-C のArduino Nano互換機が郵便で届きました。やはり最近中国からの郵便が早くなっていますね。

今回はType-Cでしたが、昔ながらのUSB-miniBでも安い互換機がなくなってきたようです(探し方が悪いのかも)、今回は送料込みで5個で2000円ちょっとでした。mini-Bでも大差なかった。

1個400円なら、性能の高いSeeeduino XIAO (秋月で580円)の方がよいかも知れませんが、XIAOはIOピンが少ないので、Nanoの出番はまだありそうです。

2021年7月22日木曜日

安価なステッピングモータで遊ぶ(その6、加減速)

ステッピングモータの回転開始時に徐々に回転数を上げ、停止前には回転数を下げるプログラムを書いてみました。脱調予防と内部のギアが壊れることの予防目的です。慣性の大きなものを回す場合には気にする必要がありそうですが、そこまで不要かも知れません。

Arduinoのライブラリ使えば簡単にできると思いますが、勉強のために自作しています。また、同時に複数のモータをそれぞれ独立に制御(回転方向、回転角度、回転速度、加速時間など)を制御できるようにしてみました。


回っている羽根のような部品は、左右で微妙に形が違うのですがどちらも失敗作。この後、3つ目を作りましたがまだ結果を確認していません。

久しぶりに3Dプリンタを酷使していますが、糸引きが多くなってきました。気温が高いからでしょうか? それともフィラメントが吸湿したから?  まぁ、安物の3Dプリンタ なのである程度は仕方ないと諦めています。些細なことより、思いついたことがすぐに試せるのは素晴らしいです。

2021年7月18日日曜日

暑い中、障子張り替えDIY

梅雨明けから急激に暑くなり、すでに夏バテ気味です。汗をかいては冷たいものばかり飲んでいるので食欲もあまりありません。痩せるといいけど不思議と痩せない。暑い中、障子の張り替えを行いました。夏にやるものではないですが、思い立ったら吉日、後回しにするといつやるかわからないので決行です。

省エネだという超強プラスチック障子紙を初めて使ってみます。室内でネコを飼ったりしてないし、小さな子供もいないのですが、普通の障子紙だとやはり破れることもあるのでこれにしてみました。


前に貼ってあった障子紙を剥がす下処理が結構大変です。水で濡らして糊を緩めますが、桟に糊や紙のカスが残ってしまいます。カーボン製のヘラでこそげ落として、雑巾でしっかり拭き取りました。その後、乾くまで待ちます。乾いていないと貼るときの両面テープの接着が弱くなる。ここまでの作業が全体の2/3位です。

プラスチック障子紙は専用の5mm幅の細い両面テープで貼ります。剥がす時はドライヤで温めて剥がすらしい。格子状に両面テープを貼り、端から引っ張りながら貼っていきました。紙と違って糊が乾くと紙がピンと張るということもないようなので、伸ばしながら貼りましたがなかなか難しい。


取っ手の部分だけ二重に貼りました。少し暗く写っている格子です。以前からこの部分に穴が開くことがあったのでこうしてみましたが、プラスチック製なら1枚でも大丈夫だったかもしれない。

張り替える障子はまだあと6枚も残っているのですが中腰作業で疲れるので1日2枚が限界です。夏休みの課題にしましょう。

2021年7月15日木曜日

安価なステッピングモータで遊ぶ(その5、2軸化)

今週、緊急事態宣言が発令されたばかりですが昨日と一昨日は出勤でした。出勤すると当たり前ですが朝晩に遊ぶ時間が少なくなり、昼休みにも遊ぶことができません。以前はそれが普通だったのに在宅勤務に慣れてしまった今、通勤時間や昼休みが勿体ないと思うようになってしまった。

そんな中、2台のステッピングモータを使って2軸にする部品を3Dプリンタで作ってみました。


ステッピングモータの軸に差し込む箇所も3Dプリンタで作製。精度が心配でしたが、なんとかガタもなく収まりました。中に入っていたサポート材を取り出すのに一苦労。

重心が片側に寄っているので反対側にカウンタウェイトを付けた方がよいかも知れない。今のところ水平に回っていますが。

動いている様子です。まだプログラムを書いてなく、2台のモータには同じパルスを与えているので同じ動きです。90度行ったり来たりしています。

3Dプリンタで作った簡単なもので組めることが判ったので、次は3軸? その前にモータの加速減速ができるプログラムを書いたほうがよいかも。重くなってくると、いきなり最速にしたり停止させたりするとギアへの負担が大きくなりそうなので。