SORACOM IoT レシピ:Arduinoで作る勤怠記録IoTボタン
紹介日: 2024年2月
レシピ難易度:★★☆☆☆
本レシピでは、IoT スターターキット for Arduinoを用いて、時間帯により機能が自動的に切り替わる多機能ボタン(Multifunction Button)の製作方法を解説します。
多機能ボタンの例として、午前中にボタンを押すと「出勤時間(Punch-In)」が、午後に押すと「退勤時間(Punch-Out)」が記録される勤怠確認ボタンを作成していきます。
記録内容はSORACOM Harvest Dataへ送信されるため、データを蓄積したり、パソコンなどのブラウザ上で確認したりすることが出来るようになっています。
また、記録される内容や、記録内容が切り替わるタイミングは、使用目的に合わせてスケッチの内容を書き換えることで、利用者自身で簡単に変更が可能です。
本レシピを行うのに必要な時間、概算費用
本レシピは以下の通りです
- 必要な時間: 約60分
- 概要費用: 10,978円
※ 概算費用: ハードウェアや SORACOM を始めとした各種サービスの概ねの費用 (送料などの付帯費用や無料枠適用は考慮しないものとしています)
使用する SORACOM サービス
- IoTデータ収集・蓄積サービス SORACOM Harvest
用意するもの
品名 | 数量 | 費用 | 備考 |
IoT スターターキット for Arduino | 1 | 10,978円 | 本レシピの処理を行うArduino UNO互換マイコンボードと通信モジュール、センサー、SIMカード等がセットになった商品です。 |
開発用パソコン | 1 | ― | Arduino UNO互換マイコンボードにプログラムを書き込む際に必要です。 |
(オプション) USB 変換アダプタ | 1 | ― | パソコンに USB Type-A ポートがない場合に準備してください。1A 以上の電力が供給できるものを利用してください。(USB 3.0以上に対応していれば概ね問題ありません) |
- 金額はレシピ作成時の金額となり、税込・送料別です。その他は参考価格となります。また、開発用パソコンやオプションと記載されているものの金額は含まれません。
このコンテンツの進め方
上から内容を読み進みながら作業を行なっていきます。また左サイドに追従する目次からページ内の移動が可能です。
本コンテンツは現状のままで提供され、株式会社ソラコムは、誤りがないことの保証を含め、明示であると黙示であるとを問わず、本コンテンツの記載内容につき、いかなる種類の表明も保証も行いません。
掲載情報の閲覧及び利用により、利用者自身、もしくは第三者が被った損害に対して、直接的、間接的を問わず、株式会社ソラコムは責任を負いかねます。
本コンテンツを実践する中で用意された機器、利用されたサービスについてのご質問は、それぞれの機器やサービスの提供元にお問い合わせをお願いします。機器やサービスの仕様は、本コンテンツ作成当時のものです。
株式会社ソラコムが提供する機器・サービスについてのご質問はフォームで受け付けております。機器・サービスご利用前の導入相談は https://soracom.jp/contact/ に、機器・サービスご利用開始後のサポートは、SORACOMユーザーコンソール内のサポートサイトから「リクエストを送信」(要ログイン)にてお問い合わせください。
Copyright (c) 2023 SORACOM, INC.
IoT スターターキット for Arduino とは?
IoTを一度体験してみたい初心者の方や、IoTビジネスの導入・拡大を検討されている方向けのスターターキットです。キット内容には、Arduino UNO互換マイコンや、無線通信機能を提供してくれるデバイス LTE-M Shield for Arduino、10種類のモジュール(温湿度センサー、ボタン、ブザーなど)、SIMカードなどが含まれています。
「各種モジュールをマイコンArduino UNOで制御し、センサーなどで得られた情報をLTE-M通信によって遠隔地に送信・共有する」という基本的なIoTシステムを簡単に構築できます。
IoT スターターキット for Arduinoをセットアップする
1. デバイスを組み立てます。
「IoT スターターキット for Arduino を準備する」で説明されている手順に従い、デバイスを組み立ててください。
2. パソコン側で開発環境を整えます。
「IoT スターターキット for Arduino の開発環境を準備する」で説明されている手順に従い、Arduino IDEやライブラリのインストールなどを進めてください。
3. LTE-M Shield for Arduino の初期設定を行います。
「LTE-M Shield for Arduino の初期設定と接続確認をする」で説明されている手順に従い、初期設定を行ってください。
スケッチ connectivity_diagnostics_for_lte_m_shield.ino をマイコンに書き込み、通信接続がきちんと確認できたら、セットアップは完了です。
SORACOM Harvest Dataを有効化する
SORACOM Harvest Dataへ記録データを送信するために、今回使用しているSIMカードの設定を変更していきます。
1. SORACOM ユーザーコンソールにログインします。
SORACOM ユーザーコンソール にログインしてください。
2. SIM管理画面を開きます。
SORACOM ユーザーコンソールにログインした後、[メニュー]>[SIM 管理]をクリックしてください。
3. グループを作成し、SIMカードをそのグループに追加します。
- SORACOMが提供するサービスの1つである「グループ」システムについては、グループ設定 をご覧ください。
今回使用しているSIMカードにチェックを付け、[操作]>[所属グループ変更]とクリックしてください。
「新しい所属グループ」のプルダウンボックスをクリックした後、[新しいグループを作成…]をクリックしてください。
グループ名(例えば、スターターキット)を入力して[グループ作成]をクリックしてください。
今作成したグループが変更先になっていることを確認したら、[グループ変更]をクリックしてください。
[グループ変更]をクリックすると、自動的にSIM管理画面に戻ります。
SIMの「グループ」欄を見て、正しく設定がなされていることを確認してください。
4. SORACOM Harvest Dataを有効化します。
SIM 管理画面から、利用するSIMを所属させたグループ名(例えば、スターターキット)をクリックしてください。
[基本設定] >[SORACOM Harvest Data 設定]をクリックして開いてください。
「SORACOM Harvest Data 設定」でスイッチをクリックし、OFFからONに切り替えてください。そして、[保存]をクリックしてください。
※ その後、表示される「SORACOM Harvest Data が有効になっています」ダイアログでは[OK]をクリックしてください。
スケッチを書き込む
1. マイコンにスケッチを書き込みます。
Arduino IDE を起動し[ファイル]>[新規スケッチ]をクリックしてください。
以下の記述がある「空のスケッチ」が表示されます。
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
このスケッチの内容を一度削除し、スケッチ multifunctionButton.ino の内容で置き換えてください。
置き換えたスケッチをArduino UNO互換マイコンに書き込んでください。
- 書き込む際は、Arduino IDEでボードやポートの設定を間違えないように気をつけてください。
2. 動作状況を確認します。
書き込みが完了したら、Arduino IDEの右上にある[シリアルモニタ]ボタンをクリックしてください。
以下のようにシリアルモニタの設定を行ってください。
- ボーレート: 115200 baud
- 改行コード: CR および LF
※「自動スクロール」や「タイムスタンプを表示」は、お好みで有効化してください。
以下のような結果がシリアルモニタに表示されたら、作業は完了です。
多機能ボタンの動作を確認する
OLEDディスプレイには、そのタイミングにおける機能(Function、記録内容)が明記されます。また、ディスプレイ最下部には現在時刻が表示されます。
以下の写真は午前中に撮影したものであるため、記録内容Function部分には「Punch-In」と表示されています。午後になると、この部分の表示が「Punch-Out」に自動的に切り替わります。
ボタンを押すと、現在時刻が表示されていた部分に「REPORTING」という表示が現れます。このとき裏では、SORACOM Harvest Dataへ打刻情報を送信する処理が実行されています。
そして、この処理が完了すると「REPORTED」という表示に切り替わり、約1秒後には自動的にまた現在時刻の表示へと戻ります。
次に、記録された内容をSORACOM Harvest Dataで確認してみましょう。
SORACOM ユーザーコンソールにログインし、SIM管理画面を開きます。今回使用しているSIMカードにチェックを付け、[操作]>[データを確認]とクリックしてください。
SORACOM Harvest Data画面が表示され、ボタンの打刻状況を確認できます。
表の「データ」欄における
- {“report”: 1 } は「出勤(Punch-In)」
- {“report”: 2 } は「退勤(Punch-Out)」
にそれぞれ対応しています。
そのため、上記の表から、以下の記録が為されていることを確認できます。
記録内容 | 日付 | 時刻 | |
1 | 退勤 | 2023年11月22日 | 12時30分 |
2 | 退勤 | 2023年11月22日 | 12時3分 |
3 | 出勤 | 2023年11月22日 | 11時52分 |
4 | 出勤 | 2023年11月22日 | 11時46分 |
記録内容やその内容が切り替わるタイミングの変更方法
ボタンを押すことで記録される内容や、その記録内容が切り替わるタイミングは、利用者自身が使用目的に合わせて簡単に変更できるようになっています。
1. 記録内容の変更
スケッチ multifunctionButton.ino の18〜21行目部分に注目します。
// 記録内容
// <注意> スペースを利用して文字列の長さを揃える
#define Function1 "Punch-In "
#define Function2 "Punch-Out"
デフォルトで Punch-In / Punch-Out となっている部分をお好みの記録内容に書き換えてください。
ただし注意点があります。Function1とFunction2とで文字数が同じになるよう、スペースを利用して揃えてください。
2. 切り替えタイミングの変更
スケッチ multifunctionButton.ino の23〜25行目部分に注目します。
// 機能を切り替える時間
#define TargetHour 12 // 時
#define TargetMinute 0 // 分
デフォルトで 12 (時) 0 (分)となっている部分をお好みの時間に書き換えてください。ここで設定した時間にFunction1からFunction2へと切り替わるようになります。
※ Function2からFunction1への切り替わりは、日付が変わるタイミングで行われます。
スケッチ解説:現在時刻の取得
スケッチ multifunctionButton.ino の164〜165行目部分で、現在時刻の取得を行っています。
// 現在時刻の取得
String dateTime = modem.getGSMDateTime(DATE_TIME);
TinyGSMライブラリのgetGSMDateTime()を利用しています。この関数は、携帯電話ネットワークからLTE-M通信を介して現在の日時を取得してくれます。
- TinyGSMライブラリについての詳細は、公式ドキュメントをご参照ください。