接线: sg90 信号端 接到单片机的io9上,正极接5v 负接gnd。 mqtt 服务: 程序中配置需要 mqtt 连接、端口、认证用户名与密码,可以在emqx 平台申请。 EMQX:用于物联网、车联网和工业物联网的企业级 MQTT 平台 在emqx 平台注册用户并创建一个 serverless 服务,免费额度很充足自己用肯定用不完,查看mqtt 连接信息中的链接地址与mqtt 端口。 在客户端认证中创建用户。 至此需要用到的参数都已经得到。 单片机烧录: pwmduoji/main .lua 是单片机程序,需要修改如下变量的值: 下载需要用到合宙的 luatools 工具,下载地 Read More
分类: 嵌入式
milk-v duo 开机引导进入 rust 程序
milk-v duo 还是去年买的,又是esp32 又是rp2040 的,搞搞lcd 又搞搞墨水屏 又弄弄 memory lcd,乱得狠,啥都想玩玩,玩不过来,最近抽空看看 这块duo 想裸机跑下rust 试试。 找了一圈总算是有些眉目,找到一些在 uboot 或 opensbi 后引导的方法,随即尝试了一下,成功通过串口打印出信息,记录一下。 主要两个部分,先用rust 加汇编构建出程序的bin文件,后在 duo-buildroot-sdk 中修改fsbl 中的构建 fip.bin 的.mk文件后 再构建fip.bin 。 目录 通过 rust + 汇编 创建自己的程序 修改 du Read More
基于rp-pico 设计的MakeCode arcade 图形编程游戏机
前段时间用rp-pico做了一个 MakeCode arcade 感觉用起来还不错,关键是很便宜,如果有编程经验的家长也想给小孩一个编程游戏机可以做一个试试,当然自己玩也挺不错的,下面是硬件的地址,我也不是很会画板,比较水,凑合能用,可以自己再改改,按页面的介绍烧录。 rp2040_arcade – 立创开源硬件平台 MakeCode Arcade 的介绍: MakeCode Arcade 是微软推出的一个在线编程平台,旨在帮助用户通过图形化编程和文本编程创建简单的2D游戏。它特别适合编程初学者和青少年,能够让他们通过直观的拖拽式界面,快速设计 Read More
probe-rs 安装与配置及问题解决
大概步骤按 probe-rs 官网的教程走即可。 前提:在wsl2 中使用usb 需要通过 usbipd-win 这个工具,需要先确保这个工具能正常连通,在linux 中能看到对应的usb文件 wsl 中安装 probe-rs , 有多种方法,我是通过 cargo binstall probe-rs-tools 安装的,如果没有binstall 先通过 cargo install cargo-binstall 安装 vscode 安装 probe-rs 插件 ,并配置 调试启动 文件 注意chip、 formatOptions 和programBinary 的配置 启动调试时可能提示如下错误: Read More
驱动夏普1.26寸 memory lcd
买了几块 夏普的1.26寸 memory lcd 型号为 LS013B7DH07,这种屏幕显示有点像墨水屏,只是白色不是那纯有点偏银灰的感觉,比普通墨水屏刷新快很多,在不刷新的情况下墨水屏显示更好,需要频繁刷新的情况下memory lcd 是更好的选择。 这个屏的驱动方式与常见的一根cd命令数据线来控制传输命令或数据的方式不同,它是在cs拉高后开始的前几个固定时钟周期内为命令,命令后再跟着传数据。常用的两个就是清屏与整屏刷新,下面就引脚定义与这两个操作记录一下。 引脚如上图, vdda 、vdd 接3.3v, vss、vssa 接地,sclk 时钟信号、si 即 mosi 串口数据,scs 为 Read More
pwm 播放音频
声音使用pwm 模拟 dac 输出 ,pwm的原理就是在高频率下按点空比翻转电平以达到类似线性模拟信号的目的,翻转的频率由时钟源最高频率与设置的分辨率值决定,大概是时针频率/ (2的分辨率次方) ,可能还有取模的步骤,分辨率就是一个周期内能控制的细腻程度,因为这种细粒度的控制其实现是需要时钟脉冲的,所以分辨率越高pwm的频率就只能越低,分辨率为1位时,pwm频率为最高时钟频率的一半。 使用pwm 输出音频一般是对音质没什么要求的场景,硬件资源可能也有限,可以选择 8bit 的采样深度,8khz的采样率,这样音频数据会比较小, 内容也能正常听清,pwm 的分辨率设置为8bit ,频率按时钟源来计 Read More
esp32c3 hal 架构笔记
构建过程 大量的构建过程都在各个库中的 build.rs 中实现,主要是通过不同的构建目录将预定点的链接文件复制到输出目录中,并通过 cargo:rustc-link-search= 指令将对应的目录加入到链接脚本的查询目录中,最后在构建是 通过 link-arg= 加上指定的入口链接脚本 构建完成的目标文件. 链接脚本的主要作用就是指定程序在内存中的布局 rust 代码入口在 esp-riscv-rt 库中的 lib.rs 中,通过一段内嵌宏实现的入口点,在引导程序bootloader执行完成后会跳转到 _start 入口处。在进入main方法前的代码需要结合 链接脚本中的符号定义进行分析。 Read More
pwm 信号控制
主要参数 : PWM 通道号 PWM 频率,单位 Hz PWM 分辨率 PWM 占空比 一般由前三个参数是固定值,通过调整空占比进行控制,下面解释一下这几个参数之间的关系 通道号不用说,就是选择的通道。 由频率可以得出单个脉冲周期的时间长度,比如一个sg90的舵机一般控制频率为 50HZ, 1s / 50次 * 1000 ms = 20ms ,即一个周期时长为20ms。 得出一个周期后通过分辨率将一个周期切分指定数量的等份,分辨率决定了可调控的最小时间单元。 拿舵机举例就是分辨率过小则可控制的角度的精度越粗,假如只需要0.011ms的高电平就可以控 制一度的角度旋转,分辨率过小,若周期分割后单 Read More
ec11 旋转编码器 一定位一脉冲检测程序
这里记录了两种检测方式,通过中断处理如果旋转太快是有可能丢步的,这里异步方式是基于 embassy 框架的,所有实际效果还与其他任务占用时间有关系。 同步检测方式: 正反转检测逻辑如下: 状态对应为 AL: a 低 AH: a 高 BL: b 低 BH: b 高 逻辑判断,以反转为例,(正反转只是当a 或 b 拉高时,当前的a b电位状态相反): 1.未触发时 AH BH 不进入逻辑 2.开始反转 AL BH 进入逻辑,上次状态为 AH BH, 更新后上次状态为 AL BH 3.一段时间的无状态变化不进入逻辑,此时状态为 AL BH 4.b 进入拉低状态 当前状态为 AL BL,上次状态为 A Read More
用户今天 : 11
用户昨天 : 26
用户最近的7天 : 140
用户最近的30天 : 770
用户这个月 : 674
用户这一年 : 2834
合计用户 : 9503
查看今天 : 20
查看昨天 : 28
查看最近7天 : 183
查看最近30天的 : 909
查看这个月 : 755
查看这一年 : 3607
合计查看 : 11771
谁是在线的 : 0