Ejemplo n.º 1
0
def m5stickv_init(uniV_use):
    if uniV_use==0:
        lcd.init()
        lcd.rotation(2)
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.set_windowing((224, 224))
    sensor.run(1)
    if uniV_use==0:
        pmu = axp192()
        pmu.setScreenBrightness(9)
Ejemplo n.º 2
0
from pmu import axp192
from fpioa_manager import fm, board_info
from machine import UART
fm.register(35, fm.fpioa.UART2_TX, force=True)
fm.register(34, fm.fpioa.UART2_RX, force=True)
uart_Port = UART(UART.UART2, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)


def u_send(d):
    data_packet = bytearray([0xFF, 0xAA])
    data_packet.append(d % 256)
    uart_Port.write(data_packet)
    print("send " + str(d))


pmu = axp192()
pmu.enablePMICSleepMode(True)

lcd.init()
lcd.rotation(2)  #Rotate the lcd 180deg

try:
    img = image.Image("/flash/startup.jpg")
    lcd.display(img)
except:
    lcd.draw_string(lcd.width() // 2 - 100,
                    lcd.height() // 2 - 4, "Error: Cannot find start.jpg",
                    lcd.WHITE, lcd.RED)

from Maix import I2S, GPIO
import audio
Ejemplo n.º 3
0
import pmu
import time

eval_commands = [
    "getUSBVoltage()",
    "getUSBInputCurrent()",
    #    "getConnextVoltage()",
    #    "getConnextInputCurrent()",
    "getVbatVoltage()",
    "getBatteryChargeCurrent()",
    "getBatteryDischargeCurrent()",
    #    "getBatteryInstantWatts()",
    "getTemperature()"
]

lcd.init()
lcd.rotation(2)  #Rotate the lcd 180deg

axp = pmu.axp192()
axp.enableADCs(True)

n = min(len(eval_commands), 8)
while 1:
    for i in range(n):
        cmd = eval_commands[i]
        ret = eval("axp." + cmd)
        s = str(ret) + " #" + cmd
        lcd.draw_string(0, i * 16, s, lcd.GREEN, lcd.BLACK)

    time.sleep(1)
Ejemplo n.º 4
0
    def setup(self):
        lcd.init(freq=40000000)
        #lcd.direction(lcd.YX_LRUD)
        lcd.direction(lcd.YX_RLDU)

        fm.register(board_info.BUTTON_A, fm.fpioa.GPIO1)
        self.button_a = GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP)
        fm.register(board_info.BUTTON_B, fm.fpioa.GPIO2)
        self.button_b = GPIO(GPIO.GPIO2, GPIO.IN, GPIO.PULL_UP)

        self.counter = 0
        self.last_sec = 0
        self._axp192 = pmu.axp192()

        self._axp192.enableADCs(True)
        self._axp192.enableCoulombCounter(False)

        self.printRegs()

        # LCDの明るさ
        self._axp192.__writeReg(0x91, 0xA0)  # 上位4bit 7から15
        # self._axp192.setScreenBrightness(7) # <- 0x28じゃなくて0x91が正しい https://github.com/sipeed/MaixPy/pull/153

        # バッテリ充電ON/OFF https://twitter.com/michan06/status/1168104180445106180
        reg0x33 = self._axp192.__readReg(0x33)
        reg0x33 |= (1 << 7)  # ON
        #reg0x33 &= ~(1<<7) # OFF
        self._axp192.__writeReg(0x33, reg0x33)

        # REG 33H:充電制御1
        # デフォルト:C8H
        #
        # bit7    充電機能により、内部および外部チャネルを含む制御ビットが可能 0:オフ、1:オン
        # bit6:5  充電目標電圧設定
        #           00:4.1V;
        #           01:4.15V;
        #           10:4.2V;
        #           11:4.36V
        # bit4    充電終了電流設定
        #           0:充電電流が設定値の10%未満になったら充電を終了
        #           1:充電電流が設定値の15%未満になったら充電を終了します
        # bit3-0  内部パス充電電流設定 default=1000(780mA)
        #           0000: 100 mA;  0001: 190 mA;  0010: 280 mA;  0011: 360 mA;
        #           0100: 450 mA;  0101: 550 mA;  0110: 630 mA;  0111: 700 mA;
        #           1000: 780 mA;  1001: 880 mA;  1010: 960 mA;  1011:1000 mA;
        #           1100:1080 mA;  1101:1160 mA;  1110:1240 mA;  1111:1320 mA;

        # 0xC0(0b11000000) なら「充電オン、充電目標電圧=4.2V、充電終了電流=10%、充電電流=100mA」
        reg0x33 = self._axp192.__readReg(0x33)
        reg0x33 = (reg0x33 & 0xF0) | 0x01  # 190mA
        self._axp192.__writeReg(0x33, reg0x33)

        # REG 34H:充電制御2
        # デフォルト:41H
        #  7    プリチャージタイムアウト設定Bit1
        #         00:30分; 01:40分;
        #         10:50分; 11:60分
        #  6    プリチャージタイムアウト設定Bit0
        #  5-3  外部パス充電電流設定範囲300-1000mA、100mA /ステップ、デフォルト300mA
        #  2    充電中の外部パスイネーブル設定0:オフ; 1:オープン
        #  1    定電流モードでのタイムアウト設定Bit1   00:7時間; 01:8時間;  10:9時間;   11:10時間RW0
        #  0    定電流モードでのタイムアウト設定Bit0

        # REG 01H:電源装置の動作モードと充電状態の表示
        # 0x70なら「温度超過なし、充電中、バッテリーあり、バッテリーアクティベーションモードに入っていない、実際の充電電流は予想電流と等しい、モードA」
        #
        # bit7    AXP192が過熱しているかどうかを示します    0:温度超過なし; 1:温度超過
        # bit6    充電表示    0:充電していない、または充電が完了している、   1:充電中
        # bit5    バッテリーの存在表示   0:バッテリーはAXP192に接続されていません;    1:バッテリーはAXP192に接続されていま
        # bit4    予約済み、変更不可
        # bit3    バッテリーがアクティブモードかどうかを示します   0:バッテリーアクティベーションモードに入っていない;    1:バッテリーアクティベーションモードに入っている
        # bit2    充電電流が目的の電流よりも小さいかどうかを示します   0:実際の充電電流は予想電流と等しい;    1:実際の充電電流は予想電流よりも小さい
        # bit1    AXP192スイッチモード表示   0:モードA; 1:モードB
        # bit0    予約済み、変更不可

        self._axp192.setK210Vcore(0.8)
    def setup(self):
        print(kpu.memtest())
        self._rec = None
        self._record_count = 0
        self._loop_counter = 0
        self._last_100ms_cnt = 0
        self._next_loop_cmd_ms = 0
        self._last_active_ms = 0
        self._lcd_brightness = None
        self._charge_mode = None
        self._timestamp = None
        self._ramdisk_mount_point = "/ramdisk"
        self._task = None
        #self._mode              = "rec"
        self._mode = "auto"
        self._flag_send_img_to_C = False

        self._axp192 = pmu.axp192()
        self._axp192.enableADCs(True)
        self._axp192.enableCoulombCounter(False)
        self.set_lcd_brightness(9)

        fm.register(board_info.BUTTON_A, fm.fpioa.GPIO1)
        self.button_a = GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP)
        fm.register(board_info.BUTTON_B, fm.fpioa.GPIO2)
        self.button_b = GPIO(GPIO.GPIO2, GPIO.IN, GPIO.PULL_UP)

        fm.register(35, fm.fpioa.UART2_TX, force=True)
        fm.register(34, fm.fpioa.UART2_RX, force=True)
        baud = 115200  # 115200 1500000 3000000 4500000
        self.uart = UART(UART.UART2,
                         baud,
                         8,
                         0,
                         0,
                         timeout=1000,
                         read_buf_len=4096)

        sensor.reset()
        sensor.set_pixformat(sensor.RGB565)
        #sensor.set_pixformat(sensor.GRAYSCALE)
        #sensor.set_framesize(sensor.QVGA)
        sensor.set_framesize(sensor.QQVGA)
        #sensor.set_vflip(1)
        #sensor.set_hmirror(1) # if set 1, storange color!!!
        #sensor.set_windowing((224, 224))
        sensor.run(1)

        try:
            stat = uos.stat(self._ramdisk_mount_point)
            uos.umount(self._ramdisk_mount_point)
            # print("mount_point=", mount_point, " stat=", stat)
        except OSError as e:
            pass
        blkdev = RAMFlashDev()
        vfs = uos.VfsSpiffs(blkdev)
        vfs.mkfs(vfs)
        uos.mount(vfs, self._ramdisk_mount_point)

        lcd.init(freq=40000000)
        lcd.direction(lcd.YX_RLDU)
        lcd.clear(lcd.BLACK)
        lcd.draw_string(10, 10, "BeetleC_AutoDrive_V", lcd.CYAN, lcd.BLACK)

        if self._mode == "auto":
            #self._twoWheelSteeringThrottle = TwoWheelSteeringThrottle()
            print(kpu.memtest())
            self._task = kpu.load("/sd/model.kmodel")
            print(kpu.memtest())