Help us understand the problem. What is going on with this article?

M5Stack MicroPython API調査記録 RTC編

More than 1 year has passed since last update.

※ 2018年3月2日現在

本家MicroPythonのESP32版ではまだESP8266版にあるようなmachine.RTCクラスが実装されていませんが、M5Stack版では実装されています。

M5Stack版はPycom版のAPI仕様がベースになっているようで、NTPによる時刻同期ができます。また、ピン入力でディープスリープから起こす設定のAPIが拡張されています。

クラス machine.RTC

リアルタイムクロックのためのクラス。

from machine import RTC

rtc = RTC()
rtc.init((2018, 1, 7, 23, 13, 0, 0, 0))
print(rtc.now())

コンストラクタ

class machine.RTC()

RTCオブジェクトを作成する。

from machine import RTC

rtc = RTC()

メソッド

rtc.init(datetime)

RTCを指定した日時 datetime で初期化する。

datetime - RTCに設定する現在日時。次の形式のタプルで指定する: (year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

tzinfo は指定しても無視される。したがって日時は標準時で与えること。

rtc.now()

現在日時をローカルタイムで返す。返す形式は次の形式のタプル: (year, month, day, hour, minute, second, microsecond)

ローカルタイムは現状、常に UTC+8 になってしまう。

rtc.ntp_sync(server, update_period=3600, tz=CST-8)

NTP (SNTP)を使って時刻同期を行う。

server - NTP サーバ

update_period - 更新間隔(秒)。最小間隔は60秒

tz - タイムゾーン。日本時間の場合は 'JST-9' を指定しておけばよい。

rtc.ntp_sync('ntp.nict.jp', tz='JST-9')

※時刻同期できていなくても時刻を更新してしまうのはいまいち。

rtc.synced()

直前の ntp_sync() による時刻同期が完了していれば True を返す。

rtc.ntp_sync('ntp.nict.jp')
for _ in range(100):
    if rtc.synced():
       break

rtc.wake_on_ext0(pin=None, level=False)

ピンからのデジタル入力でディープスリープから起こす設定を行う。

pin - デジタル入力に設定した machine.Pin オブジェクト

level - デジタル入力の False/True どちらに反応するかを指定

# ボタンCを押したらディープスリープから起きるようにする
rtc.wake_on_ext0(machine.Pin(37, machine.Pin.IN), False)

# 60秒間のディープスループに入る
machine.deepsleep(60000)

rtc.wake_on_ext1(pins=None, level=False)

複数ピンからのデジタル入力でディープスリープから起こす設定を行う。

pins - デジタル入力に設定した machine.Pin オブジェクトのリスト

level - デジタル入力の False/True どちらに反応するかを指定

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした