Junxiao Shi
Published © CC BY-NC

Mom Calendar with Adafruit MagTag

A calendar that counts how many days mom has been visiting me on an Adafruit MagTag E-Ink display module.

IntermediateFull instructions provided2 hours106
Mom Calendar with Adafruit MagTag

Things used in this project

Hardware components

Adafruit MagTag
×1

Story

Read more

Code

Mom Calendar - Arduino Sketch

Arduino
#include <Adafruit_ThinkInk.h>
#include <WiFi.h>

const char* WIFI_SSID = "ssid";
const char* WIFI_PASS = "passw0rd";

ThinkInk_290_Grayscale4_T5 display(EPD_DC, EPD_RESET, EPD_CS, -1, -1);

static void shutdown()
{
  ESP.deepSleep(1800*1000000);
}

void setup() {
  // disable speaker, NeoPixel, light sensor
  pinMode(SPEAKER_SHUTDOWN, OUTPUT);
  digitalWrite(SPEAKER_SHUTDOWN, LOW);
  pinMode(NEOPIXEL_POWER, OUTPUT);
  digitalWrite(NEOPIXEL_POWER, HIGH);

  Serial.begin(115200);
  delay(100);

  // connect to WiFi
  WiFi.persistent(false);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.printf("WiFi.status %" PRIu8 "\n", WiFi.status());
    return shutdown();
  }

  // NTP sync
  configTime(-5*3600, -4*3600, "time.nist.gov", "pool.ntp.org");
  struct tm tm;
  if (!getLocalTime(&tm, 5000)) {
    Serial.println("NTP failed");
    return shutdown();
  }

  time_t t = time(nullptr);
  Serial.printf("t=%ld\n", static_cast<long>(t));

  // display day count
  display.begin(THINKINK_MONO);
  display.clearBuffer();
  display.setTextSize(10);
  display.setTextColor(EPD_GRAY);
  display.setCursor(40, 20);
  display.print((t - 1678258800) / 86400);
  display.display(true);
  delay(2000);
  shutdown();
}

void loop() {
}

Credits

Junxiao Shi

Junxiao Shi

3 projects • 1 follower

Comments