工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視

必要な部品と用品

Arduino UNO ×1
HC-SR04 超音波距離センサー ×1
ブレッドボード(汎用) ×1
1kΩ 抵抗 ×4
ESP8266 ESP-01 モジュール ×1
ジャンパーワイヤー(汎用) ×15

アプリとオンラインサービス

プロジェクトについて

キッチンのジャー(瓶)の中身量を超音波センサーで測定し、ESP8266経由でWi-Fi送信、ローカルサーバー(PHP+MySQL)に蓄積・Web表示するIoTプロトタイプです。お母さんの秘密のレシピ材料の残量をリアルタイムで把握できます。

ステップ1: 構成要素

ハードウェア: Arduino UNO、HC-SR04、空きジャー(透明推奨)、ブレッドボード、ESP-01、ジャンパーワイヤー、1kΩ抵抗×2(ESP-01のTX/RXレベルシフト用)、USBケーブル。
ソフトウェア: Arduino IDE、テキストエディタ(Notepad++等)、Apacheサーバー(XAMPP等)、MySQLデータベース。

ステップ2: 配線

ステップ3: Arduinoスケッチ(要点)

#include <SoftwareSerial.h>
SoftwareSerial esp(2, 3);  // RX, TX

long duration;
int distance;

void setup() {
  Serial.begin(9600);
  esp.begin(9600);
  // ATコマンドでESP初期化
  sendAT("AT", 3000);
  sendAT("AT+CIOBAUD=9600", 1000);
  sendAT("AT+CWMODE=1", 2000);  // Stationモード
  sendAT("AT+CWJAP=\"SSID\",\"PASSWORD\"", 10000);  // Wi-Fi接続
  pinMode(9, OUTPUT);  // Trig
  pinMode(10, INPUT);  // Echo
}

void loop() {
  // 超音波測定
  digitalWrite(9, LOW); delayMicroseconds(2);
  digitalWrite(9, HIGH); delayMicroseconds(10);
  digitalWrite(9, LOW);
  duration = pulseIn(10, HIGH);
  distance = duration * 0.034 / 2;  // cm

  // ESP経由でHTTP GET送信
  sendAT("AT+CIPSTART=\"TCP\",\"YOUR_SERVER_IP\",80", 5000);
  sendAT("AT+CIPSEND=80", 2000);
  esp.print("GET /your_php_script.php?distance=");
  esp.print(distance);
  esp.println(" HTTP/1.1\r\nHost: YOUR_SERVER_IP\r\n\r\n");
  delay(5000);  // 送信間隔
}

void sendAT(String cmd, int wait) {
  esp.println(cmd);
  long t = millis();
  while (millis() - t < wait) {
    if (esp.available()) Serial.write(esp.read());
  }
}

ステップ4: サーバー側 - データベース挿入PHP

<?php
// insert.php
$conn = new mysqli("localhost", "user", "pass", "smartjar");
$dist = $_GET['distance'];
$stmt = $conn->prepare("INSERT INTO measurements (distance_cm, created_at) VALUES (?, NOW())");
$stmt->bind_param("i", $dist);
$stmt->execute();
$stmt->close();
$conn->close();
?>

ステップ5: サーバー側 - データ表示PHP

<?php
// display.php
$conn = new mysqli("localhost", "user", "pass", "smartjar");
$result = $conn->query("SELECT * FROM measurements ORDER BY created_at DESC LIMIT 20");
echo "<table><tr><th>Time</th><th>Distance (cm)</th></tr>";
while ($row = $result->fetch_assoc()) {
  echo "<tr><td>{$row['created_at']}</td><td>{$row['distance_cm']}</td></tr>";
}
echo "</table>";
$conn->close();
?>

ステップ6: データベース設定 (phpMyAdmin)

CREATE DATABASE smartjar;
USE smartjar;
CREATE TABLE measurements (
  id INT AUTO_INCREMENT PRIMARY KEY,
  distance_cm INT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

ステップ7: テストとトラブルシューティング

GitHubリポジトリ

完全なコードとREADME: https://github.com/santynaren/iotsmartjar

回路図

ブレッドボード配線図を参照。ESP-01のレベルシフト(1k/2kΩ分圧)と電源安定化(コンデンサ追加推奨)が重要ポイント。

製造プロセス

  1. Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
  2. Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
  3. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  4. Arduinoで超音波レベーション(浮遊)装置を自作:ステップバイステップガイド
  5. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  6. ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
  7. DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド
  8. 1Sheeldで作るスマートホーム自動化&セキュリティシステム
  9. Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
  10. スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
  11. ArduinoとESP8266で作るWi-Fi対応スマートドアロック — スマホで解錠