Inky pHAT is an electronic paper (ePaper / eInk / EPD) display for Raspberry Pi.
Let's do something similar to Pimoroni's Inky pHAT weather example in Elixir and Nerves.
Nerves applications produce images for hardware targets based on the
MIX_TARGET
environment variable. If MIX_TARGET
is unset, mix
builds an
image that runs on the host (e.g., your laptop). This is useful for executing
logic tests, running utilities, and debugging. Other targets are represented by
a short name like rpi3
that maps to a Nerves system image for that platform.
All of this logic is in the generated mix.exs
and may be customized. For more
information about targets see:
https://hexdocs.pm/nerves/targets.html#content
To start your Nerves app:
export MIX_TARGET=my_target
or prefix every command withMIX_TARGET=my_target
. For example,MIX_TARGET=rpi3
- Install dependencies with
mix deps.get
- Create firmware with
mix firmware
- Burn to an SD card with
mix firmware.burn
- chisel
- to use bitmap fonts
- inky
- to drive the Inky eInk displays
- this example uses my fork because the library does not support latest Inky PHAT device.
- req
- HTTP client
- nerves_time_zones
- to use local time
- Specify your time zone in
config.config
- Icons are adopted from https://github.com/pimoroni/inky
- The original icons were PNG, but I converted them into pixels so that I can use them easily in my code.
- I used pixels package as a tool for converting PNG into pixels.
- Weather info is fetched from https://wttr.in/?format=j1
- Fonts are fetched from https://github.com/olikraus/u8g2/tree/master/tools/font/bdf
- Official docs: https://hexdocs.pm/nerves/getting-started.html
- Official website: https://nerves-project.org/
- Forum: https://elixirforum.com/c/nerves-forum
- Discussion Slack elixir-lang #nerves (Invite)
- Source: https://github.com/nerves-project/nerves