Git Product home page Git Product logo

esp32-epaper-station's Introduction

ESP32-epaper-station

An E-paper shelf label (electronic shelf label or ESL) base station based on an Electronic Shelf Label and an ESP32. One tag is used as a zigbee radio to send packets to other tags/labels/esl's. It's based on the work of epaper/tag heroes listed below

Disclaimer

  • By using this software you acknowledge that I am in no way liable if you burn down your PC, set your hair on fire or other potential things that may or may not happen due to the use of this software.
  • THIS IS PRETTY MUCH IN ALPHA STATE RIGHT NOW - IT KINDA WORKS, BUT IT IS SOMEWHAT UNSTABLE AND VERY MUCH UNSUPPORTED -

Big thanks

Howto

You're going to need a couple of things

  • ESP32 (whatever board, a minimum of two GPIO pins for a serial connection)
  • Solum ZBS243 SOC-based ESL (I tried and built it for the 2.9"/1.54" board). The EPD panel can be disconnected or removed
    • ZBS_Flasher- ESP32/ESP8266/Arduino Nano based flasher for the ESL. We'll try to integrate this into the first ESP32 in the future
  • Optional: Webserver running PHP
  • Shelf labels running the custom firmware (originally version from dmitry)

Getting stuff up and running

  • Flash the shelf label/tag with the binary provided in the firmware_zigbee_base directory. Guides to flash label can be found here
  • Make sure to enter a valid mac address on the infopage 0x10 offset (8 bytes) and write it back to the tag
  • Open the ESP32 firmware and edit settings.h, make sure your webserver is filled in correctly.
  • Build the ESP32 firmware and flash to your ESP32 board. I like to use PlatformIO. Whatever works for you!
  • Connect the base-station-ESL to the ESP32 using the designated pins. Pin configuration can be changed in serial.cpp!
  • Connect the ESL VCC and ground pins to the ESP32. Make sure to hook it up to 3.3v [optional]
  • Add the wwwdir folder to your webserver, rename to esl or whatever you've entered in settings.h
  • Write access to the 'img' directory is needed
  • Boot the ESP32 and use WifiManager/config portal to connect the ESP32 to your network

Next steps / errata

Omg where to start... It's unstable, only happy flow is implemented, there is almost 0 error handling. These tags aren't meant to be used as base stations, the radio interface may be unstable and can stop/drop out. Your milage may vary, and is very much dependent on network congestion and RF environment.

When connected to a valid board, it'll automatically flash it and set the correct mac address. Very little to do!

Connect to it's ip adres using http://<ip?>/edit and add image files to display there!

Todo

  • Improve radio latency/speed
  • Built-in flasher
  • Error handling
  • Web interface
  • Improved PHP side - database for tags?
  • Remove crypto from both custom firmware/ESP32 should improve speed
  • Use the display of an ESL as a base-station status screen
  • Wifi stability
  • Code clean-up
  • ...

FAQ

  • Q: OMG Your code is a hot mess / unmitigated dumpster fire / whatever

    • A: Yeah I know. This isn't my day gig, feel free to clean it up and hit me up with a PR
  • Q: Can the base-station run on microcontroller board X

    • A: Maybe. Feel free to port it and hit me up with a PR when you do. I wouldn't recommend it per-se, ESP32's are cheap and highly effective for something like this
  • Q: Does this work for other labels/tags?

    • A: Not that I'm aware of. They need to be running custom firmware anyway; this base station currently uses dmitry-style communication with tags
  • Q: Can you help me build this?

    • A: Sorry, no. My time is very much limited. If you can't figure this out on your own, you are probably not the intended audience. Once again, sorry.
  • Q: When will X be done?

    • A: Maybe tomorrow, maybe never

esp32-epaper-station's People

Contributors

enwi avatar jjwbruijn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.