落厕碎屏手机网页服务器

Hacker News Top 工具

摘要

作者复活了一部被摔碎、进水的三星A70手机,利用USB-C集线器提供电源和以太网连接,将其改造为一个功能性的网页服务器,展示了旧手机如何被重新利用。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/18 11:48

# 摔碎的马桶手机网页服务器 来源:https://www.offthebricks.com/articles/smashed-toilet-phone-web-server 请看我这台摔碎的三星A70智能手机。它虽然经历风雨,但如今正为您奉上这个漂亮的网页。 别为这台遍体鳞伤的手机感到难过。它确实被摔碎过,后来还掉进马桶,又在米袋里躺了一年多;但这不正给手机增添了独特个性吗? ## 生命迹象 故事始于它在米袋里待了一年后,我在车库偶然发现它,决定看看是否还有生命迹象。充电许久后,我欣喜地看到确实有生命迹象,而且信号很强!充满电开机后,手机竟像刚拆箱时一样崭新。然而乐趣就此打住——触屏显然已失效,它的便携手机生涯就此终结。 你或许会认为故事到此结束:无法操控的设备还能做什么?这看似矛盾,但Android设备其实对鼠标和键盘支持得很好;现在多数甚至支持外接显示器。这源于让智能手机成为你计算生活核心的愿景。这些大科技公司的逻辑是:如果手机能做一切,何必还要台式机?这种逻辑是否合理取决于你的需求,但在本例中它帮了大忙,我欣然接受! ## 计划 我一直对"退役"的旧手机的可能性很感兴趣。或许是因为我还记得当年电脑只有8MHz主频和640KB内存,却能做各种有趣的事。相比之下,这些"老旧"手机比当年电脑强大数百倍,还内置了各种传感器和联网能力。它们肯定能发挥余热,而不只是被回收。 虽然我有一些关于远程控制和其他IoT应用的酷点子,但网页服务器就像硬件改造的"Hello World"。如果能让它与其他机器通信,其他功能都可以后续添加。 ## 技术选角 任何项目最关键的部分就是技术选型。需要为项目选择一个坚实的基础,以免日后后悔。如今选项多到令人眼花缭乱,但基于Android的网页服务器应该不常见,选项也较少。 这个想法很快就过时了。看来我并不是唯一一个在Android手机上探索爱好或商业级网页服务器应用的人,令人惊讶的是选项相当多。除了原生的Java或Kotlin,还有内建Apache和PHP的应用,只需上传脚本即可开始服务。你还可以通过Termux获得Linux命令行,安装任何你熟悉的环境。 ## 先处理硬件 先暂且放下软件,我们来解决硬件问题。通常硬件与软件一样是巨大挑战,但由于手机不是模块化的,实际上需要担心的反而更少。手机的WiFi工作正常,但我们需要有线以太网以确保可靠性。另外还需要供电,因为手机电池不会永远续航。以下是我想到的方案。 USB-C集线器为手机供电,同时支持图中所示的USB以太网适配器等外设。利用集线器的其他插槽,我们还可以添加USB存储、摄像头、打印机等。 通过精心设置网络,手机可以在WiFi和以太网之间无缝切换(保持同一IP地址)。如果拔掉电源,电池会自动接管;这真是内置的冗余保障! ## 关于那块电池 无疑会有至少一位读者对让锂电池一直满电表示担忧:有火灾隐患!可能爆炸! 我对各种类型电池充电有相当丰富的经验,可以自信地说这些担忧大多被夸大了。任何设计得当的充电系统在电池充满后都会停止充电。充电电路很容易检测到锂离子电池何时充满(尤其是与NiMH相比),所以出问题的可能性很小(不是零,但很小)。当然,如果电池已经损坏,那可能是个问题,但即便如此它也会成为问题。还有一些建议认为长期保持锂离子电池满电会降低其最大容量;我尚未在实际中看到证据,但无论如何,我们也不太关心这一点。 如果你对电池基础感兴趣,可以查看我的《电池基础》(https://www.offthebricks.com/articles/battery-basics)一文。 ## 回到软件 第一个软件选项是使用带有AMPP栈(Apache、MySQL、PHP)的应用。设置和加载文件非常简单,而且运行良好。如果你只想要一个随便用的东西,这可能是最佳选择。 这种方法有一些问题,最大的问题是可靠性。这个应用虽然稳定,但和大多数应用一样,最终会崩溃或被Android关闭。我需要一个在崩溃后能自动重启的方案。另外我前面也提到了硬件;我希望控制手机硬件(如蓝牙、摄像头、短信),而在Android上用PHP显然无法实现。 最终我决定采用更定制的解决方案,用Cordova和多种原生插件构建。对于网页服务器,我使用了一个封装了NanoHttpd(https://github.com/NanoHttpd/nanohttpd)Java网页服务器库的插件。这种方法让我完全控制请求-响应流程,同时能在响应中构建硬件交互功能。有人想通过网络界面远程发送短信吗? ## 进展如何 在撰写本文时,我已经运行这个设置超过一年,它超出了我的所有预期。或许你读到这篇文章时,它也已超出你的预期,因为这台摔碎的马桶手机正在提供这些内容! 应用大约每周崩溃或被关闭一次,但应用内的闹钟插件每隔2分钟检查一次,如果应用未运行则重新启动。在重启间隔中,网页服务器反应迅速且功能多样。我已经编写了一系列硬件集成功能(如蓝牙、短信、UART转USB串口),并可以从任何地方远程控制它们。 目前我使用Cloudflare作为代理,但这主要是为了安全起见。我还有另一台手机用于开发,并且可以直接通过路由器端口转发或本地Linux代理访问它。Cloudflare还帮我处理了SSL证书,但我已经为Let's Encrypt证书开发了一个ACME客户端原型,所以未来我可能会切换到自己的证书。 ## 未来目标 我非常想看看能走多远,并计划尝试用这台服务器上的服务替代我大部分或全部个人和开发服务。我最近完成了FTP服务器和客户端,应该能将大量开发工作从我Linux主机上移开。我已经有了基本的SMTP功能,可以发送电子邮件,但拥有自己的SMTP服务器会更酷! 我计划开源所有内容,但条件是必须托管在手机自己托管的Git上。我创建了一个名为Qik(https://www.offthebricks.com/qik)的项目来统管一切。如果你想了解进展,Qik(https://www.offthebricks.com/qik)页面总结了所有内容。如果你对网页服务器部分感兴趣,Qik Node(https://www.offthebricks.com/qiknode)页面专门介绍这个网页服务器。

相似文章