WiPy 用クイックリファレンス
以下は CC3200/WiPy 用のクイックリファレンスです。このボードを初めて使う場合は、まず次の節を読むことを検討してください:
ボード全般の制御(スリープモードを含む)
machine モジュールを参照してください:
import machine
help(machine) # machine モジュールの全メンバーを表示
machine.freq() # CPU の周波数を取得
machine.unique_id() # ボードの6バイトの一意な id を返します(WiPy の MAC アドレス)
machine.idle() # 平均電流が (~12mA) まで下がり、任意の割り込みで復帰します
machine.lightsleep() # WLAN 以外のすべてが電源断になります(平均電流 ~950uA)
# Pin、RTC、WLAN から復帰します
machine.deepsleep() # 最も深いスリープモード。MCU はリセットから開始します。Pin と RTC から復帰します。
ピンと GPIO
machine.Pin を参照してください。
from machine import Pin
# GP2 を gpio モード (alt=0) で初期化して出力にします
p_out = Pin('GP2', mode=Pin.OUT)
p_out.value(1)
p_out.value(0)
p_out.toggle()
p_out(True)
# GP1 をプルアップ有効の入力にします
p_in = Pin('GP1', mode=Pin.IN, pull=Pin.PULL_UP)
p_in() # 値を取得、0 か 1
タイマー
machine.TimerWiPy と machine.Pin を参照してください。タイマーの id は 0 から 3 までの値を取ります。:
from machine import Timer
from machine import Pin
tim = Timer(0, mode=Timer.PERIODIC)
tim_a = tim.channel(Timer.A, freq=1000)
tim_a.freq(5) # 5 Hz
p_out = Pin('GP2', mode=Pin.OUT)
tim_a.irq(trigger=Timer.TIMEOUT, handler=lambda t: p_out.toggle())
PWM (パルス幅変調)
machine.Pin と machine.Timer を参照してください。
from machine import Timer
# タイマー1を PWM モードにします。幅は 16 ビットでなければなりません
tim = Timer(1, mode=Timer.PWM, width=16)
# チャネル A を 1KHz、デューティサイクル 50.55% で有効にします
tim_a = tim.channel(Timer.A, freq=1000, duty_cycle=5055)
ADC (アナログ・デジタル変換)
machine.ADCWiPy を参照してください。
from machine import ADC
adc = ADC()
apin = adc.channel(pin='GP3')
apin() # 値を読み取り、0〜4095
UART (シリアルバス)
machine.UART を参照してください。
from machine import UART
uart = UART(0, baudrate=9600)
uart.write('hello')
uart.read(5) # 最大 5 バイトを読み込み
SPI バス
machine.SPI を参照してください。
from machine import SPI
# SPI コントローラを 2MHz で設定
spi = SPI(0, SPI.CONTROLLER, baudrate=2_000_000, polarity=0, phase=0)
spi.write('hello')
spi.read(5) # バス上で 5 バイトを受信
rbuf = bytearray(5)
spi.write_readinto('hello', rbuf) # 5 バイトを送信して受信
I2C バス
machine.I2C を参照してください。
from machine import I2C
# I2C バスを設定
i2c = I2C(baudrate=100000)
i2c.scan() # ペリフェラルのアドレスのリストを返します
i2c.writeto(0x42, 'hello') # アドレス 0x42 のペリフェラルに 5 バイト送信
i2c.readfrom(0x42, 5) # ペリフェラルから 5 バイト受信
i2c.readfrom_mem(0x42, 0x10, 2) # ペリフェラル 0x42 のメモリ 0x10 から 2 バイト読み込み
i2c.writeto_mem(0x42, 0x10, 'xy') # ペリフェラル 0x42 のメモリ 0x10 に 2 バイト書き出し
ウォッチドッグタイマー (WDT)
machine.WDT を参照してください。
from machine import WDT
# WDT をタイムアウト 5s で有効化(最小値は 1s)
wdt = WDT(timeout=5000)
wdt.feed()
リアルタイムクロック (RTC)
machine.RTC を参照してください
from machine import RTC
rtc = RTC() # デフォルトの時刻と日付で初期化
rtc = RTC(datetime=(2015, 8, 29, 9, 0, 0, 0, None)) # 特定の時刻と日付で初期化
print(rtc.now())
def alarm_handler (rtc_o):
pass
# ブロックしない処理を行います
# 注意: irq の中から telnet 経由で表示することはできません。
# UART 経由でのみ可能です
# 5 秒後に切れる RTC アラームを作成
rtc.alarm(time=5000, repeat=False)
# RTC 割り込みを有効化
rtc_i = rtc.irq(trigger=RTC.ALARM0, handler=alarm_handler, wake=machine.SLEEP)
# RTC アラームが切れて復帰させてくれるのを待つサスペンドモードに入ります
machine.lightsleep()
SD カード
machine.SD を参照してください。
from machine import SD
import vfs
# クロックピン、コマンドピン、データ0ピン
sd = SD(pins=('GP10', 'GP11', 'GP15'))
# または拡張ボード用のデフォルトのピンを使います
sd = SD()
vfs.mount(sd, '/sd')
WLAN (WiFi)
network.WLAN と machine を参照してください。
import machine, network
from network import WLAN
# WLAN サブシステムをステーションモードで設定(デフォルトは AP)
wlan = WLAN(mode=WLAN.STA)
# 固定 IP の設定にします
network.ipconfig(dns='8.8.8.8')
wlan.ipconfig(addr4='192.168.0.107/24', gw4='192.168.0.1')
wlan.scan() # 利用可能なネットワークをスキャン
wlan.connect(ssid='mynetwork', auth=(WLAN.WPA2, 'mynetworkkey'))
while not wlan.isconnected():
pass
# WLAN での復帰を有効化
wlan.irq(trigger=WLAN.ANY_EVENT, wake=machine.SLEEP)
# スリープに入ります
machine.lightsleep()
# この状態で FTP か Telnet のサーバーに接続すると WiPy が復帰します
Telnet と FTP のサーバー
network.Server を参照してください
from network import Server
# 新しいユーザー、パスワード、タイムアウト(秒)で初期化
server = Server(login=('user', 'password'), timeout=60)
server.timeout(300) # タイムアウトを変更
server.timeout() # タイムアウトを取得
server.isrunning() # サーバーが動作しているかどうかを確認
ハートビート LED
wipy を参照してください。
import wipy
wipy.heartbeat(False) # ハートビート LED を無効化
wipy.heartbeat(True) # ハートビート LED を有効化
wipy.heartbeat() # ハートビートの状態を取得