山善の衣類乾燥除湿機を購入しました

洗濯物を室内干しするために衣類乾燥除湿機を購入しました。

 

私は花粉症もちなのであまり外で洗濯物を干したくありません。ただ衣類乾燥機は持ってないうえに、住んでいるマンションに浴室乾燥もありません。

そんな室内干しも、除湿器さえあれば洗濯物が一晩でパリッパリに乾くので心の底からお勧めします。

 

  • 購入した除湿器
    •  型番
      • YDC-C601(W) (アマゾンで購入)
    • 写真

      • 正面、背面
    • カタログスペック(山善の公式サイトから引用) 
      本体サイズ 約 幅27.6×奥行18.5×高さ48cm
      重量 約 10.8kg
      電源コード長さ 約 1.8m
      消費電力 50Hz:150W
      60Hz:180W
      除湿能力 50Hz:1日5.0L
      60Hz:1日6.0L
      除湿面積の目安 50Hz:コンクリート造13畳、プレハブ10畳、木造6畳
      60Hz:コンクリート造14畳、プレハブ11畳、木造7畳
      水タンク容量 約 2.0L
      入/切タイマー 1-8時間
      その他 送風ルーバーは手動で3段階調節可能
      除湿運転は40-70%の範囲から5%単位で細かく設定可能
    • 電源ケーブルの長さは約180cmです。

 

  • この機種を選んだ理由
    • 冒頭に書いた通り、洗濯物を室内干しに使用する目的で購入しました。室内で使用するからにはなるべくコンパクトなものを選びました。ハンガーにかけた洗濯物の下に除湿器を置いて使うため、高さ方向が抑えられているものを選ぶとよいです。
    •  写真はニトリのX型物干しスタンド(1,500円)に3日分の洗濯物を干した様子です。6時間もあればパリパリに乾きます。 
    • 電気屋さんでも除湿器を探しましたが、コンプレッサ式(ほかの方式よりもパワフル)でここまで安く、コンパクトなものはあまり見当たりませんでした。コンパクトさにはそれなりのデメリットはあるのですが、それを補う方法があるので後述します。
    • 当たり前ですが、単に室内を除湿したいときにも普通に使えます。最低限の機能はそろっています。
  • 良くない点
    • 音が大きい
      • コンプレッサ式なので、ファンが回る音が大きめです。浴室で動かしてドアで隔てた寝室であればそこまで気になるレベルではないです。
    • 重たい
      • 重量が約11㎏とかなり重いです。移動させるときは注意してください。
    • 送風ルーバー
      • 除湿器から空気を出す部分を手動で上げる必要があるので、上げ忘れると除湿の効果が弱まります。
    • タンクの容量が小さい
      • 本体のサイズがコンパクトであるため、排水タンクもあまり大きくありません。カタログスペック的には1日で6L分除湿できます(60Hz時)が、1度で溜められる水の量は2Lまでです。

 

  • お勧めの使い方
    • この型式の除湿器は1度で2Lまでしか水を溜められません。タンクが満タンになると自動で除湿が止まりますが、それだと衣類が十分乾かない場合があります。
    • そこで排水部分にホースをつなげて無限除湿をお勧めします。
  • 値段
    • アマゾンで13,835円で購入しました。以上レビューでした。

 

MEGA-Sの静音化。ドライバ変更のメモ

 

MEGA-Sの動作音がうるさ過ぎたので、モータードライバを「TMC2208」に交換しました。購入物をまとめました。

f:id:sasapero:20210809202552j:plain

 

MEGA-Sのドライバ交換に関しての記事は既に沢山あり、参考にさせていただきましたので特に参考になった記事を紹介します。

・ANYCUBIC MEGA-Sにカスタムファームウェアを導入する – Ideal Reality

・AnyCubic i3 Mega S に TMC2208 を導入する | 閑古鳥ブログ

 

使用しているMEGA-Sは2020年1月頃にamazonで購入しました。

 

 


 

購入したドライバはこちらです↓

MEGA-Sに搭載されていたドライバとはピンアサインが異なるため、取り付けるだけだと正常に動きません。MEGA-Sのファームウェアを変更しなければいけません。

 

 

f:id:sasapero:20220216175138p:plain

TMC2208価格推移

ドライバの値段は販売開始時期よりも安くなってるみたいです。2022年2月現在では2,499円でした。

 

 

ドライバの設定を変更(SpreadCycleモード)したい場合はこちらの商品を購入するといいと思います。僕はこの商品をドライバと間違えて5個購入してしまいました。なぜだ

www.amazon.co.jp

ドライバ変更の大まかな流れです。

 ・プリンタ本体を裏返してドライバを外す。

 ・古いドライバを外す。(この時、元々取り付けられていたドライバの位置をメモしておく。なにかしらの不具合でドライバ変更が失敗した場合、もとに戻せるようにするため。)

 ・新しいドライバの電流値を設定する。

 ・ドライバの設定を変更する。(SpreadCycleモードに変更したい場合。)

 ・新しいドライバを取り付ける。ヒートシンクも取り付ける。

 ・新しいファームウェアをダウンロードする。

 ・Ultimaker CuraでMEGA-Sにファームウェアをインストール。(Marlin-Ai3M-v1.4.6-TMC2208.hexを選択する。ドライバを交換しない場合は-reversed.hexが選択される。)

 ・プリンタの設定を変更する。

 ・動作確認する。

 ・おしまい

f:id:sasapero:20210809202634j:plain

無事モータの駆動音がまったく気にならなくなり、夜もぐっすり寝れそうです。あと気になるのはファンの音だけです。

 

 

 

Dual USBアダプターHS 修理してみる

 

Dual USBアダプターHSは近藤科学のサーボとPCを通信するための製品↓です。サーボの設定や動作確認が可能です。値段は1つ約6,000円。

Dual USBアダプターHS | 近藤科学

 壊してしまったので修理しました。(逆挿ししたのか、電圧を上げすぎたのか、壊れた原因が分かってない。)

 

直す前の状態

アダプター単体で約350mAほど流れており、かなり発熱してしまう状態です。特におもて面に半田付けされているマルチプレクサが熱くなっていました。

f:id:sasapero:20200829235443j:plain
f:id:sasapero:20200829233909j:plainf:id:sasapero:20200829233948j:plain

シリアル変換のチップは特に問題ないようです。ICSマネージャでもアダプタ自体は認識されます。

USBtreeviewというソフトでも問題なく表示されました。

f:id:sasapero:20200829233612j:plain

 

用意した物

マルチプレクサADG734BRUZを購入しました。マルツで1つ581.82(税抜)円でした。(20/08/29)

他にdigkeyで購入するものが無かったので、マルツの店舗受け取りサービスを利用しました。便利。

IC SWITCH QUAD SPDT 20TSSOP ADG734BRUZ|電子部品・半導体通販のマルツ

※購入と修理は自己責任でお願いします。

 

 直した後の状態

元々ついていたチップを外して新品に取り替えました。電流は21mAになりました。

f:id:sasapero:20200829233841j:plain

f:id:sasapero:20200830000335j:plain

ICSマネージャでサーボが認識されるようになりました。

f:id:sasapero:20200829234708j:plain

※手元にあるKRS3204とKRS4034で動作確認がとれました。(両方とも通信規格はICS3.5)他のサーボで認識されるかどうか分かりません。

 

ちなみに使用しているUSBチェッカーはCOOWOOの急速充電対応のタイプのものです↓

 

以上です。

 

 

esp32でROBO-ONE用基板を作る

 

ROBO-ONE Lite用の基板がとりあえず動いたので、回路図とBOMを載せます。

esp32でコントローラーとKONDOサーボを動かす方法については別の記事に書いてみたので参考にどうぞ。

ROBO-ONE - Google ドライブ

f:id:sasapero:20200814125037j:plain 

BOMは以下のスプレッドシートにまとめました。電子部品の購入は自己責任でお願いします。

電子部品の購入先は秋月とdigkeyです。基板1枚作るのに必要な部品代は約2805円でした。基板本体はJLCPCBで発注しました。

ROBO-ONE Lite 基板BOM - Google スプレッドシート

 ご指摘&アドバイスあればお願いします!

 f:id:sasapero:20200815232735j:plainf:id:sasapero:20200818132843j:plain

 

搭載した機能は

 ・USBコネクタ→シリアル変換

・自動リセットで自動書き込み

・動作確認用LED2つ

・マシンを光らせるフルカラーLED1つ

コントローラー(VS-C3)と接続

KONDOサーボ用ICS変換回路×2

・ジャイロセンサで姿勢制御

・TOFセンサで距離測定

・USB電源とバッテリ電源自動切換え → うまくいってないので、ダイオードを介してUSBVCCを5Vに接続しました。

・バッテリ電源→7.4Vに降圧するDCDCコンバータ

・7.4V→5Vに降圧するレギュレータ

・5V→3.3Vに降圧するレギュレータ

 

マイコンをesp32にしたので、OTAでデバッグWiFiで無線書き込み)できますね。

 

 -------------------------------------------------------------------------

参考にしたサイトをまとめておきます。

 ・非常に制作意欲がかきたてられたブログ

https://blog.rogiken.org/blog/2019/03/29/szk2roboone/

 

Visual studio code の platform IOでOTAを行う方法

https://nombi.info/posts/esp8266/ota/

 

・esp32のGPIOについての解説

https://lang-ship.com/blog/work/esp32-gpio-output/

 

・esp32で滑らかにLEDを光らせる方法

https://wak-tech.com/archives/742

 

・USB電源とバッテリ電源を自動で切り替える回路について

http://radiopench.blog96.fc2.com/blog-entry-962.html

 

esp32でKONDOサーボを動かす

 

ROBO-ONEに出場するにはKONDOサーボを動かす必要があります。

esp32はSerial通信ポートを3つ持っています。UART0,UART1,UART2です。PCとマシンを接続して通信しながらKONDOサーボを動かしたい時があるかもしれないので、UART0は使わないようにします。

私の場合、11.1V系サーボ(KRS2552)と7.4Vサーボ(KRS3204)の2種類を使うので電圧が違うサーボごとにSerialを使い分けるようにしました。KONDOの公式は1つのUARTに接続できるサーボの推奨個数は9個と言っています。3kg級のマシンを作る時はサーボの数が19個を余裕で超えるため、UART0も使う必要がありそうです。四肢でSerialを分けた方が配線的には楽なので本当は4つ欲しいところ。

https://kondo-robot.com/faq/ics_board_-tutorial1

シリアルピン保護のため、ポリスイッチ↓をそれぞれ付けました。冷却されると導電性が戻って再び使用可能になります。

http://akizukidenshi.com/catalog/g/gP-11307/

11.1V系 → UART1

7.4V系  → UART2

f:id:sasapero:20200814125056p:plainf:id:sasapero:20200816021941p:plain

KONDOサーボを動かす通信規格をICS(Interactive Communication System)と言い、近藤科学独自のデータ通信規格です。PWMと違って、サーボを数珠つなぎ出来るのが特徴です。KONDO公式のライブラリはTXとRXを交互に切り替えることによってサーボに指令角度を送信するのと同時にサーボの温度や電流を受信できます。

そのTXとRXを切り替えるためのモジュール(ICS変換基板)が市販されている↓のですが、場所をとるので基板に実装しました。

https://kondo-robot.com/product/03121

ICS変換基板の自作についてはPONDAさんの記事↓を参考にしました。そちらの記事に記載されている回路図とほぼ同じですが、私が引いた回路図も載せておきます。使用している部品も購入先もPONDAさんと同じです。

 http://robooptions.blog.fc2.com/blog-entry-10.html

f:id:sasapero:20200816032511p:plainf:id:sasapero:20200816033529j:plain

 -------------------------------------------------------------------------

esp32のUART1は初期状態では内部フラッシュに接続されているため、UARTとしての使用はできません。UART1のピンアサインを変更することで使用可能になります。HardwareSerial.cppにあるTX1とRX1を定義しなおせば良いです。

Visual studio codeでプログラミングをする場合、以下のパスにHardwareSerial.cppがあります。

C:\Users\ユーザー名\.platformio\packages\framework-arduinoespressif32\cores\esp32\HardwareSerial.cpp

#ifndef RX1
#define RX1 14 //9
#endif

#ifndef TX1
#define TX1 12 //10
#endif

 -------------------------------------------------------------------------

KONDOサーボは通信速度が3種類から選べます(①)。esp32に書き込むプログラムで設定したBAUDRATEと合っていないとサーボは動きません。

私はプリメイドAIから拝借したサーボを使用したのですが、箱出しの状態では通信速度が115200と1250000が混合?しているのでICSマネージャーで設定し直してください。また、ストレッチやスピード、パンチ等も初期設定とは異なる状態のものが多いので、ICS Serial Managerの「②ファイル→開く→初期値(initial value)」から一括で書き込むと便利です。

//ICS関係
const long BAUDRATE = 115200; //115200
const int TIMEOUT = 10;     //通信できてないか確認用にわざと遅めに設定

f:id:sasapero:20200816035649p:plain

 

 

 

 -------------------------------------------------------------------------

 

プログラム

KONDOのライブラリは初期状態ではUARTが1つしか動かせないので、以下のように2つで動かせるようにします。BAUDRATEとTIMEOUTの設定は1つで良いです。ライブラリの説明書19Pにも同様の記述があります。

//ICS関係
const long BAUDRATE = 115200;
const int TIMEOUT = 10; //通信できてないか確認用にわざと遅めに設定

const byte EN_PIN1 = 15;
IcsHardSerialClass krs1(&Serial1EN_PIN1BAUDRATETIMEOUT); 

const byte EN_PIN2 = 13;
IcsHardSerialClass krs2(&Serial2EN_PIN2BAUDRATETIMEOUT); 

  -------------------------------------------------------------------------

HeartToHeart4やRobovie-MakerなどのGUIなソフトウェアは使わず、サーボIDや指令角度を手打ちしてモーション作成を行います。以下↓は「ID1のサーボを0度まで動かす」プログラムです。

krs1.setPos(1,3500); //サーボの角度を3500へ 

IDは0~31、指令角度は3500~11500が有効で、ありえないIDや角度が入力してしまい実行されると、予期しない動きをする可能性があります。

サーボを壊したくないので、範囲外の数値が入力され、実行されるとサーボが脱力するようにライブラリを変更しました。更に、この関数は指令角度を3500~11500で指定する必要があり、直観的に何度なのか分かりづらいため、degreeで指定できるように変更しました。

「IcsBaseClass.h」を以下のように変更し、

//    int setPos(byte id,unsigned int pos);    //目標値設定
      int setPos(byte id,int deg);    //目標値設定 0801 pos → deg にするために型をintに変更

 

「IcsBaseClass.cpp」にある「setPos(byte id, int deg)」を以下のように変更します。 

int IcsBaseClass::setPos(byte idint deg) //0803 pos → degに変換
{
  byte txCmd[3];
  byte rxCmd[3];
  unsigned int rePos;
  bool flg;

  //0803 deg→posに変換するために追加
  long pos = deg * 29.633;
  pos = pos + 7500;

  txCmd[0= 0x80 + id;             // CMD
  txCmd[1= ((pos >> 7& 0x007F); // POS_H
  txCmd[2= (pos & 0x007F);        // POS_L

  if (deg > MAX_DEG || deg < MIN_DEG)
  {
    txCmd[0= 0x80 + id; // CMD
    txCmd[1= 0;
    txCmd[2= 0;
    //    return ICS_FALSE;
  }

  //送受信

  flg = synchronize(txCmd, sizeof txCmdrxCmd, sizeof rxCmd);
  if (flg == false)
  {
    return ICS_FALSE;
  }

  rePos = ((rxCmd[1<< 7& 0x3F80+ (rxCmd[2& 0x007F); //フリー

  return rePos;
}

※ posからdegに変換する関数がデフォルトで入っているので、その関数をsetPos()内で呼び出すという方法でも同じことは出来ます。

 

また、いちいちサーボのIDを調べながらモーション作成するのは時間がかかるため、IDとマシンの部位を関連付けました。

  name_set(L_arm_1, -45);  name_set(R_arm_1, 45);
  name_set(L_arm_2, -130); name_set(R_arm_2, -130);

部位の名前はご自身で分かりやすく命名してください。

//      name   ID

#define BODY_1 1
#define BODY_2 2
#define L_leg_1 3
#define L_leg_2 4
#define L_leg_3 5
#define L_leg_4 6
#define R_leg_1 7
#define R_leg_2 8
#define R_leg_3 9
#define R_leg_4 10
#define R_arm_1 11
#define R_arm_2 12
#define L_arm_1 13
#define L_arm_2 14

int name_set(int nameint deg_2)
{

  if (name == BODY_1)
  {
    krs1.setPos(BODY_1deg_2);
  }
  else if (name == BODY_2)
  {
    krs2.setPos(BODY_2deg_2);
  }
  else if (name == L_leg_1)
  {
    krs1.setPos(L_leg_1deg_2);
  }
  else if (name == L_leg_2)
  {
    krs1.setPos(L_leg_2deg_2);
  }
  else if (name == L_leg_3)
  {
    krs1.setPos(L_leg_3deg_2);
  }
  else if (name == L_leg_4)
  {
    krs2.setPos(L_leg_4deg_2);
  }
  else if (name == R_leg_1)
  {
    krs1.setPos(R_leg_1deg_2);
  }
  else if (name == R_leg_2)
  {
    krs1.setPos(R_leg_2deg_2);
  }
  else if (name == R_leg_3)
  {
    krs1.setPos(R_leg_3deg_2);
  }
  else if (name == R_leg_4)
  {
    krs2.setPos(R_leg_4deg_2);
  }
  else if (name == R_arm_1)
  {
    krs2.setPos(R_arm_1deg_2);
  }
  else if (name == R_arm_2)
  {
    krs1.setPos(R_arm_2deg_2);
  }
  else if (name == L_arm_1)
  {
    krs2.setPos(L_arm_1deg_2);
  }
  else if (name == L_arm_2)
  {
    krs1.setPos(L_arm_2deg_2);
  }
}

 

 ご指摘&アドバイスあればお願いします!

esp32でVS-C3を使用する

 

ROBO-ONEに出場するためにはマシンを遠隔で操作する必要があります。

esp32はBluetoothモジュールを搭載しているのでスマホ等をコントローラーにすることが出来ますが、格闘用途としては使いにくいため物理ボタンのコントローラーを使用することとしました。

最新のPSのコントローラーはBluetooth接続が可能らしいので、接続がスムーズなら使ってみてもいいと思います。

 

Vstoneのコントローラーの製品名は「VS-C3」、受信機の名前は「VS-RCV3」です。

このコントローラーは双方向通信が可能で、以下のように↓マシンのバッテリー低下をバイブレーションで知らせることが出来るようです。(そういう基板を作ってとプログラムをすれば)

f:id:sasapero:20200815124411p:plain

公式サイト

https://www.vstone.co.jp/products/vs_c3/index.html

 

f:id:sasapero:20200815124902j:plain f:id:sasapero:20200430173733p:plain

公式サイトから購入ができます。昔は楽天も買えた気がしますが、VS-C3単体の販売がなくなっていました。ロボットとのセットなら今でも手に入るようです。


 

-------------------------------------------------------------------------

回路


VS-C3の基本的な使い方はこちら↓を参考にしました。VS-C3はPSのコントローラーと殆ど中身は同じらしく、ライブラリの名前がPS2となっています。

https://nakkye.at.webry.info/201411/article_1.html

http://robototakutdu.blog33.fc2.com/blog-entry-343.html

このブログ↓はノイズ除去的なことをしているみたいです。すごい。

https://www.atelier-yu.co.jp/wireless-software/

 

VS-RCV3を使用するにはSPI通信をする必要があります。esp32で使用する場合、公開されているarduino用のライブラリのままでは動かなかったので気を付けてください。

esp32のSPIにはHSPIとVSPIの2種類あるらしいですが、どう違うのかはわかりません。私はVSPIを使いました。配線は以下の通りです。

SEL(CS,CEと同等) → IO5

CLK (SCLK,SCKと同等)→ IO18

DAT(SDO,MISOと同等?) → IO19

CMD(SDI,MOSIと同等?) → IO23

  f:id:sasapero:20200814125056p:plain f:id:sasapero:20200814125059p:plain

過去の記事↓にも書きましたが、基板に直接VS-RCV3用のピンヘッダを半田付けする場合、VS-RCV3を上下反転するため配線に気を付けてください。間違えると基板からはみ出ます。

https://sasapon.hatenablog.com/entry/2020/04/30/174348

 

各通信ピンにプルアップ抵抗を付けました。抵抗4つだと狭い基板を占領してしまうので集合抵抗を使用しました。秋月で売っているチップ抵抗アレイ10kΩ*4↓です。手ハンダは難しいので頑張ってください。

http://akizukidenshi.com/catalog/g/gP-04664/

f:id:sasapero:20200815233004j:plain f:id:sasapero:20200815232735j:plain

 

※VS-RCV3を基板にピンヘッダで直接取り付ける場合、しっかり固定されません。グラグラするためペアリングボタンが押しにくいうえ、衝撃に弱いためマシンが倒れたときに通信が途切れることがあるかもしれません。正解はフレームにネジ固定だと思います。

※esp32のアンテナ部分の上下にVS-RCV3が被さらないように注意が必要です↓。esp32のミアンダ型アンテナの放射パターンがどのような感じなのかはわかりませんが、なるべく離したほうがいいですよね、きっと。

https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf

 

-------------------------------------------------------------------------

プログラム

Vstoneの公式?ライブラリを使用しているのでどこまで公開していいのかわかりません。SPI通信の初期設定は共通だと思うので載せます。 上記の配線の場合です。

 
 uint8_t pad_buf[30];      //PAD入力データ用バッファ
 spi_t* spi_pad;
  
 spi_pad = spiStartBus(VSPI2500000SPI_MODE2SPI_LSBFIRST);
  pinMode(19INPUT);
  pinMode(5OUTPUT);//SPI通信のss(スレーブをセレクト)
  digitalWrite(5HIGH); //→ SEL
   
  spiAttachSCK(spi_pad18); //VSPICLK → CLK
  spiAttachMISO(spi_pad19); //VSPIQ DAT →→ 
  spiAttachMOSI(spi_pad23); //VSPID CMD ←←

  int i = 0;
  for(i = 0i < sizeof(pad_buf); i++){
    pad_buf[i= 0x00;
  }
  delay(50);
 

 

  ご指摘&アドバイスあればお願いします!

 

 

ROBO-ONE当日の荷物

備忘録として、ROBO-ONE当日に持っていくもの/持っていくと便利なものをまとめます。

 

必須

  • バッテリー(延長戦があるので3個以上あるとよい)
  • バッテリー充電器
  • バッテリーチェッカー
  • 配線予備
  • 基板予備
  • サーボ、サーボホーン予備
  • コントローラー
  • コントローラー用乾電池
  • PC
  • 通信用USBケーブル
  • 延長コード、電源タップ(なるべく長いもの)
  • 基本的な工具(+ドライバ、六角ドライバ、ラジオペンチ、ニッパー、ハサミ)
  • ネジ類
  • ネジロック剤
  • テーブルマット(控室のテーブルでマシン調整をする場合)
  • ROBO-ONEのIDを印刷した紙、認定大会参加に必要なもの
  • 移動手段のチケット、交通系IC

 

念のために必要かも / あったら便利なもの

  • マシン用電源(ALINCOなど)
  • マシン用の電源ケーブル
  • 予備フレーム
  • 予備ケーブル用圧着端子、ハウジング
  • 養生テープ、両面テープ
  • 瞬間接着剤
  • ケーブルタイ
  • 工具(ワイヤーストリッパー、圧着工具、やすり、ホットボンド
  • はんだこて、こて台、はんだ
  • テスター
  • icsマネージャ
  • 小型ファン(延長戦時の機体冷却に便利。)

 

 究極に心配性な場合

  • M2、M3ねじ切りタップ
  • ドリル
  • ドリル用電動ドライバ
  • 基板に使われている電子部品の予備
  • サーボ修理キット(バイス、グリス、パーツクリーナー、キムワイプなど)
  • 計り
  • お守り

 

宿泊する場合

  • 首枕
  • スマホ充電器
  • 着替え
  • パジャマ(浴衣式の寝巻きが嫌な場合)
  • 汗拭きシート
  • 宿泊ホテルのメンバーズカード
  • ティッシュ、ウェットティッシュ
  • 常備薬
  • スキンケア系
  • 髭剃り
  • イヤホン
  • ビニール袋

 

深夜バス、満喫で宿泊する場合

 

 

何か抜けてるもの、他にあると便利なものがあれば教えてください!