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

GoIoT: Inovando na Conectividade com Go e Dispo...

Avatar for Rafael Mateus Rafael Mateus
May 10, 2024
110

GoIoT: Inovando na Conectividade com Go e Dispositivos Inteligentes

Avatar for Rafael Mateus

Rafael Mateus

May 10, 2024

Transcript

  1. GoIoT Rafael Mateus Software Engineer May 10, 2024 Inovando na

    Conectividade com Go e Dispositivos Inteligentes
  2. CONTEÚDO Sobre mim 01 Definição de IoT Go em dispositivos

    Tipos de dispositivos Go em embarcados Conclusão 02 03 04 05 06
  3. SOBRE MIM Rafael Mateus, father of three dev @Neoway. I’m

    into smart things! — GopherCon Brasil 2024.
  4. Especialização Pós-graduação em internet das coisas Meetups IoT Organização de

    meetup no whiteStone_dev IIoT Conexão com equipamentos industriais Go Utilização de Golang para desenvolvimento de código para dispositivos 2020
  5. { Dispositivos IoT dispositivos físicos conectados à internet e com

    capacidade de coletar e trocar dados entre sistemas.
  6. • Concorrência nativa • Baixo consumo de recursos • Compilação

    para N processadores Introdução ao Go para IoT
  7. Go é otimizado para eficiência de recursos. Dispositivos IoT com

    limitações de energia e memória. Introdução ao Go para IoT
  8. import RPi.GPIO as GPIO def main(): try: pin = 17

    GPIO.setup(pin, GPIO.IN) print(GPIO.input(pin)) except Exception as e: print("error in my program:", e) if __name__ == "__main__": main() Exemplo de tratamento de erro em Python Exceptions em Python
  9. gpio17 := "GPIO17" pin := gpioreg.ByName(gpio17) if pin == nil

    { log.Fatal("gpio pin is not present") } Obter o endereço do pino de placa Exceptions em Go
  10. if _, err := host.Init(); err != nil { log.Fatal("error

    in initialize") } Iniciar a conexão com o hardware físico periph.io
  11. err := pin.In(gpio.PullUp, gpio.BothEdges) if err != nil { log.Fatalf("error

    in set gpio %q", err) } fmt.Print(gpio17) Configurar o pino para ser uma entrada de sinal digital periph.io
  12. x86 e x86-64: Esta é a arquitetura de processadores Intel

    e AMD comumente encontrada em PCs e servidores. ARM: Uma arquitetura de processadores amplamente usada em dispositivos móveis e embarcados. PowerPC: Uma arquitetura de processadores usada em sistemas embarcados, servidores e supercomputadores. MIPS: Uma arquitetura de processadores usada em sistemas embarcados e roteadores. RISC-V: Uma arquitetura de processadores de código aberto e modular, crescentemente popular em sistemas embarcados e de baixa potência. Microprocessadores
  13. GOOS=linux GOARCH=arm GOARM=7 go build -o output main.go GOOS=linux GOARCH=amd64

    go build -o output main.go GOOS=linux GOARCH=arm64 go build -o output main.go Microprocessadores
  14. O projeto TinyGo é exatamente a mesma linguagem do Go.

    Utiliza compilador diferente para adaptar a sistemas embarcados. TinyGo
  15. import ( "machine" "time" ) led := machine.LED led.Configure(machine.PinConfig{ Mode:

    machine.PinOutput}) for { led.High() time.Sleep(time.Second) led.Low() time.Sleep(time.Second) } Blink no TinyGo TinyGo
  16. tinygo build -o firmware.bin -target=esp32 main.go tinygo build -o firmware.elf

    -target=raspberrypi main.go tinygo build -o firmware.hex -target=arduino main.go Build tinygo
  17. Referências Ron Evans - A Small Update About TinyGo -

    GopherCon 2023 Edition https://www.youtube.com/watch?v=zGaQX6P9xxs Embedded Systems: LoRa, Datasheets & SPI connection with TinyGo https://www.youtube.com/watch?v=_5XgtYkq2eo&t TinyGo on Arduino https://blog.arduino.cc/2019/08/23/tinygo-on-arduino