Project showcase
lytograph smart wifi display

lytograph smart wifi display

lytograph is a smart wifi display for the internet of things.

  • 1,141 views
  • 0 comments
  • 10 respects

Components and supplies

Abx00004 iso both
Arduino MKR1000
×1
Adafruit MicroSD card breakout board
×1
Texas instruments sn74hc595n
Texas Instruments Shift Register- Serial to Parallel
×2
white LED 5mm 20mA
×81
vial glass
×81
wooden plate 34cm x 34cm
×2
beech plate 34cm x 6cm
×4
aluminium bar 32cm
×8
2 pole cable 10cm female to female
×81
Fairchild semiconductor fqu13n06ltu image 75px
Power MOSFET N-Channel
×10
MOSFET P-Channel
×9
Mfr 25frf52 10k sml
Resistor 10k ohm
×23
Adafruit PowerBoost 500 Basic
×1
LiPo Battery
×1
torx screw
×70
Rugged Metal Pushbutton with Green LED Ring - 16mm
×1
Rugged Metal Pushbutton with Blue LED Ring - 16mm
×1
USB Cable, Micro-B to Standard-B Panel Mount Adaptor
×1
Te connectivity 4 103741 0 image 75px
Male Header 40 Position 1 Row (0.1")
×15
sealing ring 1cm diameter
×81
micro sd card
×1
Audio jack connector female 3.5 mm
×1
wall mount disc
×4
Fairchild semiconductor 1n4004. image
1N4007 – High Voltage, High Current Rated Diode
×2

Necessary tools and machines

Lasercutter
Laser cutter (generic)
Drill machine + rig

Apps and online services

node.js
react.js

About this project

lytograph is a beautiful minimalistic Internet of Things display. The body is crafted out of solid wood and the display made of indestructible small vial glass pipes. While having this design minded exterior, the lytograph is powered by state of the art internet technology. On one hand there is a web application delivering all kinds of information, which should be displayed on the lytograph. This application is free configurable and can also turn off the device during specific times. On the other hand there is the possibility to make direct (peer-to-peer) connections to the device. For example, you can connect with the mobile app to the lytograph, listen to Spotify and see the music visualized on the screen in real-time. This universal application concept allows to connect the lytograph to nearly anything with connectivity.

The current state of the project is under development. There are full functional prototypes and a software concept which is already implemented for testing purposes. The main goal is as well to make the lytograph accessible to the open source community, as to make it possible to cluster devices, so you can use them as bricks to make bigger installations possible.

Get more info on https://www.lytograph.com

More detailled information is in work!

Code

main.cppC/C++
#include <sam.h>
#include <ArduinoJson.h>
#include <RTCZero.h>
#include "Wifi.h"
#include "SerialHandler.h"
#include "SDR.h"
#include "Buttons.h"
#include "Display.h"
#include "Constants.h"

int opMode = MXWifiTransfer;

Display display(Serial);
SDR sd(Serial);
Buttons buttonhandler;
Wifi wifi(Serial);
SerialHandler serialHandler(Serial);

void setup() {

  Serial.begin(9600);

  //sd.deleteConfig();
  sd.setupSD();
  sd.readConfig();
  //sd.printSDStatus();
  buttonhandler.setupButtons();
  display.setupDisplay();

  // Enable clock for TC
  REG_GCLK_CLKCTRL = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID_TCC0_TCC1) ;
  while ( GCLK->STATUS.bit.SYNCBUSY == 1 ); // wait for sync


  // The type cast must fit with the selected timer
  Tcc* TC = (Tcc*) TCC0; // get timer struct

  TC->CTRLA.reg &= ~TCC_CTRLA_ENABLE;   // Disable TC
  while (TC->SYNCBUSY.bit.ENABLE == 1); // wait for sync


  TC->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV256;   // Set prescaler


  TC->WAVE.reg |= TCC_WAVE_WAVEGEN_NFRQ;   // Set wave form configuration
  while (TC->SYNCBUSY.bit.WAVE == 1); // wait for sync

  TC->PER.reg = 30;              // Set counter Top using the PER register
  while (TC->SYNCBUSY.bit.PER == 1); // wait for sync

  TC->CC[0].reg = 0xFFF;
  while (TC->SYNCBUSY.bit.CC0 == 1); // wait for sync

  // Interrupts
  TC->INTENSET.reg = 0;                 // disable all interrupts
  TC->INTENSET.bit.OVF = 1;          // enable overfollow
  TC->INTENSET.bit.MC0 = 1;          // enable compare match to CC0

  // Enable InterruptVector
  NVIC_EnableIRQ(TCC0_IRQn);

  // Enable TC
  TC->CTRLA.reg |= TCC_CTRLA_ENABLE ;
  while (TC->SYNCBUSY.bit.ENABLE == 1); // wait for sync

  sd.playSequence("/FUNCTION/SEQUENCE/SEQUENCE.OBJ");

  if(autoConnect){
    wifi.wifiConnect();
  }

}

void TCC0_Handler() {

  display.display();

  Tcc* TC = (Tcc*) TCC0;       // get timer struct
  if (TC->INTFLAG.bit.OVF == 1) {  // A overflow caused the interrupt
    TC->INTFLAG.bit.OVF = 1;    // writing a one clears the flag ovf flag
  }

  if (TC->INTFLAG.bit.MC0 == 1) {  // A compare to cc0 caused the interrupt
    TC->INTFLAG.bit.MC0 = 1;    // writing a one clears the flag ovf flag
  }

}

void loop() {

  if(opMode==MXSerialTransfer){
    serialHandler.regularTasks();
  }
  else if(opMode==MXWifiTransfer){
    wifi.regularTasks();
  }

  buttonhandler.regularTasks();

}

Schematics

exterior
Blueprint 0kfctssvhv
bulb dimensions
Vial bcyxjliahg

Comments

Similar projects you might like

GPS Location Display With GPS And TFT Display Shields

Project tutorial by Boian Mitov

  • 8,693 views
  • 5 comments
  • 23 respects

Crazy Arduino Hose Display

Project showcase by hwhardsoft

  • 20,343 views
  • 5 comments
  • 68 respects

Arduino WiFi Pulse Monitor

Project showcase by Andres Santos

  • 8,672 views
  • 7 comments
  • 25 respects

IOT Humidity And Temperature Display

Project tutorial by Patel Darshil

  • 5,833 views
  • 0 comments
  • 16 respects

IoT-Enabled LCD Display

by Nitro

  • 5,122 views
  • 4 comments
  • 7 respects

Arduino NeoPixel Wifi

Project showcase by Andres Santos

  • 4,492 views
  • 0 comments
  • 12 respects
Add projectSign up / Login