M5Stickc plus

https://isehara-3lv.sakura.ne.jp/blog/2023/02/17/mifareカードリーダー/

M5StackでRFカードリーダーのアプリ作ろうと思っていましたが、カードリーダー専用ならばM5Stackである必要性はないので、より小型のM5Stickc plusを使ってみました。

サイズの差、

動かしてみたところ、

M5StackとM5Stickc plusにはいくつか差分がありますが、以下はM5Stickc plus用のコードです。

主な違いを列挙すると、

    1. ライブラリは別です、PlatformIO使うときにM5Stack用のソースから書き換えにはplatforio.iniの書き換えが必要です。
    2. 画面はローテーションしないと幅が狭すぎて使いづらいので横方向で使います。
    3. 内蔵の赤LEDをカード読み取り信号として使っています。
    4. 内蔵のブザーも同じ目的で使っています。

5. 電源オンオフは、M5」と書かれたボタンを正面に見て左側にあるボタンを6秒長押しすると電源が切れます。電源ONは同じボタンを押します

    6. リセットは対応するボタンがないので、ネット情報を参考にBボタンに割り当てています。
    7. 本体の取り付けは2mmネジです(現物合わせ)、長すぎると本体を破壊しそうですが、係りはおよそ3mmぐらいです。ネジ穴センター間の距離は実測で15.8mmでした。
    1. -> P.S. たまたま目にした図面によると、ネジ穴センター間の距離は16mmのようです。
/*
to change for the M5stickc-plus 2023/2/23
*******************************************************************************
* Copyright (c) 2022 by M5Stack
*                  Equipped with M5Core sample source code
*                          配套  M5Core 示例源代码
* Visit for more information: https://docs.m5stack.com/en/core/gray
* 获取更多资料请访问: https://docs.m5stack.com/zh_CN/core/gray
*
* Describe: RFID.
* Date: 2021/8/19
*******************************************************************************
  Please connect to Port A(22、21),Use the RFID Unit to read the Fudan card ID
and display the ID on the screen. 请连接端口A(22、21),使用RFID Unit
读取ID卡并在屏幕上显示。
*/

#include <m5stickcplus.h>

#include "MFRC522_I2C.h"

MFRC522 mfrc522(0x28);  // Create MFRC522 instance.  创建MFRC522实例

void setup() {
    M5.begin();             // Init M5Stack.  初始化M5Stack
    //M5.Power.begin();       // Init power  初始化电源模块
    M5.Lcd.setRotation(3);
    M5.lcd.setTextSize(2);  // Set the text size to 2.  设置文字大小为2
    M5.Lcd.println("MFRC522 RFC reader");
    Wire.begin();  // Wire init, adding the I2C bus.  Wire初始化, 加入i2c总线
    Serial.begin(115200);

    mfrc522.PCD_Init();  // Init MFRC522.  初始化 MFRC522
    M5.Lcd.println("Please put the card\n\nUID:");
    // LED port as output & set to "OFF"
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
}

void loop() {
    // reset by B button push
    if(M5.BtnB.wasPressed()){
        esp_restart();
    }
    M5.update();

    M5.Lcd.setCursor(40, 47);
    if (!mfrc522.PICC_IsNewCardPresent() ||
        !mfrc522.PICC_ReadCardSerial()) {  //如果没有读取到新的卡片
        delay(200);
        return;
    }
    M5.Lcd.fillRect(42, 47, 240, 20, BLACK);
    for (byte i = 0; i < mfrc522.uid.size;
         i++) {  // Output the stored UID data.  将存储的UID数据输出
        M5.Lcd.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
        M5.Lcd.print(mfrc522.uid.uidByte[i], HEX);
        Serial.print(mfrc522.uid.uidByte[i], HEX);
        // beep & LED on for 50ms    
        M5.Beep.tone(880);
        digitalWrite(10, LOW);
        delay(50);
        M5.Beep.mute();
        digitalWrite(10, HIGH);
    }
    M5.Lcd.println("");
    Serial.println("");
}

M5Stackファミリーも後から出てくるハードの方が進化しています。

 

admin