
当人们渴望做某事时,每个人都知道这种感觉:购买某物,创造某物,写某物,打电话给某人……所以我渴望用自己的双手去做某事。 为了在instructionables.com上寻找合适的项目,我偶然发现并意识到-这就是您所需要的!
首先,我为自己调整了灯的设计:
- 而不是整个世界的心情,我决定采取我城市的心情
- 我决定使用arduino而不是覆盆子pi(因为它已有库存)
- 有机玻璃盒子的设计我也酌情改变了一点
- 通过sd卡配置指示灯而不闪烁的能力。
第一步,我决定在arduino下编写一个程序。 问题是arduino没有wifi,但很快找到了解决方案-esp8266。 ESP8266是带Wi-Fi接口的微控制器。 除了Wi-Fi之外,微控制器还具有通过SPI接口从外部闪存执行程序的能力。 ESP8266编程是通过串行适配器完成的,可用作串行适配器。 此外,还可以通过arduino IDE来编写和刷新程序。

在使用ESP-01开发板时,我很快意识到使用arduino uno + ESP-01捆绑包不是最佳解决方案。 事实是,要对电路板进行编程,必须组装一个小的编程器电路。 当然,这并不困难,但很不方便:对于模块的固件,您需要通过编程器将ESP-01连接到以串行适配器模式工作的arduino uno,并且要检查程序的运行,您必须在裤子模式下直接将ESP-01直接重新连接到arduino uno。这样两块板就可以通过串口交换信息。

因此,我决定使用NodeMCU板作为微控制器,在一块板上像esp8266和arduino mini一样。 此外,她还有一个微型USB输入,可大大简化与她合作的过程。

该程序本身非常简单。 首先,它连接到wifi网络,其登录名和密码存储在sd卡中。 之后,从
ip-api.com/json下载json以确定灯的位置(仅从包装中获取城市名称和地理坐标)。 当知道灯泡的位置时,该程序开始使用描述每个已编程“心情”的关键字来生成对twitter的请求。 处理请求后,程序将计算鸣叫总数,并确定当前周期中每种情绪的百分比。 为了使当前情绪的计算更加“生动”,该程序将当前情绪与上一个情绪进行比较,并计算百分比变化。 例如,如果在第一个工作周期中,快乐的情绪分布是0.4,浪漫时的情绪分布是0.05,而在第二个周期中,浪漫时的情绪分布是0.5和0.1,则程序将选择“浪漫”作为当前情绪(因为快乐的增加是25%,浪漫是100 %)。 这种方法使您可以快速响应城市中情绪的突然变化,并跟踪混合情绪(如果两种情绪的质量分数大致相同,则程序将依次在它们之间切换)。
第二阶段是灯壳的组装。 我立即确定了这种材料-2毫米厚的不透明有机玻璃(透光率44%)。 同时,根据该想法,所有电子设备都位于其下的架子由透明有机玻璃制成。 同时,有一种感觉,当灯泡工作时,光线似乎从下面倒出,并产生了灯泡本身悬浮的幻觉。
我想用热胶将有机玻璃切割的墙壁彼此粘合。 但是事实证明这种设计是不稳定的(可能是由于壁的宽度很小),并且不断地崩塌。 然后,我决定借助角和螺丝将墙壁固定。 事实证明,此选项更可靠(尽管不是很可爱),所以我停了下来。
组装好箱子之后,我进入了第三阶段,也就是最后阶段-将电子设备安装在下层架子上。 这里的一切都非常简单,除了我没有使用计划的4个LED之外,我使用了8个-向下定向了另外4个以产生悬浮效果。 事实是我错过了灯泡的尺寸,架子的30%占用了4节AA电池的隔间,挡住了LED的光线。

而且还发现我购买的LED在显示复杂颜色方面做得很差。 因此,我不得不将自己限制为7种简单的颜色:红色,绿色,蓝色,粉红色(红色+蓝色),黄色(红色+绿色),绿松石(绿色+蓝色)和白色。
最终的工作结果可以在
视频中看到。
在此视频中,灯泡处于演示模式-快速按随机顺序切换所有有线颜色组合。 在“正常”操作模式下,灯每十分钟轮询一次twitter,以计算当前的心情并根据计算结果更改颜色。
该项目的预算总额为2000多卢布。 此外,最昂贵的零件:4节AA电池700r,一片磨砂有机玻璃600r,中国nodemcu 500r。
有哪些可以改进的地方:
- 组装表壳时,可以使用透明的角,以免它们脱颖而出。
- 如果您购买大块有机玻璃并自己切割,则可以大大降低有机玻璃盒子的成本。
- 您可以使用更昂贵的LED,它们通常会显示中间颜色,例如橙色,紫色等。
- 您可以使用其他电源,例如表冠。 这主要是由于以下事实:4节AA电池的电池盒太大,并且挡住了来自灯底部的大量光。 的确,一个灯冠可以工作多长时间是未知的。
- 您可以创建一个简单的Web界面来设置灯泡。 由于用于sd卡的库不支持俄语,因此无法以这种方式设置要搜索的关键字。
程序代码可以在
github上找到。 如果有趣的话-我可以在另一篇文章中进一步介绍该程序。