SlideShare ist ein Scribd-Unternehmen logo
1 von 34
電子工作のためのPython
MicroPython on the ESP8266
2016年11月12日
PyCon mini Hiroshima 2016 + IoTLT広島
西本卓也 @24motz / nishimotz@gmail.com
1
光線銃ゲーム!
• 銃(ライト)を当てて開始
• チャンスは5回
• カウントダウン(5〜10秒)
• 敵がきた!
• 音:ピーピーピー
• 体をそらして、銃を撃って
• 補給カプセルが届いた!
• 音:プー
• 体を近づけて、銃を撃たないで
• https://github.com/nishimotz/micropython_demo
2
ESPr One (ESP-WROOM-02)
温度センサー
明るさセンサー
超音波距離センサー
圧電ブザー
白黒モニター(128x64)
軽量スクリプト言語
• NodeMcu (eLua + node.jsの影響)
• mruby/c (ruby on PSoC5)
• IchigoJam (低価格BASICパソコン)
• MicroPython (Python3を軽量化)
3
むかしのPC、いまのマイコン
4
• NEC TK-80 (1976年) 8bit 2MHz
• NEC PC-9801RA (1989年) 32bit 16MHz
• Arduino (2005年-) 8bit 16MHz
• PCとマイコン : 経験の拡大
• 適材適所、違い、本質
PythonでPCからマイコンまで
• iPhone / iPad
• Pythonista for iOS
• PC / サーバー / データサイエンス / Deep Learning
• Windows, Mac, Linux
5
Google Cloud Vision API
6
Raspberry Pi
• 教育用コンピューター
• 2012年 英国の非営利組織
• 2016年9月 1000万台突破
• Linux (Raspbian) → Scratch, Mathematica, Python
7
超音波距離センサー
• 出した音が反射して返るまでの時間
• 音の速さをかけて2で割ると距離
8
️
Pythonで汎用入出力
9
import time, RPi.GPIO as GPIO
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(TRIG, GPIO.LOW)
while GPIO.input(ECHO) == GPIO.LOW:
off_time = time.time()
while GPIO.input(ECHO) == GPIO.HIGH:
on_time = time.time()
スマートフォンの技術
10
• Raspberry Pi 3 Model B
• 1.2GHz 64-bit 4core ARMv8 CPU (Broadcom)
• 1GB RAM
• MicroSD スロット
• WiFi / Bluetooth / Ethernet
• HDMI / USB / Audio
• GPIO
• DSI
• ソフトウェア開発
• PCやサーバーと同じ
フィジカルコンピューティング
11
• Arduino
• ワンボードマイコン
• 2005年 イタリア 教育現場から
• オープン
• 互換機
• 拡張シールド
• 無料の開発環境
• Windows/Mac対応
• C++風のプログラミング言語
• PCとUSBで接続できる
Arduino Uno
• CPU: AVR ATmega328P
• むかしのPCの性能
• フラッシュメモリ: 32KB
• 1GB(RasPi3)の約32分の1
• クロック周波数: 16MHz
• 1.2GHz(RasPi3)の約75分の1
• 消費電力は少ない
• 電池寿命、熱対策など有利
• スイッチオンで書き込んだプログラムだけ「走る」
• 特別なプログラミング環境
• ネットワーク機能の不足
12
Espressif ESP8266
13
• 中国製 低価格 WiFi モジュール
• マイコンに通信機能を
• Arduinoに接続
• シリアル接続 + AT コマンド
• 中身が解析された
• Arduino Uno より高性能(80MHz)
• gccでソフトウェアが開発可能
• オープンソースSDK
• 公式SDK
• ESP8266自身がArduino IDEの対象に
ESP-WROOM-02
• 日本の工事設計認証(技適)取得
14
ESPr Developer
(ESP-WROOM-02
開発ボード)
ESPr One
(Arduino Uno同一形状
ESP-WROOM-02開発ボード)
ESP-WROOM-02
USBシリアル変換、MicroUSB、電源回路
ユーザースイッチ、ユーザーLED
ESP-WROOM-02開発ボードを
Arduino IDEで開発する方法
15
ESPr Oneの青いLEDを点滅
16
void setup() {
pinMode(14,OUTPUT);
digitalWrite(14,HIGH);
delay(1000);
digitalWrite(14,LOW);
delay(1000);
digitalWrite(14,HIGH);
delay(1000);
digitalWrite(14,LOW);
}
void loop() {
}
• PCからMicroUSBで電源と通信
• GPIO14が青いLED
• Reset Method = nodemcu 書込モード切替不要
Arduino IDEとPython
• Arduino IDE
• 書き換えるたびにコンパイルして転送
• WiFi にたどり着くまでが長そう
• Python
• 入力してすぐに実行
• REPL : Read-Eval-Print Loop
• ソースをコピーして実行
• 従来のPython
• 少ないメモリと遅いCPUでは動かない
• OSが必要(Raspberry Pi はLinuxが動作)
17
MicroPython by Damien George
18https://www.youtube.com/watch?v=EvGhPmPPzko
MicroPythonの動く環境
19
2013年 PyBoard 2016年 ESP8266
STM32F4DISCOVERY (ARM Cortex-M4)
GitHub で公開
Unix 移植版
各種マイコンへの移植
走る無線ルーター
(PyCon JP 2016 LT)
esptoolによるインストール
https://micropython.org/download/
→ esp8266-20161017-v1.8.5.bin
$ sudo python2 -m pip install esptool
$ esptool.py
-p /dev/cu.usbserial-DN01J32J --baud 460800
write_flash --flash_size=8m
0 esp8266-20161017-v1.8.5.bin
Mac or Linux (Raspberry Pi)
20
シリアル接続(ターミナル)
$ sudo port install picocom
$ picocom --baud 115200 /dev/cu.usbserial-DN01J32J
Ctrl-A Ctrl-Z で終了
$ screen /dev/cu.usbserial-DN01J32J 115200
Windows は TeraTerm など
21
Hello MicroPython
Terminal ready
>>> print('Hello MicroPython')
Hello MicroPython
22
ペーストモード Ctrl-E / Ctrl-D
import machine
pin14 = machine.Pin(14, machine.Pin.OUT)
pin14.value(1)
paste mode; Ctrl-C to cancel, Ctrl-D to finish
=== import machine
=== pin14 = machine.Pin(14, machine.Pin.OUT)
=== pin14.value(1)
===
>>>
23
Copy
Paste
Ctrl+D
Ctrl+E
ペーストモードでない場合
>>> if True:
... print('hello')
...
hello
>>>
CPython の対話モードとは違う挙動
ipython とだいたい同じ
24
ブロックで自動的にインデント
Backspace Enter でブロック終了
コード補完と履歴
>>> 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() 呼び出し
25
WiFi APを有効化
import network
sta_if = network.WLAN(network.STA_IF) # station
sta_if.active(False)
ap_if = network.WLAN(network.AP_IF) # access point
ap_if.active(True)
ap_if.ifconfig()
('192.168.4.1', '255.255.255.0', '192.168.4.1', '192.168.1.1')
26
APにMacをつないでみる
SSID : MicroPython-xxxxxx Password : micropythoN
$ ping 192.168.4.1
PING 192.168.4.1 (192.168.4.1): 56 data bytes
64 bytes from 192.168.4.1: icmp_seq=0 ttl=255 time=0.872 ms
64 bytes from 192.168.4.1: icmp_seq=1 ttl=255 time=117.740 ms
27
ESP8266
Mac
無線
ルーター
APSTA
ESP8266のSTAとAP
• 同時に使えるがMacからはESP8266だけ見える
2828
インター
ネット
ESP8266
Mac無線
ルーター
APSTA
STAだけを有効化
2929
インター
ネット
ESP8266
Mac
無線
ルーター
APSTA
サーバー
30
def server():
ブラウザから確認
31
>>> server()
listening on ('0.0.0.0', 80)
client connected from ('192.168.4.2', 60403)
Ctrl-Cで停止
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 9, in server
KeyboardInterrupt:
独自のファイルシステム
>>> 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']
32
boot.py と main.py は起動時に実行
WebREPL
• webrepl.html を入手してブラウザで実行
• ファイルのアップロード、ダウンロード
33
まとめ : MicroPython & ESPr One
• 言語としては同じPython
• デジタル入出力のデバイスを扱うライブラリ
• ターミナル、エディタ、ブラウザで開発
• 開発にも運用にも役立つWiFi
• ESPr One
• MicroUSBケーブル、モバイルバッテリーがあれば
• LED点滅(Lチカ)→パーツで拡張
• ブレッドボードでプロトタイピング
• Pythonの始め方のひとつに
34

Weitere ähnliche Inhalte

Was ist angesagt?

小ネタ:Android上でroscoreを走らせてみた
小ネタ:Android上でroscoreを走らせてみた小ネタ:Android上でroscoreを走らせてみた
小ネタ:Android上でroscoreを走らせてみたRyodo Tanaka
 
最近の事と #NT金沢 2018に初出展してきた
最近の事と #NT金沢 2018に初出展してきた最近の事と #NT金沢 2018に初出展してきた
最近の事と #NT金沢 2018に初出展してきたNetwalker lab kapper
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9Knit Tiger
 
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...Netwalker lab kapper
 
PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotaniKenshi Kamiya
 
Ren’pyの御紹介
Ren’pyの御紹介Ren’pyの御紹介
Ren’pyの御紹介zgock
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かすKenta IDA
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるKenichiro MATOHARA
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2Kenichiro MATOHARA
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考えるryuz88
 
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定 Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定 Netwalker lab kapper
 
78tch
78tch78tch
78tch78tch
 

Was ist angesagt? (20)

小ネタ:Android上でroscoreを走らせてみた
小ネタ:Android上でroscoreを走らせてみた小ネタ:Android上でroscoreを走らせてみた
小ネタ:Android上でroscoreを走らせてみた
 
最近の事と #NT金沢 2018に初出展してきた
最近の事と #NT金沢 2018に初出展してきた最近の事と #NT金沢 2018に初出展してきた
最近の事と #NT金沢 2018に初出展してきた
 
レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9レベルを上げて物理で殴る 16x9
レベルを上げて物理で殴る 16x9
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
Rosjp37 live ros
Rosjp37 live rosRosjp37 live ros
Rosjp37 live ros
 
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...Recently Mobile Linux Hacking after Kernel4.16RC  最近のKernel4.16RC以降の ガジェットLin...
Recently Mobile Linux Hacking after Kernel4.16RC 最近のKernel4.16RC以降の ガジェットLin...
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
 
PYNQ祭りLT todotani
PYNQ祭りLT todotaniPYNQ祭りLT todotani
PYNQ祭りLT todotani
 
Ren’pyの御紹介
Ren’pyの御紹介Ren’pyの御紹介
Ren’pyの御紹介
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かす
 
Raspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみるRaspberry Piにdiskless modeのalpine linuxを導入してみる
Raspberry Piにdiskless modeのalpine linuxを導入してみる
 
LattePandaの紹介
LattePandaの紹介LattePandaの紹介
LattePandaの紹介
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
Rust で RTOS を考える
Rust で RTOS を考えるRust で RTOS を考える
Rust で RTOS を考える
 
mikutter入門
mikutter入門mikutter入門
mikutter入門
 
Tfug kansai vol3
Tfug kansai vol3Tfug kansai vol3
Tfug kansai vol3
 
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定 Beginner for Power Control on Linux  はじめてのLinuxバッテリー省エネ設定
Beginner for Power Control on Linux はじめてのLinuxバッテリー省エネ設定
 
78tch
78tch78tch
78tch
 

Ähnlich wie 電子工作のためのPython

LeapMotionとpythonで遊ぶ
LeapMotionとpythonで遊ぶLeapMotionとpythonで遊ぶ
LeapMotionとpythonで遊ぶmonochrojazz
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたHirofumi Watanabe
 
171209 nishimoto-mpy-esp32
171209 nishimoto-mpy-esp32171209 nishimoto-mpy-esp32
171209 nishimoto-mpy-esp32Takuya Nishimoto
 
20171205 sier_iotlt
20171205 sier_iotlt20171205 sier_iotlt
20171205 sier_iotltnbihibashi
 
謎PCとの付き合い方(LILO東海道 2015/5発表分)
謎PCとの付き合い方(LILO東海道 2015/5発表分)謎PCとの付き合い方(LILO東海道 2015/5発表分)
謎PCとの付き合い方(LILO東海道 2015/5発表分)shimadah
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LTdrillan
 
Python x ハードウェアの可能性
Python x ハードウェアの可能性Python x ハードウェアの可能性
Python x ハードウェアの可能性karaage0703
 
見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみたTone Blue
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3mganeko
 
FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)Kunihiko HAYASHI
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93Takayuki Shimizukawa
 
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...Netwalker lab kapper
 

Ähnlich wie 電子工作のためのPython (20)

210728 mpy
210728 mpy210728 mpy
210728 mpy
 
LeapMotionとpythonで遊ぶ
LeapMotionとpythonで遊ぶLeapMotionとpythonで遊ぶ
LeapMotionとpythonで遊ぶ
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみた
 
171209 nishimoto-mpy-esp32
171209 nishimoto-mpy-esp32171209 nishimoto-mpy-esp32
171209 nishimoto-mpy-esp32
 
20171205 sier_iotlt
20171205 sier_iotlt20171205 sier_iotlt
20171205 sier_iotlt
 
IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023
 
謎PCとの付き合い方(LILO東海道 2015/5発表分)
謎PCとの付き合い方(LILO東海道 2015/5発表分)謎PCとの付き合い方(LILO東海道 2015/5発表分)
謎PCとの付き合い方(LILO東海道 2015/5発表分)
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
Python x ハードウェアの可能性
Python x ハードウェアの可能性Python x ハードウェアの可能性
Python x ハードウェアの可能性
 
見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた見える!「IoT」NefryでJenkinsのXFD作ってみた
見える!「IoT」NefryでJenkinsのXFD作ってみた
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
最小セット
最小セット最小セット
最小セット
 
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93
PyPro2の読みどころ紹介:Python開発の過去と現在 - BPStudy93
 
Imaocande LT
Imaocande LTImaocande LT
Imaocande LT
 
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう  Beginner for inst...
はじめてのUserLAnd。AndroidでUbuntu,Debian ArchLinuxなどをprootで動かそう Beginner for inst...
 

Mehr von Takuya Nishimoto

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ているTakuya Nishimoto
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集Takuya Nishimoto
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-sparkTakuya Nishimoto
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解するTakuya Nishimoto
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10Takuya Nishimoto
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれからTakuya Nishimoto
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop PythonTakuya Nishimoto
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimotoTakuya Nishimoto
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimotoTakuya Nishimoto
 
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjpTakuya Nishimoto
 

Mehr von Takuya Nishimoto (20)

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-spark
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
 
210630 python
210630 python210630 python
210630 python
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
 
210428 python
210428 python210428 python
210428 python
 
200918 hannari-python
200918 hannari-python200918 hannari-python
200918 hannari-python
 
200429 python
200429 python200429 python
200429 python
 
200325 flask
200325 flask200325 flask
200325 flask
 
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
 
191114 iotlt-nishimoto
191114 iotlt-nishimoto191114 iotlt-nishimoto
191114 iotlt-nishimoto
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
190731 chalice
190731 chalice190731 chalice
190731 chalice
 

電子工作のためのPython

Hinweis der Redaktion

  1. https://www.flickr.com/photos/htomari/8861196881
  2. https://cloudplatform.googleblog.com/2015/12/Google-Cloud-Vision-API-changes-the-way-applications-understand-images.html http://qiita.com/kazunori279/items/768c7fdf96cdf45a9d16
  3. https://twitter.com/24motz/status/727730908766318593 https://gist.github.com/nishimotz/375b9859e0f62c0b0b7d2e4d863a9f8b
  4. http://jp.rs-online.com/web/p/products/1238760/
  5. http://trac.switch-science.com/wiki/esp_dev_arduino_ide
  6. GOTO 2016 • MicroPython & the Internet of Things • Damien George
  7. https://www.youtube.com/watch?v=cyhFFm3yh14
  8. === def server(): === import socket === addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] === s = socket.socket() === s.bind(addr) === s.listen(1) === print('listening on', addr) === while True: === cl, addr = s.accept() === print('client connected from', addr) === cl_file = cl.makefile('rwb', 0) === while True: === line = cl_file.readline() === if not line or line == b'\r\n': === break === cl.send("""<!DOCTYPE html><html> <head> <title>ESP8266</title> </head> <body> === <h1>ESP8266</h1> === </body></html>""") === cl.close() === >>> server() listening on ('0.0.0.0', 80)