子育てしながらエンジニアしたい

現在 3 歳女の子の子育て中エンジニアによる、技術系 + 日常系ブログ。

Ymobile から楽天モバイルに MNP した

技術的なカタイお話ばっかりだったので、たまには日常的な話を。

Emobile 時代だった Nexus 5 から、Nexus 5x へと使い続けてきた Ymobile。
契約更新月になったので、そろそろ MVNO にするかと思い立ち、各社 SIM のプランを調べてみました。
自分の使い方としては、月のデータ量 2~3GB + 短い音声通話が多いので、その条件で一番安い SIM を調べてみることに。

結果、楽天モバイルのスーパーホーダイ S にすることにしました。

楽天モバイルの月額試算

まず楽天モバイルのスーパーホーダイ S は以下のような条件です。

  • 月のデータ量 2 GB
  • 5 分の通話は何度でも無料 (楽天でんわから)
  • 楽天会員なら 1 年目は 2,138 円 / 月 (2 年目以降は 3,218 円)
  • 契約手数料 3,665 円 (税込)

この条件で、1 年契約ができるなら、1 年間だけ使えば最も安そうです。
1 年後にまた新たなプランが出てるのかもしれませんが、それはそれで嬉しいので良しとします。

また、申込みは価格コム経由ですることにしました。
価格コム経由だと \11,100 キャッシュバックがあり、他のサイトよりも良さそうだったからです。

kakaku.com

これに MNP 転出手数料 3,240 円 (税込) も加えると、1 年間のトータルで月額はこんな感じになります。

(2,138 x 12 (月額) + 3,665 (契約手数料) + 3,240 (MNP 転出手数料) - 11,100 (キャッシュバック)) / 12 = 1,788 円 / 月

今の Ymobile は約 4,300 円 / 月なので半額以下です。
安い!!

Mineo や UQ mobile なども調べましたが、ここまでの安さは実現できませんでした。
ということで楽天モバイルに決定!

Ymobile での MNP 予約番号発行

楽天モバイルに申し込む前に、まずは Ymobile で MNP の予約番号を取る必要があります。
My Ymobile からもできるようですが、わかりづらかったので音声ガイダンスでやりました。
Ymobile 端末から 116 にかけて、ガイダンスにしたがって操作します。
下記のページには MNP の項目はありませんでしたが、音声ガイダンスを聞いていたらちゃんとありました。

www.ymobile.jp

最終的にはオペレーターにつながります。
転出先とか転出理由を聞かれましたが、まぁそこはなんでも良いでしょう。

MNP 予約番号は SMS で送られてきます。

楽天モバイルの申し込み

さっきも書きましたが価格コム経由で。

kakaku.com

申込後、身分証明書の写真をアップロードする必要があります。
その後、自分の場合は 2 日間で SIM カードが届きました。

Nexus 5x の SIM ロック解除

SIM カードが届きましたが、Nexus 5x は SIM ロックがかかっているので解除しないといけません。
My Ymobile から手続きできます。

契約内容の確認・変更 -> ご契約内容の確認 -> SIM ロック解除の手続き

という感じで SIM ロック解除のメニューに入れます。
製造番号 (IMEI) を入れろと出てくるので、Nexus 5x の端末情報から IMEI 番号を探して入力します。
すると、SIM ロック番号というのが発行されます。

そうしたら、

Nexus 5x の電源 OFF -> 楽天モバイルの SIM 挿入 -> Nexus 5x の電源 ON

します。
そこで SIM ロック番号を入れるよう表示が出るので、さきほどの番号を入力します。
ハイフンは不要なので番号だけ入れれば良いようです。

これで晴れて SIM が使えるようになる・・・のですが、ここでもう一度 Ymobile の SIM に戻す必要があります。
なぜなら MNP 開通手続きをするのに、Ymobile の SIM を入れた状態で楽天モバイル開通受付センターに電話しないといけないからです。
この電話を終えたら、あらためて楽天モバイルの SIM を入れましょう。

楽天モバイルの SIM 開通

送られてきたガイドにしたがって、APN 情報などを入力します。
書かれているとおりに入力したら、無事に開通しました。

実際の使用感は、またそのうちにでも・・・

Wemos Lolin ESP32 OLED で、BME280 温湿度センサーを使う

前回の記事で、ESP32 OLED の画面に文字や図形を出力できるようになりました。

edosha.hatenablog.jp

しかし、これではまだ単体で動作しているだけです。
せっかくの組み込みデバイスなので、センサーをつなげてみたい...
ということで、わかりやすい (?) 温湿度センサーをつなげてみることにしました。

温湿度センサー BME280

BME280 は Bosch 社が出している温湿度センサーです。
温度、湿度、気圧を 1 つのセンサーで計測することができます。

www.bosch-sensortec.com

このセンサーを組み込みやすくするために、いろいろなところからモジュール化された製品が発売されています。
秋月電子スイッチサイエンスが有名どころだと思いますが、ちょっと高いのでケチって以下のものにしました。
Amazon なので他のものと合わせ買いして、送料もケチります。

接続

BME280 のピン配置については以下のサイトが詳しく記載してくれています。

ht-deko.com

また、ESP32 OLED の I2C ピンは前回の記事のように以下の配置になっています。

  • SCL: GPIO 4
  • SDA: GPIO 5

よって以下のようにつなぎます。

BME280 ESP32
VCC 3.3V
GND GND
SCL GPIO 4
SDA GPIO 5
CSB 未接続
SDO GND

ちょっと見にくいかもしれませんが、以下のような感じです。

f:id:edosha:20180112143806j:plain

MicroPython BME280 ドライバーの導入

ありがたいことに MicroPython 用の BME280 ドライバーを公開してくださっている方がいます。

github.com

bme280.py を、前回のように uPyCraft を使って ESP32 にダウンロードしましょう。

Python コード

あとは BME280 ドライバーの仕様にしたがって値を取得するだけです。
せっかくなので、取った値を OLED にも出力してみました。

import bme280
import ssd1306

i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5))
bme = bme280.BME280(i2c=i2c)
oled = ssd1306.SSD1306_I2C(width=128, height=64, i2c=i2c)

def show():
    oled.fill(0)
    oled.text(bme.values[0], 0, 0)
    oled.text(bme.values[1], 0, 10)
    oled.text(bme.values[2], 0, 20)
    oled.show()

show()

f:id:edosha:20180112145343j:plain

取れた!!!!
一つ一つ、やってることは簡単なことなのですが、実際に取れると感動します。

なお画像には、関係ないボタンがうつってますが、これは次回以降使おうと思って設置したものです。
次は何をするか決めてませんが... 乞うご期待 (?)

Wemos Lolin ESP32 OLED で、MicroPython から OLED 出力をする

前回の記事で、ESP32 に MicroPython を導入することができました。

edosha.hatenablog.jp

これで ESP32 上で Python REPL を動かせるようになりました。
今回は、せっかくついている OLED に文字や図形を出力してみたいと思います。
それにあたって、便利のために MicroPython 用の IDE も導入することにしました。

uPyCraft (IDE) の導入

uPyCraft は DFRobot 社が無償で提供している、MicroPython 用の IDE です。

uPyCraft

IDE とはいっても、Python のコーディングには PyCharm を使っているので、uPyCraft はファイル転送用に使います。

uPyCraft のダウンロード

最新版は Github の以下のページからダウンロードするようです。

github.com

exe ファイルはインストーラではなく、IDE の実体です。
なのでインストール等の必要はなく、ただ exe を開けば良いようです。

uPyCraft にポートの設定をする

uPyCraft から ESP32 を見えるようにするため、ポートの設定をします。
これはとても簡単で、uPyCraft の Tools -> Serial から適切なポートを選ぶだけです。
ポートは前回の記事のようにデバイスマネージャーで確認できます。

f:id:edosha:20180111130201p:plain

OLED に出力する

Wemos Lolin ESP32 OLED にのっている OLED は、SSD1306 というモジュールのようです。
ありがたいことに MicroPython では、SSD1306 のドライバーがすでに用意されています。
このドライバーを導入すれば、非常に簡単に OLED 出力をすることができます。

ドライバーの導入

MicroPython の Github から、ssd1306.py をダウンロードします。

github.com

これを uPyCraft を使って、ESP32 にダウンロードすれば導入完了です。
ダウンロードしたいファイルを開いて、Tools -> Download すればダウンロードできます。
うまくいくと、左側の device ディレクトリにファイルが追加されます。

f:id:edosha:20180111130614p:plain

ドライバーを使って OLED に出力する

I2C か SPI を使って OLED に出力することができます。
ひとまず I2C を使ってみることにしました。
I2C を使う場合は、SCL と SDA を指定する必要があります。
Wemos Lolin ESP32 OLED では、それぞれ以下のように接続されています。

  • SCL: GPIO 4
  • SDA: GPIO 5

これを ssd1306 ドライバーに教えてあげましょう。

import ssd1306
import machine

i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5))
oled = ssd1306.SSD1306_I2C(width=128, height=64, i2c=i2c)

上で作った oled インスタンスを介して、文字などを OLED 出力します。
ssd1306.py では、MicroPython の framebuf クラスを使って文字出力などを実現しています。
そのため framebuf のメソッドをそのまま使うことができます。

framebuf — Frame buffer manipulation — MicroPython 1.9.3 documentation

なお framebuf の引数で、色を指定する c がありますが、この OLED は 0 か 1 以上しか判定しないようです。
0 で消去、1 で描画というイメージです。

  • 文字出力
oled.text("Hello", 0, 0)
oled.show()

f:id:edosha:20180111133619j:plain

  • 直線をひく
oled.line(0, 0, 128, 64, 1)
oled.show()

f:id:edosha:20180111133857j:plain

  • 四角をかく
oled.rect(10, 10, 108, 44, 1)
oled.show()

f:id:edosha:20180111133923j:plain

  • 塗りつぶす
oled.fill(1)
oled.show()

f:id:edosha:20180111133834j:plain

まとめ

今回は OLED に文字出力ができるようになりました。
次回はより IoT っぽく (?)、BME280 温湿度センサーモジュールから値を取得して、OLED 出力してみたいと思います。