0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

あの温度の🌡️つきネックレスを作ろう!

Last updated at Posted at 2025-11-17

🎄「4℃」の表示がされるネックレス🎁

年の瀬が近づくと毎年ネットで話題となる、水の密度が最大になる温度の宝飾品。

ところで、こんなものを見つけました。

温度表示だけでしたら、

でいいのですが、せっかくなので温度計測できて「4℃」表示モードつきのネックレスを作ります。

何番煎じでも構わない。私はまだ煎じていない。
(Little Curly「サリーとアンの約束」 「新刊あります(遺作)」より)

「贈られるジュエリー」から「自分で選ぶジュエリー」へ、そして「自分で作るジュエリー」に。え、どこが「ジュエリー」かって?「」が付いているじゃないですか...

目的

  1. 電池稼働
  2. 温度を計測
  3. ネックレスとして吊ることができる
  4. 「摂氏4度表示固定モード」を備える(ここ重要)

レシピ

(使用数量、概算価格は一台当たり)

部品 調達方法例 数量 概算価格(JPY)
attiny avr1シリーズ AVRマイコン ATTINY1604-SSNR: 半導体 秋月電子通商-電子部品・ネット通販 1 100
温度センサ(I2C) デジタル温度センサー PJ85775P: 計測器・センサー・ロガー 秋月電子通商-電子部品・ネット通販 1 100
TM16xx 7セグメント用LEDドライバーIC(最大3個) TM1617: 半導体 秋月電子通商-電子部品・ネット通販 1 50
2桁7セグメントLED 表面実装用 2桁7セグメントLED表示器 カソードコモン OSL2051A-LR: オプトエレクトロニクス 秋月電子通商-電子部品・ネット通販 1 100
電源スイッチ
4℃固定モード切替スイッチ
表面実装用スライドスイッチ SSSS213202: 制御部品・駆動部品 秋月電子通商-電子部品・ネット通販 2 50
LR44ホルダー 電池ケース LR44×1個 表面実装用 引出し付き: ケース・ネジ・固定具 秋月電子通商-電子部品・ネット通販 2 100
スペーサー スペーサー M3 10mm TP-10: ケース・ネジ・固定具 秋月電子通商-電子部品・ネット通販 3 100
深圳製PCB基板 PCB Prototype & PCB Fabrication Manufacturer - JLCPCB 2 100
配線材料、抵抗、コネクタなど (冷蔵庫の中の余り物から)
合計 (どんぶり勘定) 700

オール表面実装、オール秋月部品1、運河4度よりも更にリーズナブルなお値段。

「石」の数は(数え方にもよりますが)attiny, 温度IC, 7セグメントドライバで3石となります。この「石」に含まれるシリコンの質量を合計して「カラット」に換算すると、概ね0.05カラット程度になる2そうです。

ポイント

温度センサ PJ8775P

アドレス選択が32パターンもあるという素敵なi2c温度計です。
湿度は測れませんが、AHT25類のような複雑なプロトコルもないので簡単に使えます。

7セグメントLEDドライバ TM1617

TM16xxシリーズは物によってアノードコモンとカソードコモンの対応が違います。

TM16xx chips features and support · maxint-rd/TM16xx Wiki

ドライバIC側のSEG1〜8とLED側のDIG A〜G,DPの順番を揃えようとすると、PCB配線が複雑になります。SEGxDIGxの対応はソフトウェアでどうにでもなるので、PCB配線を優先で割り当てます。

kicad

PCB上は綺麗になりますが、回路図上はスパゲッティ🍝

TM1617の場合、最初に0x00のコマンドを発行して2桁であることを指示する必要があります。アラインメントの関係で、7セグメント1桁あたり2バイトの書き込みが必要です。

のコードですと、

/*
         AAA
        F   B
         GGG
        E   C
         DDD
              p(dot)
*/
//                   AFCBEDpG
#define SEG7_CHAR_0 B11111100  // A, B, C, D, E, F
#define SEG7_CHAR_1 B00110000  // B, C
#define SEG7_CHAR_2 B10011101  // A, B, D, E, G
#define SEG7_CHAR_3 B10110101  // A, B, C, D, G
#define SEG7_CHAR_4 B01110001  // B, C, F, G
#define SEG7_CHAR_5 B11100101  // A, C, D, F, G
#define SEG7_CHAR_6 B11101101  // A, C, D, E, F, G
#define SEG7_CHAR_7 B10110000  // A, B, C
#define SEG7_CHAR_8 B11111101  // A, B, C, D, E, F, G
#define SEG7_CHAR_9 B11110101  // A, B, C, D, F, G
#define SEG7_CHAR_A B11111001  // A, B, C, E, F, G  大文字の 'A'
#define SEG7_CHAR_B B01101101  // C, D, E, F, G     小文字の 'b'
#define SEG7_CHAR_C B00001101  // D, E, G           小文字の 'c'
#define SEG7_CHAR_D B00111101  // B, C, D, E, G     小文字の 'd'
#define SEG7_CHAR_E B11001101  // A, D, E, F, G     大文字の 'E'
#define SEG7_CHAR_F B11001001  // A, E, F, G        大文字の 'F'
#define SEG7_DOT    B00000010  // p                 小数点 (OR用)

//                       AFCBEDpG
#define SEG7_CHAR_MINUS B00000001  // G           マイナス記号
#define SEG7_CHAR_OVER  B11010001  // A, B, F, G  オーバーフロー表示 上にo
#define SEG7_CHAR_ERROR B10000101  // A, D, G     エラー表示 三


const uint8_t HexChars[16] = {
  SEG7_CHAR_0, SEG7_CHAR_1, SEG7_CHAR_2, SEG7_CHAR_3,
  SEG7_CHAR_4, SEG7_CHAR_5, SEG7_CHAR_6, SEG7_CHAR_7,
  SEG7_CHAR_8, SEG7_CHAR_9, SEG7_CHAR_A, SEG7_CHAR_B,
  SEG7_CHAR_C, SEG7_CHAR_D, SEG7_CHAR_E, SEG7_CHAR_F};


TM16XX display(TM1617, PIN_TM16_CLK, PIN_TM16_DIO, PIN_TM16_STB);

void tm16setup(void)
{
  display.command(0x00);
}

void tm16printnum(int num)
{
  uint8_t dot0 = SEG7_DOT;
  uint8_t dot1 = 0x00;
  //...
  display.DisplayBin(0, (HexChars[num / 10] | dot0) << 4); //左側の桁
  display.DisplayBin(1, (HexChars[num / 10] | dot0) >> 4);
  display.DisplayBin(2, (HexChars[num % 10] | dot1) << 4); //右側の桁
  display.DisplayBin(3, (HexChars[num % 10] | dot1) >> 4);
  //...
}

という感じです。
このままでは使いにくい上にカプセリングを破壊しているので、class TM16XXを継承してclass TM1617を作ります。

表面実装LR44電池ホルダー

LR44は1個あたり1.5Vですので、2個直列で3Vにします。
電池のマイナス極は基板上のパッドのみとなりますが、このパッドに少しハンダを盛ることで安定します。

組み立て

attinyなどの面をリフローしたのち、はんだコテで頑張って7セグメントLEDをつけます。その後UPDIから書き込み、もう一枚の基板を保護用としてスペーサーでサンドイッチにします。
ツイストペアとPHでネックレスとしての紐を作成して繋げます。

常設版

電池ホルダーを使わずに常時外部電源供給で、計算機類のambient温度を(grafana等の可視化画面を見ずに現地で)確認できるリアル「只今の気温」もできます。

今後の展望

本作の固定表示モードは「4℃」の表示がされているだけで、実際に本作の表面温度が摂氏4度になっているわけではありません
ペルチェ素子をつけてPID制御し、4℃の温度を維持することでリラックス効果(?)の得られる製品の作成が望まれます。

謝辞

元ネタの皆様、宝飾品を含め各メーカー・店舗の皆様に感謝いたします。
なお、本作は個人の趣味で作成したに過ぎず、これらの権利を侵害等をする意図はなく、また、関わりもございません。販売・頒布等もされておりません。

  1. 一部の部品は秋月電子秋葉原店では「店頭在庫なし、取り寄せのみ」となっています。店舗受取サービスで受け取りましょう。

  2. 生成AIによると、「仮に目安として4mm×4mm、厚さ0.1mmのシリコンダイと仮定すると、$\mbox{体積} = 4\mbox{mm} \times 4\mbox{mm} \times 0.1 \mbox{mm} = 1.6 \mbox{mm}^3 = 0.0016 \mbox{cm}^3$ となり、$\mbox{重さ} = \mbox{体積} \times \mbox{密度} = 0.0016 \mbox{cm}^3 \times 2.33 \mbox{g/cm}^3 \approx 0.0037 \mbox{g} = 3.7 \mbox{mg}$となります。3つのICすべてが上記と同じ重さであると仮定すると、合計の重さは$3.7\mbox{mg/個} \times 3 \mbox{個} = 11.1 \mbox{mg}$となり、これをカラットに換算すると、$11.1\mbox{mg} \div 200 \mbox{mg/ct} \approx 0.0555 \mbox{ct}$となります。結論として、SOP8、SOP14、SOP16の3つのICに含まれるシリコンダイの合計の重さは、一般的なICのサイズに基づくと、約0.05から0.1カラット程度の非常にわずかな重さであると推測されます。」とのことです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?