AirTerminal: 用于 Raspberry Pi 等嵌入式设备的蓝牙终端

AirTerminal 是我近期完成的一个 iOS App 作品,能够通过蓝牙 4.0 BLE 连接蓝牙串口透传模块,访问 Raspberry Pi 等设备的串口终端。该 App 可在没有 Wi-Fi 或 SSH 连接的情况下访问嵌入式设备,方便对设备进行操作或调试。

经历了 Apple 谜一样的审核流程(等待审核状态持续了 45 天,然后只用了不到 45 分钟就审核通过😂),AirTerminal 已在 App Store 上架,下载链接:https://itunes.apple.com/cn/app/id1296588408

AirTerminal with screenfetch

继续阅读

RT1900ac 折腾笔记:安装 Homebridge 和 Plex Media Server

RT1900ac 是群晖 (Synology) 推出的第一款无线路由器,其操作系统 SRM 相当于简化版的 DSM(群晖 NAS 所使用的操作系统),在软件上较有优势。

可能是因为硬件性能,或是其他方面的考虑,群晖官方一直没有把其 NAS 上的大部分软件移植到 SRM 上,例如 Cloud Sync, Video Station 等,此外一些第三方软件,例如 Plex Media Server, 也没有推出兼容 SRM 的版本。

最近在网上看到了一篇在 RT2600ac 上安装 Plex Media Server 的教程,于是又有了折腾路由器的想法,开始在 RT1900ac 上安装自己需要软件。

运行在 RT1900ac 路由器上的 Plex Media Server

继续阅读

一道智力题

最近在同学的 QQ 空间上,发现了这样一道智力题:

有一条河,河边有一个猎人牵着一头狼,一个男人带着两个小男孩,还有一个女人带着两个小女孩。
如果猎人离开,狼就会把所有人吃掉。
如果男人离开,女人会把两个小男孩掐死。
如果女人离开,男人会把两个小女孩掐死。
河里有一条船,船上只能乘坐两人(狼算一人),只有猎人、男人、女人会划船。
如何使他们全部过河?

看到这道题,首先想到的是农夫过河问题。既然这两个问题十分相似,那我就尝试按照农夫过河问题的思路,通过程序来找出该题的解。

继续阅读

HackerRemote: 蓝牙遥控器 App, 支持数据的双向收发 (iOS)

这是我前段时间学习 Swift 时的练手作品,也是我的第一个 iOS App.

HackerRemote 是一个游戏手柄形状的蓝牙 (BLE) 遥控器,可搭配 DFRobot Bluno 或蓝牙转串口模块,用于各种需要手机遥控的电子制作。

除了能将数据发送至蓝牙设备,该 App 还可以从设备中接收数据(例如电池电量、飞行器飞行高度等),并显示在界面上,方便查看设备信息,对设备进行调试。

HackerRemote 截图

App 的界面还比较简陋,在功能上,还有一些想法尚未实现。我会在空闲时间,根据情况对其进行进一步完善。

下载链接:

https://itunes.apple.com/cn/app/id1120243546

继续阅读

使用 C 和 Allegro 实现的 NES 模拟器

NES (Nintendo Entertainment System, Wikipedia) 是历史上一款著名的游戏机,由任天堂于 1983 年推出,又被称做 FC (Family Computer) 或红白机。在国内,或许大家对「小霸王学习机」这个名字更加熟悉,应该有不少人就是在这台学习机上第一次接触了电子游戏。其实,「小霸王学习机」就是 NES 的山寨版,兼容 NES 游戏,在硬件上与 NES 基本相同。

即使对游戏不感兴趣的人,听到「超级马里奥」(超级玛丽)等,也应该不会陌生。而这些游戏角色,正是由于 NES 的普及,才变得更加知名。

在 NES 推出的时候,计算机多媒体技术并不是十分发达。而且不论是 NES,还是当时流行的 Apple II,其内存只有几 KB 到几百 KB. 为了能够流畅地显示游戏画面、播放游戏声音,NES 采用了不少巧妙的技术。

继续阅读

2015 电赛风力摆题:我的方案

2015 年全国大学生电子设计竞赛刚刚结束。我们组选择了 B 题:风力摆控制系统。题目要求如下:

一长约 60cm~70cm 的细管上端用万向节 固定在支架上,下方悬挂一组(2~4 只)直流 风机,构成一风力摆,如图 1 所示。风力摆上 安装一向下的激光笔,静止时,激光笔的下端 距地面不超过 20cm。设计一测控系统,控制 驱动各风机使风力摆按照一定规律运动,激光 笔在地面画出要求的轨迹。

趁这段时间,整理一下我们组的方案。

继续阅读

有限状态机在单片机编程中的应用

在单片机编程中,如果在不使用操作系统的情况下同时执行多个任务,可能会遇到下面这些情况:

  • 一个任务的执行时间过长,导致其他任务无法及时执行
  • 在一些任务中大量使用 delay() 等函数进行软件延时,这些延时函数占用过多时间,影响其他任务的执行
  • 一些复杂任务的程序逻辑不清晰,不便于以后对程序进行维护,或添加新功能

本文介绍的有限状态机,可以做到将一个耗时较长的复杂任务分解为多个简单任务,同时使代码逻辑更加清晰,从而解决上述问题。

目录:

继续阅读