Gyro1
Published © GPL3+

E-Paper Picture Frame

A picture that updates every day.

BeginnerFull instructions provided10,833
E-Paper Picture Frame

Things used in this project

Hardware components

Arduino Mini 05
Arduino Mini 05
×1
Waveshare 4.3 inch e-ink display
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

frame+1b.stl

Schematics

Schematic

Breadboard

Code

Code snippet #1

Plain text
<p>#include <lowpower.h><br>#include <epd.h></epd.h></lowpower.h></p><p>const int wake_up = 6;
const int reset = 5;
const int lcd_on = 4;
const int button = 3;</p><p>int refreshRate = 10800; //time between loading images. number you enter * 8 = seconds between refresh (10800 = 24h)
int counter = 1;
int refreshCounter = 0;
int ByteReceived;
bool errorFlag = false;
bool picSend = false;
bool picLoaded = false;</p><p>void(* resetFunc) (void) = 0;</p><p>void setup(void)
{
  pinMode(lcd_on,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  //LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}</p><p>void loop(void){
  DrawPic(counter);
  counter++;
}</p><p>void wakeUp(){
  refreshCounter++;
  if(refreshCounter < refreshRate) enterSleep();
}</p><p>void DrawPic(int index){
  pinMode(lcd_on,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  //delay(2000);
  digitalWrite(lcd_on,HIGH);
  delay(300);
  epd_init(wake_up, reset);
  epd_wakeup(wake_up);
  epd_set_memory(MEM_TF);
  epd_clear();
  digitalWrite(13,HIGH);</p><p>  //int index = 7;
  String indexStr = String(counter);
  String str = 'i' + indexStr + ".BMP ";
  char character[str.length()] ;
  str.toCharArray(character, str.length());
  epd_disp_bitmap(character, 0, 0);
  epd_udpate();
  epd_enter_stopmode();
  while(1){
    ByteReceived = Serial.read();
    if(ByteReceived == 13){
      picSend= true;
    }
    if(ByteReceived == 69){
      errorFlag= true;
      //if(!picSend && counter == 1) noSDcard();
      //if(picSend && counter == 1) noPic();
      //resetFunc();
      counter = 0;
      //Serial.flush();
      break;
    }
    if(ByteReceived == 75 && picSend && picLoaded){
      break;
    }
    
    if(ByteReceived == 75 && picSend){
      picLoaded = true;
    }
    
  }
  digitalWrite(13,LOW);
  digitalWrite(lcd_on,LOW);
  picLoaded = false;
  errorFlag= false;
  picSend= false;
  refreshCounter = 0;
  
  enterSleep();
}</p><p>void noSDcard(){
  epd_wakeup(wake_up);
  //delay(5000);
  epd_clear();
  epd_set_ch_font(GBK32);
  epd_set_en_font(ASCII32);
  epd_disp_string("Can't find SD card", 0, 300);
  epd_udpate();
  delay(10000);
}</p><p>void noPic(){
  epd_wakeup(wake_up);
  //delay(5000);
  epd_clear();
  epd_set_ch_font(GBK32);
  epd_set_en_font(ASCII32);
  epd_disp_string("Can't find this picture", 0, 300);
  epd_udpate();
  delay(10000);
}</p><p>void enterSleep(){
  attachInterrupt(1, wakeUp, RISING);
  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
  wakeUp();
  detachInterrupt(1);
}</p>

E_paper_pic_frame.ino

Arduino
No preview (download only).

Github

https://github.com/sabas1080/LibraryEPD

Github

https://github.com/rocketscream/Low-Power

Credits

Gyro1
4 projects • 21 followers
Contact

Comments

Please log in or sign up to comment.