A badge with dot matrix cover that could be programmed using MicroPython.
Ā

Things used in this project
Ā
Hardware components
Software apps and online services
Ā
DFRobot upycraft IDE
Ā
Ā
Hand tools and fabrication machines
Ā
Soldering iron (generic)
Ā
Story
Ā
Background
Ā
DFRobot recently release a new line of development boards called Firebeetle. Fortunately I had a chance to try the Firebeetle ESP32 IoT board and the dot matrix cover. Then something popped up in my mind to build a wearable device from those two pieces of hardware.
Ā
Ā
The Project
Ā
So, I came up with this interactive badge that could be programmed using MicroPython. The Firebeetle has a Jst connector for lipo battery and I have a lipo battery lying around that I can use. Because the ESP3288 has the capability to connect to the WiFi, this badge also could grab the data from openweather API to give information about the weather.
Ā

Ā

Ā

Ā
You can tweak the code to make the badge display any kind information you want, just make sure you have enough memory space.
Schematics
Ā
firebeetle esp32
Ā

Code
Ā
ht1632.py
MicroPython
copy this file/library to your firebeetle to make the dotmatrix run perfectly
from machine import Pin
import framebuf
DFROBOT_HT1632_READ = const(0x06)
DFROBOT_HT1632_WRITE = const(0x05)
DFROBOT_HT1632_COMMAND = const(0x04)
DFROBOT_HT1632_SYS_DIS = const(0x00)
DFROBOT_HT1632_SYS_EN = const(0x01)
DFROBOT_HT1632_LED_OFF = const(0x02)
DFROBOT_HT1632_LED_ON = const(0x03)
DFROBOT_HT1632_BLINK_OFF = const(0x08)
DFROBOT_HT1632_BLINK_ON = const(0x09)
DFROBOT_HT1632_SLAVE_MODE = const(0x10)
DFROBOT_HT1632_MASTER_MODE = const(0x14)
DFROBOT_HT1632_INT_RC = const(0x18)
DFROBOT_HT1632_EXT_CLK = const(0x1C)
DFROBOT_HT1632_PWM_CONTROL = const(0xA0)
DFROBOT_HT1632_COMMON_8NMOS = const(0x20)
DFROBOT_HT1632_COMMON_16NMOS = const(0x24)
DFROBOT_HT1632_COMMON_8PMOS = const(0x28)
DFROBOT_HT1632_COMMON_16PMOS = const(0x2C)
class HT1632C():
  def __init__(self,DATA,CLK,CS):
    self.width = 240
    self.height = 8
    self.CS = Pin(CS,Pin.OUT)
    self.DATA = Pin(DATA,Pin.OUT)
    self.CLK = Pin(CLK,Pin.OUT)
    self.CS.value(1)
    self.pages = self.height // 8
    self.buffer = bytearray(self.pages * self.width)
    self.framebuf = framebuf.FrameBuffer(self.buffer, self.width, self.height, framebuf.MVLSB)
    self.begin()
  def begin(self):
    for cmd in (
      DFROBOT_HT1632_SYS_EN,
      DFROBOT_HT1632_LED_ON,
      DFROBOT_HT1632_BLINK_OFF,
      DFROBOT_HT1632_MASTER_MODE,
      DFROBOT_HT1632_INT_RC,
      DFROBOT_HT1632_COMMON_16NMOS,
      DFROBOT_HT1632_PWM_CONTROL | 0xF
    ):
      self.writeCommand(cmd)
  def writeCommand(self, cmd):
    val = (DFROBOT_HT1632_COMMAND<<9) | (cmd <<1)
    self.CS.value(0)
    self.writeBits(val,12)
    self.CS.value(1)
  def show(self):
    self.CS.value(0)
    self.writeBits(DFROBOT_HT1632_WRITE,3)
    self.writeBits(0,7)
    for i in range(24):
      val = self.buffer[23-i]
      val <<= 8
      self.writeBits(val,16)
    self.CS.value(1)
  def writeBits(self,data,length):
    while length:
      self.CLK.value(0)
      if(data & (1<< length-1)):
        self.DATA.value(1)
      else:
        self.DATA.value(0)
      self.CLK.value(1)
      length-=1
  def fill(self,vol):
    self.framebuf.fill(vol)
  def pixel(self, x, y, col):
    self.framebuf.pixel(x, y, col)
  def scroll(self, dx, dy):
    self.framebuf.scroll(dx, dy)
  def text(self, string, x, y, col=1):
    self.framebuf.text(string, x, y, col)badge.py
MicroPython
#hardware platform: FireBeetle-ESP8266
import ht1632
import time
DATAPIN=10
CLKPIN =13
CSPIN  =25
led=ht1632.HT1632C(DATAPIN,CLKPIN,CSPIN)
def write1():
  led.text("Firebeetle Badge",0,0)
  led.show()
  
  for i in range(145):
    led.scroll(-1,0)
    led.show()
    time.sleep(0.005)
def write2():
  led.text("Have a nice day",1,0)
  led.show()
  
  for i in range(170):
    led.scroll(-1,0)
    led.show()
    time.sleep(0.01)
        
while True:
  write1()
  write2()
  #time.sleep(1)The article was first published in hackster, December 21, Ā 2017
cr: https://www.hackster.io/hendra/firebeetle-micropython-badge-d1a0e5
author: Firebeetle MicroPython Badge
Ā


 






