dirty

个性签名:

保持热爱

  • 2025-01-21
  • 发表了主题帖: 【嘉楠K230开发板】摄像头显示与画图

          本篇讲述摄像头使用显示及简单的画图。 一.原理了解       K230 具备 3 路 MIPI-CSI 输入(3x2 lane/1x4+1x2 lane),最多可连接 3 路摄像头,每路摄像头支持输出 3 个通道,提供不同的分辨率和图像格式。开发板CSI2上已配有GC2093摄像头,查阅资料是支持200W像素(1920*1080),60fps。摄像头接口原理如下       关于K230显示,官网也做了些讲解。K230 配备 1 路 MIPI-DSI(1x4 lane),可驱动 MIPI 屏幕或通过接口芯片转换驱动 HDMI 显示器及支持虚拟IDE缓冲区显示。这里用于方便调试,选择支持虚拟IDE缓冲区显示。三者特点这里也了解下。 ●MIPI显示屏:外接01Studio 3.5寸MiPi显示屏,可以一体化组装,适合离线部署调试使用。最大支持800x480分辨率。 ●HDMI:外接HDMI显示屏,清晰度最高。最大支持1920x1080分辨率。 ●IDE缓冲区显示:性价比最高,图像质量有一定下降,但能满足大部分场合调试使用。最大支持1920x1080分辨率。 二.代码准备 1.首先了解下摄像头及Display API使用函数及编码流程。 sensor.reset() ---复位和初始化摄像头。 sensor.set_framesize---设置每个通道的图像输出尺寸 sensor.set_pixformat---设置图像像素格式 sensor.set_hmirror---设置摄像头画面水平镜像 sensor.set_vflip---设置摄像头画面垂直翻转   Display.init---初始化Display模块 Display.deinit()---注销Display模块 2.关于画图API使用 sensor.snapshot()---通过摄像头拍摄方式返回image对象 image.Image---通过读取图片方式创建image对象 image.draw_line---画线段 image.draw_rectangle---画矩形 image.draw_circle---画圆 image.draw_arrow---画箭头 image.draw_cross---画十字交叉 image.draw_string---写字符 image.draw_string_advanced---写字符,支持中文。 这里实测“楠”字显示不出来。 3.代码编写       了解上面的API函数及构建流程,下面代码实现摄像头显示与画图功能。 ''' #1.实现摄像头图像采集显示 #2.画图 ''' import time, os, sys from media.sensor import * #导入sensor模块,使用摄像头相关接口 from media.display import * #导入display模块,使用display相关接口 from media.media import * #导入media模块,使用meida相关接口 sensor = Sensor() #构建摄像头对象 sensor.reset() #复位和初始化摄像头 sensor.set_framesize(Sensor.FHD) #设置帧大小FHD(1920x1080),默认通道0 sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0 print(sensor.width(), sensor.height()) #使用IDE缓冲区输出图像,显示尺寸和sensor配置一致。 Display.init(Display.VIRT, sensor.width(), sensor.height()) MediaManager.init() #初始化media资源管理器 sensor.run() #启动sensor clock = time.clock() while True: clock.tick() '''摄像头图像采集显示''' img = sensor.snapshot() #拍摄一张图 # Display.show_image(img) #显示图片 '''画图''' # 画线段:从 x0, y0 到 x1, y1 坐标的线段,颜色红色,线宽度 2。 img.draw_line(20, 220, 100, 220, color = (255, 0, 0), thickness = 2) #画矩形:绿色不填充。 img.draw_rectangle(150, 150, 200, 240, color = (0, 255, 0), thickness = 2, fill = False) #画圆:蓝色不填充。 img.draw_circle(60, 320, 50, color = (0, 0, 255), thickness = 5, fill = False) #画箭头:白色。 img.draw_arrow(150, 120, 250, 120, color = (255, 0, 255), size = 20, thickness = 5) #画十字交叉。 img.draw_cross(60, 120, color = (0, 255, 255), size = 20, thickness = 2) #写字符。 #img.draw_string(150, 200, "Hello 01Studio!", color = (255, 255, 255), scale = 4, mono_space = False) #写字符,支持中文。 img.draw_string_advanced(100, 400, 50, "EEWorld & 01Studio", color = (255, 0, 255)) img.draw_string_advanced(100, 500, 50, "K230开发板", color = (255, 255, 0)) img.draw_string_advanced(100, 600, 66, "祝2025蛇年新春快乐", color = (255, 0, 0)) Display.show_image(img) print(clock.fps()) #打印FPS   三.调试测验       IDE运行,帧缓冲区点选“缩放”,可以看到显示摄像头画面,以及画图,效果如下,可以看到帧率在45fps左右,动态显示视频,画图也是按设计显现。         至此,实现摄像头显示与画图功能。  

  • 发表了主题帖: 【嘉楠K230开发板】基础功能汇总调测

          本篇讲述可开发板基本外设功能如按键、定时器、ADC、UART和线程与文件读写的基础功能体验。 一.硬件原理       这部分功能硬件上主要在开发板扇出引脚和已经有的硬件接口。       按键原理如下,可以看到是低电平触发:       K230内部包含一个ADC硬件模块,有6个通道,采样分辨率为12bit(0-4095),采样速率为1M。开发板引出0~3共4个通道。其中通道0、1量程为0-3.6V,通道2、3量程为0-1.8V。这里使用可调电阻100K,使用通道0,排针的32脚,电压使用3.3V,在通道量程耐受范围内。接好后硬件如下:       CanMV K230系统内置了文件系统,上电后可看到CanMV盘符。打开后可以看到里面又有2个盘符,分别是sdcard和data。这里文件读写在sdcard下       K230内部包含五个UART硬件模块,其中UART0被小核终端占用,UART3被大核终端占用,剩余UART1,UART2,UART4。K230开发板通过排针引出了UART1和UART2共2个UART供用户使用。UART1 TX1(GPIO3), RX1(GPIO4);UART2:TX2(GPIO11), RX2(GPIO12)。这里使用带有端子的UART2。         当我们需要分时完成不同任务时候,线程编程就派上用场了。这有点像RTOS(实时操作系统)。下面代码包含有编程实现多线程同时运行任务。   二.程序代码准备       程序实现按键控灯取反,定时器5s间隔回调,串口2打印与接收,线程调度,文件读写。代码如下 ''' #1.按键.通过按键改变LED的亮灭状态 #2.ADC(电压测量).ADC共4个通道,其中通道0、1实际量程为0-3.6V,通道2、3量程为0-1.8V。(请勿超出测量量程,可能导致主控芯片烧坏!) #3.定时器. 5s间隔 #4.多线程使用.5s调度 #5.文件读写 ''' from machine import Pin from machine import FPIOA #导入串口模块 from machine import UART #导入定时器模块 from machine import Timer #导入adc模块 from machine import ADC #导入线程模块 import _thread import time Counter = 0 adc_cnt =0 def timer_fun(tim): global Counter Counter = Counter + 1 print(Counter) #将GPIO52、GPIO21配置为普通GPIO模式 fpioa = FPIOA() fpioa.set_function(52,FPIOA.GPIO52) fpioa.set_function(21,FPIOA.GPIO21) LED=Pin(52,Pin.OUT) #构建LED对象,开始熄灭 KEY=Pin(21,Pin.IN,Pin.PULL_UP) #构建KEY对象 state=0 #LED引脚状态 #使用软件定时器,编号-1 tim = Timer(-1) tim.init(period=5000, mode=Timer.PERIODIC,callback=timer_fun) #周期为5000ms ''' # UART1代码 fpioa.set_function(3,FPIOA.UART1_TXD) fpioa.set_function(4,FPIOA.UART1_RXD) uart=UART(UART.UART1,115200) #设置串口号1和波特率 ''' # UART2代码 fpioa.set_function(11,FPIOA.UART2_TXD) fpioa.set_function(12,FPIOA.UART2_RXD) uart=UART(UART.UART2,115200) #设置串口号2和波特率 uart.write('Hello EEWord & 01Studio. \r\nWelcome to Use K230 Board!\r\n')#发送一条数据 #线程函数 def func(name): while True: print("hello {}".format(name)) time.sleep(5) _thread.start_new_thread(func,("EEWord",)) #开启线程1,参数必须是元组 _thread.start_new_thread(func,("K230",)) #开启线程2,参数必须是元组 '''文件读写,先写再读''' #写文件 f = open('/sdcard/1.txt', 'w') #以写的方式打开一个文件,没有该文件就自动新建 f.write('Today is a Good Day\r\n') #写入数据 f.write('2025年,你好\r\n') #写入数据 f.close() #每次操作完记得关闭文件 # 读文件 f = open('/sdcard/1.txt', 'r') #以读方式打开一个文件 text = f.read() print(text) #读取数据并在终端打印 f.close() #每次操作完记得关闭文件 adc = ADC(0) #通道0 while True: '''按键控制灯亮/灭''' if KEY.value()==0: #按键被按下 time.sleep_ms(10) #消除抖动 if KEY.value()==0: #确认按键被按下 state=not state #使用not语句而非~语句 LED.value(state) #LED状态翻转 print('KEY') while not KEY.value(): #检测按键是否松开 pass '''串口接收数据并原样输出打印''' text=uart.read(128) #接收128个字符 if text != None: print(text) #通过REPL打印串口3接收的数据 adc_cnt+=1 if adc_cnt==10: adc_cnt=0; print(adc.read_u16()) # 获取ADC通道采样值 # 获取ADC通道电压值,保留2为小数。通道0、1实际量程为0-3.6V,返回值x2。 print('%.2f'%(adc.read_uv()/1000000*2), "V") time.sleep(0.1) #100ms   三.调试测验       运行可看到UART2串口输出,文件读写,按按键可以看到LED灯亮/灭,调可调电阻采集电压有变化,定时器计数,线程运行。日志如下   视频如下 [localvideo]c2dafe3580296e8df5ca7663ffd1c40d[/localvideo]         至此,选择的基础功能调试测验完成,得出相应结果/效果,后面继续探索。

  • 回复了主题帖: 【嘉楠K230开发板】开箱与开发环境搭建

    knv 发表于 2025-1-20 09:21 学习一下 哈,也是在学习中

  • 发表了主题帖: 【嘉楠K230开发板】点亮LED

          本篇讲述驱动板载LED闪烁。 一.硬件原理       开发板板载一颗蓝色LED,硬件原理如下,高电平点亮。 二.程序代码       CanMV IDE K230使用MicroPython开发,这里驱动代码如下: from machine import Pin #导入Pin模块 from machine import FPIOA import time #将GPIO52配置为普通GPIO fpioa = FPIOA() fpioa.set_function(52,FPIOA.GPIO52) LED=Pin(52,Pin.OUT) #构建led对象,GPIO52,输出 while True: LED.value(1) #点亮LED,也可以使用led.on() time.sleep(1) #1s LED.value(0) time.sleep(1) #1s 三.运行测试与固化 1.运行测试       开发板接上USB Type C并上电,打开CanMV IDE K230,连接上开发板后点如下图绿色三角按钮运行 2.程序固化       直接在IDE里面运行功能代码是保存在开发板的RAM(内存)里面,方便调试,但断电后丢失。需要开发板断电后再上电能运行相关程序,则如下操作,将代码以main.py发送到开发板 3.程序固化后,关掉IDE,开发板上电,可以看到蓝色LED灯闪烁,效果如下: [localvideo]00008b8ffa113ce63d4487fe4388bfe5[/localvideo]       至此,使用IDE固化程序,实现开发板驱动点灯功能。  

  • 2025-01-20
  • 回复了主题帖: 读书活动入围名单:《ROS2智能机器人开发实践》

    个人信息无误,确认可以完成阅读分享计划

  • 2025-01-19
  • 发表了主题帖: 【嘉楠K230开发板】开箱与开发环境搭建

    本帖最后由 dirty 于 2025-1-19 23:20 编辑       有幸获得嘉楠K230开发板,嘉楠K230在推出发布的时候就有所关注了,这次有机会上手,庆幸也很高兴,对此表示感谢。下面开箱看看开发板实物: 一.了解开发板       这款开发板采用嘉楠科技Kendryte®系列AIoT芯片中的最新一代SoC芯片K230。该芯片采用全新的多异构单元加速计算架构,集成了2个RISC-V高能效计算核心,内置新一代KPU(Knowledge Process Unit)智能计算单元,具备多精度AI算力,广泛支持通用的AI计算框架。该芯片同时具备丰富多样的外设接口,以及2D、2.5D等多个标量、向量、图形等专用硬件加速单元,可以对多种图像、视频、音频、AI等多样化计算任务进行全流程计算加速,具备低延迟、高性能、低功耗、快速启动、高安全性等多项特性。芯片框架参数如下:      K230芯片参数如下:       01Studio CanMV K230 AI开发板硬件资源如下:       可以看到开发板硬件设计还是很精巧合理的,外设及各类接口也很丰富,引脚扇出的排针也很方面扩展应用。       下面了解下开发板详细参数:       开发板套件安装好亚克力保护板和散热片即硬件初步准备好。   二.开发环境搭建 1.开发环境选择       K230开发环境目前查了下资料嘉楠官网介绍有四种及其特点分别是: ●CanMV K230:简洁直观,易于掌握,快速上手。 ●Linux SDK:多功能,拥有丰富的生态系统。对于小白没有CanMV上手快 ●RT-Smart SDK:实时RTOS,拥有迅捷的启动速度。有一定的学习难度。 ●Linux+RT-Smart SDK:丰富的生态系统。对于新手有一定的挑战性。       这里01Studio采用的是CanMV K230,这里也以此入手,后面有时间精力可以对其他环境及SDK进行深入学习研究。   2.开发环境准备       这里安装CanMV K230 IDE,安装好后如下: 3.烧录镜像与开机       首先安装镜像烧录工具rufus,选择SD卡,加载镜像文件,点击“开始”制作。过程如下 4.将制作好镜像的SD卡插入开发板SD卡座,连接上USB Type-C 给开发板供电,可以看到电脑弹出CanMV设备,在设备管理器可看到串口端口号,如下:           至此,对开发板硬件进行了梳理了解,搭建好开发环境,为后面继续探索奠定良好基础。    

  • 2025-01-17
  • 回复了主题帖: 【新年新挑战,任务打卡赢好礼!】第一批获奖名单公布

    已确认

  • 回复了主题帖: EEWorld 2024年度人物:感恩相伴,共赴新程,携手努力!

    感谢感谢。感恩2024年与EEWorld一路相伴,成长了不少,新的一年再接再厉,百尺竿头更进一步

  • 2025-01-16
  • 回复了主题帖: 【匠芯创D133CBS】--10.LVGL界面设计

    jjppo 发表于 2025-1-16 22:03 博主你好,我在移植时遇到了困难,可否详细说说移植的步骤 参考这一篇,里面算讲的比较详细了 https://bbs.eeworld.com.cn/thread-1292138-1-1.html

  • 2025-01-15
  • 回复了主题帖: 【回顾2024,展望2025】新年抢楼活动来啦!

    ⑵实现了哪些目标,达成了什么成就? 实现目标:项目进入试产 达成成就:在论坛参与了多个活动,获得了数张评测券,用在了感兴趣的书籍/板子上,也有上榜 的,是一种鼓励,来年再接再厉,更上一层楼

  • 回复了主题帖: 【回家】你们抢到回老家的票了吗?

    候补到了,感觉火车票不是用来抢的,就像押宝一样,买大还是买小    

  • 回复了主题帖: 【回顾2024,展望2025】新年抢楼活动来啦!

    ⑷最想要什么支持?比如更多的某方面教程、资料、活动? 坛友之间相互交流,疑难问题原厂一定支持。多一些AI、机器人、音视频方面的教程开发板,如ffmpeg,opencv,算法,ROS等方面书籍。做一些悬赏和有奖活动,鼓励创新

  • 回复了主题帖: 【回顾2024,展望2025】新年抢楼活动来啦!

    ⑶最想关注什么技术? 当然是AI方面的了,把这方面能力搞扎实,多向论坛里的大佬们学习,多了解关注行业、技术发展

  • 回复了主题帖: 【回顾2024,展望2025】新年抢楼活动来啦!

    ⑸立一个新年Flag 薪资涨一点;搞点副业;拓展下人脉圈

  • 2025-01-14
  • 回复了主题帖: EEWORLD陪你过大年,新年积分兑换专场来啦~好物多多还有幸运盲盒!

    已兑换,啥时出结果

  • 回复了主题帖: 新年新挑战,任务打卡赢好礼!

    本帖最后由 dirty 于 2025-1-14 21:53 编辑 任务完成如下: 1、更新完善个人信息:完善您的个人资料,让我们更好地了解您。   2、回复3个帖子:在论坛中积极参与讨论,分享您的见解与心得。     https://bbs.eeworld.com.cn/thread-1304385-1-1.html     https://bbs.eeworld.com.cn/thread-1304329-1-1.html#pid3387960     https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1303217&pid=3388174&page=1&extra=#pid3388174   3、认真学完1个大学堂视频:提升自我,获取知识,享受学习的乐趣。     学习了 电机控制硬件设计 一个课时,确实蛮有收获的,以前这个版块逛的比较少,主要是课时少这次就偷个懒,以后感兴趣的在这个板块多去学习了解些。       https://training.eeworld.com.cn/video/42269   4、报名参加活动中心的1个活动:融入社区,与更多志同道合的人一起共度美好时光。           参加了积分兑盲盒活动 5、下载一份资源站资料:获取您需要的资源,助力您的学习与工作     在“下载” 栏目刚好看到“Qt6 C++开发指南”文档,先收藏了,5积分下载,也还好账号够用。         至此,全部任务完成了哈,坐等奖品啰

  • 加入了学习《电机控制系统硬件设计培训教程》,观看 电机控制硬件设计

  • 回复了主题帖: 一个能走的人形机器人5w+贵吗?

    最近新闻,深圳众擎机器人搞测试火了一把。查了下SA01-- 3.85万 ,PM01-- 8.8万,行业可以了解下,贵不贵就看市场需求了  

  • 回复了主题帖: RDK X3测评:2.摄像头使用

    摄像头驱动功能验证了,后面可以做模型部署 目标检测人脸识别这些AI了哈,期待后续

  • 回复了主题帖: 【Wio Lite AI STM32H725AE视觉开发板】--1.开箱与准备

    waterman 发表于 2025-1-14 10:49 板卡的AI算力怎么样,适合跑深度学习模型吗 看芯片手册是没有专门的NPU,结合ST的工具链,跑的边缘AI,不太适合跑大模型

统计信息

已有1234人来访过

  • 芯积分:742
  • 好友:23
  • 主题:146
  • 回复:357

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言