本IoT PoC Systemは、 Raspberry pi と Arduinoを用いた温度測定システムである。
Raspberry pi 上の全アプリは、Docker 上で動作可能としている。
本システムは、Raspberry pi と Arduino が連携することで、温度測定を実施する。 Arduinoを用いて、温度測定およびLED警告を実装している。 LED警告では、20度から30度の間は、緑のLED、それ以外の温度は赤のLEDが発光する。 Raspberry piによって、温度測定の結果を表示する。
必要なものとしては、以下がある。
- Arduino
- 温度センサ (LM75B)
- 抵抗 100Ω (いわゆる、茶黒茶金)
- LED (緑と赤)
- ジャンパー線とブレッドボード
- Raspberry pi
配線の詳細は、下記の表を参照
Aruduino pin | LM75B | LED (RED) | LED (GREEN) |
---|---|---|---|
5V | VCC | ||
A5 | SCL | ||
A4 | SDA | ||
GND | GND | ||
GND | カソード(短足) | ||
DIGITAL 13 | アノード (長足) | ||
GND | カソード (短足) | ||
DIGITAL 12 | アノード (長足) |
- Aruduino IDEをダウンロード
下記のリンク先よりダウンロード
https://www.arduino.cc/en/Main/Software
- スケッチ、検証、書き込み
ソースコードは、以下
#include<Wire.h>
#define LM75B_address 0x48
#define temp_reg 0x00
#define REDLED 13
#define GREENLED 12
void setup() {
// put your setup code here, to run once:
Wire.begin();
Serial.begin(9600);
// temp sensor setup
Wire.beginTransmission(LM75B_address);
Wire.write(temp_reg);
Wire.endTransmission();
// Led
pinMode(REDLED,OUTPUT);
pinMode(GREENLED,OUTPUT);
}
void judge(double temp){
// judge temp < 30 or temp >=30
if (temp >= 20 && temp <= 30){
digitalWrite(REDLED,LOW);
digitalWrite(GREENLED,HIGH);
}else {
digitalWrite(GREENLED,LOW);
digitalWrite(REDLED,HIGH);
}
}
void loop() {
// put your main code here, to run repeatedly:
signed int temp_data=0;
double temp = 0.0;
Wire.requestFrom(LM75B_address,2);
while(Wire.available()){
temp_data |= (Wire.read()<<8);
temp_data |= Wire.read();
}
temp = (temp_data>>5)*0.125;
Serial.println(temp);
judge(temp);
delay(3000);
}
以下のコマンドを実行
# git clone
git clone https://github.com/nicuo/Sensor_app.git
# Docker インストール
sudo apt-get update
sudo apt-get install docker.io
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
# Docker file 実行
cd Sensor_app/
sudo docker build -t nicuo/sensor .
sudo docker run -ti --privileged nicuo/sensor
nicuo
- Aruduino
Aruduinoに関しては、修正なし - Raspberry Pi
Raspberry pi に関しては、Docker fileの追加によって、コンテナ上で動作するように変更した
- Aruduino
Aruduinoに関しては、完成した。 - Raspberry Pi
Raspberry pi に関しては、シリアル通信により、Arduinoの温度の計測の取得及び計測温度の画面表示には、成功した