Help us understand the problem. What is going on with this article?

littleBitsでレジっぽく商品をスキャンする

More than 3 years have passed since last update.

こんにちは。mfunakiと申します。SAPという会社でDigital Transformationでビジネスを変える!との旗印のもと、デザイン思考のワークショップをファシリテートする中で、出てきたアイデアからBusiness Model Canvasを使ってビジネスモデルを導き出したり、(SAPではExperience Prototypingという言い方をしますが)完成度としてはLo-Fiな(最終プロダクトほどの完成度でなくとも)顧客体験を検証できるようなプロトタイプをクイックにお客さんと作るなんてお仕事をしています。平たく言うと、「アイデアが良いだの悪いだの評価するのはやめようぜ。プロトがイケてるイケてないを評価してクイックにバージョンアップ重ねていこうよ」と言い続けるお仕事です。

littleBitsらしさ

さて、みなさんの考えるlittleBitsらしさって何でしょう? 私にとっては、「磁石でくっついたり離れたりする(しかもいったん電源切ったりしなくていい)」というところです。littleBitsアドベントカレンダーに何回か書かせていただければと思いますが、まずは、PostIt感覚で張り替え(つなぎ変え)が気軽にできる利点を生かしたサンプルをご紹介させていただければと思います。

littleBitsを使った簡易レジの材料

ICタグでもバーコードでも何でもいいのですが、商品情報を読み取るようなレジを作っていきたいと思います。とはいうものの、littleBitsにはバーコードリーダーbitがあるわけでも、RFIDリーダーbitがあるわけでもないので、Arduino bitを使ってちょっと工夫してみます。
材料はこちら。
* p1 power x 1 (および電池、電池ケーブル)
* w1 wire x 5
* w2 branch x 1
* w6 arduino x 1
* w7 fork x 1
* i1 slide switch x 3 (説明する上で見やすいのでslide使っていますが、実際にはi6 dimmer x 3のほうが良いと思います)
* o14 bright led x 3

これらのbitを次の写真に挙げるようにつなげます。
IMG_20161208_083040.jpg

プログラミング

Arduino bitにはこんなプログラムを流し込みます。

boolean LED1 = false;
boolean LED2 = false;
boolean LED3 = false;

void setup(){

  pinMode(1, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT);

  digitalWrite(1, LOW);
  digitalWrite(5, LOW);
  digitalWrite(9, LOW);
}

void loop(){
  Serial.begin(115200);

  int pot = analogRead(A0);
  int val = float(pot)/1023.5 * 99.9;

  delay(10);

  checkVal(val);
}


void checkVal(int v) {
   if (v >= 0 && v <= 25) { LED1 = false; LED2 = false; LED3 = false; } 
   if (v > 25 && v <= 50) { LED1 = true;  LED2 = false; LED3 = false; }
   if (v > 50 && v <= 75) { LED1 = false; LED2 = true;  LED3 = false; }
   if (v > 75 && v <= 99) { LED1 = false; LED2 = false; LED3 = true;  }

   if (LED1) {digitalWrite(1, HIGH);} else {digitalWrite(1, LOW);}
   if (LED2) {analogWrite(5, v);  } else {analogWrite(5, 0);}
   if (LED3) {analogWrite(9, v);  } else {analogWrite(9, 0);}
}

簡単に言えば、Arduinoのアナログ入力(a0)に入った値によって、4つの状態(オフ、値1、値2、値3)に場合分けし、3つのLEDをオン、オフするというものです。入力の値はslide switchやdimmerを使いますが、値にはアナログなゆらぎがあるので、幅を持たせるようにしています。

slide switchをスライドさせながら、出力される値の増減に応じてLEDが付いたり消えたりする動きをご覧ください。

littleBits - Arduino使ってLED順番にチカチカ

品物スキャン

スライドのさせ具合を変えたslide switchを3種類用意して、つなぎ変えることで、品物スキャン的な動作をさせることができます。ここでは、イチゴ、ブドウ、
オレンジに対応するslide switchをArduinoにつなげることで、対応するLEDが光っています。

littleBits - マグネット使って品物スキャン

さらに発展させるには

今回のサンプルでは、3つまでの品物のそれぞれについてLEDの点滅分けをしてみたわけですが、さらなる発展としては、
* 点滅分けではなく、number bit(o21)に値段を表示させる
* number bitを2つ接続し、スキャン(接続)した品物の値段、および合計金額を表示させる
* 品物のスキャン(接続)時にbuzzer(o6)から音を出す
* cloudBit(w20)でクラウドにつなぎ、購買履歴からリコメンデーションする

ほかにもいろいろ考えてプロトタイピングしてみていただければと思います。

昔話

以前はp1 power, p3 usb powerの他にp2 coin batteryというのがあったので、バッテリー+dimmerでもっとこじんまり、かつワイヤレスな品物実装ができたのですが、どこに行ってしまったんでしょうかね?

それではまたどこかでお会いしましょう。さようなら!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした