上司離着席検知システムの作り方
お疲れ様です。高橋です。
上司離着席検知システムの作り方は下記の通りです。
必要な部品と価格
必要な部品は下記の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)
以上、よろしくお願い致します。
関連記事
-
-
YMZシールドの基板設計
お疲れ様です。 前に基板化したYMZ294をさらにシールド化したい事をPOSTし …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
-
-
音階LED仮組み
お疲れ様です。高橋です。 先日設計し直した音階LEDを、B型基板上に部品を載せて …
-
-
電子オルゴール 基板実装 #1
お疲れ様です。高橋です。 Pro Mini互換機を贅沢に使った電子オルゴールの仮 …
-
-
満員電車内でのオナラと検知 #2
お疲れ様です。高橋です。 最近なんだか忙しかったので、なかなか物が作れませんでし …
-
-
YMZ294の基板が動いた。
お疲れ様です。高橋です。 先日「ブレッドボード上のYMZ294をユニバーサル基板 …
-
-
Raspberry Pi2 model B
お疲れ様です。高橋です。 今年見た初夢、「猫×おもちゃ×動画×アプリ」の実現のた …
-
-
Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験
お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …
-
-
Arduino nano互換機でオナラ検知デバイス
お疲れ様です。高橋です。 今日のお昼、会社の大先輩から、綺麗にケーシングした自作 …
-
-
赤外線リモコンをケースに格納
お疲れ様です。高橋です。 先日作ったATtiny13Aの赤外線リモコンを、ケース …
- PREV
- 上司離着席検知システムの開発
- NEXT
- 上司離着席検知システムと空巣検知



