azharHuang HaixinJavenTanHadi Zann
Published

SRES ( Smarter Retail & Emergency System)

Making all retail lines smarter and efficient

BeginnerWork in progress99
SRES ( Smarter Retail & Emergency System)

Things used in this project

Story

Read more

Custom parts and enclosures

QR CODE - store / management

QR example display

QR CODE - public

QR example for the public

Schematics

BLOCK DIAGRAM

Block Diagram - shows how the system works

Foam Board Ideation

An example of how SRES works

Blocky Code

Blocky Code for Store / Management Use

Blocky Code

Blocky Code for Public Use

Code

Public Use

Python
For the public to view real time data on the occupancy level of, washrooms and lifts.
from m5stack import *
from m5ui import *
from uiflow import *
import unit
remoteInit()

setScreenColor(0x222222)
pir_0 = unit.get(unit.PIR, unit.PORTB)


sensor = None



label1 = M5TextBox(0, 175, "nil", lcd.FONT_DejaVu24, 0xFFFFFF, rotate=0)
label2 = M5TextBox(0, 133, "Handicap Toilet :", lcd.FONT_DejaVu24, 0xFFFFFF, rotate=0)
label0 = M5TextBox(0, 0, "Repairs will be arriving", lcd.FONT_DejaVu24, 0xffffff, rotate=0)
label3 = M5TextBox(0, 60, "Toilets :", lcd.FONT_DejaVu24, 0xFFFFFF, rotate=0)
label4 = M5TextBox(0, 94, "nil", lcd.FONT_DejaVu24, 0xFFFFFF, rotate=0)
label5 = M5TextBox(35, 220, "QR CODE", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label6 = M5TextBox(129, 220, "TOILETS", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label7 = M5TextBox(228, 220, "LIFTS", lcd.FONT_Default, 0xFFFFFF, rotate=0)



def buttonA_wasPressed():
  global sensor
  setScreenColor(0x000000)
  lcd.qrcode('https://flow.m5stack.com/remote?id=undefined', 60, 25, 200)
  pass
btnA.wasPressed(buttonA_wasPressed)

def buttonC_wasPressed():
  global sensor
  setScreenColor(0x000000)
  label0.hide()
  label4.show()
  label3.hide()
  label2.hide()
  label1.show()
  label1.setText('Long press to check availability')
  label4.setText('Lift availability')
  pass
btnC.wasPressed(buttonC_wasPressed)

def buttonB_wasPressed():
  global sensor
  setScreenColor(0x000000)
  label0.hide()
  label1.show()
  label2.hide()
  label3.hide()
  label4.show()
  label1.setText('Long press to check availability')
  label4.setText('Toilet availability')
  pass
btnB.wasPressed(buttonB_wasPressed)

def buttonC_pressFor():
  global sensor
  setScreenColor(0x000000)
  sensor = pir_0.state
  if sensor == 1:
    label2.setText('Lobby B Lift :')
    label3.setText('Lobby A Lift :')
    label1.setText('Occupied')
    label4.setText('Occupied')
  else:
    label2.setText('Lobby B Lift :')
    label3.setText('Lobby A Lift :')
    label1.setText('Unoccupied')
    label4.setText('Unoccupied')
  pass
btnC.pressFor(0.8, buttonC_pressFor)

def buttonB_pressFor():
  global sensor
  setScreenColor(0x000000)
  sensor = pir_0.state
  if sensor == 1:
    label2.setText('Toilets :')
    label3.setText('Handicap Toilet :')
    label1.setText('Occupied')
    label4.setText('Occupied')
  else:
    label2.setText('Toilets :')
    label3.setText('Handicap Toilet :')
    label1.setText('Unoccupied')
    label4.setText('Unoccupied')
  pass
btnB.pressFor(0.8, buttonB_pressFor)


def button_1_callback():
  global sensor, pir_0 
  label1.hide()
  setScreenColor(0xffff66)
  rgb.setColorAll(0xffff66)
  speaker.sing(831, 1/4)
  rgb.setColorAll(0x000000)
  label0.show()
  label0.setColor(0x000000)

def button_2_callback():
  global sensor, pir_0 
  label1.hide()
  setScreenColor(0x3366ff)
  rgb.setColorAll(0x000000)

label0.hide()
label1.hide()
label2.hide()
label3.hide()
label4.hide()

Store / Management Use

Python
For stores to collect data on the visiting rate of shoppers. Store owners are then able to allocate the necessary equipment needed. Management side of building managers are able to promptly acquire assistance in servicing the building and have control over emergency systems.
from m5stack import *
from m5ui import *
from uiflow import *
import time
import unit
remoteInit()

setScreenColor(0x222222)
env_1 = unit.get(unit.ENV, unit.PAHUB0)
rfid_1 = unit.get(unit.RFID, unit.PAHUB1)
tof_2 = unit.get(unit.TOF, unit.PAHUB5)
servo_2 = unit.get(unit.SERVO, unit.PORTB)
pahub_0 = unit.get(unit.PAHUB, unit.PORTA, 0x70)


switch_value = None
DistData = None
counter = None
TempV = None
HumidV = None
PresV = None
average = None



label1 = M5TextBox(0, 0, "Number Of Customers :", lcd.FONT_DejaVu24, 0xFFFFFF, rotate=0)
label2 = M5TextBox(250, 200, "label2", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label9 = M5TextBox(0, 0, "WARNING : EMERGENCY", lcd.FONT_DejaVu72, 0xFFFFFF, rotate=0)
label3 = M5TextBox(0, 150, "No. of people entering and leaving", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label0 = M5TextBox(257, 144, "0", lcd.FONT_DejaVu40, 0xFFFFFF, rotate=0)
label4 = M5TextBox(0, 44, "label4", lcd.FONT_DejaVu40, 0xFFFFFF, rotate=0)
label5 = M5TextBox(147, 65, "Customers", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
TEMPERATURE = M5TextBox(0, 124, "TEMPERATURE", lcd.FONT_Default, 0xFFFFFF, rotate=0)
HUMIDITY = M5TextBox(0, 166, "HUMIDITY", lcd.FONT_Default, 0xFFFFFF, rotate=0)
PRESSURE = M5TextBox(0, 208, "PRESSURE", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label6 = M5TextBox(182, 124, "label6", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label7 = M5TextBox(182, 170, "label7", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label8 = M5TextBox(182, 208, "label8", lcd.FONT_Default, 0xFFFFFF, rotate=0)

from numbers import Number



def buttonA_wasPressed():
  global switch_value, DistData, counter, TempV, HumidV, PresV, average
  label0.hide()
  label1.hide()
  label2.hide()
  label3.hide()
  label5.hide()
  setScreenColor(0x000000)
  lcd.qrcode('https://flow.m5stack.com/remote?id=undefined', 72, 32, 176)
  pass
btnA.wasPressed(buttonA_wasPressed)

def buttonC_wasPressed():
  global switch_value, DistData, counter, TempV, HumidV, PresV, average
  setScreenColor(0x000000)
  TEMPERATURE.show()
  HUMIDITY.show()
  PRESSURE.show()
  label0.hide()
  label1.hide()
  label2.hide()
  label3.hide()
  label4.hide()
  label5.hide()
  label9.hide()
  TempV = env_1.temperature
  HumidV = env_1.humidity
  PresV = env_1.pressure
  label6.setText(str(TempV))
  label7.setText(str(HumidV))
  label8.setText(str(PresV))
  if TempV >= 55:
    setScreenColor(0xff0000)
    rgb.setColorAll(0xff0000)
    label4.setColor(0x000000)
    label4.show()
    label4.setText('WARNING : FIRE HAZARD DETECTED')
  pass
btnC.wasPressed(buttonC_wasPressed)

def buttonB_wasPressed():
  global switch_value, DistData, counter, TempV, HumidV, PresV, average
  setScreenColor(0x000000)
  label1.show()
  label3.show()
  label5.show()
  label4.setText('-')
  label2.setText(str(DistData))
  while True:
    DistData = (tof_2.distance) / 10
    wait_ms(50)
    if DistData <= 30:
      counter = (counter if isinstance(counter, Number) else 0) + 1
      label0.setText(str(counter))
      wait_ms(50)
      average = counter / 2
      label4.setText(str(average))
    wait_ms(2)
  pass
btnB.wasPressed(buttonB_wasPressed)



def button_1_callback():
  global switch_value, DistData, counter, TempV, HumidV, PresV, average, env_1, rfid_1, tof_2, servo_2, pahub_0 
  setScreenColor(0xffff66)
  rgb.setColorAll(0xffff66)
  speaker.sing(220, 1/4)

def switch_1_callback(switch_value):
  global DistData, counter, TempV, HumidV, PresV, average, env_1, rfid_1, tof_2, servo_2, pahub_0 
  if switch_value == 1:
    servo_2.write_angle(90)
    for count in range(1):
      rgb.setColorAll(0xff6666)
      setScreenColor(0xff0000)
      label9.show()
      speaker.sing(784, 1)
      speaker.setVolume(0.1)
      wait_ms(10)
      rgb.setColorAll(0x000000)
      speaker.sing(392, 1)
      speaker.setVolume(0.1)
      wait_ms(10)
      rgb.setColorAll(0xff6666)
  elif switch_value == 0:
    servo_2.write_angle(0)
    label9.hide()
    setScreenColor(0x000000)
    rgb.setColorAll(0x000000)

def gauge_1_callback():
  global switch_value, DistData, counter, TempV, HumidV, PresV, average, env_1, rfid_1, tof_2, servo_2, pahub_0 
  return env_1.temperature
label0.hide()
label1.hide()
label2.hide()
label3.hide()
label4.hide()
label5.hide()
TEMPERATURE.hide()
HUMIDITY.hide()
PRESSURE.hide()
label6.hide()
label7.hide()
label8.hide()
label9.hide()
label4.setText('Scan Your Card')
while True:
  if rfid_1.isCardOn():
    rgb.setColorAll(0xff0000)
    wait(1)
    if (rfid_1.readUid()) == 'e0c8284f4f':
      speaker.tone(800, 200)
      label4.setText('Welcome!')
      rgb.setColorAll(0x33ff33)
      wait(1)
  else:
    label4.setText('Scan Your Card')
  wait_ms(2)

Credits

azhar
1 project • 1 follower
Contact
Huang Haixin
1 project • 0 followers
Contact
JavenTan
1 project • 0 followers
Contact
Hadi Zann
1 project • 0 followers
Contact

Comments

Please log in or sign up to comment.