Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TinyGo: Getting the upper hen (GoWest Conf 2022)

TinyGo: Getting the upper hen (GoWest Conf 2022)

TinyGo is a Go compiler for small places such as microcontroller or web. Join Donia for a demo and see live henhouse
temperature and humidity data displayed on dashboards.

Starting from a basic understanding of what TinyGo is, you will learn how to:

- Use the appropriate driver for your hardware
- Retrieve data from a thermometer and humidity captor
- Communicate with your microcontroller using WiFi
- Build a dashboard with temperature and humidity data
- Check that your hens are doing well, from your couch

And, if you still do not want to adopt chickens, you can let your creativity flow by building your own project, using our favourite language.

Donia Chaiehloudj

October 22, 2022
Tweet

More Decks by Donia Chaiehloudj

Other Decks in Programming

Transcript

  1. TinyGo: Getting the upper hen GoWestConf, Lehi UTAH - OCT

    21 2022 Donia Chaiehloudj Powder @doniacld
  2. My ideal hen house 01 What is TinyGo? What’s the

    plan? Demo time Things I learned 02 03 04 05 06 What’s next?
  3. MY IDEAL HEN HOUSE 01. My ideal hen house •

    Monitor my hen house ◦ temperature ◦ humidity • Visualise the metrics
  4. — TinyGo website at tinygo.org TinyGo is a compiler for

    the Go programming language but for smaller kinds of systems.
  5. TINYGO COMPILER: HISTORY https://aykevl.nl/ 02. What is TinyGo? Ayke exploring

    existing projects 01/02/19 TinyGo 0.1 TinyGo used by the industry TinyGo adopted by users for side projects 03/02/19 FOSDEM @aurelievache
  6. TINYGO COMPILER: ANOTHER GO COMPILER The LLVM Project is a

    collection of modular and reusable compilers. https://tinygo.org/docs/concepts/compiler-internals/pipeline/ 02. What is TinyGo?
  7. GO VS TINYGO: HELLO WORLD SIZE ❯ go build -o

    bin/helloworld-go hello/hello_world.go ❯ tinygo build -o bin/helloworld-tinygo hello/hello_world.go ❯ ll bin/ total 5120 -rwxr-xr-x 1 doniacld staff 1.8M Aug 14 18:40 helloworld-go -rwxr-xr-x 1 doniacld staff 29K Aug 14 18:41 helloworld-tinygo go version go1.18.5 darwin/arm64 0.24.0 darwin/amd64 (using go version go1.18.5 and LLVM version 14.0.0) 02. What is TinyGo?
  8. FLASH COMMAND tinygo flash -target=<your-board> <your-program>.go 1. Compiles the program

    on your computer 2. Writes it on chip memory (ROM) 3. Runs it on the chip NB: Built-in led is blinking while writing 02. What is TinyGo?
  9. FLASH COMMAND tinygo flash -target=<your-board> <your-program>.go 1. Compiles the program

    on your computer 2. Writes it on chip memory (ROM) 3. Runs it on the chip NB: Built-in led is blinking while writing 02. What is TinyGo?
  10. DEBUGGING TOOLS ❯ ll /dev/tty.* 02. What is TinyGo? Serial

    port: connector by which a device sends data one bit at a time.
  11. github.com/doniacld/tinygo-discovery/tree/main/gowestconf-22 github.com/doniacld/tinygo-discovery/blob/main/utils/read_serial.go READ FROM THE SERIAL PORT 02. What is

    TinyGo? ❯ go run hello_gophers.go 2022/09/03 10:28:07 Hi Utah! What's up Gophers? 2022/09/03 10:28:08 Hi Utah! What's up Gophers? ❯ go run utils/read_serial.go -port /dev/cu.usbmodem1401 1970/01/01 00:00:20 Hi Utah! What's up Gophers? 1970/01/01 00:00:21 Hi Utah! What's up Gophers?
  12. DEBUGGING TOOLS 02. What is TinyGo? TinyGo built-in debugging tool

    for binary on chip • based on gdb • debug probes not included on every board • observe scheduler $ tinygo gdb -target=microbit examples/microbit-blink [...] target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x0000071c msp: 0x20000800 (gdb) continue Continuing. ...
  13. TINYGO CHEAT SHEET 05. Things I learned • TinyGo: Go

    compiler for small places • Flash: tinygo flash -target=<your-board> main.go • TinyGo drivers examples are a treasure chest 💎 • Hardware recommendations: samd21/samd51 board, or an rp2040 or TinyGo Playground • You can enter the IoT world with your current skills and your IDE ◦ VS code plugin ◦ GoLand plugin
  14. WHAT’S NEXT? • Use async protocol (MQTT) • Long range

    WiFi board (LoRaWAN) • Deploy in the cloud • Add a fox detection system https://tinyurl.com/gopher-far-west-sticker 06. What’s next?
  15. RESOURCES • TinyGo doc • Go doc • Kube stack

    prometheus doc • Grafana dashboards Kubernetes • TinyGo discovery examples repository • TinyHen project repository