ラベル ものづくり の投稿を表示しています。 すべての投稿を表示
ラベル ものづくり の投稿を表示しています。 すべての投稿を表示

2026/01/19

Kariya Micro Maker Faire 2026に参加して

 2026/1/17と18に開催のKariyaMicroMakerFaire2026(以下KariyaMMF2026)に参加しましたのでちょっと書き物を更新しようと思います。

前回の2024の時は座禅マシーンを展示していましたが、今回の2026年はアウトドアギアの展示をしました。以下展示の様子です。


今回の展示物はソロキャンプで使用する以下のものたちです。
上位4つは過去同人誌に内容をまとめたものです。
・ローテーブル(新/旧)
・ローチェア用サイドテーブル
・アルコールチェッカー
・虫よけ超音波発生器(新/旧)
・手回しブロア(未完品)
今回も頂いた質問、ご意見としては多いのは虫よけの効果範囲についてでした。
そろそろ説明資料を更新した方がいいかなぁ。
その他にも以下のご意見を頂きました。
・虫よけ超音波発生器の販売はしないのか?
・虫よけ超音波発生器の市販品は無いのか?
あとはキャンプに行かれる方にはサイドテーブルが高評価に感じました。
やっぱり椅子の横にテーブルがあると便利ですよね!

MakerFaireの出展ではなかなか他の方の作品を見に行くことが出来ないんで今回は自分の作品に関してのみとさせて頂きます。短いですが、今回はここまでです。

2025/11/17

技術書典19 を振り返って

 去る2025/11/16に開催された技術書典19のオフラインを振り返ります。
オンラインはまだ続いていますが、色々と思うところがあったので、書き散らします。



・メインが同人誌即売会でもハード・メカのモノがあるなら持って来た方が良い。
特に私の場合は初回本がタイトルと表紙の両面から何をやっているか分かりづらいので、実物を展示していた方が来訪者の方が分かり易くなると感じた。(荷物が多くなるから避けたくなるのだが。。。)

・見本本に見本のシールを貼る
見本の本の前に見本を示すカードを置いてはいたが、分かりづらいようで、見本か聞かれたことが複数回あったため、見本に直接見本を示すシールかカードを貼っておく必要があるだろう。
もしかすると今回は同人誌即売ということで見本があることを前提の来訪者の方が多いから見本か聞いて下さったのかと思うと、今までのNTなどの展示会では見本であることを分かっておらずの方もいられた可能性が考えられる。

・値段設定の分かり易さ
今まではすべての本は500円だったが、今回の同人誌は無料頒布にしたため、作品による値段差が発生しましたので、「全部500円」が使えなくなりました。
また、皆様、電子版は無料を理解していただくことはあれど物理本も無料を会場では認識されていない方もおられたので、その告知方法を考える必要がありそうです。


まだオンラインは続いておりますが、取り急ぎ思いつくことはこんな感じです。
次回の技術書典20は4月とのことで、出れたらその時はよろしくお願いします。






2025/07/19

ESP32とDHT11で自宅温湿度を測定してGoogleスプレッドシートに自動書込み

前回までは温度センサーをMCP9701を使用しておりましたが、今回はDHT11を使用します。
なぜセンサーを変えたかって?なんか精度があまり芳しくないからです。
センサーからの出力を温度に変換する計算式を考慮すれば改善するかもですが、、、
面倒くさいので止めました!

ということで今回はDHT11を使用するのですが、このセンサーは温度と湿度を両方測定することが可能です。

また、今回の新しいこととして、測定した値をGoogleスプレッドシートに送信して日時とともにセンシングした値を入力させます。

さらに今回は新たにAIにコーディングさせてみました。
使用したのはGemini 2.5flashになります。

入力したプロンプトは以下になります。

ESP32で取得した温度湿度のデータをGoogleのスプレッドシートにその日時と一緒に順次記載していく方法はある?

たったこれだけ!で回答をくれるのですからすごい時代ですね。
ちなみに回答されたコードは以下になります。
①Googleスプレッドシート向け

// doPost関数は、HTTP POSTリクエストがこのWebアプリケーションに送信されたときに実行されます。
function doPost(e) {
  // スプレッドシートのIDを取得します。
  // ここをあなたのスプレッドシートのIDに置き換えてください。
  // スプレッドシートのURL (https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID/edit#gid=0) から取得できます。
  var SPREADSHEET_ID = "あなたのスプレッドシートIDをここに貼り付け"; 
  var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getActiveSheet();
  // POSTリクエストのパラメータを取得します。
  // ESP32から 'temp' と 'humidity' という名前でデータが送られてくることを想定しています。
  var temperature = e.parameter.temp;
  var humidity = e.parameter.humidity;
  // 現在の日時を取得します。
  var timestamp = new Date();
  // スプレッドシートの最終行に新しいデータを追加します。
  sheet.appendRow([timestamp, temperature, humidity]);
  // 成功レスポンスを返します。
  return ContentService.createTextOutput("Data logged successfully").setMimeType(ContentService.MimeType.TEXT);
}


②ESP32向け

#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h" // DHTセンサーを使用する場合
// Wi-Fi設定
const char* ssid = "あなたのWi-Fi SSID";
const char* password = "あなたのWi-Fi パスワード";
// Google Apps ScriptのウェブアプリURL
// ステップ2でコピーしたURLをここに貼り付け
const char* gasUrl = "ここにGoogle Apps ScriptのウェブアプリURLを貼り付け";
// DHTセンサー設定 (DHT11の場合)
#define DHTPIN 4      // DHTセンサーが接続されているESP32のGPIOピン番号
#define DHTTYPE DHT11 // DHT11またはDHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(115200);
  dht.begin(); // DHTセンサー初期化
  // Wi-Fi接続
  Serial.print("Connecting to WiFi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi connected.");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}
void loop() {
  delay(5000); // 5秒ごとにデータを送信
  // センサーから温度と湿度を読み取る
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  // 読み取りに失敗した場合
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C, Humidity: ");
  Serial.print(h);
  Serial.println(" %");
  // HTTP POSTリクエストを送信
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin(gasUrl);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    // POSTデータを作成
    String httpRequestData = "temp=" + String(t) + "&humidity=" + String(h);
    Serial.print("Sending data: ");
    Serial.println(httpRequestData);
    int httpResponseCode = http.POST(httpRequestData);
    if (httpResponseCode > 0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      String response = http.getString();
      Serial.println(response);
    } else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }
    http.end();
  } else {
    Serial.println("WiFi Disconnected. Reconnecting...");
    WiFi.begin(ssid, password);
    // 再接続ロジックをここに追加することもできます
  }
}

以上のコードをから物理的には以下のような構成にしました。
すごくシンプルです。


あとはGeminiに指示しなかったから5秒毎に温湿度を送信するプログラムになってしまったのでそれを30分毎に修正して、コンパイル!

こまごまとしたエラーが出ましたが解決してGoogleスプレッドシートに書かれた結果はこんな感じです。


ご覧の通り温度湿度をGoogleスプレッドシートにとりあえず送信することが出来ました。
ただ、30分のカウントがESP32まかせになっているので段々ズレが発生していますね。

そとから自宅の室温を確認するには特に困りませんが、気にはなるのでおいおい直していきましょう!

今回はここまでです!

2024/12/16

2024年を振り返って

すごい久しぶりにブログを更新します。

 昨日(2024/12/15)の伊勢ギークフェアを終えて今年の出展イベントがすべて終了したので、このタイミングで今年1年を振り返ってみようと思います。

今年は1/1の能登地震から始まり、不穏なスタートになり、NT加賀が結果として中止になってしまいましたね。

まずはものづくり系から振り返っていきます。
出展イベントは以下のはず。。。
・Kariya Micro Maker Faire 2024(3/2,3)
・NT京都 2024(3/34)
・つくろがや!2(4/6,7)
・NT函館 2024(4/29)
・技術書典16(5/26)
・NT金沢 2024(6/22,23)
・NT東京 2024(9/7,8)
・NT富山 2024(9/14,15)
・つくろか!6 (10/26,27)
・技術書典17(11/3)
・NT名古屋 2024(11/9,10)
・Ogaki Mini Maker Faire 2024(11/23,24)
・伊勢ギークフェア2024(12/15)

合計で13イベントに参加させて頂きました。
いやぁ平均すると月1以上イベント出展しているとは、
その他に出展せずに見学のみのイベントして、京都、東京、浜松のMakerFaire とROBOT TECHNOLOGY JAPAN 2024の見学に行きましたね。交通費を計算したくない。。。

無難に良かった点と悪かった点で振り返ります。
【良かった点】
・MakerFaire に個人(TMDものづくり工房名義)で出展(刈谷、大垣)
 実は今まで個人名義ではMakerFaire には落ちていてサークル参加しかしたことが無かったんですよね。出展申し込みの内容を修正を重ねてきたのが良かったのでしょうかね。大垣は全員受かっているので分からないですが。。。
・技術書典に出展
 今年は初の同人誌作成にチャレンジしました。世間で言われるような薄い本になりましたが、春秋それぞれに自作アウトドアギアと全自動麻雀卓の本を出せたのは良かったです。
それぞれタイトルに#01と付けてしまったので来年も頑張らないとですね。
【悪かった点】
・参加イベントに対するアウトプット
 イベント参加して参加しっぱなしになっている気がしてます。見学作品を発信、記録に残すということが今年は全然できて無かったなぁと。。。後日にするとやらないし、当日にしようとしてもパケット通信1Gの制約があるとやりづらいしで困ったものですが、来年は何か方法を考えよう。。。そうすれば、同人誌の筆も早くなるかも。。。
・進捗がほぼ出てない。
 イベント参加と見学がつながると作品の進捗が出なくなるので、計画の見直しが必要かなと、特に平日の進捗が無いので、来年度は平日にも進められるプロジェクトを立ち上げたいですね。
・作品の見せ方
 今年は自作アウトドアギアとその同人誌を多くのイベントで展示したのですが、同然ですが作品が違えば見せ方も違う。特に同人誌の見せ方がまだまだ改良の余地ありですね、技術書典のような即売会であればなんとなくお客さんも作法的なことを把握されてますが、それ以外のイベントではそうでは無いので、対策を何か考えないとですね。来年はNT金沢とかで同人誌売っている人のをそういう目線で覗いてみようかな。
・キャンプに行けてない(特に後半)
 自作アウトドアギアをせっかく作ったのに試す機会が無く終わってしまった。来年はキャンプにもっと行きたいですね。

大雑把にはこんな感じですね。
また、時間をおいてこの振り返りを見直して来年の目標立ての参考にします。目標は今年中になんとか設定したいですね。

今回はここまで、皆様良いものづくりライフをお過ごしください!

2022/02/27

ESP32とMCP9701で温度測定

今回も前回に引続きESP32に挑戦していきます。
今回はスタートブックの3章からです。

書籍に記載あった温度センサは我が家の在庫に無かったので
家にあった似たような温度センサMCP9701を使います。

前回のLED同様にESP32の25Pinに温度センサの出力を接続します。
本来はノイズ対策にコンデンサ0.1μFを挟むべきとのことですが今回は無しです。

作成したコードは以下の通りですが、
スタートブックは温度のみを出力する仕様でしたが、
私はセンサ出力値(AD変換後生値)、センサ電圧値(計算値)、温度(計算値)を出力します。

//ESP32とMCP9701(温度センサ)で温度測定
#define sensor 25 //"sensor"を25に固定

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);   //シリアル通信の初期設定
  while(!Serial);         //シリアル通信が可能になるまで繰り返す
  pinMode(sensor,INPUT);  //sensor(25)を入力モードに切替える

}

void loop() {
  // put your main code here, to run repeatedly:
  int e = analogRead(sensor);   //センサからのアナログ値を読取り
 
  float Vout = 3.3 / 4095 * e + 0.1132;    //補正式から電圧を補正:分解能の読取り最大値 ÷ ESP32の分解能 × センサ入力値 + ESP32の補正値 
 
  float temp = (Vout - 0.5) / 0.01;          //電圧から温度に変換:
 
  Serial.print("V =");
  Serial.println(e);                     //補正前の電圧を出力
  Serial.print("Volt =");
  Serial.println(Vout);                     //補正後の電圧を出力
  Serial.print("tenmp =");
  Serial.println(temp);                     //温度を出力
  delay(1000);

}

コードは以上です。

出力を温度以外にもしたのは、何故か温度が正しく出力させなかったのです。
(-30℃くらい出力されました。。。)

原因はセンサ値から電圧+補正の計算を書籍通り
float Vout = e / 4095 * 3.3 + 0.1132;で実施したところ
何故か計算を実施しなかった点です。
そのため計算式を下記のようのに書換えました。
float Vout = 3.3 / 4095 * e + 0.1132;
順番を変えただけですが、上手くいきました。
なぜでしょうね?
まぁ、動いたからヨシッ!

次回はついにネットワークへの接続に挑戦です。

2022/02/19

ESP32 挑戦!! 環境設定とLチカ

 本日はESP32に挑戦!!
まぁ、購入してから、ずっと放置していたので手を付けます。

参考にしたのはこちらの書籍です。

IoT開発スタートブック ── ESP32でクラウドにつなげる電子工作をはじめよう!

では始めて行きましょう!

開発環境はArduino IDEです。
インストールは済なのでここはカット。。。
ボードの設定は必要なようですね。

「ファイル」→「環境設定」追加のボードマネージャのURLに
”https://dl.espressif.com/dl/package_esp32_index.json”を追加してOK。

「ツール」→「ボード」→「ボードマネージャ」から”ESP32”をインストール。

「ボードマネージャ」から”ESP32 Dev modul”を選択
以上で環境設定は完了!

では、プログラムのテストは定番のLチカです。
コードはこんな感じ

void setup() {
  // put your setup code here, to run once:
  pinMode(25, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(25,HIGH);
  delay(500);
  digitalWrite(25,LOW);
  delay(500);
}

ではさっそくコンパイルして、書き込みとしたのですが、
書き込めませんね。


ネットで少し調べてみると他の方も同じような状態の方が
いらっしゃいますね。
で、解決法はいろいろな方法があるようですが、
書き込み中にBOOTボタンの押しっぱなしで書き込みが出来ました。


で、Lチカも問題なしです。


とりあえず、本日はここまでです。

IoT開発スタートブックの第2章まで完です。

ではまた~



2021/12/17

GIMPで写真を線画にする方法

 GIMPで写真を線画にする方法について紹介します。
(自分の覚えのためでもありますが。。。)

GIMPはフリーソフトですので手軽にお試し出来ますよ♪
皆さんもこの方法で思い出の写真をレーザー彫刻で残してみませんか?

↓のリンクからパワーポイントを参照下さい。
GIMPで写真を線画にする方法

↓実際に写真をレーザー加工した作品


以上、では次回の更新まで!

2021/08/01

Neo Pixelをarduinoで制御してみた

 Neo Pixelをarduinoで制御してみました。

NeoPixelを制御するにあたりFastLEDライブラリを使用しました。
特段理由はありませんww。
GitHub:https://github.com/FastLED/FastLED

ライブラリのインストールはarduino IDEのメニューの「スケッチ」から「ライブラリをインクルード」「ライブラリを管理」をクリック。
検索欄に「FastLED」を入力してFastLED by Daniel Garciaをインストール。


サンプルからBlinkを選択しちょいちょいとコードを修正し、実行。

#include <FastLED.h>

// How many leds in your strip?
#define NUM_LEDS 50 //LEDの数

// For led chips like WS2812, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
// Clock pin only needed for SPI based chipsets when not using hardware SPI
#define DATA_PIN 3  //arduino出力Pin

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
    FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
}

void loop() {
  // Turn the LED on, then pause
  for(int i= 0;i<NUM_LEDS;i++){
    leds[i] = CRGB::Red;
  }
  FastLED.show();
  delay(250);
  // Now turn the LED off, then pause
  for(int i= 0;i<NUM_LEDS;i++){
    leds[i] = CRGB(0,255,0);
  }
  FastLED.show();
  delay(250);
  // Now turn the LED off, then pause
  for(int i= 0;i<NUM_LEDS;i++){
    leds[i] = CRGB(0,0,255);
  }
  FastLED.show();
  delay(250);
  // Now turn the LED off, then pause
  for(int i= 0;i<NUM_LEDS;i++){
    leds[i] = CRGB(255,255,255);
  }
  FastLED.show();
  delay(250);
  for(int i= 0;i<NUM_LEDS;i++){
    leds[i] = CRGB::Black;
  }
}

そして、実行!!


LEDが思い通りに動いていない、というより赤色はしっかりと表示されていて
緑色が薄く、青色は全く光らなかった。。。
という事はもしかしてarduinoから出力の電源が足りないと思い
別電源を用意して再トライ!!

で上手く行きました!
とりあえず、これを使って何かを作る予定も無いので
今回はここまでです。


2021/06/21

本棚を作ってみた

 家の書籍が本棚に入らなくなったので、
とりあえず、既存の本棚の上に追加の本棚を設置しよう❢

という事でまずは既存の本棚(カラーボックス)の天板サイズを測定。



横:390、奥行290

上記寸法内に入って、かつ技術書を格納出来るよう
いつも通り3D CADでサクッとモデルを作って
サクッと設計。

そして2D化したらレーザー加工機に投入。



適当に組み立てて、はい出来上がり。

そして、棚の上に設置。


棚の中に本を入れて、完成!



2021/06/06

鍋の蓋置き

台所用に鍋の蓋置きを作りました。
壁とIHクッキングヒーターとの隙間に鍋の蓋を置けるようにしました。



使い始めてから半年くらい経ちましたが、
不具合も無くいい感じです♪


【材料 ()内加工方法】
 ・MDF(レーザーカッター)
 ・ABS(3Dプリンター)
 ・M8ボルト*4
 ・M8ナット*4

サイズ:横548*奥行138.5*高さ209.5

【作り方】
3D CADでサクッとモデルを作成




















モデルは以下から入手出来ます。DesignSparkMechanical用の拡張子.rsdocです。 https://drive.google.com/file/d/1y-qLB485udkVUy2c0b6zpVqnrp3lMpkJ/view?usp=sharing

後はレーザー加工機と3Dプリンタをそれぞれ稼働させるだけ。
(写真撮り忘れました💦)

最後に適当に組めば、一番上の写真ようになります。
簡単ですね!良ければ皆さんも作って見てくださいね。

2021/05/30

ポケットティッシュケースを作った

MDFでポケットティッシュケースを作成。
コロナ過前はよく街頭で貰ったものですが、
最近はあまり貰えません。
とはいえ、以前に貰ったものが溜まっているので
保管用にケースを作ってみました。


前面には2016年に蒼穹のファフナーの聖地巡礼で
旅行した鞆の浦にて撮った写真を画像加工して
レーザー彫刻しました。


材質:MDF(t2.5)




技術書典20 を振り返って

 オンラインがまだ続いている中ではありますが、2026年4月12日に開催されたオフラインでの振り返りを少々しようと思います。  今回の原稿の準備についてですが、今までと同様にRe:view Starterを使用していたのですが、今までと大きく変えたのがローカルドライブでは無くOn...