Exemple #1
0
def camera_setup():
    lcd.direction(lcd.YX_LRUD)
    sensor.reset()
    sensor.set_framesize(sensor.QQVGA)
    sensor.set_pixformat(sensor.GRAYSCALE)
    sensor.run(1)
    sensor.skip_frames(time=2000)
Exemple #2
0
#

##################################################
# import
##################################################
import lcd
import image
import time

##################################################
# initialize
##################################################
# LCDを初期化
lcd.init()
# LCDの方向を設定
lcd.direction(lcd.YX_LRUD)

##################################################
# main
##################################################
# LDCをクリア(色を指定)
lcd.clear(lcd.BLUE)

# 2秒待機
time.sleep(2)

# LCDに対して文字を描画
lcd.draw_string(100, 100, "hello maixpy", lcd.WHITE, lcd.BLACK)

# 2秒待機
time.sleep(2)
Exemple #3
0
## Copyright (c) 2019 aNoken

import sensor, image, lcd

lcd.init()
lcd.direction(lcd.YX_RLUD)

fname = "test.jpg"
img_read = image.Image(fname)
lcd.display(img_read)
Exemple #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)
Exemple #5
0
import lcd, time
import image

bg = (236,36,36)
lcd.init(freq=15000000)
lcd.direction(lcd.YX_RLDU)
lcd.clear(lcd.RED)
time.sleep(1)
lcd.draw_string(80, 120, "hello maixpy", lcd.WHITE, lcd.RED)
time.sleep(2)


img = image.Image()
img.draw_string(30, 100, "hello maixpy", scale=2)
img.draw_rectangle((120,120,30,30))
lcd.display(img)
Exemple #6
0
'''
import sensor
import image
import lcd

#camera config
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)  #default mirrored
sensor.run(1)

#lcd config
lcd.init()
lcd.direction(lcd.YX_LRUD)  #default rotated

chsd = False

if (len(os.listdir("/")) > 1):  #easy-check /flash and /sd exist
    chsd = True
else:
    print("SD card not found.")
    lcd.draw_string(10, 20, "SD card error.", lcd.RED)
    chsd = False
try:
    if (chsd):
        os.mkdir("/sd/image")
except:
    print("forlder exists.coninue.")
    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())

# Save two image: Raw image and image with annotation
# Default annotation -> 'None (0.0 %)' at (10,10)
def save_image(src_img, path, annotation='None', x=10, y=10):
    src_img.save(path + '_001.bmp')
    print('Saved raw image to: ' + path + '_001.bmp')
    src_img.draw_string(x, y, annotation, color=(255, 0, 0), scale=1)
    src_img.save(path + '_002.bmp')
    print('Saved annotated image to: ' + path + '_002.bmp')


# ===== Inits =====
# Init LCD
lcd.init()
lcd.direction(0x60)
lcd.clear()
lcd.draw_string(10, 10, 'Abfall Klassifizierung')
lcd.draw_string(10, 30, 'Lade Modell ' + kmodel_path + ' ...')

# Init camers
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
#sensor.set_vflip(1)
sensor.run(1)

# Init button (A, front)
fm.register(board_info.BUTTON_A, fm.fpioa.GPIO1)
btn_a = GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP)
Exemple #9
0
def main():
    servo_freq = 50  # Hz

    servo_vert = Servo(pin=10,
                       freq=servo_freq,
                       min_duty=7,
                       max_duty=11.5,
                       timer=Timer.TIMER0,
                       channel=Timer.CHANNEL0,
                       initial_pos=0.5)

    servo_hor = Servo(pin=11,
                      freq=servo_freq,
                      min_duty=2.8,
                      max_duty=11.5,
                      timer=Timer.TIMER0,
                      channel=Timer.CHANNEL1)

    lcd.init(freq=15000000)
    lcd.direction(lcd.YX_LRDU)
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.set_vflip(1)

    # 20 class yolo
    classes = [
        'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat',
        'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person',
        'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'
    ]
    # target_class = 14  # person
    # target_class = 7  # cat
    target_class = 4  # bottle
    # target_class = 19  # monitor
    task = kpu.load(0x500000)
    anchor = (1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52)

    # For face detector yolo
    # task = kpu.load(0x300000)
    # anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
    # target_class = 0

    a = kpu.init_yolo2(task, 0.1, 0.3, 5, anchor)

    sensor.run(1)

    while (True):
        img = sensor.snapshot()
        code = kpu.run_yolo2(task, img)

        target_boxes = []
        if code:
            target_boxes = [d for d in code if d.classid() == target_class]

        if target_boxes:
            # change turret position
            target = max(target_boxes, key=lambda d: d.value())

            a = img.draw_rectangle(target.rect())
            a = lcd.display(img)
            for i in code:
                lcd.draw_string(target.x(),
                                target.y() + 12, '%f1.3' % target.value(),
                                lcd.RED, lcd.WHITE)

            target_center_x = target.x() + target.w() // 2
            target_center_y = target.y() + target.h() // 2

            servo_hor.pos += 0.00015 * (sensor.width() // 2 - target_center_x)
            servo_vert.pos -= 0.0005 * (sensor.height() // 2 - target_center_y)

            # print('hor', servo_hor.pos)
            # print('vert', servo_vert.pos)
        else:
            a = lcd.display(img)
    kpu.deinit(task)
Exemple #10
0
import sensor
import image
import lcd
import KPU as kpu

lcd.init()
lcd.direction(lcd.YX_LRDU)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
task = kpu.load(0x300000)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275,
          6.718375, 9.01025)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while (True):
    img = sensor.snapshot()
    code = kpu.run_yolo2(task, img)
    if code:
        for i in code:
            print(i)
            a = img.draw_rectangle(i.rect())
    a = lcd.display(img)
a = kpu.deinit(task)