micropython : esp32 使い方 #2 ボタン

python

開発環境

reference

Arch linux

windows 10 WSL2 インストール方法

arch linux の導入方法

基盤回路図

key

参考画像

key

ESP32/io12 → スイッチ → ESP32/GND

マイコンとPCをUSBで接続

Install esptool

reference

mkdir micropython

cd micropython

ダウンロード ファームウェア

必ず現在の階層にダウンロード

sudo pacman -S esptool

sudo esptool.py flash_id

esptool.py v3.0
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:9d:51:1c
Uploading stub...
Running stub...
Stub running...
Manufacturer: 20
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...

serial poat /dev/ttyUSB0

/dev/ttyUSB0 の部分を確認

sudo esptool.py --port /dev/tty??????? erase_flash

自分の開発環境では /dev/ttyUSB0 なので

sudo esptool.py --port /dev/ttyUSB0 erase_flash

esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:9d:51:1c
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.5s
Hard resetting via RTS pin...

sudo esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32-idf3-20210202-v1.14.bin

esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:9d:51:1c
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 1445632 bytes to 925476...
Wrote 1445632 bytes (925476 compressed) at 0x00001000 in 82.2 seconds (effective 140.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

add main.py in ESP32

yay -S adafruit-ampy

yay インストール方法

sudo ampy -p /dev/ttyUSB0 get boot.py

マイコンの中に入っている boot.py の中身を出力

# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import webrepl
webrepl.start()

マイコン ボタン

touch main.py

micro main.py

micro エディタ インストール方法

import machine
import time
button = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP)
while True:
    first = button.value()
    time.sleep(0.01)
    second = button.value()
    if first and not second:
        print('Button pressed!')
    elif not first and second:
        print('Button released!')

sudo ampy -p /dev/ttyUSB0 put main.py

main.py を マイコンへアップロード

ampy チートシート

sudo ampy -p /dev/ttyUSB0 ls

リスト表示

sudo ampy -p /dev/ttyUSB0 get ??????

?????? の中身を出力

sudo ampy -p /dev/ttyUSB0 put ??????

?????? を アップロード

sudo ampy -p /dev/ttyUSB0 rm ??????

?????? を削除

REPL 接続

sudo pacman -S picocom

sudo picocom /dev/ttyUSB0 -b115200

picocom v3.1

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

Type [C-a] [C-h] to see available commands
Terminal ready

key

基盤の EN Button を押す

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:5008
ho 0 tail 12 room 4
load:0x40078000,len:10600
ho 0 tail 12 room 4
load:0x40080400,len:5684
entry 0x400806bc

key

スイッチを押す

Button pressed!
Button released!

Exit picocom

Ctrl + c

Exit En mode

Ctrl + a 次に、Ctrl + x

End picocom

thank you

最後までご覧いただきありがとうございました。参考になれば幸いです

いつも助けてくださってありがとうございます

amazon ギフト券 投げ銭リンク

これからもお役に立てる情報を更新します。皆さんのお助けに飛び跳ねて喜びます。ありがとうございます。