Node-RED Link

What is ProtoWatch

As the name suggests, our project is a smartwatch which we call ProtoWatch. The project name may mislead one into guessing that it displays just the date and time. But, nope, it does a lot more and is even better than what many companies sell in the market by the name of smartwatch.


Who doesn’t like smart gadgets these days?! Well, we like them too and we wanted to build our own customized smartwatch, and we made it on the very first version (Yaay!). As an embedded engineer, it is a cool thing to own an electronic gadget that you have built from scratch. And there are perks of having your own smartwatch such as the flexibility to update the firmware, GUI or the battery as you like. We need not rely on a repair store if something even gets broken or damaged.



The ProtoWatch has a 1.8 inch LCD display that can update a list of tasks that you’d want to be displayed on the watch along with the date and time. Moreover, the watch has an awesome IMU sensor that records the acceleration, gyroscope, and temperature reading and updates to the cloud regularly. This can further be used to display the step count. The watch also houses an ambient-light-sensor which is used to auto-adjust the brightness of the screen.


The FreeRTOS that has been developed for this project handles the task efficiently and only utilizes a small amount of the program and data memory. This was achieved by making use of DMA and it leaves us enough headroom for future upgrades. Also, the firmware makes use of an SD card to store large files and to download the OTAFU. The firmware supports a few of the CLI commands which can be used to troubleshoot, and a user can even send the data using these CLI commands bypassing the auto logging.

Challenges we ran into

  • Component selection of PMIC, sensors was a major decision for which we spent a considerable amount of time looking for parts that minimize the footprint thereby reducing the overall dimensions of the board.
  • The component placement was tricky as we had to imagine how our watch would fit onto a hand wrist.
  • Development of the display driver was the most complex and time-consuming task as there were no supporting libraries for our use. Finally, we were able to develop a fast driver that makes use of DMA and can achieve refresh rates of more than 15 FPS.
  • Even Though the onboard Negative temperature coefficient (NTC) thermistor value was chosen as per the recommendation, the assembled board had a problem with the NTC which automatically shuts down the PMIC, this was addressed by changing the value of the NTC.
  • We made a mistake by swapping the I2C lines in the design. However, we included jumpers on these lines anticipating such problems which now came in handy.
  • We had to make use of the SAMD21 module which in itself is a bit large in size for our application, which led to a larger board-size than what we intended.

What we learned

  • Even though both the team members had prior experience in Altium, we learned some new methods and were able to gain confidence to host Altium training workshops for students.
  • Atmel studio was a new tool that we learned through this class. In particular, add-on tools such as Percepio were entirely new and useful.
  • Learned fundamentals of FreeRTOS such as multitasking, scheduling, context switching, and real-time scheduling.
  • Gained experience in developing board support packages and porting libraries to our custom board.
  • Learned to use the logic analyzer effectively during the firmware debugging.
  • Understood the bootloader implementation on an embedded device and how the flow chart has to be designed so as to prevent the device from getting bricked.
  • We learned to develop hosting a website through Node-red and learned to use MQTT for embedded platforms.

What's next for ProtoWatch

  • The firmware can have an update with an on-board step counting algorithm to store the data onto a local SD card and update to the cloud on a daily basis.
  • There can be additional features on the watch to slide between different screens using the navigation button that is being provisioned.
  • The LED on-board can be utilized as an indication for low battery.
  • A micro-speaker can be added to read-out messages whenever there is a new task update.
  • The overall dimensions of the product can be reduced in the next version of the PCB to improve the aesthetics.
  • The Graphics library can be further improved to display bitmap images which can be refreshed in a loop for a better user interface.
  • Support for uploading bit-map images through Node-red can be made for user ease.

Built With

  • altium
  • c
  • microchip
  • samd21
Share this project: