注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 愛好者コミュニティ (Facebook) へようこそ! Raspberry Pi、Arduino、ESP32 を仲間と一緒にさらに深く学びましょう。

参加する理由

  • 専門的なサポート: 販売後の問題や技術的な課題をコミュニティとチームで解決。

  • 学びと共有: 技術やチュートリアルを交換し、スキルを向上。

  • 限定プレビュー: 新製品発表や先行情報に早期アクセス。

  • 特別割引: 新製品を特別価格で購入可能。

  • イベント・プレゼント企画: プレゼントや季節キャンペーンに参加。

👉 一緒に探求し、創造しましょう。今すぐ [ここ] をクリックして参加!

3.1.7 過熱モニター (MCP3008)

注釈

../_images/mcp3008_and_adc0834.jpg

キットのバージョンによって ADC0834 または MCP3008 が含まれています。 該当するセクションを選択してください。

はじめに

工場などで回路の過熱が発生した際に警報を出したり、機械を自動的に停止させたい場合があります。 このプロジェクトでは、サーミスタ・ジョイスティック・ブザー・LED・LCD を使用して、しきい値を調整可能なスマート温度監視装置を作成します。

必要な部品

このプロジェクトには以下の部品が必要です。

../_images/list2_Overheat_Monitor.png

部品をまとめて購入するのが便利です。リンクはこちら:

名前

キット内数量

リンク

Raphael Kit

337

Raphael Kit

以下から個別に購入することもできます。

部品紹介

購入リンク

GPIO拡張ボード

購入

ブレッドボード

購入

ジャンパーワイヤー

購入

抵抗器

購入

LED

購入

ジョイスティックモジュール

-

MCP3008

-

トランジスタ

購入

I2C LCD1602

購入

サーミスター

購入

ブザー

-

回路図

T-Board 名

physical

wiringPi

BCM

SPICE0

Pin 24

10

8

SPIMOSI

Pin 19

12

10

SPIMISO

Pin 21

13

9

SPISCLK

Pin 23

14

11

GPIO22

Pin 15

3

22

GPIO23

Pin 16

4

23

GPIO24

Pin 18

5

24

SDA1

Pin 3

SCL1

Pin 5

../_images/Schematic_three_one8.png

実験手順

ステップ 1: 回路を組み立てます。

../_images/july24_3.1.8_overheat_monitor_mcp3008.png

ステップ 2: コードのあるフォルダに移動します。

cd ~/raphael-kit/c/3.1.7-2/

ステップ 3: コードをコンパイルします。

gcc 3.1.7_OverheatMonitor.c -lm -lwiringPi

ステップ 4: 実行ファイルを実行します。

sudo ./a.out

コードを実行すると、現在温度と高温しきい値 40I2C LCD1602 に表示されます。 現在温度がしきい値を超えると、ブザーと LED が作動して警告します。

ジョイスティック は高温しきい値を調整するために使用します。 ジョイスティックを X 軸または Y 軸方向に倒すと、しきい値が上下に調整されます。 ジョイスティックを押すとしきい値は初期値にリセットされます。

注釈

  • 「wiringPi.h: No such file or directory」というエラーが出た場合は WiringPiのインストールと確認 を参照してください。

  • 「Unable to open I2C device: No such file or directory」というエラーが出た場合は I²C 設定 を参照し、I2C を有効にして配線を確認してください。

  • コードや配線が正しいのに LCD が表示しない場合は、裏面のポテンショメータを回してコントラストを調整してください。

コード解説

int read_ADC(int channel) { ... }

MCP3008 の指定チャネル (CH0〜CH7) から 10 ビットのアナログ値を読み取り、0〜1023 の整数値を返します。

int get_joystick_value() { ... }

ジョイスティックの X 軸・Y 軸のアナログ値を読み取り、方向に応じて整数値を返します。

void upper_tem_setting() { ... }

ジョイスティックを使用して高温しきい値を調整します。方向を押し続けても連続変化しないようにしています。

double temperature() { ... }

CH0 に接続されたサーミスタのアナログ値を読み取り、Steinhart–Hart 式を用いて摂氏温度を計算します。

void monitoring_temp() { ... }

現在温度としきい値を LCD に表示し、温度がしきい値を超えた場合にブザーと LED を動作させます。

void setup_all() { ... }

LCD、SPI、ジョイスティックボタン、ブザー、LED 用の GPIO を初期化します。

int main(void) { ... }

メインループでは次の 2 つのモードを切り替えます:

  1. 温度監視

  2. ジョイスティックによるしきい値調整

ジョイスティックボタンが押されて離されたとき (立ち上がりエッジ) にモードが切り替わります。