この製品の特徴

 

イェア、イェア、これBluetooth5.2対応なんだぜぃ!

 

充電して約72時間連続再生できる!

 

スピーカーが40mmと大き目

重低音も鳴らせるんじゃなかろうか!?

 

で、

二穴接続で同時にモニタリングできる!

 

 

 

Foooooooooooooo!

 

 

 

  本題

 

先日のAmazonタイムセールでこんなものを買いました!

 

 

Bluetoothヘッドホンを探していたら

面白そうなの発見したので早速ポチっと

 

 

  開封

 

デザインが凝っていて高級な感じ。

思ったよりコンパクトサイズの箱。

 

 

  内容物

 

中には本体の他にケーブル、ケースが付属

ジャックが2本入ってるのが特徴。

 

 

  外見

 

今回ゴールドを選択。

写真よりも高級感あっていい感じ!

 

目玉の機能、二穴接続

ここに大小2つのジャックがあるじゃろ?

なんと2本つなぐと両方の音が聞ける!

 

これは絶対便利な気がする

そして3.5mmジャックには抜け止めの加工がされている!

激しくヘッドバンギングしても抜けないかもしれない

 

 

  最後に

 

後日使用レポート書く予定なのでお楽しみに!

 

 

今回は安くesp32-wroom-32で工作します!

スマホやパソコン等で、気温・湿度・気圧が確認できる便利な装置です!

早速紹介していくぞ!

注意※ある程度スケッチが理解出来る方でないと難しいです。

ご自身の環境に合わせて適宜改造してください

 

下のサイトを参考にお願いします

 

今回使ったもの

 

 

 

注意※私が買ったBME280が偽物だったため今回温湿度用に使用しています

ちゃんとしたBME280ならば不要です

 

ちゃんとしたものを選んで買った方がいいです

DHT11を使う場合BMP180でもOKです

 

 

接続方法

 

  • DHT11のデーターピンは0番へ
  • 21、22にBME280、SSD1306をI2C接続

 

 

スケッチ

赤文字部分は適宜変更のこと

#include "SparkFunBME280.h"
BME280 bme280;

#include <DHT.h>
const int PIN_DHT = 0;
DHT dht( PIN_DHT, DHT11 );

#include <Ambient.h>
Ambient ambient;

#include <Wire.h>

#include <WiFi.h>
WiFiClient client;

#include <SSD1306.h>
SSD1306  display(0x3c, 21, 22);

const char* ssid1 = "
WifiのSSID";
const char* password1 = "
WIfiのパスワード;

unsigned int channelId =
AmbientのチャネルID;
const char* writeKey = "
Ambientのライトキー";

const int period = 2;
int sendcount = 0, count = -1;

float temp = 0, humid = 0, pressure = 0, avgtemp = 0, avghumid = 0, avgpressure = 0;
int avgtempcount = 0, avghumidcount = 0, avgpressurecount = 0;

void setup()
{
  dht.begin();

  Wire.begin(); // I2Cの初期化

  bme280.setI2CAddress(0x76);
  bme280.begin();

  Serial.begin(9600);
  Serial.println("Start");

  ambient.begin(channelId, writeKey, &client);

  display.init();    //ディスプレイを初期化
  display.setFont(ArialMT_Plain_16);    //フォントを設定
  display.drawString(0, 0, "Hello World");    //(0,0)の位置にHello Worldを表示

  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop()
{

  if ((millis() % (1000 * period)) == 0)
  {

    display.init();

    WifiConnect();

    ReadSensor();

    showValue();

    display.display();

    sendcount++;
  }

  if (sendcount >= 10 * 60 / 2) //送信したい時間(分)*60/2
  {
    SendAmbient();
    sendcount = 0;
  }
}

void WifiConnect()
{
  if (WiFi.status() != WL_CONNECTED)
  {
    WiFi.begin(ssid1, password1);  //  1stWi-Fiに接続
    delay(10);
  }


  display.setFont(ArialMT_Plain_10);
  display.drawString(100, 0, "Wi-fi");

  if (WiFi.status() != WL_CONNECTED)
  {
    Serial.println(">>Check Wifi<<");
    display.setFont(ArialMT_Plain_24);
    display.drawString(100, 10, "X");
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
  }
  if (WiFi.status() == WL_CONNECTED)
  {
    display.setFont(ArialMT_Plain_24);
    display.drawString(100, 10, "O");
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
  }
}

void ReadSensor()
{

  temp = dht.readTemperature();
  humid = dht.readHumidity();
  pressure = bme280.readFloatPressure() / 100;

  avgtemp += temp;
  avgtempcount++;
  avghumid += humid;
  avghumidcount++;
  avgpressure += pressure;
  avgpressurecount++;
}

void showValue()
{
  Serial.print(" temp: ");
  Serial.println(bme280.readTempC());
  Serial.print(" temp_DHT11: ");
  Serial.println(dht.readTemperature());

  Serial.println();

  Serial.print(" humid: ");
  Serial.println(bme280.readFloatHumidity());
  Serial.print(" humid_DHT11: ");
  Serial.println(dht.readHumidity());

  Serial.println();

  Serial.print(" pressure: ");
  Serial.print(pressure);
  Serial.print("\n━─━─━─━━─━─━─━\n");

  display.setFont(ArialMT_Plain_16);    //フォントを設定
  display.drawString(10, 5, (String)temp + " C");
  display.drawString(10, 25, (String)humid + " %");
  display.drawString(10, 45, (String)pressure + " hPa");



}

void SendAmbient()
{
  avgtemp /= avgtempcount;
  avghumid /= avghumidcount;
  avgpressure /= avgpressurecount;
  ambient.set(1, temp); // 気温をデータ1にセット
  ambient.set(2, humid); // 湿度をデータ2にセット
  ambient.set(3, pressure); // 気圧をデータ3にセット
  ambient.set(4, avgtemp); // 平均気温をデータ1にセット
  ambient.set(5, avghumid); // 平均湿度をデータ2にセット
  ambient.set(6, avgpressure); // 平均気圧をデータ3にセット
  Serial.println("[Send per 1 minutes data.]");
  ambient.send();
  Serial.print(" avgtemp: ");
  Serial.println(avgtemp);
  Serial.print(" avghumid: ");
  Serial.println(avghumid);
  Serial.print(" avgpressure: ");
  Serial.println(avgpressure);

  avgtemp = 0;
  avghumid = 0;
  avgpressure = 0;
  avgtempcount = 0;
  avghumidcount = 0;
  avgpressurecount = 0;

}

 

使いかた

 

事前にAmbientでチャンネル作成必要です。

上手く動作するとブラウザで確認できます。

トラブルシューティングは各自でお願いします。

 

最後に

雑になってしまいすみません。

なにせ一年前に作ったもので曖昧の為です。

東京ゲームショウ2022行ってきた!

というわけで会場の様子を伝えていくよ!

 

 

入場の大行列

イベント恒例ではあるんですけど、めっちゃ並びました。

寄り道もしてはいたんですが駅到着から入場まで約一時間。

 

 

昨日はかなり暑く持っていた飲み物が消えていくレベル

11時過ぎ、ついに入ることができた

 

最新のPCを見て触ろう!

入ってすぐにASUSのROGコーナー!

 

こちらはmsi

最新機種のゲーミングノートPCを体験できます。

まさかの液体窒素おじさん発見。

ものすっごーい人気ぶり

 

こちらはインテルCPU搭載のノートPCが展示されてました!

(まだありますが尺の関係でここまで)

 

 

PC周辺機器

 

まずはニトリコーナー

センスが抜群で感激。ゲームと結びつくと家具がまた違って見えます。

 

おつぎはリアルフォース。

東プレの出すキーボードです。

こちらも賑わってました!

 

こちらはエレコムコーナー

特にマウス・キーボードのプロトタイプの展示で興奮してました(?)

 

マウスでお馴染みスティールシリーズ

ちょうどヴァロラント実況の真っ最中

製品の良さがわかるいい機会ですね!

 

こちらはゲーミングチェアのDXレーサー

休憩がてらチェアの体験ができるとは一石二鳥

 

お次は配信関係のデバイスが展示されてました。

どこのコーナーだったか定かではないですが、ダヴィンチでお馴染みブラックマジック社の製品が!

こんな感じで映像切り替えするんですね!

 

本題に入る前にコスプレの写真貼っときます。

 

続いてゲーム編!

 

お待たせしました

レースシム編

 

私の好きなレース系から

 

まずはファーウェイ

こちらで三画面のレース体験ができます

(操作重視なのか)めっちゃ遅い595でフェラーリ458と並べられる無理ゲー

三画面のPRならせめてスーパーカーで体験したい...

 

こっからが面白いよ!

 

Rev to Vertex

香港の地形をスキャンして作られた本格シムとのこと

ものすごいリアルでした

乗ってみたかったんですが並んでたので諦め

 

続いて

GAYA FACTORYレースコックピット

まさか生で見ることができるとは感動!

半端ない迫力でした

 



 

STEAM DECK

 

本当は触りたかったんですが人気過ぎたので諦め。

他の方が書いているのでそちらを見てみてください

 

VR

 

超人気でした(超手抜きコメント)

 

 

他ゲームなど

 

 

後半グダグダになりましたが気力が尽きたので今日はここまで!

もしよければいいねお願いします!

 

 

 

 

 

疲れたーーーーー!俺はやり切ったぞ!うん...

勝手にパロってスミマセン

最近技術的な記事が多いので、ブログっぽい記事を書こうかと。

 

9/8ぐらいに申し込み終了したのですが、

私、第二種電気工事士試験をうけることにしました!

 

なんでかっていうと家のコンセントとか色々取り付け出来たら便利じゃねって思ったわけなんですヨ。

資格を取れば、基本的に交流600V、直流750Vまで工事をできるようになります!

 

そんな動機で始めましたが今回は独学で挑戦します!

しかし

参考書選びに迷う!

という問題にぶち当たるわけです

 

本当はベストセラーを選ぼうと思っていたのですが、

 

読みやすいのを探しに本屋へ!

 

そして、

手に取って、自分的にわかりやすそうだったのをネットで購入したのが以下の二冊!

 

 

 

  • 漫画でわかるなら楽しく勉強できそう

 

 

  • ↑でおすすめされていた参考書

 

これで勉強していきます!

また進捗状況など投稿していきますのでお願いします!

今回はAssetto CorsaのコースをBlenderで作るまとめです。

以前に記事を書きましたが一つにまとめ追記もしています。

最後まで見れば(多分)自作コースが作れます!

それでは行くぞ!

 

(2025/05/31 過去の自分が書いた記事ではありますが今からすると説明不足がひどいので追記しました。VRChatはいいぞ)

 

  ツールなどダウンロードしよう!

 

まずは

をインストール

それぞれ解凍&インストールしておきます。

 

 

 

 

 

 

  コースを作成する

 

コースを実際に作っていきます!Blenderを起動してください

(ご不明な点はコメント欄まで)

まずは標準のキューブは消しましょう(コマンド: X)

 

道路を作る

 

カーブ→パスでコースのレイアウトを作ります(コマンド: Shift + A)

 

編集モードでパスの端っこを選択→辺を延長(コマンド: E)

にょきにょき伸ばし

 

最後2点を選びつなぎます(コマンド: F)

 

次に地面を作るため平面を出します(コマンド: Shift + A)

 

編集モードでループカットします(コマンド: Ctrl+R)

これで滑らかなカーブが描けます

 

モデファイラプロパティ(右画面のスパナマーク)で配列とカーブを先ほどのパスに指定するとコースが大体完成

 

 

モディファイラー(右画面のスパナマーク)を適用させます

 

編集ができるようになるのですが...

これでは頂点がばらばらで不便 (Alt+クリックで辺が全周つながらない)

 

そこで近い頂点をくっつけます☆

Aで全選択して上の操作をします(Merge by Distance)

すると全周がつながります。

辺をAlt+左クリックで確認してみましょう

 

内側選択して

 

Fを押すと草部分が完成(Ctrl + FGrid Fill推奨。面崩壊の恐れあり)

 

そのままP→選択物で分離します

 

同じ要領で壁らしきものを作ります

※わかりやすいように色付けしています

 

 

  平面に名前を付ける

 

道路には1ROAD

草には1GRASS

壁には1WALL

名前を付けることでそれぞれの役割を果たします

前後に数字を付けることでオブジェを増やせます

 

先ほどのパスと道路とにマテリアルを割り当てておきます

テクスチャーでないとうまく反映されません

(追記:テクスチャを貼る皆様はこの段階でUV展開を行ってください)単色なら不要です。

fbxと同じファイルパスで「texture」フォルダーを作り中に画像を入れましょう

 

 

 

  スポーン地点などを作る

 

(コマンド: Ctrl + A) エンプティ→シングルアローを出します

矢印を合わせて

  • スタート地点→AC_START_0
  • ピット地点→AC_PIT_0
  • ラップタイム計測地点→AC_TIME_0_L + AC_TIME_0_R

 

ここ重要→(AC_TIME_1_L)のように追加するとスプリットタイムが測れます

そして通過しないとラップが計測されないのでショートカット防止になります

  • ホットラップ開始地点→AC_HOTLAP_START_0

 

これでスポーンできる数や場所を指定できます

 

  FBXで出力!

 

サイズを0.01に変更し、Yが上になるようにしてFBXで保存します

 

 

 

 

 

  コースデーターに変換する

ksEditorを開きます

FBXファイルを読み込みます

読み込めない場合はファイルなど日本語(全角文字)が入っていないかチェック!

 

左クリック長押しで視点変更、矢印キーで移動できます

問題なければkn5(トラック)ファイルで保存します

 

 

  ゲームファイルをつくろう

 

 

フォルダーの場所を確認

 

Steam→ライブラリ→左側のアセコルを右クリック→プロパティ→ローカルファイル→参照

これがSteamのゲームフォルダーとなります

...Steam/steamapps/common/assettocorsa/content/tracks

に移動

 

ゲームフォルダーを作る

 

ここに作成したいコースのフォルダーを作ってください

そして作成したフォルダー中に

  • ai (AIのデーター等)
  • data (カメラやマップのデーター等)
  • ui (選択画面のデーター等)
  • extension (雨modのデーター等)

という4つのフォルダーを作成

そして先ほど作成したkn5ファイルもここに置きます

 

さらにuiフォルダーの中にテキストファイルを作成し、名前と拡張子を合わせて「ui_track.json」に変更

テキストエディターで開き以下をペーストしてください

{
    "name": "test",
    "description": "",
    "tags" : ["Japan"],
    "geotags": ["lat", "lon"],
    "country": "Japan",
    "city": "",
    "length": "?m",
    "width": "?m",
    "pitboxes": "1",
    "run": "clockwise"
}

↑のnameに表示される名前を付けられます

とりあえずこれで保存してください

 

アセットコルサを起動しましょう

ファイルをしっかり配置していればコースの選択ができます

 

さあいよいよ走れますよ!

 

上手くデーターが読み込めると無事ゲームが起動し走ることができます

 

最後になりますが私の作ったコース(非公認)を公開していますのでもしよかったら参考にしてみてください!

 

 

 

 

それでは!

なんと!オカリナが3Dプリンターで作れてしまった!!!
高い(ド)レミファが出ないけど普通に演奏出来て感激!!!
リンク貼っとくので印刷してみてください!
多分ACだと思います
 
材質:PLA
インフィル100%




かれこれ1か月以上使用している

「3Dプリンター」

 

しかし造形中にはがれることも...
 

考えられるのは(調べる限り)

  • テーブルが傾いてる
  • ソフトの設定ミス(温度など)
  • 1層目の定着不足(ノズルの隙間)

だそうです

 

今回は

一層目の定着を高めてみようとおもいます

 

  使用している3Dプリンター

 

 

  使用したもの

 

 

 

 

 

 

 

  手順

  • マスキングテープを隙間なく貼る
  • レベリング
  • テーブルを予熱してノリを塗る
  • 印刷する

 

  効果は?

造形中の剥がれはなくなりました

 

が、

マスキングがテープが伸びてくるとだんだん浮いてくるのでこれは試行錯誤していきます

 

  茶番

 

というわけで!

3Dプリンターを買って色々印刷してます

 

 

しかし

 

印刷が遅い!

 

遅 す ぎ る !!!

 

1時間ならまだいいものの3時間待ちも多々

 

前から気になってたアレ

購入しておこう

 

 

 

 

 

 

1 DAYS AGO

 

 

 

見慣れたパッケージ()が届きました

いつもお世話になっております

 

購入したのは!

極太ノイズ!

中には

見えました!

0.8mmノズルです!

 

そう

 

ノーマルより倍太くしちゃおうぜ!

ってノリです

 

多分ですが水平の印刷速度は理論上4倍のはず!

 

 

 

 

 

 

  交換してみよ!

 

まずカバーをはずして

 

すっぴん拝みまして

 

ファンを外しーの!

 

ノズル加熱!

(しないと固着して外せない)

 

付属のレンチでノズルを抜きます

 

外したのがこちら0.4mmノズル。

先端焦げて中も詰まってますなー

とりあえず比較

確かに径が少し大きいです

 

逆の手順で戻せば完了!

最後に設定を変えるのを忘れずに☆

 

 

 

 

 

 

  さいごに

 

効率よく印刷できるノズル交換

皆様もやってみてはいかがだろうか

但し、細かい造形は諦めよう(^ω^)