Steins;Lab

  • 项目
  • 折腾
  • 笔记
  • 图册
  • 杂谈
  • 文章索引 - 博主自荐博文
  • 关于/留言
Steins;Lab
某团的自留研究所
  1. 首页
  2. 项目跟踪
  3. 正文

[趴会儿Project]No.001 一种外置的暴力宿舍关灯装置(2016.8.27更新完成)

2016年8月18日 10696点热度 3人点赞 16条评论

一种外置的暴力宿舍关灯装置,使用外部机械舵机结构,免改造,易安装,实现方法暴力。人来即拆,人走即安。

done

 

20160817140114


 

本项目隶属于趴会儿Project项目组,详见[企划]趴会儿Project–宿舍床上趴到底&解放双腿计划

项目编号001,分类为照明控制。

thumb

 

本项目后来拿去参加比赛搞事了,详见[趴会儿Project]关于《掌握光明的女神★反物联网反智能暴力外置关灯器V2.0 by 夜露死苦》的一点后续

%e5%b9%bb%e7%81%af%e7%89%871

 

Table of Contents

  • 1.背景&使用场景
  • 2.简述
  • 3.内容
    • 3.1部件选用
      • 3.1.1 主控
      • 3.1.2 外部配件
    • 3.2 连接
    • 3.3代码段
    • 3.4 遇到的问题
  • 4.装配与效果
  • 5.参考资料

1.背景&使用场景

也许你经常会遇到,宿舍11点熄灯,世界暗了。但是,大家沉浸在黑暗世界中,无人顾及将小小的照明开关关掉。

第二天5点30,李毅大帝降临人间,瞬间整个宿舍骤亮。

最终对灯光最敏感的人惺惺下地关灯。

没错,你是不是对灯光最敏感的那个倒霉鬼?说的就是你!

 


2.简述

本作品崇尚一种暴力的解决方法,基本思路即为外置舵机,直接定向旋转物理性地控制照明开关。

仔细想想,毕竟大学宿舍,时不时有消防安全检查。一方面如果拆了照明系统开关,内置继电器控制,是不科学的。一方面会被物业找麻烦,另一方面,也是最重要的,不安全,私改线路要是打火,太危险了。

为了避免发生不必要的麻烦,一种可即使拆卸的外置设备,打游击战还是很有必要的。

 


3.内容

3.1部件选用

3.1.1 主控

主控采用Arduino UNO R3 初期调试用。如果后期想要集成便携属性,减小体积可转为Arduino Nano等小体积版。

如果不考虑功耗,更进一步压缩成本,其实更可选用STC51系列的单片机系统。这玩意便宜,大家都用他来入门。只需把舵机的PWM等代码移植即可。

目前先不考虑大系统集成

----↓2016.8.27更新----

使用了兼容的Nano作为主控,缩小体积。

 

3.1.2 外部配件

想要在床上便捷关灯(或者故意先上床然后画蛇添足多此一举用遥控关灯),必不可少的是遥控模块。我也考虑了一些,比如红外模块。但是红外模块的迷之距离和遮挡失效属性,弃用。后来还是用315Mhz的遥控模块吧。没准甚至能楼下关灯。

最终采用  2272-M4 非锁四路无线遥控套件

因为对加密性没有要求,315Mhz的遥控对于我来说反而越模块化、越易用越好。

模块焊盘固定码,解码器和遥控器配好,按键既有电平变化。

20160817222417

 

舵机采用SG90微型舵机即可。

 

3.2 连接

本实例连接很简单。5v取自主控板,分别给接收解码模块和微型舵机供电(事实上,板载可驱动一个sg90微型舵机)。

IO口分别连接。

 

3.3代码段

v1.0

/*
  趴会儿Project项目集 http://steinslab.io/archives/752
  No.001 一种外置的暴力宿舍关灯装置
  详见http://steinslab.io/archives/749

  SPtuan@steinslab.io
*/

#include <Servo.h>
#include <Enerlib.h>

Servo switcher;
Energy energy;
int pos = 20;
int sig = 2;
int flag = 0;
int flag_temp = 0;

void signal0()
{

  delay(1);
  if (digitalRead(sig) == 1)
  {

    Serial.println("Signal!");
    flag = (!flag);
    while (digitalRead(sig) == 1);

  }
  changePosition();
  flag_temp = flag;
  Serial.println("tempflag!");
  switcher.write(pos);
  delay(2000);




}

int changePosition()
{

  if (flag != flag_temp)
  {
    Serial.println("change position!");
    if (flag == 0)
    {
      pos = 0;
      Serial.println("change position0!");

      return 0;
    }
    if (flag == 1)
    {
      pos = 180;
      Serial.println("change position1!");
      return 1;
    }



  }

}
void setup() {
  Serial.begin(9600);
  Serial.println("Servo test!");
  switcher.attach(9);
  pinMode(sig, INPUT);
  switcher.write(90);
  attachInterrupt(0, signal0, RISING);
  delay(2000);
}

void loop() {
  delay(1000);
  energy.PowerDown();



}

 

----2016.8.27更新调试完毕的代码段v2.0----

/*
  趴会儿Project项目集 http://steinslab.io/archives/752
  No.001 一种外置的暴力宿舍关灯装置 2.0
  详见http://steinslab.io/archives/749

  SPtuan@steinslab.io
*/

#include <Servo.h>
#include <Enerlib.h>

Servo switcher;
Energy energy;
int pos = 20;
int sig = 2;
int flag = 0;
int flag_temp = 0;

void signal0()
{

  if (digitalRead(sig) == 1)
  {

    Serial.println("Signal!");
    flag = (!flag);
    while (digitalRead(sig) == 1);

  }
  changePosition();
  flag_temp = flag;
  Serial.println("tempflag!");





}

int changePosition()
{

  if (flag != flag_temp)
  {
    Serial.println("change position!");
    if (flag == 0)
    {
      pos = 20;
      Serial.println("change position0!");


    }
    if (flag == 1)
    {
      pos = 150;
      Serial.println("change position1!");

    }

    switcher.write(pos);
    //delay(2000);  不要在中断中使用delay()
    return 0;


  }

}
void setup() {
  Serial.begin(9600);
  Serial.println("Servo test!");
  switcher.attach(9);
  pinMode(sig, INPUT);
  switcher.write(90);
  attachInterrupt(0, signal0, RISING);
  delay(2000);
}

void loop() {
  delay(1000);
  setup();
  if (switcher.read() == 90)
    energy.PowerDown();



}

3.4 遇到的问题

首先我尝试使用Arduino自带的Servo库,但是遇到了很大的问题。servo最终定位的舵机异常抖动,貌似未归位发出异响,这是我无法忍受的。后来换了自写的PWM控制函数,仍然抖动。

后来使用了中断方式获取遥控的信号。为了避免发出异响,并考虑到以后,为了免外接电源需加入省电模式,省电模式可由0号中断唤醒。两者配合最终解决问题。

----2016.8.27----

优化了代码。最后调试由于旋转尺度不够,不能保证将开关撞击到指定位置,设置了多余的转动角度。

优化了代码,使舵机臂每次击打后归中,为手动开灯关灯让路。

 

 

 

4.装配与效果

测试环境下的效果

http://steinslab.io/wp-content/uploads/2016/08/MOV_1253_clip_Compress.mp4

关灯的原理太清楚了,让舵机微微转动15度即可关灯/开灯。

最终我再用pvc板子包装一下,换成Arduino nano或者51。舵机做个衣服上用的粘贴,就成最终版了。

 

----2016.8.27-----

为了防止人工开关灯时破坏装置,对用于关灯开灯的舵机臂进行改造。使用自带的两个云台壁,用跳线铰接,简单实用。

20160827002933

换用了兼容的第三方nano。在面包板上进行测试。(视频大小1.3MB)

http://steinslab.io/wp-content/uploads/2016/08/MOV_1266_Compress-1.mp4

测试完毕后,把各个组件在洞洞板上集成。背面焊了跳线,将5v和gnd引出。同时导出D9IO口用于舵机控制,给以后改造留个余地。背面焊工就不漏了,班门弄斧(视频大小1.5MB)

http://steinslab.io/wp-content/uploads/2016/08/MOV_1273_Compress-1.mp4

done20160827003705

最终效果:(视频大小2MB)

http://steinslab.io/wp-content/uploads/2016/08/MOV_1274_clip_Compress-1.mp4

MOV_1274_c_clip

5.参考资料

[1] 認識與實驗Arduino的睡眠模式

这家网站以图解的方式将睡眠模式讲得很透彻!赞!

[2] ArduinoNano 中文Wiki

[3] Arduino外部中断的使用

相关

标签: 趴会儿Project 项目追踪
最后更新:2022年7月11日

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。 当前从事网络/CDN/对象存储研发。

点赞
< 上一篇
下一篇 >
0 0 votes
文章评分
Subscribe
Login
提醒
guest

guest

16 评论
最新
最旧 得票最多
Inline Feedbacks
View all comments
HawkMaple
HawkMaple
7 年 之前

我在想 既然都做到这了 为什么不搞个定时熄灯就关灯的代码呢???

0
回复
SPtuan
SPtuan
作者
Reply to  HawkMaple
7 年 之前

@HawkMaple 终于有人能精确吐槽这点了!这才是这篇文章最大的槽点啊!其实这个装置是用来报复室友的 :lol:

0
回复
Clarke
Clarke
8 年 之前

好厉害~我都看不懂!

0
回复
SPtuan
SPtuan
作者
Reply to  Clarke
8 年 之前

@Clarke 哈哈,学习单片机顺便做的一点小项目。这边一般都放比较严肃的。一时脑抽或者各种奇奇怪怪的东西都堆到misaka.cc了

0
回复
printempw
printempw
8 年 之前

哦哦!好有意思啊
懒才是第一生产力(笑

0
回复
SPtuan
SPtuan
作者
Reply to  printempw
8 年 之前

@printempw 大佬!!
后来我发现了,即使有了这个装置,每天早上醒来按动遥控按钮的还是我…好气啊 :eek:

0
回复
monian
monian
8 年 之前

666,简单粗暴

0
回复
大树
大树
8 年 之前

点赞

0
回复
SPtuan
SPtuan
Reply to  大树
8 年 之前

@大树 贵客啊!欢迎欢迎!啪啪啪啪啪

0
回复
大树
大树
Reply to  SPtuan
8 年 之前

@SPtuan 哈哈哈哈没有没有!其实总来看这些看不太懂的东西的~

0
回复
你冰雪可爱得崔神
你冰雪可爱得崔神
8 年 之前

水水水,狠狠狠,看不懂

0
回复
SPtuan
SPtuan
作者
Reply to  你冰雪可爱得崔神
8 年 之前

@你冰雪可爱得崔神 ?????鏌

0
回复
星月
星月
8 年 之前

棒棒的

0
回复
SPtuan
SPtuan
作者
Reply to  星月
8 年 之前

@星月 终于上来了!

0
回复
fandy
fandy
8 年 之前

狠

0
回复
SPtuan
SPtuan
作者
Reply to  fandy
8 年 之前

@fandy 别灌水啊喂()

0
回复

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。
当前从事网络/CDN/对象存储研发。

  • 1.背景&使用场景
  • 2.简述
  • 3.内容
    • 3.1部件选用
      • 3.1.1 主控
      • 3.1.2 外部配件
    • 3.2 连接
    • 3.3代码段
    • 3.4 遇到的问题
  • 4.装配与效果
  • 5.参考资料
分类
  • Uncategorized
  • 图册
  • 学习笔记
  • 库
  • 折腾
  • 杂谈
  • 瞎**扯
  • 碎碎念
  • 项目跟踪
最近评论
SPtuan 发布于 2 个月前(03月22日) 书签: 关于 disk-io 的经验, 异步/同步 io 系统设计的经验 https://you...
SPtuan 发布于 2 个月前(03月21日) 如果公司不是对外提供这些服务的,这种岗位都是 infra 部门,平均年龄确实会大一些。尤其构建和维护...
HUA 发布于 2 个月前(03月19日) 想请问博主对于国内CDN行业,以及CDN调度、DNS托管类服务相关岗位的看法,以及是否还推荐校招新人...
SPtuan 发布于 3 个月前(02月03日) 2025 注: 长辈对于只身去深圳的担忧,更多地来自于 80s/90s 治安情况。近几年了解了严打...
SPtuan 发布于 4 个月前(01月16日) 哈哈,100就100吧,新年快乐!
热门主题 & 页面
  • 全球互联网拓扑探索 (1) : 互联网是如何工作的
  • Intel Movidius Neural Compute Stick - 英特尔Movidius神经计算棒上手体验
  • iowait 到底是什么?
  • 使用 WSL2 + X11 转发 - 在 Windows10 中打造 GNU/Linux 学习生产环境
  • 动手做!基于nRF24L01P的Arduino无线通信
归档
  • 2025 年 5 月
  • 2025 年 3 月
  • 2024 年 12 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 5 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 4 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 7 月
  • 2022 年 6 月
  • 2022 年 2 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 2 月
  • 2021 年 1 月
  • 2020 年 9 月
  • 2020 年 4 月
  • 2020 年 3 月
  • 2020 年 1 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 5 月
  • 2019 年 4 月
  • 2019 年 3 月
  • 2019 年 2 月
  • 2018 年 12 月
  • 2018 年 10 月
  • 2018 年 9 月
  • 2018 年 8 月
  • 2018 年 5 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 11 月
  • 2017 年 9 月
  • 2017 年 7 月
  • 2017 年 6 月
  • 2017 年 5 月
  • 2017 年 4 月
  • 2017 年 3 月
  • 2017 年 2 月
  • 2017 年 1 月
  • 2016 年 12 月
  • 2016 年 11 月
  • 2016 年 10 月
  • 2016 年 9 月
  • 2016 年 8 月
  • 2016 年 7 月
  • 2016 年 6 月
  • 2016 年 5 月
  • 2016 年 4 月
  • 2016 年 3 月
  • 2016 年 2 月
  • 2016 年 1 月
  • 2015 年 12 月
  • 2015 年 11 月
  • 2015 年 9 月

友情链接:

Blessing Studio hahaschool 绘枫和畅 魔法少女Fandy monsterx Clarke的博客 Luminous’ Home Shintaku's Blog
蓝黑的博客 haruhi.club Yida的博客 Bo2SS 涛叔 TangBao 同和君Hocassian

Steins;Lab 团子神社 zdfmc.net

steinslab.io built with ❤. Thanks for all 2015-2025.

Theme Kratos Made By Seaton Jiang

wpDiscuz