arduino, elixir and nerves - code sync · arduino, elixir and nerves a deep dive into the firmata...
TRANSCRIPT
![Page 1: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/1.jpg)
Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol
![Page 2: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/2.jpg)
Firmata
Firmata is a protocol for communicating with microcontrollers from software on a computer (host) based
on the MIDI protocol
![Page 3: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/3.jpg)
Firmata -> MIDI
0xD0 - 0xDF + 1 byte
MIDI: Channel + Pressure
Firmata: Report digital port + enable/disable
![Page 4: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/4.jpg)
Outgoing from Host
![Page 5: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/5.jpg)
Incoming to Host
![Page 6: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/6.jpg)
Few message types map 1 - 1 to MIDI protocol, basically analog and digital pin IO, firmware version, etc.
Mapping to a MIDI message must match MIDI message length exactly
Sysex Messages can be any length
Sysex Messages are used prominently for Firmata functionality
System Exclusive (Sysex) Messages
![Page 7: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/7.jpg)
Full Disclosure
Keyvan Fatehi (https://github.com/kfatehi) wrote the original Elixir Firmata Client
(https://github.com/entone/firmata) and is responsible for the majority of the architecture and parsing
logic.
![Page 8: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/8.jpg)
My contributions (maintainer)
● I2C read/write
● String data
● Analog pin <--> process mapping architecture.
● Ultrasonic sensor
● NeoPixel
![Page 9: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/9.jpg)
Typical Firmata Architecture
![Page 10: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/10.jpg)
Firmata.Board.init
![Page 11: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/11.jpg)
Parse UART input
![Page 12: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/12.jpg)
Firmata.Protocol
![Page 13: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/13.jpg)
Custom Firmata Additions
![Page 14: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/14.jpg)
Modifying the Firmata Client
![Page 15: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/15.jpg)
https://github.com/entone/firmata_example
![Page 16: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/16.jpg)
![Page 17: Arduino, Elixir and Nerves - Code Sync · Arduino, Elixir and Nerves A Deep Dive into the Firmata Protocol. Firmata Firmata is a protocol for communicating with microcontrollers from](https://reader030.vdocuments.us/reader030/viewer/2022040608/5ec5a38d691079698166a0cd/html5/thumbnails/17.jpg)
Thank You
@entropealab
@CRTLabs
https://github.com/entone
http://code.crtlabs.org
https://github.com/entone/firmata_example