Skip to content

caleb221/CopperHead-TimePiece

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CopperHead-TimePiece

A 'Retro' ESP32 Based Smart watch using an HPDL-1414 and an .91'' OLED
42x35mm

IN PROGRESS

--> BE SURE TO GET THE MOST UP TO DATE FILES AS THERE ARE SEVERAL ITERATIONS
--> TEST MEMS MIC / IMU    

Add personal Assistant with Mic using: ESP32-I2S WITH TENSORFLOW MICRO

Features

Watch based around the ESP32 and HPDL1414.
Update time with NTP in known WiFi Areas (SSIDS/Passwords saved in SPIFFS JSON file)
DS1307 Real Time Module
Temperature and Humidity readings
Battery Charging and monitoring
MPU-950 Gyroscope/Accelerometer/Magenetometer (Compass)
MEMS Analog Microphone (to be used with TF-Lite Speech Recognition for wake words / personal assistant)
I2C/UART/SPI modular breakout for future sensors/ICs
Chrome Dino Game
Space Invaders Game
Update WiFi networks and system time over a hosted website incase there are no known networks around and time is off.

Schematic

Hardware

 ESP32 Wrover-B (4 or 8Mb) 
 HPDL-1414 Segmented Display  
 0.91'' OLED Display 
 DS1307 RTC Module
 SHT20 Temperature/Humidity Sensor 
 MPU-9250 Gyroscope/Accelerometer/Magnetometer 
 Tactile Switches (3 with 2 optional) 
 Various SMD Resistors/Capacitors (0603 Resistors)
 32.768kHz ±20ppm Crystal
 TP4056 
 DW01A  
 FS8205A
 HX4004 DC-DC Step up (LDO) 
 XC6203P332PR DC-DC Regulator (LDO)
 GMA3722H11-F42 MEMS Analog Microphone
 OPA344NA Analog Op Amp
 TYPE-C-31-M-17 USB-C Connector (6-Pin Power Only) 
 3.7v 320mAh/420mAh LiPo Battery
 ZH1.5 SMD Right Angle Connectors (4 and 2 pin female)  
 right angle tactile switch
 Tactile Buttons
 USB-C Power connector
 PCB (from Gerber File attached)
 M3x4mm Screws (X6)
 10mm Brass Standoffs (X3)
 3D-Printed Case (STL file)
 Watch Strap (20mm Thick)
 External FTDI/CP2102 USB-TTL converter

HPDL-1414 Datasheet

Software

 The ESP32 holds a SPIFFS filesystem containing the following files:
           --> index.html (should erase when BLE works) 
           --> userConf.json (known WiFi/Passwords) user edit on upload/web interface
           --> sysTime.json (last updated time) user edit on upload/web interface
           --> highScores.json (high score info for games *UNTESTED*)
 The ESP32 spends most of its time in deep sleep, unless woken from the UI buttons
 Upon wakeup the ESP32 will update the OLED with month, day of week, battery level, temperature, and humidity.
 The HPDL-1414 is used for time in HH:MM format. "1259" = 12:59
 There is also a timer on the watch so that it cannot be awake for too long (always default to sleep)
 The Chrome 404 Dino Game (made for this watch / screen / UI)
 Space Invaders (made for this watch / screen / UI)

My Arduino Chrome Dino Game

Gerber / BOM

  check out the Manufacturing Files folder for these!
  --> Gerber_PCB_esp32SmartWatch_2.zip  2-Layer Board **OLD VERSION**
  --> Gerber_PCB_esp32SmartWatch_3.zip  4-Layer Board **MOST CURRENT**
  I got most normal components at LCSC (excluding those listed below)
  PCB made at JLCPCB
  --> I soldered on the components but I'm sure the SMT Assembly is an option given you match up the BOM

LCSC Components
JLCPCB Pcb Manufacturing

THINGS NOT BOUGHT FROM LCSC:

3.7v 320mAh LiPo (Amazon) OR 3.7 420mAh Lipo (Adafruit)
0.91'' OLED Display (Amazon)
20mm Leather Watch Strap (Amazon)
Brass Standoffs (Amazon)
M3 x4mm black Screws (Amazon)
EBAY HPDL-1414 (not guaranteed)
EBAY AND AMAZON LINKS/PRODUCTS EXPIRE, YOU'LL NEED TO SEARCH FOR HPDL-1414 WHEREVER YOU NORMALLY SOURCE ODD COMPONENTS

TODO

 Get a stencil <br>
 Make an addon with the modular breakouts (I2C/ UART)
           --> Raspberry pi 0 (with something cool)
           --> SD Card (SPI in Software, would need both ports)
           --> Geiger counter
           --> C02 Monitor
           --> Smart home / MQTT control (would need a UI sub directory added)
           --> Connect LoRa and control the smart farm! (this would take awhile)

Would Be Nice:

 Waterproof case (hasunCast/PCB potting/ Resin)
 Glass over screens
 smaller PCB (if possible)
 bigger battery (needs to fit inside the case!)
 move buttons to bottom layer / change to right angled tactile buttons
 Use external RTC (DS3231 /C9866) OR (PCF8563M / C434478)
                  (part  / LCSC)
 Android Application (web UI takes place of this for now)
 Use BLE Server implementation (commented out at bottom of code) --> 
      accepts JSON data and updates internal filesystem
      Web Server uses same functions and tested, BLE with JSON is UNTESTED