上司離着席検知システムの作り方
お疲れ様です。高橋です。
上司離着席検知システムの作り方は下記の通りです。
必要な部品と価格
必要な部品は下記の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のピン配置
回路図
クライアント側
サーバ側
スケッチ
クライアント側
#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);
}
参考サイト
きむ茶工房ガレージハウス – 赤外線測距モジュールで物体の距離を測ってみます(1/2)
以上、よろしくお願い致します。
関連記事
-
-
Arduino nano互換機でオナラ検知デバイス
お疲れ様です。高橋です。 今日のお昼、会社の大先輩から、綺麗にケーシングした自作 …
-
-
FM音源YM2203をArduinoで鳴らしたい #2
お疲れ様です。高橋です。 先に結論 FM楽曲及びPSG楽曲の演奏に成功しました。 …
-
-
音階LEDの再設計
お疲れ様です。高橋です。 本日帰宅途中に電車をぼーっと待っている時、ふと、音階L …
-
-
ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン(難航)
お疲れ様です。高橋です。 先日から引き続いて、ATTiny13Aで赤外線リモコン …
-
-
秋月製ESP-WROOM-02が動いた
お疲れ様です。高橋です。 秋月で買ったESP-WROOM-02が動きました。AT …
-
-
猫×おもちゃ×動画×アプリ
お疲れ様です。高橋です。 金魚水槽 先日フラフラとネットサーフィンしていて目に入 …
-
-
満員電車内でのオナラと検知 #3
お疲れ様です。高橋です。 先日秋月で購入した音声合成LSIのATP3011。やっ …
-
-
FM音源 FB-01の動作試験
お疲れ様です。高橋です。 先日、会社の大大大先輩からFB-01を貰ったので、本日 …
-
-
MIDI INの実験
お疲れ様です。高橋です。 Arduino+YMZをMIDI化するための第一歩の実 …
-
-
電子オルゴール 基板実装 #2 ~ワイヤストリッパー~
お疲れ様です。高橋です。 先日秋葉原でワイヤーストリッパーを買ってきました。 被 …
- PREV
- 上司離着席検知システムの開発
- NEXT
- 上司離着席検知システムと空巣検知



