M5StickC Plus (ESP32) 및 TinyGo에서 L 치카
소개
최근 직장에서 GO를 사용하고 취미에서는 ESP32를 사용하고 있기 때문에 TinyGo에서 ESP32를 프로그래밍하고 싶어졌습니다. 그래서 L 치카하기로 했다.
환경
macOS Big Sur Ver 11.1
설치
TinyGo
tinygo는 여기를 참조하여 설치했다.
macOS :: TinyGo - Go on Microcontrollers and WASM
여러가지 쓰여져 있지만, 이것만으로 움직일 것이다.
brew tap tinygo-org/tools
brew install tinygo
ESP32를 위한 도구군
이에 따라 다음 도구를 넣었다.
ESP32 - mini32 :: TinyGo - Go on Microcontrollers and WASM
macOS Big Sur Ver 11.1
설치
TinyGo
tinygo는 여기를 참조하여 설치했다.
macOS :: TinyGo - Go on Microcontrollers and WASM
여러가지 쓰여져 있지만, 이것만으로 움직일 것이다.
brew tap tinygo-org/tools
brew install tinygo
ESP32를 위한 도구군
이에 따라 다음 도구를 넣었다.
ESP32 - mini32 :: TinyGo - Go on Microcontrollers and WASM
brew tap tinygo-org/tools
brew install tinygo
명령적으로 여기를 실행했습니다. pip라든지 pyserial은 벌써 들어간 것 같다.
sudo easy_install pip
sudo pip install pyserial
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz
PATH도 추가했다.
.zshrc
export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin"
L치카
모두가 사랑하는 L치카
코드
이것을 흉내 냈다.
GitHub - tinygo-org/tinygo: Go compiler for small places. Microcontrollers, WebAssembly, and command-line tools. Based on LLVM.
M5StickC Plus의 내장 LED의 PIN이 10이므로, 거기만 수정했다.
blink.gopackage main
import (
"machine"
"time"
)
func main() {
led := machine.Pin(10)
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.Low()
time.Sleep(time.Millisecond * 1000)
led.High()
time.Sleep(time.Millisecond * 1000)
}
}
쓰기
이런 느낌으로 컴파일하고 쓸 수 있었다. USB 포트를 지정하지 않아도 찾아주는 것 같다.
끝나는 것이 빠르다. 제대로 쓸 수 있을까 불안해진다. 걸린 4초 정도. Arduino 환경이라면, 3배 정도는 걸리고 있다고 생각한다.
그건 그렇고, 여러 가지가 있다면 어떻게 될까요?
~/p/tinygo ❯❯❯ tinygo flash -target=esp32-mini32 blink.go
esptool.py v3.0
Serial port /dev/cu.usbserial-xxx
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: xxxx
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash params set to 0x030f
Compressed 3072 bytes to 2396...
Wrote 3072 bytes (2396 compressed) at 0x00001000 in 0.2 seconds (effective 111.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
지정할 때는 이런 느낌.
# tinygo flash -target=esp32-mini32 -port=/dev/tty.usbserial-E9526A3192 blink.go
움직임
특히 아무런 변철도 없는 L치카이지만.
시리얼 통신(UART)
시리얼 통신(UART)도 할 수 있는 것 같다. println()
에서 전송. 드디어 확인했다.
코드
package main
import "time"
func main() {
for {
println("hello world!")
time.Sleep(time.Second)
}
}
동작
아래 명령으로 연결.
디폴트 115200bps로 접속하고 있는 것 같다.
~ ❯❯❯ screen /dev/tty.usbserial-E9526A3192 115200
결론
L치카 멋지게 되어 좋았다.
컴파일과 쓰기 속도가 터무니없이 빠릅니다. L치카 뿐이니까? 하지만 빠르다. 충격.
APPENDIX
ESP32 대응(2021/03/17 현재)
조금만 대응할 수 없는 것 같다. . . 더 사용하려면 자신도 공헌해야합니까? . .
여기 참조.
ESP32 - mini32 :: TinyGo - Go on Microcontrollers and WASM
Reference
이 문제에 관하여(M5StickC Plus (ESP32) 및 TinyGo에서 L 치카), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/optimisuke/items/d3150517609897da4d5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import (
"machine"
"time"
)
func main() {
led := machine.Pin(10)
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.Low()
time.Sleep(time.Millisecond * 1000)
led.High()
time.Sleep(time.Millisecond * 1000)
}
}
~/p/tinygo ❯❯❯ tinygo flash -target=esp32-mini32 blink.go
esptool.py v3.0
Serial port /dev/cu.usbserial-xxx
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: xxxx
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash params set to 0x030f
Compressed 3072 bytes to 2396...
Wrote 3072 bytes (2396 compressed) at 0x00001000 in 0.2 seconds (effective 111.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
# tinygo flash -target=esp32-mini32 -port=/dev/tty.usbserial-E9526A3192 blink.go
시리얼 통신(UART)도 할 수 있는 것 같다.
println()
에서 전송. 드디어 확인했다.코드
package main
import "time"
func main() {
for {
println("hello world!")
time.Sleep(time.Second)
}
}
동작
아래 명령으로 연결.
디폴트 115200bps로 접속하고 있는 것 같다.
~ ❯❯❯ screen /dev/tty.usbserial-E9526A3192 115200
결론
L치카 멋지게 되어 좋았다.
컴파일과 쓰기 속도가 터무니없이 빠릅니다. L치카 뿐이니까? 하지만 빠르다. 충격.
APPENDIX
ESP32 대응(2021/03/17 현재)
조금만 대응할 수 없는 것 같다. . . 더 사용하려면 자신도 공헌해야합니까? . .
여기 참조.
ESP32 - mini32 :: TinyGo - Go on Microcontrollers and WASM
Reference
이 문제에 관하여(M5StickC Plus (ESP32) 및 TinyGo에서 L 치카), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/optimisuke/items/d3150517609897da4d5d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ESP32 대응(2021/03/17 현재)
조금만 대응할 수 없는 것 같다. . . 더 사용하려면 자신도 공헌해야합니까? . .
여기 참조.
ESP32 - mini32 :: TinyGo - Go on Microcontrollers and WASM
Reference
이 문제에 관하여(M5StickC Plus (ESP32) 및 TinyGo에서 L 치카), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/optimisuke/items/d3150517609897da4d5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)