ReRouter - 构建可扩展的物联网路由器






3.33/5 (4投票s)
由 SeeedStudio 制造的可扩展物联网路由器
引言
那之后我思考了很多,由此产生了一个新想法。我觉得自己可以更进一步,让它能帮助到一些特殊的群体——比如我的外公,他曾经是个硬汉,现在晚年却饱受阿尔茨海默病(AD)的折磨。他常常忘记第二天早上计划要做什么。写在纸条上是行不通的,因为他年纪太大,已经握不住笔了。但我想,或许他可以打字,哪怕只用一根手指,他还是可以按动按键在电脑上输入文字。所以我想,如果我给我的路由器集成一个打印机,他或者我就可以在网页上写下一些东西,然后让打印机把它打印出来。这样每天早上他只需要看看那张纸条,就能知道自己定下的计划。而且,我或者其他任何家庭成员也可以随时用这种方式给他留便条。就拿我来说,我希望每天早上都能写下“我爱你,外公”,这样他就能在千里之外看到我的问候,而不会嫌我声音吵(开个玩笑)。
背景
几个月前,我分享了一个关于
路由器的项目,名为“带WiFi连接可视化的智能路由器”
。它可以告诉你连接到路由器的设备数量,并监控网络速度。幸运的是,那个项目获得了超过9.6万次浏览和760个收藏。我非常高兴,因为我把它看作是一个可以帮助那些和我有同样困扰的人的解决方案。
有了这个想法后,我就开始动手了。
除了打印机,我还计划让路由器连接到Grove传感器和Grove继电器。这样我就可以控制继电器,并将传感器数值上传到联发科创意实验云(MediaTek Cloud Sandbox)。
老实说,我希望有更多的人能关注这个开源项目,并参与到这类事情中来,帮助像我外公这样的特殊人群。
好了,现在让我们开始制作之旅吧。
步骤1:我们需要什么
- LinkIt Smart 7688 Duo
- Grove – LED 灯带
- Grove - 温湿度传感器 (HDC1000)
- Grove – 继电器
- Base Shield V2
- 用于LinkIt Smart 7688 Duo的Arduino扩展板
- 嵌入式热敏打印机
步骤2:接线
现在,我们应该如下图所示,将Grove模块连接到用于LinkIt Smart 7688 Duo的Arduino扩展板上。
步骤3:设置Linkit Smart 7688 Duo
继电器,将Grove传感器数据上传到MCS,一个用于写入内容
并让打印机打印出来的网站,以及运行在ATmega32U4上的代码。
我假设您已经熟悉Linkit Smart 7688 Duo,如果不是,请点击这里开始学习。然后通过SSH或串口进入MT7688终端。
修改配置文件,将MT7688切换到路由器模式。
vi /etc/config/network
如下图所示,更改网络接口配置‘lan’和‘wan’。
config interface 'lan' option proto 'static' option netmask '255.255.255.0' option ipaddr '192.168.100.1' config interface 'wan' option ifname 'eth0' option proto 'dhcp'
我们使用yunbridge在MT7688和ATmega32U4之间进行通信,所以需要启用yunbridge。
> uci set yunbridge.config.disabled='0' > uci commit
Requests是Python唯一的非转基因HTTP库,可供人类安全使用。Requests允许你发送有机的、草饲的HTTP/1.1请求,无需手动操作。我用它来与MCS通信。
我使用flask Web框架来开发这个Web APP。Flask是一个基于Werkzeug、Jinja 2和良好意图的轻量级Python Web框架。你可以点击https://flask.org.cn/了解更多信息。
接下来,安装Python依赖项。
pip install requests flask Flask-WTF wtforms
步骤4:配置联发科创意实验云
联发科创意实验云(MediaTek Cloud Sandbox, MCS)是一个为物联网设备提供的云端数据服务平台。如果你没有账户,请点击https://mcs.mediatek.com/oauth/en/signup进行注册。
MCS已经提供了一些有用的教程,你可以按照这里的步骤,在MCS中逐步创建产品原型和测试设备。
然后,在我的项目中,我为Linkit Smart 7688创建了一个名为LinkitRouter的新产品原型,并为这个原型添加了三个数据通道,分别是Button、Temperature和Humidity,如下图所示。
现在,你将获得设备ID(Device ID)、设备密钥(Device Key)和3个数据通道ID(Data Channel ID),你可以在测试设备的详细信息页面找到这些信息,我们稍后会需要它们。
步骤5:上传Arduino代码
1. 在https://github.com/Lee-Kevin/20.IoTRouter下载示例代码
2. 点击网页右侧的“Download zip”按钮下载所有代码。
3. 将下载的zip文件解压到“C:\Users\Administrator\Documents\Arduino\”,并移除解压后文件夹名称中的“-master”。
4. 启动Arduino IDE。
5. 点击项目(Sketch)=>添加文件(Add file),从“C:\Users\Administrator\Documents\Arduino\20.IoTRouter\RouterArduinoCode\routerBox_Arduino.ino”添加routerBox_Arduino.ino文件。
6. 点击工具(Tools)=>开发板(Board),选择“Linkit Smart 7688 Duo”,并选择正确的端口,如下图所示。
7. 按下CTRL + U将代码上传到你的开发板。稍等片刻,会显示“上传完成”。
8. 恭喜,你已经完成了Arduino上的全部工作。
步骤6:从Github下载代码
现在,我们已经安装了所需的依赖,从github下载代码。
cd ~ & git clone https://github.com/Lee-Kevin/20.IoTRouter
进入20.IoTRouter目录,你会发现有3个文件夹:RouterArduinoCode、RouterScript和Drawings。RouterArduinoCode是应该在Arduino上运行的代码,RouterScript是应该在Linkit Smart 7688上运行的Python代码。现在我们将RouterScript移动到/root/目录下。
cd 20.IoTRouter/ & mv RouterScript/ /root/
进入/root/RouterScript/目录,使用vi编辑器编辑UpdateSensor.py和relay.py文件。
cd ~ & cd /root/RouterScript/ vi UpdateSensor.py vi relay.py
将deviceID、deviceKey和dateChannelID更改为你自己的设备信息。如下图所示。
步骤7:设置启动脚本
进入/root/RouterScript/目录。
cd ~ & cd /root/RouterScript/
然后设置启动脚本。
chmod +x router & mv router /etc/init.d/ /etc/init.d/router enable /etc/init.d/router start &
然后重启路由器。
reboot
当路由器重启完成后,你就完成了所有的软件工作。
步骤8:准备硬件工作所需物品
- 4毫米木板
- M3*10螺丝 – 8个
- M3*8螺丝 – 2个
- M3*5+6螺柱 – 2个
- M3螺母 – 10个
- R30100尼龙铆钉 – 4个
- R2075尼龙铆钉 – 6个
工具
- 502胶水
- 透明胶带
- 螺丝刀
- 激光切割机
步骤9:激光切割木板
在这一部分,我们需要制作一个如下图所示的盒子,这项工作由我的同事Nosk完成,他是一位聪明的工业设计师。你可以点击这里下载图纸。
然后我们需要用激光切割机切割木板。我猜你家里没有激光切割机,但你可以很容易地在你附近的创客空间找到。如果附近没有创客空间,你可以尝试Seeed提供的激光切割服务。
这里我们使用的是4毫米厚的木板~
步骤10:硬件组装
- 用M3*10螺丝和螺母固定框架。(图1、2)
- 在PCB上安装螺柱,然后将其固定在木板上。(图3、4)
- 用R2075尼龙铆钉将传感器和继电器固定在木板上。(图5)
- 固定打印机。(图6、7)
步骤11:外壳组装
- 用透明胶带固定RGB LED。(图1)
- 固定两侧的木板。(图2、3)
- 用纸制作灯罩,并用透明胶带固定。(图4、5)
- 用尼龙铆钉固定外壳,别忘了安装按钮。(图6、7、8)
步骤12:成品外观
这是路由器的成品外观。
步骤13:成果展示
现在,你可以连接到Linkit Smart 7688的Wi-Fi热点,然后在你的网页浏览器中输入mylinkit.local:8000或者你的7688的本地IP地址:8000,你就可以看到如下图所示的路由器打印机网页。在文本框中输入一些内容,然后点击“打印消息”,你会发现打印机能把它打印出来。
然后访问MCS网站,查看你的测试设备,你可以点击按钮来控制继电器,并查看传感器数值,如下图所示。
步骤14:制作、发明、行动
这个项目是一个开源项目。它只是一个起点。让你的创造力在机械、电气和软件设计上尽情驰骋吧。把这个演示项目变成你自己的东西。装饰它,改进它。无论如何,都为它写一份制作指南吧。
让我们一起为特殊的人群做一些特别的事吧。
祝好!