基于blinker&wifiduino的远程喂猫机改造-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4258|回复: 3

[项目] 基于blinker&wifiduino的远程喂猫机改造

[复制链接]
发表于 2018-12-11 22:51 | 显示全部楼层 |阅读模式
前因:买的喂猫机用的干电池一个月就没电了,就想着改usb直接供电。你能想到红线是负极么!!!理所当然的原来的主板就烧了,那就废物利用吧。

机械结构很简单,一个电机带动转盘,转盘边上有四个凸起,每转动90度就触发开关一次,告诉主控该停止转电机了。

简单画一个原理图,D12内部上拉,连接到开关,D13通过1K电阻连接8050三极管,控制电机的转动。二极管用来吸收电机的反向电压。

原理图

原理图


焊接,还是在D12对地接了104电容来滤波下。

焊接细节

焊接细节


然后联线一根到5V

NC脚联线到5V

NC脚联线到5V


正面阻焊刮开下,在5v和3.3v各接一个电容,避免电机干扰到单片机的运行。没接也跑了会儿,为了可靠还是加上的好、

稳定电压

稳定电压


固定板子到机器内部,是用热熔胶大法

热熔胶固定

热熔胶固定


稍微比划一下开孔,开大一点让这个USB头子嵌入进去,因为油鸡太调皮了。
7.png

接线玩就上螺丝装回去。
8.png
ok,结构方面完事了,轮到二楼代码。


 楼主| 发表于 2018-12-11 22:51 | 显示全部楼层
本帖最后由 珜羽 于 2018-12-11 23:05 编辑

先放代码再讲解:
cat_MQTT.zip (1.46 KB, 下载次数: 3, 售价: 1 金币)
代码直接在示例->blinker库->blinkerHELLO->hello_mqtt上面改的。 9.png
先定义开关输入脚D12,以及电机驱动脚D13。还有一个电机运行时间的变量:
[mw_shl_code=arduino,true]#define key   D12
#define moto  D13
long timetmp = 0;[/mw_shl_code]

接着在step里面初始化:
[mw_shl_code=arduino,true]  pinMode(key, INPUT_PULLUP);
  digitalWrite(moto, LOW);
  pinMode(moto, OUTPUT);[/mw_shl_code]

接着在按键触发绑定的回调函数里面修改:
判断电机驱动脚已经高电平那就不再驱动,不让重复触发。
如果电机没驱动那么驱动电机,并记下时间,顺带返回喂粮次数。
[mw_shl_code=arduino,true]  if (digitalRead(moto) == 0) {
    digitalWrite(moto, HIGH);
    timetmp = millis();
    counter++;
    Number1.print(counter);
  }[/mw_shl_code]

最后在loop里面添加:
如果电机驱动了,并且驱动的时间已经超过2秒,那么判断开关已经释放的情况下停止电机驱动。
(跳过2秒是因为上一次转到位的时候开关还是释放状态,要跳过这个时间)
[mw_shl_code=arduino,true]  if (digitalRead(moto) == 1) {
    if ((millis() - timetmp) > 2000) {
      if ((digitalRead(key) == 1)) digitalWrite(moto, LOW);
    }
  }[/mw_shl_code]

最后不要忘记添上从app里面获取的key和家里wifi名和密码。
编译运行。

 楼主| 发表于 2018-12-11 23:20 | 显示全部楼层
本帖最后由 珜羽 于 2018-12-11 23:30 编辑

空机测试


带粮测试


带猫测试的被优酷屏蔽了我也是无语、、、 10.png
发表于 2018-12-20 09:08 | 显示全部楼层
主要是要有养猫的习惯  楼主很猛
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 22:54 , Processed in 0.084048 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表