惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
MicroBlocks 编程案例: sonoff 智能插座
种瓜 · 2022-01-13 · via 夜行人

前言

市面上的许多智能设备都搭载了 ESP32 系列微控制器,由于 microblocks 支持 ESP32(esp32 devkit-v1) 和 ESP8266(NodeMCU), 想用 microblocks 来接管真实世界的设备。

特别提醒: 千万不要在插座这类「强电设备」通着电的时候对其操作,否则可能对你造成伤害,也可能毁掉电脑。

思路

寻思着从接管哪个设备开始。

由于我对硬件拆解和分析电路板都不够熟悉,不想随便选择一个设备贸然开始,那样时间投入和结果产出都不可预期,打算在社区已有的工作上前进,这样即使遇到问题,社区里很可能已经有解决方案了。不想在硬件拆解上投入太多时间,那不是我感兴趣的。后来证明这个决策十分明智。

笔记系统里找到 接管 sonoff s20 智能插座的教程。淘宝下单买了一个 sonoff s20 插座(几十块钱),准备按照教程里的方法,为这插座刷入新固件,然后在 microblocks 里对其编程。

为 sonoff s20 刷入固件

拆开到货的 sonoff s20 智能插座,发现与教程里的电路布局并不一样。

这是教程里国外的版本:

这是我从淘宝买到的国内版本:

一番 Google,了解到不同国家卖的 sonoff 智能插座, 电路板布局有所不同。按照教程里的引脚布局,无法刷入固件。 又一番 Google,找到了我这款插座的引脚说明:

@weibin 帮我焊了一个与上图类似的 90 度折角的针脚。

按上图的引脚布局,使用 USB-UART 桥接器(必须兼容 3.3V。否则你会毁掉你的 S20!)将插座连到电脑。

往 usb 口插入了 USB-UART 桥接器, 电脑里就可以看到 port 了(这不意味着接线的正确性)。

我打算先 erase_flash 它:

esptool.py --chip esp32s2 --port /dev/tty.usbserial-14320 erase_flash

始终处于连接中,一开始以为是接线的问题,交换了 tx/rx,依然没解决问题。想起之前刷 esp32 板子时,也遇到类似的问题,需要按 boot 键,但我在 sonoff 智能插座电路板上没找到 boot 按键,唯一的一个功能键按了无效。

一时毫无头绪,@junnan 说如果能看到微控制器的引脚,使用万用表测试下应该能搞清楚问题,但电路板的微控制器在看不到的一面,已经被固定死了。

翻了几个文档,都没提 esptool.py 如何连接上板子。 我猜测通过观看视频应该能找到文档里缺失的操作细节,毕竟操作者的行为里, 必须包含所有信息,不然不会成功。于是继续去开源社区里答案。果然,这个问题确实被解决了,有个用户在使用开源项目 Tasmota 接管 sonoff 智能插座时,录了一个视频,通过看视频里的操作,我弄懂了操作方法:Flashing the Sonoff S20 WiFi Smart Plug with open source Tasmota firmware(8 分 10 秒),使用 esptool.py 刷东西之前,需要先拔下 vcc 线(其余 3 根线连着),然后按住电路板上的按钮,插入 vcc 线之后,再松开按钮。

一试之下果然奏效(@junnan 猜测这等效于 boot 按键):

esptool.py --chip esp8266 --port /dev/tty.usbserial-14320 erase_flash

按照同样的操作,往智能插座里刷入vm_nodemcu.bin 固件

esptool.py --chip esp8266 --port /dev/tty.usbserial-14320 write_flash -fs 1MB -fm dout 0x00000 ~/Downloads/vm_nodemcu.bin

esptool.py 提示 sonoff s20 使用的微控制器是 esp8266EX。

使用 microblocks 编程

我没有使用 microblocks 网页刷入固件,因为也会遇到一样的连接问题(需要 boot)。为了排除问题, 选择使用 esptool.py,因为开源社区有好几个项目已经用它完成了固件刷入。

固件刷入后,microblocks 顺利连接插座!

如何弄懂不同功能对应的引脚呢?

读文档当然是很好的方法,但很多东西是没有文档的,就像这个物理世界没有使用文档一样。信奉建构主义的个人计算社区会告述你: 动手尝试它!

“要了解这个世界,你必须建造它。”——Pavese

这是 John Maloney(曾是 smalltalk 团队成员) 喜欢的编程风格: 寻找哪个引脚对应 user LED

现场凑近的话,可以听到继电器的滴答声。我们已经接管了智能插座的核心元件: 继电器。

后记

虽然在线编程没有问题(webthings 之类的库都能正常工作)。 但离线时,程序并未运行,猜测是持久化部分出的问题, 诸如板子上有写保护机制,又或者自动重置之类的东西。

由于整个硬件并未开放,这上头投入过多的时间并不值得,我不打算解决这个问题。

本文的兴趣更多是探索 microblocks 的可能性。

参考