Tag Archives: Arduino

ESP-WROOM-02を購入してみました

Raspberry Pi Zeroが結構話題になっておりますが使い道が思いつかず手が出せていなかったところ
Wi-Fiに接続でき、Arduino IDEで手軽に開発できて500円くらいで買える凄いモジュールを教えていただいたので購入してきました。

STEINS○GATEに出てくる”未来ガジェット研究所”の近くに行けばaitendoさんの店舗だったよな・・・
と記憶を辿って行ってみるとシャッターが閉まっており、調べたら移転されていたようでした。

新店舗なのですが、いっそう店内の商品が充実しており思わず財布の紐が緩みそうでした。

いくつかピッチ変換基板が発売されていますが今回はIFB1518J-Aを購入しました。
肝心のESP-WROOM-02なのですが、店舗販売価格だと特価で500円で売られておりました。
IFB1518J-Aが120円なので10kΩのチップ抵抗ふくめると、ひとセットあたり620円とチョットで買えました。
image

半田付けするために3Dプリンター用に買っていた耐熱マスキングテープで固定しました。
半田のノリを良くするために無水エタノールで接着面を磨いてフラックスも足に塗っておきます。
image

小手先に多めに半田を盛って十分加熱しながらゆっくりスライドさせて半田を乗せれば完成です。
image

裏面にENとRSTピン用のプルアップ抵抗を取り付けるためのパターンがあるのでチップ抵抗(10kΩ)を載せます。
もちろん無水エタノールで磨いてフラックスを塗っておきます。
image

片方を適当に半田で接着したあとに、小手先で加熱しながらピンセットでズラして正しい位置に合わせます。
正しい位置で固定できたら反対側も手早く半田を盛れば完成です。

ついでに、GPIO2は常にHigh、GPIO15は常にLowで良いようなのでショートさせておきます。
というのもESP-WROOM-02にはスケッチを書き込むモードと書き込んだスケッチを実行するモードがあり以下のような操作が必要なようです。

UART Download Mode(スケッチを書き込むモード)
GPIO0(Low) GPIO2(High) GPIO15(Low)

Flash Boot Mode(書き込んだスケッチを実行するモード)
GPIO0(High) GPIO2(High) GPIO15(Low)

※ よってGPIO0とRSTにはHigh/Lowを切り替えられるようにスイッチをつなぐ必要があるようです。

image

最後に、基板に付いたフラックスを無水エタノールで拭いておくと綺麗に仕上がります。

RC-S620/SをFeliCaカードに成りきらせて好きなIDmで応答するようにする

IMG_3999
※ ArduinoとRC-S620/Sの接続については(ArduinoでRELET(FeliCa電子マネー残高照会機)モドキを作ろう)で図を描いているのでそちらを参考にしてください。

ライブラリの拡張

公式で提供されているArduino用ライブラリを拡張する必要があります。

RCS620S.h 29行目付近に追加

int tginit(const uint8_t* idm);

RCS620S.cpp 80行目付近に追加

int RCS620S::tginit(const uint8_t* idm)
{
    uint8_t  response[RCS620S_MAX_RW_RESPONSE_LEN];
    uint16_t responseLen;

    /* TgInitTarget command parts */
    uint8_t command[RCS620S_MAX_RW_RESPONSE_LEN] = {0x00};
    uint8_t param_1[ 9] = {0xd4, 0x8c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40};
    uint8_t param_2[10] = {0xff};

    /* Make TgInitTarget command */
    memcpy(&command[ 0], param_1,  9);
    memcpy(&command[ 9], idm,      8);
    memcpy(&command[17], param_2, 10);
    memcpy(&command[27], idm,      8);

    /* Execute TgInitTarget */
    rwCommand(command, 41, response, &responseLen);

    return 1;
}

スケッチの作成

Arduino側のスケッチ

#include <RCS620S.h>
#include <string.h>

RCS620S rcs620s;

void setup()
{
  int ret;

  Serial.begin(115200);
  ret = rcs620s.initDevice();
  while (!ret) {}
}

void loop()
{
  int ret;
  
  // SET IDm
  ret = rcs620s.tginit((const uint8_t*)"\x08\x07\x06\x05\x04\x03\x02\x01");
  rcs620s.rfOff();
}