C-FORCE
C-FORCE
最近話題になっていた「C-FORCE」
Nintendo Switchのドック代わりに使うことができる
HDMI出力のアダプターで、USBハブにもなるすぐれものです
(しかし私の家にはType-C接続できる機器はSwitchぐらいしかありません)
クラウドファンディング
KICKSTARTERやIndiegogoで出資を募っていました
最初は「Switch-Con」という名前でしたが商標の関係らしく
「C-FORCE」を余儀なくされたみたいです
私はKICKSTARTERで出資しましたが
EARLYBIRDだったので一足早く発送されてきました
製品
KICKSTARTERだけの特典らしくHDMIケーブルがついてきました
外見
側面のコネクタ
USB3.1A x2
USB3.1 Type-C x2
接続してみた
使ってみた
HDMIケーブルとSwitchに付属のACアダプターをつなぐと問題なく映像が出力されました
ACアダプターを接続しないと表示されないのはドックと同じ仕様でした
まとめ
EARLYBIRDで出資したので$59,¥6720($1=¥113.915)でゲットすることができました
HDMI出力だけでなくUSBハブとしても使うことができるので満足です
リフロー炉製作(2)
前回はオーブントースターを改造したので
制御の部分を作ります
製作
簡単に扱えるArduinoを使います
使用した部品
- MAX31855(温度計)
- タクトスイッチ(スタート用)
- 圧電スピーカー
- OLEDディスプレイ
- SSRキット
回路を組むとこんな感じ
SSRキット
Arduinoとその仲間たち
はんだペースト
Aliで輸入したけどちゃんとつかえたので当たりをひいた
プログラム
当初はPID制御で温度調節をしようと考えていたのですが
うまく動作しているのか怪しかったので
単純に設定温度を超えたかどうかでON/OFFを切り替えることにしました
プログラムはこんな感じですが(長ったらしいし載せなくてもいいんじゃないか)
#include <SPI.h> #include "Adafruit_MAX31855.h" #include <U8glib.h> /* リフロー手順 1.加熱ステージ1 2.予熱ステージ 3.加熱ステージ2 4.リフローステージ 5.冷却ステージ */ #define Wait 0 #define Heat1 1 #define Preheat 2 #define Heat2 3 #define Reflow 4 #define Cool 5 int Profile[6][2] = { { 0, 0}, {140, 0}, //Heat1 {160, 60}, //Preheat {225, 0}, //Heat2 {230, 20}, //Reflow { 0, 0} //Cool }; //ピンアサイン #define Pin_SSR 8 #define Pin_Buzzer 9 #define Pin_BTN_Start 6 #define Pin_MAXDO 3 #define Pin_MAXCS 4 #define Pin_MAXCLK 5 //LCD U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); //Temp double TargetTemp, Temp; int WindowSize = 5000; unsigned long windowStartTime; //K type thermocouple Adafruit_MAX31855 thermocouple(Pin_MAXCLK, Pin_MAXCS, Pin_MAXDO); byte state; byte beforestate = 0; byte temp[256]; byte temp_cnt; byte TargetFlag = 0; unsigned long HeatingTime; void GetTemp() { double c = thermocouple.readCelsius(); double inter = thermocouple.readInternal(); if (!isnan(c)) { Temp = c; temp_cnt++; temp[temp_cnt] = (byte)(c/2); }else{ Serial.println("error get temp"); } return 0; } void SetTemp() { TargetTemp = Profile[state][0]; windowStartTime = millis(); } void ControlSSR() { if (0 < state && state < 5) { if(TargetTemp > Temp){ digitalWrite(Pin_SSR, HIGH); } else { digitalWrite(Pin_SSR, LOW); } } } void DrawState() { String str_num = String(state,DEC); String str = String("State:" + str_num); u8g.drawStr( 0, 20, str.c_str()); if(TargetFlag > 0){ str_num = String(Profile[state][1]-(millis()/1000 - HeatingTime),DEC); str = String(str_num + "s"); u8g.drawStr( 64, 20, str.c_str()); } str_num = String(temp[temp_cnt] * 2,DEC); str = String("Temp :" + str_num); u8g.drawStr( 0, 40, str.c_str()); str_num = String((Profile[state][0])); str = String("SetTemp :" + str_num); u8g.drawStr( 0, 60, str.c_str()); } void DrawGraph() { //Required firstPage int i; for (i = 0; i < 256; i++) { u8g.drawPixel(255-i, 64-temp[(temp_cnt + i) % 256]/2); } } void RefreshLCD() { u8g.firstPage(); do { switch (state) { case Wait: DrawState(); break; case Heat1: case Preheat: case Heat2: case Reflow: case Cool: if (millis() / 2000 % 2) { DrawGraph(); } else { DrawState(); } break; } } while ( u8g.nextPage() ); } void CalcHeat(){ if(TargetFlag){ //一定加熱 if((millis()/1000 - HeatingTime) > Profile[state][1]){ TargetFlag = 0; state++; SetTemp(); } }else{ if(Profile[state][0] < temp[temp_cnt]*2){ TargetFlag = 1; HeatingTime = millis()/1000; } } } void setup() { // put your setup code here, to run once: Serial.begin(9600); //ピンモード pinMode(Pin_SSR, OUTPUT); pinMode(Pin_BTN_Start, INPUT_PULLUP); //LCD u8g.setColorIndex(1); u8g.setFont(u8g_font_8x13r); state = 0; } void loop() { beforestate = state; GetTemp(); switch (state) { case Wait: if (digitalRead(Pin_BTN_Start) == LOW) { //Start! state++; SetTemp(); TargetFlag = 0; Serial.print(" Next Heat1 Stage"); tone(Pin_Buzzer,1500,100); } break; case Heat1: CalcHeat(); break; case Preheat: CalcHeat(); break; case Heat2: CalcHeat(); if(beforestate != state){ tone(Pin_Buzzer,1000,200); } break; case Reflow: CalcHeat(); if(beforestate != state){ tone(Pin_Buzzer,1500,1000); } break; case Cool: if(beforestate != state){ tone(Pin_Buzzer,1000,1000); } break; } ControlSSR(); RefreshLCD(); delay(100 - millis() % 100); }
Let's リフロー!
はんだペーストを基板に載せてその上に部品を載せる
小さいパッドにはんだペーストを載せるのはなかなかきつい
そして作ったリフロー炉に入れれば
はいできあがり、光らない…。1個だけ光らない…。
LEDチップの端子と基板は導通が全てあるけど光らなかったので
もともとLEDチップが死んでいたのかなとか考えた
実装する前にちゃんと動作するか確かめるためのものが
必要だということがわかりました
次回はユニバーサル基板で実装しようと思います
ハイローズ(Hi-rose) オーブントースター HR-T121
- 出版社/メーカー: 廣瀬無線電機
- メディア: ホーム&キッチン
- この商品を含むブログを見る
K型熱電対温度センサモジュールキット(SPI接続)MAX31855使用 5V版
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
ESP-WROOM-32の開発キットを購入
ESP-WROOM-32とは
一世代前のESP-WROOM-02ではWi-Fiの通信ができるマイコンでなんと550円!
コレでさえ破格なのにプラスBluetoothの通信までできて
700円というのがESP-WROOM-32
今回はこちらを購入しました
akizukidenshi.com
秋月電子通商で販売されているモジュールで
とりあえず触るにはおすすめな感じのやつです
ドライバを入れる
まずは既に入っているファームウェアでATコマンドを叩きたい
microUSBケーブルで接続するも
挿しただけではmacOSでは認識してくれませんでした
このボードに搭載されているシリアル変換のチップは
よくあるFTDI社のではなくSillicon Labs社のCP2102でした
メーカーのサイトを探してドライバを導入
jp.silabs.com
ここの「Macintosh OSX」用のファイルをダウンロードして
インストールすれば無事認識されました
ATコマンドではなくsscコマンド
いままではATコマンドを利用していたが
今回はsscコマンドを使わなければいけないみたいです
今の状態はこのコマンドで確認できます
op -Q
起動時はモード2でAPモードでした
モードは
1:STAモード
2:APモード
3:STA+APモード
の3種類あります
op -S -o 1 sta -S sta -C -s <SSID> -p <PASS>
子機モードにする
周辺のAPを探す
APに接続する
これで無事にAPに接続することができました
今後いろいろ使って行きたと思います
パソコンが起動しない
6、7年前に作った自作PCが突然or起動して数秒から数十秒で電源が落ちる現象に見舞われた
とりあえずチェック
これだけ使ってるしそろそろ寿命かなと思いつつ
- 余ってた電源をつないでみても直らない
- 熱暴走かなと思ってグリスを塗り直すも直らない
- クーラーの前で動かしてもダメ
- BIOSの設定クリアしてもダメ
友人に尋ねる
色々試したがダメだったので友人に尋ねてヒントを得た
電源スイッチが壊れて挙動が不安定になった
解決
んなバカなと思いつつ電源スイッチ外してショートで起動させると問題なく動く
テスターで測るとなぜか押されてないのに6kΩほどの抵抗値を示す
ということで電源が落ちる理由は
電源スイッチの不良
そんなの誰が気付くんだ…って感じの故障でした
持つべきものは友
リフロー炉製作(1)
オーブントースター
ヨドバシで3000円で売ってたオーブントースターを買ってきた
1200Wらしいので基板をどこまで加熱出来るかとりあえず測る
温度計測
適当な基板にK型熱電対センサーをカプトンテープで貼り付ける
加熱中
結果は
こんな感じでいい具合で加熱されている
一応250度まで温度は上昇したのでオーブントースターはこれを使用する
途中250度前後はバイメタルで電源が入ったり切れたりしていたので
ちゃんと制御すればもっときれいに温度が上がると思う
次回はオーブントースターを分解して配線を取り出す
リフロー炉製作(0)
リフロー炉を作る
LEDモジュールを大量に並べた基板をKiCadを使って発注しました。
今回使用した部品が表面実装部品(以下SMD)だったし
これから作っていくにしてもSMDを使うのは避けられないなと考えたので
リフロー炉を作ることにしました。
レーザー加工機製作6(実際に!)
実際に動かしてみました
加工するデータはこれです
れんちょんがスコーしてるとこですね
すこーー (・ε・) ーー
InkscapeでベクターにしてからJ Tech Phoonics Laser Toolという
エクステンションでGコードに変換します
NCVCで表示したのがこれ
実際に動かします
これは外側だけやってみたやつです
うっすられんちょんが…
レンズの焦点距離をちゃんと調節すれば
ダイソーで売っていた5.5mm厚のMDF板がこんな感じになります
ただ焼くとニオイが結構きついんですね…
ちなみにアクリルでやるとこんな感じに!
目標は達成できたのでひとまず終わりかな?
何か進捗あったらまた更新するのん