B博客

LoRa、GPS,以及手感像 TrackPoint 的轨迹球

一个面向 SX1262 的新 LoRa 包,一个能自己找出接收器波特率的 GPS 包,以及对小型设备自带的轨迹球和键盘的输入支持。

发布于
作者
DevKirbyrawr
阅读
约 2 分钟
两台无线电设备,之间是一段频率不断上升的啁啾信号。

小型设备不只有一块屏幕。很多设备带着无线电、GPS、轨迹球或小键盘,游戏或应用应该能像使用触摸一样使用它们。这个版本新增了一个包,并让另外两个包向前迈了一大步。

deki-lora

deki-lora 通过 Semtech SX1262 收发 LoRa 数据包,目前大多数 LoRa 模块和开发板用的都是这款无线电芯片。你的代码拿到无线电对象,调用 Send(),再从 Receive() 取出收到的数据,连同信号强度和 SNR。不发送时,无线电一直在监听。

有两件事它替你处理好了:

  • 共享总线。 在很多开发板上,无线电和显示屏挂在同一条 SPI 总线上。只要接好了它的中断线,驱动只会在无线电有事要报告时才占用总线,所以正在送往屏幕的帧永远不会被耽搁。
  • 占空比。 在欧洲,设备在 868 MHz 上只能有 1% 的时间在发射。驱动会根据每个数据包的空中时间计算占空比,拒绝会超出限制的发送,并告诉你需要等多久。其他地区可以设置自己的频率和限制。

演示里有一个 LoRa 界面:在一台设备上按下 Ping,其他每台运行演示的设备都会显示这条消息及其信号强度。

deki-gps

一颗卫星,以及它在地面上给出的定位

deki-gps 可以读取任何使用 NMEA 的接收器,现在能读出的内容也更多了:位置和时间、海拔,以及能看到和正在使用的卫星数量,GPS、GLONASS、Galileo 和北斗都一样。

把它的波特率设为 0,它会自己找到正确的值,依次尝试常用的波特率,直到收到一条校验和有效的语句。这对出厂时可能搭配不止一种模块的开发板很重要,因为这些模块的通信速率并不都一样。另外,因为在室内可能永远定不了位,它会报告进行到了哪一步:收到的字节、有效语句、卫星数。“无法定位”不再是个谜。

轨迹球和键盘

一个按键区域,以及用来测试它的重叠区域

deki-input 现在把轨迹球变成了真正的指针,手感调得像 ThinkPad 的 TrackPoint:慢慢滚动时很精确,快速拨动时能一下划过整个屏幕,光标会平滑地滑行停下,而不是一格一格地跳。它的点击就是鼠标点击,所以为触摸设计的界面不用改就能配合它使用。

I2C 键盘的输入会变成普通的按键事件,所以游戏在掌机上读取方向键的方式和在 PC 上一样。如果键盘带背光,游戏还可以设置它。

按手头的硬件显示按钮

演示运行在差别很大的硬件上,所以它的菜单会把设备没有的功能置灰。在 PC 上,LoRa 和轨迹球界面是禁用的;在两者都有的掌机上,一切都可用。项目也可以这样做,只要询问开发板启动了哪些 provider 即可。

这些都在 0.18.2 版本的包里,LilyGO 开发板包让它们在 T-Deck Plus 上开箱即用。

← 全部文章