陆陆续续研究和使用Micropython有一年时间了。期间用micropython去设计一些科创类的产品,包括将其移植在openharmony上,以及使用官方移植的esp32版本去开发一些产品等等。也算是对micropython有了一些自己的理解和认识。所以就想利用课余时间,整理一下自己的想法,在帮助后来人更容易入门的同事,自己也可以梳理一下知识体系。后续会以ESP32S3这个平台进行介绍。当然,使用ESP32的其他系列也是可以的。Micropython能做什么Mic...
2023-03-17 17:12:49 4992浏览 1点赞 1回复 0收藏
1、准备知识本文使用的OLED为0.96寸12864的显示屏。驱动为SSD1306。在micropython下,有两种驱动OLED显示的方法,1)传统的思路,移植其他的MCU的驱动,然后封装python的函数。2)使用framebuf类,然后OLED的驱动代码使用python便携。这两种方法都会做相应的介绍。本篇文档,会先介绍传统的思路。2、显示内容准备驱动自己带一些ASCII等字符,有些时候还需要自己制作,这时候就会用上PC2LCD2002这个软件。该软件的使用,这里不过...
2022-05-23 09:50:15 1.1w浏览 1点赞 0回复 1收藏
1、APDS9960简介APDS9960是一款多功能传感器。它可以在光线下检测手势、环境光和RGB值。该传感器还可用作接近传感器,主要用于智能手机,以便在通话时禁用触摸屏。该传感器由四个光电二极管组成。这些光电二极管检测由板载LED传输的反射IR能量。因此,无论何时执行任何手势,该IR能量都被阻挡并反射回传感器,现在传感器检测到关于手势的信息(方向、速度)并将其转换为数字信息。该传感器可用于通过检测反射的IR光来测量障碍物...
2022-05-18 09:32:51 8219浏览 3点赞 1回复 3收藏
本文介绍Micropython中的ADC接口使用。1、打开ADC编译cdefineMICROPYTHONUSINGMACHINEADC(1)defineMICROPYPYMACHINEADC(1)在modmachine.c文件中的machinemoduleglobalstable数据中会包含ifMICROPYPYMACHINEADC{MPROMQSTR(MPQSTRADC),MPROMPTR(&machineadctype)},endif2、移植ADC的接口函数Hi3861的ADC的使用比较简单,只需要初始化和读取。定义设备编号cSTATICmachineadcobjtmachineadcobj[]{{{&machineadctype},1,0,1},};初始...
2022-05-14 11:41:11 6903浏览 2点赞 0回复 1收藏
1、前提之前整理的关于NNOM的帖子,已经写了两篇。[Hi3861使用NNOM实现AI神经网络的功能](https:ost.51cto.composts12287)[Hi3861使用NNOM实现人工智能神经网络之MNIST](https:ost.51cto.composts12453)感兴趣的可以看看。2、什么是KWS语音唤醒(keywordspotting)在连续语流中实时检测出说话人特定片段。3、KWS移植在nnom\examples\keywordspotting中有KWS部分的测试代码,我们将该代码移植到我们的系统之中。移植完成之后的验...
2022-05-10 20:31:57 9332浏览 0点赞 0回复 0收藏
1、什么是NNOM请查看之前的帖子:https:ost.51cto.composts122872、什么是MNIST每当我们学习一门新的语言时,所有的入门教程官方都会提供一个典型的例子——“HelloWorld”。而在机器学习中,入门的例子称之为MNIST。MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片:MNIST经常被用来做为分类任务的入门数据库使用。在这个简单的例子里面,我们也用它来试试数据归类。3、移植和编译移植NNOM库的方法,在之前已...
2022-05-07 00:38:55 9538浏览 4点赞 1回复 4收藏
在Openharmony的系统下,基于Hi3861一直想看看能不能实现一定的人工智能算法的工作。第一步的思路是打算移植tflitemicro。但是在移植的过程中,遇到了一些问题。比如,怎么支持C++。在网上找资料,很长时间没有答案。于是,就掉头走了另外一条路,使用纯C的方案,放弃了C++。找到了纯C的方案NNOM,于是就移植了这个框架,测试了一下Hi3861的能力。1、NNOM简介NeuralNetworkonMicrocontroller(NNoM)是一个针对微小型资源应用(单...
2022-05-02 19:08:16 1.1w浏览 5点赞 0回复 5收藏
终于有时间整理一下软件模拟I2C在micropython上的移植了。其实Hi3861上已经有两个I2C了。但是考虑到功能的复用,还是移植了其软件I2C的支持。也就是通过IO口模拟I2C。具体I2C的协议,在这里不做解说。0、底层框架函数cSTATICconstmprommapelemtmachinei2clocalsdicttable[]{{MPROMQSTR(MPQSTRinit),MPROMPTR(&machinei2cinitobj)},{MPROMQSTR(MPQSTRscan),MPROMPTR(&machinei2cscanobj)},primitiveI2Coperations{MPROMQSTR(MPQS...
2022-04-18 18:36:48 9551浏览 4点赞 0回复 1收藏
1、模块介绍1)三轴磁传感器和电子电路全集成式芯片,几乎不需要外部元件2)优越的量程和精度±30G的量程20位运行模式最小分辨率为0.0625mG2mG的均方根噪声±1度以内的指向精度3)实际响应频率可达1000Hz4)超小的晶圆级封装,尺寸为0.85mmx0.85mmx0.4mm5)通过内部SetReset置复位磁传感单元,保证传感器精度始终如一消除温度压力等环境因素造成的零点漂移消除外磁场引起的剩磁和磁滞6)自带灵敏度补偿7)自带温度传感器8)具备...
2022-04-18 09:34:25 9783浏览 2点赞 1回复 1收藏
1、背景1)在openharmony的I2S例子中,有播放特定地址的音频文件的代码,但是没有说明HiBurn怎么操作来向特定的地址烧录内容。查了一些资料,也没有头绪。2)因为业务的需要,也需要在特定的地址存放大量数据。如果使用HiBurn烧录,也比繁琐。所以,为了更加方便打包程序和烧录固件,想做一个小工具来解决这个问题。不知道是不是重复造轮子。2、规划想要在固件中存放数据,目前看有几种方法:1)在程序编译的之前添加上。比如在...
2022-04-08 18:25:20 6711浏览 3点赞 2回复 2收藏
1、QMI8658介绍为6轴MEMS惯性测量单元(IMU),集成了一个3轴陀螺仪和一个3轴加速度计。QMI8658是一款完整的6轴MEMS惯性测量单元(IMU),集成了一个3轴陀螺仪和一个3轴加速度计。将QMI8658与XKF39D传感器融合一起使用时,该系统具有准确的±3°俯仰和滚动方向以及±5°偏航航向的典型规格。具有±3%的严格板级陀螺仪灵敏度、15mdps√Hz的陀螺仪噪声密度和低延迟,QMI8658非常适合高性能消费类和工业应用。它提供了一个UI接口(支持...
2022-04-07 13:02:15 2.0w浏览 4点赞 4回复 2收藏
这篇文章,先说一下硬件I2C的方案。后续文档会说明软件I2C的python移植。0、底层框架函数cSTATICconstmprommapelemtmachinei2clocalsdicttable[]{{MPROMQSTR(MPQSTRscan),MPROMPTR(&machinei2cscanobj)},standardbusoperations{MPROMQSTR(MPQSTRreadfrom),MPROMPTR(&machinei2creadfromobj)},{MPROMQSTR(MPQSTRreadfrominto),MPROMPTR(&machinei2creadfromintoobj)},{MPROMQSTR(MPQSTRwriteto),MPROMPTR(&machinei2cwritetoobj)...
2022-04-05 17:17:10 8888浏览 2点赞 0回复 1收藏
之前已经写了三篇https:ost.51cto.composts10773https:ost.51cto.composts10756https:ost.51cto.composts10744这是本系列的第四篇文章。今天从AT接收任务hivoidatproctaskbody(hivoidparam)说起。chivoidatproctaskbody(hivoidparam){hiunrefparam(param);hiu32ret;hiu32eventbit;hicharbufNULL;for(;;){if(gatctrl.atstate!ATDATARECVING){hiatprintf("\r\n");}eventbit0;rethieventwait(gatevent,0xFFF,&eventbit,HISYSWAITFO...
2022-04-05 16:15:14 8918浏览 2点赞 0回复 1收藏
在开发完Hi3861的固件之后,需要对固件进行烧录。官方推荐直接使用allinone.bin固件。通过HiBurn软件加载该固件之后,会解析出三个bin文件。猜测allinone.bin中包含了这三个固件,以及一些配置参数。带着这个猜测,分析了一下openharmony关于编译部分的代码。在build\scripts目录下发现了packetcreate.py文件。htmlxmldevice\hisilicon\hisparkpegasus\sdkliteos\build\scripts\packetcreate.py于是与源码对比分析,发现确实该...
2022-03-22 17:35:50 8927浏览 5点赞 1回复 2收藏
[OpenHarmony中AT模块的代码理解(2)](https:ost.51cto.composts10756)[OpenHarmony中AT模块的代码理解(1)](https:ost.51cto.composts10744)现在开启第三篇,核心内容是AT命令的注册。1、AT命令结构体ctypedefstruct{hicharatcmdname;his8atcmdlen;atcallbackfuncattestcmd;atcallbackfuncatquerycmd;atcallbackfuncatsetupcmd;atcallbackfuncatexecmd;}atcmdfunc;hicharatcmdname;为命令字符串,不包含“AT”字符。his8atcm...
2022-03-20 15:20:51 1.1w浏览 2点赞 0回复 1收藏
开启AT模块的第二篇帖子的整理。第一篇帖子链接如下:[OpenHarmony中AT模块的代码理解(1)](https:ost.51cto.composts10744)。1、atuarttaskbodychivoidatuarttaskbody(hivoidparam){hiunrefparam(param);hicharch;his32n;for(;;){if(gatinputfuncNULL){nhiuartread(gatuartport,(hiu8)&ch,1);}else{ngatinputfunc((UINT8)&ch,1);}if(n!1){(hivoid)hisleep(ATUARTSLEEP);continue;}if((hilpcgettype()!HINOSLEEP)&&(gatcheckem...
2022-03-17 21:56:46 8878浏览 4点赞 1回复 2收藏
1、背景最早接触AT命令是在使用通信模块的时候,那时的AT命令的打包和解析都是自己写的函数实现,代码逻辑和框架也都不成熟,通用性也不强。现在的RTOS操作系统中也都包含了这部分的内容,比如RTT等,通用性更强,代码的逻辑性也值得我们去分析和学习。接触openharmony,发现系统代码中也包含了AT相关的业务。今天,尝试整理一下这部分代码的思路。2、提要1)代码路径htmlxmldevice\hisilicon\hisparkpegasus\sdkliteos\compone...
2022-03-15 11:44:25 1.3w浏览 4点赞 1回复 2收藏
1、移植的准备Timer主要用于定时触发事件使用。移植相对容易。需要include"hitimer.h"中的相关函数。2、machinetimerobjt定义ctypedefstructmachinetimerobjt{mpobjbasetbase;mpobjttimeoutcb;uint32tmode;uint32tperiod;hiu32gtimerhandle;structmachinetimerobjtnext;}machinetimerobjt;定义hiu32gtimerhandle用于存储定时器handle3、创建Timer定时器cSTATICmpobjtmachinetimermakenew(constmpobjtypettype,sizetnargs,sizetn...
2022-03-13 22:26:11 7672浏览 4点赞 1回复 1收藏
本文介绍Micropython中的Pin接口使用,也就是GPIO接口的使用。1、打开Pin的编译需要将MICROPYPYPIN配置成1,参加编译。在modmachine.c文件中的machinemoduleglobalstable数据中会包含{MPROMQSTR(MPQSTRPin),MPROMPTR(&machinepintype)},2、移植Pin的接口函数需要包含openharmony中的gpio的头文件,其中包含了GPIO的操作函数cinclude"higpio.h"定义可以被引用的GPIO的名字ctypedefstructmachinepinobjt{mpobjbasetbase;intpin;in...
2022-03-13 22:03:53 1.1w浏览 2点赞 2回复 1收藏
1、MQTT协议介绍MQTT是一个基于客户端服务器的消息发布订阅传输协议。它工作在TCPIP协议族上。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。2、MQTT客户端MQTT.fx软件,可以实现mqtt的协议测试。3、测试服务器可以使用以下服务,进行测试。http:tongxinmao.comAppDetailid126服务器:mq.tongxinmao.comTCP端口18830WS端...
2022-03-04 11:45:38 1.4w浏览 7点赞 2回复 6收藏