What to do when USB-C become very loose. USB Type-Cプラグがゆるくなったことはありませんか? 以前から気になってWebサイトで探してみたのですが、解決方法がなかったので 調査してみました。 原因は端末側にある? まずは端末側に問題があるのでは?と思い、プラグの設計を調べました。 今回はパソコンのUSB-Cです。 見たところ、端末側には調整できそうな箇所がありませんでした。 ではケーブル側が問題? じゃあ、ケーブル側に問題がありそうなので、ケーブル側を調べました。 USB Type-Cの設計図を検索して見てみると…… 見つけました!!!! ケーブル側の両サイドに、調整できそうなクリップがありました。 上列と下列からクリップを挟んでいる構造になっていますね。 この右端、左端のクリップ部分を、調整すれば簡単に直るはず!! ↓↓↓今回は裁縫用の針を使っています。↓↓↓ 細かい作業ですが、サイドから内側にクリップを注意しながら押して完成です!! 実際にPC端末に差してみると、緩みもなく、ぴったりでした。 緩んでいるかはクリック音で分かりますよ USB Type-Cを奥まで差し込むと、カチッという「クリック音」が聞こえます。 これが緩んでいると、クリック音が聞こえないので、調整の目安にしてくださいね。
ハードウェア
手遊び対策にぴったりなFIDGET TOYを買って使ってみました
最近話題のFIDGET TOY FIDGET TOY(フィジェット トイ)は、手持ち無沙汰なときや、落ち着かなくてソワソワするとき、ストレスでイライラしたとき、手遊び代わりにいじって遊ぶおもちゃです、 海外では数年前から流行り始め、日本でもここ最近はフィジェットスピナーなんかも人気ですよね。 フィジェットスピナーは円盤状の形をした、ひたすらぐるぐる回るのを眺めるアレです。 さまざまなお店でも取り扱うようになり、巷でも見かけることが多くなりました。 今回は中国製パクリを購入 前々から気になってはいたのですが、本家の製品はたしか10ドル以上した気がします。 1年前くらいにクラウドファンディングのサイトで見かけたときは、10ドル……つまり1000円以上で、高いなという感想でした。 そこでさすが中国、あっという間に形そっくりなものを作成してしまったので、今回はAliexpressさんで約1ドルで購入しました。 しかも送料込み。 おおよそ1週間ほどでメール便にて到着。 箱はボッコボコでしたが、中身は問題ないのでOK。 (だいたい、中国からのお買い物はこんなもんです。) 指先サイズでかなりコンパクト 大きさはポケットにも入るサイズなので、どこにでも持っていくことができます。 写真には撮ってませんでしたが、ストラップが付属していて、スマホやバッグにも付けられたり、 手首にかけて使うと落下防止にもなりそうです。 6面すべて遊べる! このおもちゃの特徴は6面すべてで遊べるので、その時の気分によって、どの面で遊ぶか選べるのがいいところ。 附属の説明書と感想。 Breath すべすべした面。 機能はとにかく「すべすべして気持ちいい!!」 この手触り感で、イライラしてたこともどうでもよくなりそう。 Roll よくあるロッカーのダイヤルと、よくわからないけど回るもの。 金属の回るやつのは結構楽しい。 Spin ぐるぐる回してDJ気分。 中国品だからか、スムーズに回転しないの難点だった。。 Click 個人的に1番のおすすめ。 とにかく押し心地が最高。 エンドレスにカチカチできるので、シャーペンの芯をカチカチやるのが好きな人はきっとハマると思う。 Glide いわゆるジョイスティック。 プレステのコントローラーとかについているあれです。 こちらも滑りが悪めでした。 Flip 電気のスイッチのあれ!! オンオフを無限にできるって最高。 そもそもの目的は発達障害や自閉症の指遊びだった 今や大人が楽しくストレス発散できるFIDGET TOYですが、この本家開発者のサイトでは、 発達障害や自閉症の方のそわそわした感じや、落ち着かない感じの対策として開発されたものだったと書いてあった。 そういった方は少ないかもしれないけど、実際自分も何かの考えに集中すると落ち着かなくなることが多く、 長いこと対策を考えてきたこともあった。 こんな小さなキューブがストレスや不安を吸収してくれるなんて考えると、たいしたものです。
オフィス換気のため Co2 センサー作り ー Arduino, BME280, MH-Z19編
今年冬が寒くて窓が開けられない日が多く、作業中に換気のタイミングがなかなかわかりにくい。 それを解決するにはCO2センサーだと思いました。 早速CO2センサー購入しようと、調べてみると通販で販売しているものが一番安くても3万円弱だったので、 自分でCO2センサー作ると考えて始まりました。 まずはもっている材料から試作です。 2012年にmiyamomoさんの記事を読んでMZK-RP150Nとeneloop買いました。 http://miyamomonikkie.blog.so-net.ne.jp/2012-12-29 早速Arduino UNO、Ethernet Shield、MZK-RP150NとLM35D繋げて試してみました。 いい感じで数字をテストサーバーにPOSTできるになりました。 ここまで試作がうまくできたので、本番用のCO2センサー探し始めました。 CO2センサーって意外と値段高いもので、一旦あきらめたんですが、 あの日偶然で上田さんの記事から中国で安いセンサーを販売してる店のリンクを紹介していたので、同じMH-Z19を買いました。 http://qiita.com/UedaTakeyuki/items/c5226960a7328155635f 試作でLM35D使ってみたんですが気圧も測りたくて、調べたら温度、湿度と気圧3つ測定できるのBME280を選びました。 繋げるとこういう感じでした。 MH-Z19はUARTとPWM両方できます、今回は簡単なUARTでTXとRXを繋げます。 BME280はI2Cで繋げるので、ArduinoのA5(SCL)とA4(SDA)を繋げます。 Arduinoソース MH-Z19は普通にSerial 9600bandから読めます。 使い方はネットでダウンロードできますが、簡単に説明すると、9 byteコマンド送って、レスポンスが戻ってきます。 0x86はreadコマンドで、戻るときも確認用のため0x86も一緒に返します。 例です
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <SoftwareSerial.h> SoftwareSerial co2Serial(A0, A1); // define MH-Z19 RX TX void setup() { co2Serial.begin(9600); } void loop() { byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; unsigned char response[9]; // for answer co2Serial.write(cmd, 9); //request PPM CO2 co2Serial.readBytes(response, 9); if (response[0] != 0xFF){ return 0; } if (response[1] != 0x86){ return 0; } unsigned int responseHigh = (unsigned int) response[2]; unsigned int responseLow = (unsigned int) response[3]; int ppm = (256 * responseHigh) + responseLow; delay(60000); } |
BME280の場合もうできてあるライブラリがあって、ここでダウンロードできます。 http://static.cactus.io/downloads/library/bme280/cactus_io_BME280_I2C.zip 細かく説明はこちらになります。 http://cactus.io/hookups/sensors/barometric/bme280/hookup-arduino-to-bme280-barometric-pressure-sensor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <Wire.h> #include "cactus_io_BME280_I2C.h" BME280_I2C bme(0x76); // I2C using address 0x76 void setup() { bme.begin(); bme.setTempCal(-1); // Temp was reading high so subtract 1 degree } void loop() { bme.readSensor(); bme.getPressure_MB(); bme.getHumidity(); bme.getTemperature_C(); bme.getTemperature_F(); delay(60000); } |
両方組み合わせでサーバーに送るソースはこれです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#include <SPI.h> #include <Ethernet.h> #include <Wire.h> #include "cactus_io_BME280_I2C.h" #include <SoftwareSerial.h> BME280_I2C bme(0x76); // I2C using address 0x76 SoftwareSerial co2Serial(A0, A1); // define MH-Z19 RX TX byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetClient client; char server[] = "mochi.space"; void setup() { // give the ethernet module time to boot up: delay(1000); Ethernet.begin(mac); co2Serial.begin(9600); bme.begin(); bme.setTempCal(-1); } void loop() { httpRequestSendParams(); delay(30000); } void httpRequestSendParams() { // close any connection before send a new request. // This will free the socket on the WiFi shield client.stop(); if (client.connect(server, 80)) { bme.readSensor(); client.println("GET /bot/index.php?t="+String(bme.getTemperature_C(),3)+"&h="+String(bme.getHumidity(),3)+"&p="+String(bme.getPressure_MB(),3)+"&c="+String(readCO2())+" HTTP/1.1"); client.println("Host: mochi.space"); client.println("User-Agent: mochibot"); client.println("Connection: close"); client.println(); } else { delay(10000); } } int readCO2(){ byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; unsigned char response[9]; // for answer co2Serial.write(cmd, 9); //request PPM CO2 co2Serial.readBytes(response, 9); if (response[0] != 0xFF){ return 0; } if (response[1] != 0x86){ return 0; } unsigned int responseHigh = (unsigned int) response[2]; unsigned int responseLow = (unsigned int) response[3]; int ppm = (256 * responseHigh) + responseLow; return ppm; } |
サーバーサイドでd3.jsと組み合わせ、こういう風にみえます。