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でした。
-> 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