LoginSignup
6
2

More than 3 years have passed since last update.

M5AtomMatrixで重量の検査

Last updated at Posted at 2020-05-05

M5AtomMatrixが届いたので早速…

M5StickCと違ってバッテリーが搭載されていません。
電源供給さえなければ、きちんと電源が落ちる 良心的設計。
横のボタンのリセットボタンを押せばちゃんと再起動してくれる。

標準でLED Matrixがついているため、簡易信号が作れるなと思い、ロードセルを使って、
規定の重量になったら緑色、それを超えたら赤色→紫色になるような仕様で
野菜の重量選別機を作ろうと思いました。

image.png

M5Stackで既にロードセルを使用していた事例が紹介されていましたので参考にさせていただきました。
M5Stackで始めるセンサ・インターフェーシング (5) 重量センサとHX711
https://www.denshi.club/cookbook/arduino/m5stack/m5stack-5.html

準備するもの

M5AtomMatrix ¥1,397(税込み)

image.png
https://www.switch-science.com/catalog/6260/

ロードセル(5kgまで)

(半田付けしてあるこちらがおすすめ) ¥1300(税込み)
image.png
https://www.amazon.co.jp/dp/B07JL7NP3F/ref=cm_sw_em_r_mt_dp_U_EhIsEbG3YD690

GROVE - 4ピン-ジャンパメスケーブル(1本あればOK) ¥550(税込み)

配線図

image.png

image.png

ソース

atom.c
#include "M5Atom.h"
#include "hx711.h"

float firstReadData;
float weight;
#define M_SIZE 1.3333
#define TFT_GREY 0x5AEB
float ltx = 0; // Saved x coord of bottom of needle
uint16_t osx = M_SIZE*120, osy = M_SIZE*120; // Saved x & y coords
int old_analog = -999; // Value last displayed

HX711 scale(32, 26); // 32:DOUT 26:SCK

extern const unsigned char AtomImageData[375 + 2];

uint8_t DisBuff[2 + 5 * 5 * 3];

void setBuff(uint8_t Rdata, uint8_t Gdata, uint8_t Bdata)
{
    DisBuff[0] = 0x05;
    DisBuff[1] = 0x05;
    for (int i = 0; i < 25; i++)
    {
        DisBuff[2 + i * 3 + 0] = Rdata;
        DisBuff[2 + i * 3 + 1] = Gdata;
        DisBuff[2 + i * 3 + 2] = Bdata;
    }
}

void setup()
{
    M5.begin(true, false, true);
    delay(10);
    setBuff(0x00, 0x00, 0x00);
    M5.dis.displaybuff(DisBuff);

//下記2行の値を調整して重さ検知時の値が0に近くなるように調整します。
    scale.setOffset(8800);
    scale.setScale(1889250);
//

    scale.getGram();
    delay(1000);
    firstReadData = scale.getGram();     
}

void loop()
{
    //weight = (scale.getGram() - firstReadData) / 2.0;
    weight=0;
    weight = scale.getGram();
    Serial.print("weight: ");
    Serial.println(weight); 
    delay(100);

    if(weight<=0.5){    //何もないとき
      setBuff(0xFF, 0xFF, 0xFF);
      M5.dis.displaybuff(DisBuff);

    }else if(weight<=0.6 && weight>=0.5){
      setBuff(0x00, 0xFF, 0x00);
      M5.dis.displaybuff(DisBuff);

    }else if(weight<0.7 && weight>=0.6){
      setBuff(0xFF, 0x00, 0x00);
      M5.dis.displaybuff(DisBuff);

    }else if(weight>=0.7){
      setBuff(0xFF, 0x00, 0xFF);
      M5.dis.displaybuff(DisBuff);

    }else{
      setBuff(0xFF, 0xFF, 0x00);
      M5.dis.displaybuff(DisBuff);

      }

    M5.update();
}

M5Stack用のHX711のライブラリをダウンロードして、同じフォルダ内に解凍したファイルをコピーします。
https://github.com/m5stack/M5-ProductExampleCodes

動画

さいごに

グラム単位の正確な精度を出せてないので野菜の選別まではまだ難しいですが、
ソース内のスケールとオフセットを工夫すればうまく行けそうな気がします。

以上です。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2