curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

上司離着席検知システムの作り方

 

お疲れ様です。高橋です。

上司離着席検知システムの作り方は下記の通りです。

必要な部品と価格

必要な部品は下記の4種類です。

Arduino Pro Mini(互換機も可) – 秋月価格: 1,400円 * 2個 = 2,800円

2.4GHz帯無線モジュール – aitendo価格: 390円 * 2個 = 780円

IR測距センサ – 秋月価格: 450円

LED(赤と青) – aitendo価格: 3円 * 2個 = 6円

合計 4,036円

日本で買うとこのような価格となります。

AliExpress参考価格

中国のECサイト AliExpress で購入すると・・・

Arduino Pro Mini互換機 AliExpress価格: 200円 * 2個 = 400円

2.4GHz帯無線モジュール – AliExpress価格: 131円 * 2個 = 262円

IR測距センサ – AliExpress価格: 511円

LED(赤と青) – AliExpress価格: 1円 * 2個 = 2円

合計 1,175円

となります。IR測距センサーはSHARP製だからなのか、秋月で購入したほうが安く済みます。

IR測距センサだけを秋月で購入した場合、1,114円となります。

日本の価格の27%。驚異的な価格競争力です。

中国の物の安さは、バカな物を気楽に少量だけ作ろうとする人にとっては、とてもありがたい。

無線モジュールnRF24L01のピン配置

IMG_5470

回路図

クライアント側

090301_client

サーバ側

090302_server

スケッチ

クライアント側
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define IR_SOKKYO_PIN 1

void setup() {
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"serv1");
  Mirf.payload = sizeof(unsigned long);
  Mirf.config();

}

void loop() {
  const byte irChakuseki = 10;
  const byte irRiseki = 20;
  byte sendData[Mirf.payload];

  if (!Mirf.isSending() && Mirf.dataReady()) {
    Mirf.getData(sendData);
    Mirf.setTADDR((byte *)"clie1");
    int val = AnaToCm(IDSread());
    if (val != 0) {
      sendData[0] = irChakuseki;
    } else {
      sendData[0] = irRiseki;
    }
    Mirf.send(sendData);
  }
}

int IDSread() {
  long ans ;
  int i ;

  ans = 0 ;
  for (i = 0 ; i < 100 ; i++) {
    ans  = ans + analogRead(IR_SOKKYO_PIN) ;
  }
  return ans / 100 ;
}

int AnaToCm(int analogValue) {

  if (analogValue < 85 ) return (0) ;
  if (analogValue >= 470) return (10) ;
  if (analogValue >= 260) return (20) ;
  if (analogValue >= 165) return (30) ;
  if (analogValue >= 126) return (40) ;
  if (analogValue >= 105) return (50) ;
  if (analogValue >= 85 ) return (60) ;
  return (-1) ;
}
サーバ側
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define CHAKUSEKI 3
#define RISEKI 2

void setup() {
  pinMode(CHAKUSEKI, OUTPUT);
  pinMode(RISEKI, OUTPUT);
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"clie1");
  Mirf.payload = sizeof(unsigned long);
  Mirf.config();
  digitalWrite(CHAKUSEKI, LOW);
  digitalWrite(RISEKI, HIGH);
}

void loop() {
  const byte irChakuseki = 10;
  const byte irRiseki = 20;
  unsigned long time = millis();
  byte recvData[Mirf.payload];

  Mirf.setTADDR((byte *)"serv1");
  Mirf.send(recvData);
  while (Mirf.isSending()) {
  }
  while (!Mirf.dataReady()) {
    if ((millis() - time) > 1000 ) {
      return;
    }
  }
  Mirf.getData(recvData);
  if (recvData[0] == irChakuseki) {
    digitalWrite(CHAKUSEKI, HIGH);
    digitalWrite(RISEKI, LOW);
  } else {
    digitalWrite(CHAKUSEKI, LOW);
    digitalWrite(RISEKI, HIGH);
  }
  delay(1000);
}

参考サイト

なんでも独り言 – nRF24L01モジュールで無線通信

きむ茶工房ガレージハウス赤外線測距モジュールで物体の距離を測ってみます(1/2)

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

YMZシールドの作成 #1

お疲れ様です。高橋です。 実体配線図を書き起こしておいたYMZシールドの半田付け …

赤外線リモコンをケースに格納

お疲れ様です。高橋です。 先日作ったATtiny13Aの赤外線リモコンを、ケース …

抵抗が焼けた – Arduinoで赤外線リモコン

お疲れ様です。高橋です。 今日の実験中、抵抗が焼けてしまいました。 なんか異臭が …

耳コピを簡単にするミキサー構想

お疲れ様です。高橋です。 私が普段耳コピをする時は、iPhoneで音楽を鳴らしな …

webからUSBカメラ+Raspberry Pi

お疲れ様です。高橋です。 The Internetから、RaspberryPiの …

FM音源YM2203をArduinoで鳴らしたい #1

お疲れ様です。高橋です。 きっかけ 4月から現在に掛けてのコロナな最近、会社のと …

bluetoothモジュールHC-06とAndroid

お疲れ様です。高橋です。 先日AliExpressで購入したbluetoothモ …

100均で買ったボリュームコントロール付きステレオ延長コードを、バブ型スピーカーに搭載してみた。

お疲れ様です。高橋です。 先日作ったバブ型スピーカーですが、実は裏側がとても汚い …

シフトレジスタLED付きのYMZ294回路をFritzingに起こしてみた。

お疲れ様です。高橋です。 ユニバーサル基板で作ったYMZボードと、音階LED及び …

ブレッドボード上のYMZ294をユニバーサル基板化してみたが。

お疲れ様です。高橋です。 ArduinoからYMZを鳴らしているブレッドボードが …