- 博客(15)
- 收藏
- 关注
原创 Hi3863 MQTT 客户端
下一步就是数据的格式化,因为现实中往往发送各种类型的数据,不能每做个应用就要针对专门的数据写个转译函数吧,通过cjson帮助实现复杂数据的传输,而且cjson也已经被系统移植好了,真是太方便了。hi3863配套的源码版本非常好,系统已经内置了paho.mqtt.c,不需要再做移植的工作,直接引入函数就行,真是太贴心了。MQTT 是异步通讯,3种主要状态,发送信息结果,接收信息结果,发送中断连接,当这些状态发生变化时会通过回调函数反馈回来。这么归纳一下使用起来就很简单了,3步,先连接,然后订阅,然后发送。
2025-04-11 01:24:49
196
原创 hi3863 连接WiFi
在源码目录 \application\samples\wifi\sta_sample 下有官方的例子,根据对这个例子的学习理解,我根据自己的需要,整理简化了一下。首先在我的代码目录下 \application\samples\hi3863\ 下建一个 “mqtt_test”子文件夹,我将我要写的代码放在这个子文件夹下。在 \application\samples\hi3863\mqtt_test\ 目录下 添加 CMakeLists.txt , Kconfig 文件。编译成功后,烧录,运行。
2025-04-09 15:50:13
387
原创 Hi3863 第一个程序 Hello World
CMakeLists 简化 Make 引导 编译器,顺着目录找到要编译的文件,Kconfig 辅助 Make 配置编译内核,通过图形界面的方式,如果是命令行的话,就有点难用。如果编译失败,就是点开左侧 build.log 文件,这个是编译日志,里面有错误提示信息,根据提示修改代码再编译,直到提示成功。vendor是第三方提供的例子,有小熊派,润和,他们提供的代码质量非常高,搞不懂的时候可以到这里看看。烧录完毕以后,打开一个你喜欢的串口通讯工具,打开端口后,重启单片机,显示结果。
2025-04-07 16:40:55
555
原创 Hi3861 OpenHarmony 机械臂 (三)
写到这里想说一个我写代码的原则,第一遍代码是给自己看的,用人的思维方式写,方便自己看,面向过程。第二遍是给别人看的,因为过一段时间自己再修改,已经看不懂自己写的繁琐过程了,还要重新理顺一遍,这个时候代码考虑结构性,方便可读,能重用,容易修改,面向结构,最后一遍是给机器运行用的,删除冗余代码过程化,提高运行效率,面向设备。网络控制写一个Window下的上位机实现,上位机用C#写,C#我是一点都没学过,以前写过Java,用C#感觉非常容易,当然没系统学过就是看工具提示写,代码肯定有很多不太合理。
2024-07-18 15:27:00
454
原创 hi3861 OpenHarmony 网络应用
常用的网络协议就是TCP / UDP,我采用的是TCP协议,让hi3861作为服务端,外部应用做为客户端连接hi3861, 这个方式主要是为了方便,hi3861运行中再设置参数很麻烦,不如就被动接入,用TCP协议发现发送没有被接收,可以认为客户端以断开,就可以关闭网络,或者重启网络。觉得这个功能也许有些场合能用上,实现过程挺碎的,如果代码看不懂,就加我QQ:1164192255,也许能交换出更好的方法。先检查,是否加载,没加载就加载一下,如果有问题返回0,添加回调,实时反馈网络状态信息。
2024-06-19 09:28:05
712
3
原创 Hi3861 OpenHarmony 机械臂 (二)
第二个是方向问题,比如你按遥控的左键,你看到的舵机是右转,舵机的转向方向是固定的,操作习惯认为是反的,这个时候我添加一个方向的参数,可以按右键的时候向左转,就是将舵机的工作模式进行镜像的操作。第三个问题是,代码堆到一定程度,就很难维护,一个函数里关联的参数太多,需要修改功能的时候,就连带的改动很大,搞不好就要推倒重写,所以函数的功能独立,将代码解耦到可控的程度。剩下的就是在运行的时候,先通过遥控器设置舵机端口,然后控制相应的舵机的运行。单个舵机控制写完,就将单个舵机堆成一组舵机,先从2台舵机开始。
2024-05-30 21:18:22
391
原创 Hi3861 OpenHarmony 机械臂 (一)
随着一步步推进,基本情况也是这样的,但是想法和实际的情况还是有些不同的,最后多舵机的控制复杂度太高,单片机的处理能力就不足,然后通过联网,用上位机完成控制。其他部分是需要用到功能的驱动,hx1838红外遥控器,ssd1306液晶模块,pca9685舵机驱动。1. 1度1度的转向,1次转1度,加个时间延迟,再转1度,这种方式主要是防止舵机砸机,一次转到预定角度速度过快,20KG的力量容易出现意想不到的事故。我的需求就是结构简单,结实易用,实现容易。2. 按预设跨度转向,我预设了3个跨度,1, 10, 30。
2024-05-29 11:13:45
585
2
原创 hi3861 OpenHarmony DevEcoDeviceTool 声控灯例子
这么看系统跟应用几乎完全脱离,就是你只考虑功能的实现,不用考虑底层的问题,这就是有系统的好处啊,只需要专注实现功能,工作就变的很单纯。安装VS Code最好用DevEco Device Tool Windows安装工具里自带的,现在新版本可能有兼容问题,VS安装扩展只安装C/C++,其他都不要装,装C插件可以帮助检索代码,其他任何提示都不要装,他会修改Ubuntu里的环境变量,最后编译都不行了,我还不会改回来了,又重做环境。先写到这,也没目的,也没头绪,简单做个记录,想哪写哪,以后做例子,再来分享。
2024-01-15 15:24:10
482
原创 Hi3861 OpenHarmony 运行Hello World
我是个野生玩家,首选都是货架产品,就是一搜一大把信息的产品,接口都大众化,连接各种模块容易。开始我也是选择的套件产品,买套件的目的不仅仅是买产品,更是买服务,各种教程,问题帮助等。选好串口,自动烧写选中,打开“选择文件”,选择影响盘里 、\out\hispark_pegasus\wifiiot_hispark_pegasus\Hi3861_wifiiot_app_allinone.bin。以前在淘宝买3861wifi模块挺多的,还很便宜,现在变的很少了,还涨价了,难道又被卡脖子吗?要把串口驱动先装好。
2024-01-13 05:39:37
1432
1
原创 OpenHarmony 设备开发 命令行方式 搭建开发环境
到这里基本完成,这一溜下来,真佩服当初那些开发系统的工程师,最早放出鸿蒙系统的时候,是内部版本,先放出来看看大家的感受接收点反馈,所以这些琐碎的安装也就流出来了,现在的环境安装已经打包了,都自动完成这些流程了。下面正式开始: 这里要说明一下,环境配置的过程有一定的时效性,OpenHarmony更新很快,新版本编译依赖可能会改变,Ubuntu源里的软件也会更新变化。所以这个过程只代表当前情况。7. 下载源码,下载oh3版,源码大小比较小,后面的版本支持的内容多,源码很庞大,写Hi3861也用不上。
2024-01-10 11:41:37
1271
原创 hi3861 OpenHarmony PCA9685 舵机控制板
模块处理的数据是16位整数,1个寄存器长度不够,所以由2个寄存器组成1个数值,LED0_ON_L,LED0_ON_H,是开始时间,LED0_OFF_L,LED0_OFF_H,是结束时间。PCA9685设置占空比, 通过4个1组,共16组LED0_ON_L,LED0_ON_H,LED0_OFF_L,LED0_OFF_H,寄存器设置。[ 3 ] SUB1 0* PCA9685不响应I2C总线子地址1 / 1 PCA9685响应I2C总线子地址1。
2023-12-31 21:39:57
1547
1
原创 hi3861 OpenHarmony SH1106 OLED 模块
再使用I2C协议前,先打开 device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk看看I2C设置是否是被注释掉,如果显示是 # CONFIG_I2C_SUPPORT is not set,就修改成CONFIG_I2C_SUPPORT=y。首先做一个高效的6x8的字库,做成4x8也是可以的但是字太小了,挨在一起根本看不清楚,所以用6x8。SH1106的初始化,复制样例里的设置就行,一般实际使用中没什么需要再设置的了。
2023-12-15 22:05:21
681
原创 hi3861 OpenHarmony HX1838 红外遥控器
遥控器按键按下,发送一组脉冲给遥控器上的红外灯,跟单片机点亮小灯的逻辑一样,高电平小灯灭,低电平小灯亮。红外光照射到接收模块上,模块就会产生电压,然后通过检索端口电压状态值,转化为接收的信息。接收数据分为4组,每组1个字节,前2位为地址码,后2位为数据码,数据需要进行反码效验。引导码 - 地址码8位 - 地址码反码8位 - 数据码8位 - 数据码反码8位 - 结束码。简单总结:遥控器发送高电平,单片机接收低电平,遥控器发送低电平,单片机接收高电平。数据码0:0.56ms高 - 0.56ms低。
2023-12-01 17:44:00
1487
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人