Ymobile から楽天モバイルに MNP した
技術的なカタイお話ばっかりだったので、たまには日常的な話を。
Emobile 時代だった Nexus 5 から、Nexus 5x へと使い続けてきた Ymobile。
契約更新月になったので、そろそろ MVNO にするかと思い立ち、各社 SIM のプランを調べてみました。
自分の使い方としては、月のデータ量 2~3GB + 短い音声通話が多いので、その条件で一番安い SIM を調べてみることに。
結果、楽天モバイルのスーパーホーダイ S にすることにしました。
楽天モバイルの月額試算
まず楽天モバイルのスーパーホーダイ S は以下のような条件です。
この条件で、1 年契約ができるなら、1 年間だけ使えば最も安そうです。
1 年後にまた新たなプランが出てるのかもしれませんが、それはそれで嬉しいので良しとします。
また、申込みは価格コム経由ですることにしました。
価格コム経由だと \11,100 キャッシュバックがあり、他のサイトよりも良さそうだったからです。
これに 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 の項目はありませんでしたが、音声ガイダンスを聞いていたらちゃんとありました。
最終的にはオペレーターにつながります。
転出先とか転出理由を聞かれましたが、まぁそこはなんでも良いでしょう。
MNP 予約番号は SMS で送られてきます。
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 を入れましょう。
Wemos Lolin ESP32 OLED で、BME280 温湿度センサーを使う
前回の記事で、ESP32 OLED の画面に文字や図形を出力できるようになりました。
しかし、これではまだ単体で動作しているだけです。
せっかくの組み込みデバイスなので、センサーをつなげてみたい...
ということで、わかりやすい (?) 温湿度センサーをつなげてみることにしました。
温湿度センサー BME280
BME280 は Bosch 社が出している温湿度センサーです。
温度、湿度、気圧を 1 つのセンサーで計測することができます。
このセンサーを組み込みやすくするために、いろいろなところからモジュール化された製品が発売されています。
秋月電子やスイッチサイエンスが有名どころだと思いますが、ちょっと高いのでケチって以下のものにしました。
Amazon なので他のものと合わせ買いして、送料もケチります。
HiLetgo BME280 大気圧センサ 温湿度センサー ブレイクアウト Arduinoに対応 [並行輸入品]
- 出版社/メーカー: HiLetgo
- メディア:
- この商品を含むブログを見る
接続
BME280 のピン配置については以下のサイトが詳しく記載してくれています。
また、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 |
ちょっと見にくいかもしれませんが、以下のような感じです。
MicroPython BME280 ドライバーの導入
ありがたいことに MicroPython 用の BME280 ドライバーを公開してくださっている方がいます。
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()
取れた!!!!
一つ一つ、やってることは簡単なことなのですが、実際に取れると感動します。
なお画像には、関係ないボタンがうつってますが、これは次回以降使おうと思って設置したものです。
次は何をするか決めてませんが... 乞うご期待 (?)
Wemos Lolin ESP32 OLED で、MicroPython から OLED 出力をする
前回の記事で、ESP32 に MicroPython を導入することができました。
これで ESP32 上で Python REPL を動かせるようになりました。
今回は、せっかくついている OLED に文字や図形を出力してみたいと思います。
それにあたって、便利のために MicroPython 用の IDE も導入することにしました。
uPyCraft (IDE) の導入
uPyCraft は DFRobot 社が無償で提供している、MicroPython 用の IDE です。
IDE とはいっても、Python のコーディングには PyCharm を使っているので、uPyCraft はファイル転送用に使います。
OLED に出力する
Wemos Lolin ESP32 OLED にのっている OLED は、SSD1306 というモジュールのようです。
ありがたいことに MicroPython では、SSD1306 のドライバーがすでに用意されています。
このドライバーを導入すれば、非常に簡単に OLED 出力をすることができます。
ドライバーの導入
MicroPython の Github から、ssd1306.py をダウンロードします。
これを uPyCraft を使って、ESP32 にダウンロードすれば導入完了です。
ダウンロードしたいファイルを開いて、Tools -> Download すればダウンロードできます。
うまくいくと、左側の device ディレクトリにファイルが追加されます。
ドライバーを使って 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()
- 直線をひく
oled.line(0, 0, 128, 64, 1) oled.show()
- 四角をかく
oled.rect(10, 10, 108, 44, 1) oled.show()
- 塗りつぶす
oled.fill(1)
oled.show()
まとめ
今回は OLED に文字出力ができるようになりました。
次回はより IoT っぽく (?)、BME280 温湿度センサーモジュールから値を取得して、OLED 出力してみたいと思います。