diff --git a/boards/default_src/micropython/origin/build/lib/ci130x.py b/boards/default_src/micropython/origin/build/lib/ci130x.py index 7fd34940..4235d73a 100644 --- a/boards/default_src/micropython/origin/build/lib/ci130x.py +++ b/boards/default_src/micropython/origin/build/lib/ci130x.py @@ -16,6 +16,7 @@ _CI_ID_NUM = const(0x06) _CI_ID_CLE = const(0x07) _CI_ID_PACTRL = const(0x09) _CI_ID_END = const(0x5A) +_TIME_SNUM = const(0x75) class CI130X: def __init__(self, i2c_bus, addr=_CI_ADDRESS): @@ -65,7 +66,7 @@ class CI130X: """播放命令词对应ID语音""" self._wreg(bytes([_CI_ID_SET, value, 0, _CI_ID_END])) while blocking: - time.sleep_ms(10) + time.sleep_ms(15) if not self.status()[1]: break @@ -89,6 +90,31 @@ class CI130X: self.play_id(end) time.sleep_ms(delay) + def play_time(self, times=None, detail=True, delay=10): + """播报时间""" + data = time.localtime() if times is None else times + if detail: + for i in range(0, 3): #年 月 日 + self.play_num(data[i]) + time.sleep_ms(delay) + self.play_id(_TIME_SNUM + i) + time.sleep_ms(delay) + + for i in range(3, 5): #时 分 + self.play_num(data[i]) + time.sleep_ms(delay) + self.play_id(_TIME_SNUM + i) + time.sleep_ms(delay) + + if detail: + self.play_num(data[5]) #秒 + time.sleep_ms(delay) + self.play_id(_TIME_SNUM + 5) + time.sleep_ms(delay) + self.play_id(_TIME_SNUM + 6) #星期 + time.sleep_ms(delay) + self.play_num(data[6] + 1) + def pa_ctrl(self, value=True, delay=10): self._wreg(bytes([_CI_ID_PACTRL, int(value), 0, _CI_ID_END])) if value: time.sleep_ms(delay) diff --git a/boards/default_src/micropython_esp32s3/origin/build/lib/ci1302x.py b/boards/default_src/micropython_esp32s3/origin/build/lib/ci1302x.py new file mode 100644 index 00000000..aa366326 --- /dev/null +++ b/boards/default_src/micropython_esp32s3/origin/build/lib/ci1302x.py @@ -0,0 +1,28 @@ +""" +CI1302(继承ci130x) + +MicroPython library for the CI130Xx (ASR-I2C) +======================================================= +@dahanzimin From the Mixly Team +""" +from ci130x import CI130X + +class CI1302(CI130X): + def __init__(self, i2c_bus, addr=0x64): + self._device = i2c_bus + self._address = addr + self._cmd_id = None + + def _wreg(self, reg): + '''Write memory address''' + try: + self._device.writeto(self._address, reg) + except Exception as e: + raise AttributeError("Power supply may not be turned on or", e) + + def _rreg(self, reg, nbytes=1): + '''Read memory address''' + try: + return self._device.readfrom_mem(self._address, reg, nbytes) + except Exception as e: + raise AttributeError("Power supply may not be turned on or", e) diff --git a/boards/default_src/micropython_esp32s3/origin/build/lib/ci130xx.py b/boards/default_src/micropython_esp32s3/origin/build/lib/ci130xx.py deleted file mode 100644 index 13a5eda1..00000000 --- a/boards/default_src/micropython_esp32s3/origin/build/lib/ci130xx.py +++ /dev/null @@ -1,98 +0,0 @@ -""" -CI130X - -MicroPython library for the CI130X (ASR-I2C) -======================================================= -@dahanzimin From the Mixly Team -""" -import time -from struct import pack -from micropython import const - -_CI_ADDRESS = const(0x64) -_CI_ID_GET = const(0x02) -_CI_ID_SET = const(0x03) -_CI_ID_NUM = const(0x06) -_CI_ID_CLE = const(0x07) -_CI_ID_PACTRL = const(0x09) -_CI_ID_END = const(0x5A) - -class CI130X: - def __init__(self, i2c_bus, func=None, addr=_CI_ADDRESS): - self._device = i2c_bus - self._address = addr - self._cmd_id = None - self._func = func - - def _wreg(self, reg): - '''Write memory address''' - try: - self._device.writeto(self._address, reg) - except: - self._func(1) #打开电源 - time.sleep_ms(500) - self._device.writeto(self._address, reg) - - def _rreg(self, reg, nbytes=1): - '''Read memory address''' - try: - return self._device.readfrom_mem(self._address, reg, nbytes) - except: - self._func(1) #打开电源 - time.sleep_ms(500) - return self._device.readfrom_mem(self._address, reg, nbytes) - - - def status(self): - """返回 (是否唤醒, 是否播放)""" - _buf = self._rreg(_CI_ID_GET, 3) - return (bool(_buf[1] & 0x01), bool(_buf[1] & 0x10)) if _buf[2] == _CI_ID_END else (None, None) - - def cmd_id(self, repeat=False): - """返回 识别命令词对应ID""" - _buf = self._rreg(_CI_ID_GET, 3) - if not repeat: - self._wreg(bytes([_CI_ID_CLE, 0, 0, _CI_ID_END])) - time.sleep_ms(50) - self._cmd_id = _buf[0] if _buf[2] == _CI_ID_END else None - return self._cmd_id - - def result(self, ext_id=None): - """获取比较结果 或者输出结果""" - return self._cmd_id if ext_id is None else bool(self._cmd_id == ext_id) - - def sys_cmd(self, value, blocking=True): - """系统命令,1,2唤醒 202~205音量调整 206,207回复播报开关 208退出唤醒""" - self.play_id(value, blocking) - - def play_id(self, value, blocking=True): - """播放命令词对应ID语音""" - self._wreg(bytes([_CI_ID_SET, value, 0, _CI_ID_END])) - while blocking: - time.sleep_ms(10) - if not self.status()[1]: - break - - def play_num(self, value, blocking=True): - """播放浮点数据的合成语音""" - self._wreg(bytes([_CI_ID_NUM]) + pack('d', float(value)) + bytes([0, _CI_ID_END])) - while blocking: - time.sleep_ms(10) - if not self.status()[1]: - break - - def play(self, star=None, num=None, end=None, delay=10): - """组合播报名词+数值+单位""" - if star is not None: - self.play_id(star) - time.sleep_ms(delay) - if num is not None: - self.play_num(num) - time.sleep_ms(delay) - if end is not None: - self.play_id(end) - time.sleep_ms(delay) - - def pa_ctrl(self, value=True, delay=10): - self._wreg(bytes([_CI_ID_PACTRL, int(value), 0, _CI_ID_END])) - if value: time.sleep_ms(delay) diff --git a/boards/default_src/micropython_esp32s3/origin/build/lib/mixgo_sant.py b/boards/default_src/micropython_esp32s3/origin/build/lib/mixgo_sant.py index 35503040..26f6d275 100644 --- a/boards/default_src/micropython_esp32s3/origin/build/lib/mixgo_sant.py +++ b/boards/default_src/micropython_esp32s3/origin/build/lib/mixgo_sant.py @@ -63,8 +63,8 @@ except Exception as e: '''ASR-Sensor''' try : - from ci130xx import CI130X - onboard_asr = CI130X(inboard_i2c, onboard_bot.asr_en) + from ci1302x import CI1302 + onboard_asr = CI1302(inboard_i2c) except Exception as e: print("Warning: Failed to communicate with CI130X (ASR) or",e) diff --git a/boards/default_src/micropython_esp32s3/origin/build/lib/sant_bot.py b/boards/default_src/micropython_esp32s3/origin/build/lib/sant_bot.py index 106e30f5..4b6a5a4a 100644 --- a/boards/default_src/micropython_esp32s3/origin/build/lib/sant_bot.py +++ b/boards/default_src/micropython_esp32s3/origin/build/lib/sant_bot.py @@ -89,8 +89,9 @@ class BOT035: def cam_reset(self, value): self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xEF) | (value << 4)) - def asr_en(self, value=None): + def asr_en(self, value=None, delay=500): self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xF3) | (value << 2)) + time.sleep_ms(delay) def uart_select(self, value): self._wreg(_BOT035_CMD, (self._rreg(_BOT035_CMD) & 0xFC) | value) diff --git a/boards/default_src/micropython_esp32s3/origin/build/lib/sant_g3.py b/boards/default_src/micropython_esp32s3/origin/build/lib/sant_g3.py new file mode 100644 index 00000000..fa37e485 --- /dev/null +++ b/boards/default_src/micropython_esp32s3/origin/build/lib/sant_g3.py @@ -0,0 +1,30 @@ +""" +SANT G2 -MixGo SANT EXT G2 + +MicroPython library for the SANT G2 (Expansion board for MixGo SANT) +======================================================= +@dahanzimin From the Mixly Team +""" + +import gc +from machine import Pin, SoftI2C + +'''i2c-extboard''' +ext_i2c = SoftI2C(scl=Pin(18), sda=Pin(21), freq=400000) + +'''RFID_Sensor''' +try : + import rc522 + ext_rfid = rc522.RC522(ext_i2c) +except Exception as e: + print("Warning: Failed to communicate with SI522A (RFID) or",e) + +'''RADAR_Sensor''' +try : + import cbr817 + ext_mmw = cbr817.CBR817(ext_i2c) +except Exception as e: + print("Warning: Failed to communicate with CBR817 (RADAR) or",e) + +'''Reclaim memory''' +gc.collect()