Chaosgoo | ESP32, IoT & Hardware DIY Blog

这是一个个人维护的技术博客,主要分享和记录 ESP32、嵌入式系统以及硬件 DIY 相关的原创项目与学习笔记。

序言:坚持原创硬件实战与嵌入式开发的初心

为什么会有 Chaosgoo 技术博客?

在信息碎片化、AI 生成内容泛滥的时代,深度、硬核且具有真实开发温度的技术笔记变得愈发珍贵。作为一名沉浸在嵌入式开发与硬件 DIY 领域的独立开发者,我深知从零到一构建一个硬件项目的艰辛。

Chaosgoo 的诞生,并非为了追求流量,而是为了给自己的折腾历程留下一份纯净、严谨且可追溯的技术档案。

阅读更多

Flutter 嵌入安卓原生 View,以及与原生交互

在跨端开发里,有些场景是 Flutter 处理起来比较麻烦或者利用原生组件实现更高效。

这时候就得祭出 PlatformViewMethodChannel。不仅把一个 Android 原生 TextView 塞进了 Flutter 布局,还能实现Flutter和原生Android View的双向交互。

为了直观,我打算基于Flutter默认的计数器模板演示, 界面布局和悬浮按钮还是 Flutter 的,但中间显示的那个数字,换成安卓原生的TextView

阅读更多
球面几何计算:基于经纬度的距离(Great-Circle)推导

球面几何计算:基于经纬度的距离(Great-Circle)推导

背景

最近在做一个基于当前 GPS 坐标,通过输入目标经纬度来计算相对位置与距离的硬件装置。

在查阅相关算法时,我发现网上的推导过程大多较为碎片化或直接给出结论。为了彻底理解其底层的数学逻辑,我决定从零开始重新推导一遍,并将其系统地记录下来。

本文将完整呈现这一推导过程:从建立三维空间直角坐标系开始,利用向量点积导出球面余弦定律(Law of Cosines)。此外,我们还会深入探讨该公式在短距离场景下产生“精度丢失”的物理本质,以及如何利用半角恒等式引入 Haversine 公式 来修正误差。最后,我将分享如何通过数学化简,精简公式降低运算量,从而实现更高的运算效能。

阅读更多

网站性能优化实战:PageSpeed Insights 从 47 分到 97 分的优化历程

This article is also available in the following language: English.
前言

最近为了优化站点体验, 我决定借助PageSpeed Insights的分析,专项优化站点性能表现.
本文起初基于Cactus主题进行优化, 从47分提高到了94分, 在撰写期间, 又将主题切换到了Icarus, 结果之前的部分优化失效.
不得不重新优化, 但是按照同样思路, 甚至把PageSpeed Insights的分数刷新到了97分.

阅读更多

在 M5Stack Cardputer 上实现远程桌面串流(基于 H.264)

This article is also available in the following language: English.
背景

几年前,我曾试过在 ESP32 上实现串流操作
当时硬件搭建在面包板上,一快 1.14 寸的屏幕分辨率为 240x135,主控是初代 ESP32。
文章较为详细地描述了实现细节。

时隔五年,我决定重新制作一次,将硬件环境迁移到 M5Stack 家的 Cardputer。

M5Stack Cardputer H264 Streaming

阅读更多
Android 进阶:如何在安卓中实现像 LVGL 一样的"实体"Border?

Android 进阶:如何在安卓中实现像 LVGL 一样的"实体"Border?

做嵌入式的时候用过 LVGL,它的样式系统给我留下了深刻印象。LVGL 的 Border 是”实体”的——会占据布局空间,把内容往里挤。

安卓这边就没这么痛快了。ShapeDrawableMaterialCardView 的边框更像是”装饰品”,想让边框、圆角、内边距各自独立可控?原生组件做起来挺别扭。

所以我干脆手搓了一个 BorderFrameLayout,把 LVGL 那套逻辑搬过来。
BorderFrameLayout层级示意图
图中不同的颜色代表真实占用的空间。
绿色代表Border, 红色代表内部Padding, 蓝色代表Child可使用空间.

阅读更多