Coder Social home page Coder Social logo

ggerganov / ggtag Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rgerganov/ggtag

10.0 1.0 0.0 2.61 MB

programmable e-paper tag with RFID

Home Page: https://ggtag.io/

License: GNU General Public License v3.0

Shell 0.01% C++ 4.06% Python 0.24% C 95.21% Makefile 0.05% CMake 0.42%

ggtag's Introduction

Build Status

Overview

ggtag is an electronic tag that can be programmed with sound using the ggwave library. It is based on the RP2040 microcontroller and has 3.52" e-paper display. Additionally, ggtag supports USB serial programming and allows emulation of 125kHz RFID tags (ASK and FSK).

Subscribe to our CrowdSupply page to get latest updates about the project

Some example tags:

Both firmware and hardware are open source and licensed under the GPLv3 license. The PCB is made by Eurolan, you can find more details about the hardware design in the hardware directory.

Usage

ggtag can be programmed either with sound or with USB serial. To program with sound, you need to put a CR2032 battery in the battery holder and flip the switch to the BATT position. To program with USB serial, you need to connect ggtag to a USB host and flip the switch to the USB position. Both programming modes are supported in the web interface hosted at ggtag.io, all you need is a modern HTML browser.

Programming with sound

Here is a demonstration of how programming with sound works. Initially, three ggtags are listening and then programmed simultaneously using mobile phone. After the initial programming, you need to press the button on the side for ggtag to start listening again. At the end make sure to flip the switch back to USB position in order to preserve the battery.

ggtag-sound.mp4

Programming with USB serial

The web interface is using Web Serial API for USB serial programming, so you need a web browser (e.g. Chrome, Edge) which supports this API. Mobile Chrome running on Android is also supported. Here is a demo of using Pixel5 phone for USB serial programming:

ggtag-usb.mp4

Emulating RFID tags

You can emulate 125kHz RFID tags with ggtag. This is accomplished with an ATtiny85 MCU and the avrfid firmware. When ggtag receives an RFID command, it generates the corresponding avrfid firmware and programs the ATtiny85 with it. Demo with Flipper Zero:

ggtag-rfid-flipper.mp4

Another demo with USB RFID reader:

ggtag-rfid-reader.mp4

Python examples

There is a ggtag python package which can be used together with pyserial or ggwave to program the device. See the examples folder for more details.

Known issues

  • With some RFID readers you need to keep ggtag at 1cm distance for read to be successful.

Credits

Project structure

The codebase is structured in the following way:

  • target - contains the firmware source code for RP2040
  • shared - contains the shared code between the firmware and the host library
  • host - contains the host library
  • docs - contains the web interface
  • python - contains Python bindings for the host library
  • examples - contains some examples
  • hardware - contains hardware design files

Building the firmware

Follow these steps to build the RP2040 firmware:

git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk
git submodule init
git submodule update
cd ..
git clone https://github.com/raspberrypi/pico-extras
cd pico-extra
git submodule init
git submodule update
cd ..
export PICO_SDK_PATH=<full_path_to_pico_sdk>
export PICO_EXTRAS_PATH=<full_path_to_pico_extras>
export PICO_TOOLCHAIN_PATH=<full_path_to_arm_toolchain>

git clone [email protected]:rgerganov/ggtag
cd ggtag
git submodule init
git submodule update
mkdir build
cd build
cmake .. -DPICO_BOARD=pico
make

Building the web interface

The host library is compiled to WASM using Emscripten:

source <path_to_emsdk_env.sh>
CXX=emcc make

You can start a local server with make server and access the web interface at http://localhost:8000. There is a hosted version available at https://ggtag.io

Flashing the firmware

Put ggtag into USB mode, press and hold the button and plug the USB cable. Download the latest firmware release and copy the .uf2 file to the RPI-RP2 drive. The tag will reboot and run the new firmware.

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.