Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MicroPython + ESP32
2017年4月23日
PyCon mini Kumamoto 2017
西本卓也 @24motz / nishimotz@gmail.com
1
おまえ誰よ
• PyCon JP mini 2011
• スクリーンリーダーNVDAの紹介
• 広島移住
• PyCon JP 2012
• 併催イベント NVDA 日本語チーム
• PyCon mini Hiroshima 2015 実行委員...
ESP-WROOM-32
3
• WiFi モジュール ESP8266
• Arduino IDE
• ESP32 登場
• Bluetooth 対応追加
• デュアルコア化
• モジュール700円
• 開発ボード1480円
• akizuki...
ESP32 Dev board
4
MicroPython by Damien George
5https://www.youtube.com/watch?v=EvGhPmPPzko
MicroPythonの動く環境
6
2013年 PyBoard
STM32F4DISCOVERY (ARM Cortex-M4)
GitHub で公開
2016年 ESP8266
Unix 移植版
各種マイコンへの移植
走る無線ルーター
(P...
ソースからビルド (Ubuntu)
• https://github.com/micropython/micropython-
esp32/tree/esp32/esp32
• https://ja.nishimotz.com/micropyt...
ペーストモード Ctrl-E / Ctrl-D
import machine
pin2 = machine.Pin(2, machine.Pin.OUT)
pin2.value(1)
paste mode; Ctrl-C to cancel, ...
LED 点滅
MicroPython v1.8.6-645-gf3913bf-dirty on 2017-03-
26; ESP32 module with ESP32
Type "help()" for more information.
>...
スイッチを読む
BOOT スイッチ
押してない状態 : pin0 = 1
押した状態 : pin0 = 0
>>> import machine
>>> pin0 = machine.Pin(0,machine.Pin.IN)
>>> pin0...
TouchPad
D12 にリード線をつなぐ → 触ると数字が減る
import machine
import time
t = machine.TouchPad(machine.Pin(12))
while True:
time.sleep(...
タッチでLチカ
import machine
import time
pin2 = machine.Pin(2,machine.Pin.OUT)
t = machine.TouchPad(machine.Pin(12))
while True:...
タッチでLチカ as main.py
with open('main.py', 'w') as f:
f.write('import machinen')
f.write('import timen')
f.write('pin2 = mach...
コード補完と履歴
>>> p
[tab]
>>> pin14
. [tab]
>>> pin14.
init value low high
irq IN OUT OPEN_DRAIN
PULL_UP IRQ_RISING IRQ_FALLING...
独自のファイルシステム
>>> import os
>>> os.
__name__ uname urandom dupterm
dupterm_notify VfsFat listdir mkdir
rmdir chdir getcwd re...
WebREPL
• webrepl.html を入手してブラウザで実行
• ファイルのアップロード、ダウンロード
16
まとめ : MicroPython + ESP32
• 言語としては同じPython
• デジタル入出力のデバイスを扱うライブラリ
• ターミナル、エディタ、ブラウザで開発
• 開発にも運用にも役立つWiFi
• ESP32 開発ボード
• M...
Upcoming SlideShare
Loading in …5
×

MicroPython + ESP32

1,762 views

Published on

2017年4月23日
PyCon mini Kumamoto 2017 LT
西本卓也

Published in: Technology
  • Be the first to comment

  • Be the first to like this

MicroPython + ESP32

  1. 1. MicroPython + ESP32 2017年4月23日 PyCon mini Kumamoto 2017 西本卓也 @24motz / nishimotz@gmail.com 1
  2. 2. おまえ誰よ • PyCon JP mini 2011 • スクリーンリーダーNVDAの紹介 • 広島移住 • PyCon JP 2012 • 併催イベント NVDA 日本語チーム • PyCon mini Hiroshima 2015 実行委員長 • PyCon mini Hiroshima 2016 実行委員長 • Python Boot Camp in 広島 (TA) → すごい広島 • RubyKaigi 2017 Organizer 2
  3. 3. ESP-WROOM-32 3 • WiFi モジュール ESP8266 • Arduino IDE • ESP32 登場 • Bluetooth 対応追加 • デュアルコア化 • モジュール700円 • 開発ボード1480円 • akizukidenshi.com
  4. 4. ESP32 Dev board 4
  5. 5. MicroPython by Damien George 5https://www.youtube.com/watch?v=EvGhPmPPzko
  6. 6. MicroPythonの動く環境 6 2013年 PyBoard STM32F4DISCOVERY (ARM Cortex-M4) GitHub で公開 2016年 ESP8266 Unix 移植版 各種マイコンへの移植 走る無線ルーター (PyCon JP 2016 LT)
  7. 7. ソースからビルド (Ubuntu) • https://github.com/micropython/micropython- esp32/tree/esp32/esp32 • https://ja.nishimotz.com/micropython 7
  8. 8. ペーストモード Ctrl-E / Ctrl-D import machine pin2 = machine.Pin(2, machine.Pin.OUT) pin2.value(1) paste mode; Ctrl-C to cancel, Ctrl-D to finish === import machine === pin2 = machine.Pin(2, machine.Pin.OUT) === pin2.value(1) === >>> 8 Copy Paste Ctrl+D Ctrl+E
  9. 9. LED 点滅 MicroPython v1.8.6-645-gf3913bf-dirty on 2017-03- 26; ESP32 module with ESP32 Type "help()" for more information. >>> import machine >>> pin2 = machine.Pin(2,machine.Pin.OUT) >>> pin2.value(1) >>> pin2.value(0) 9
  10. 10. スイッチを読む BOOT スイッチ 押してない状態 : pin0 = 1 押した状態 : pin0 = 0 >>> import machine >>> pin0 = machine.Pin(0,machine.Pin.IN) >>> pin0.value() 1 >>> pin0.value() 0 EN スイッチを押すとリブートする(逆じゃないのか) 10
  11. 11. TouchPad D12 にリード線をつなぐ → 触ると数字が減る import machine import time t = machine.TouchPad(machine.Pin(12)) while True: time.sleep(0.1) print(t.read()) 11
  12. 12. タッチでLチカ import machine import time pin2 = machine.Pin(2,machine.Pin.OUT) t = machine.TouchPad(machine.Pin(12)) while True: time.sleep(0.5) pin2.value(1 if t.read() < 1000 else 0) 12
  13. 13. タッチでLチカ as main.py with open('main.py', 'w') as f: f.write('import machinen') f.write('import timen') f.write('pin2 = machine.Pin(2,machine.Pin.OUT)n') f.write('t = machine.TouchPad(machine.Pin(12))n') f.write('while True:n') f.write(' time.sleep(0.5)n') f.write(' pin2.value(1 if t.read() < 1000 else 0)n') 13
  14. 14. コード補完と履歴 >>> p [tab] >>> pin14 . [tab] >>> pin14. init value low high irq IN OUT OPEN_DRAIN PULL_UP IRQ_RISING IRQ_FALLING >>> pin14.low() >>> pin14.high() → 上矢印キーで pin14.low() 呼び出し 14
  15. 15. 独自のファイルシステム >>> import os >>> os. __name__ uname urandom dupterm dupterm_notify VfsFat listdir mkdir rmdir chdir getcwd remove rename stat statvfs umount >>> os.listdir() ['boot.py', 'port_config.py', 'led.py', 'httpd.py', 'ssd1306.py'] 15 boot.py と main.py は起動時に実行
  16. 16. WebREPL • webrepl.html を入手してブラウザで実行 • ファイルのアップロード、ダウンロード 16
  17. 17. まとめ : MicroPython + ESP32 • 言語としては同じPython • デジタル入出力のデバイスを扱うライブラリ • ターミナル、エディタ、ブラウザで開発 • 開発にも運用にも役立つWiFi • ESP32 開発ボード • MicroUSBケーブル、モバイルバッテリーがあれば • LED点滅(Lチカ)→パーツで拡張 • ブレッドボードでプロトタイピング • 近い未来にBLE対応 17

×