0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

iPhone和Arduino车库门开启器的制作图解

454398 来源:网络整理 作者:网络整理 2019-11-12 16:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:您需要的内容

我用于该项目的材料是:

以太网屏蔽的Arduino UNO :我的是用于Arduino的Vilros以太网R3,但是以太盾或等效设备应该没问题

一个备用的Linksys路由器 :我用DD-WRT刷新了固件(自此以后,我将不介绍该步骤在线上有许多有关如何执行此操作的教程)用作WiFi中继器桥。在Craigslist上找到一个。它们非常便宜

iPhone :我的是7颗

LED,330欧姆电阻器,面包板,跨接电缆 :用于调试

5V继电器 :我从这里订购了我的产品。从中国到达大约需要两个星期。但是它们足够便宜,因此订购一堆

3D打印盒(可选) :存放电子设备

Xcode的副本 (Apple应用程序开发软件)

第2步:设置调试硬件

首先,让我们设置用于调试目的的硬件。我将Arduino和以太网屏蔽以及面包板临时安装在一个小平台上。如图所示,我插入了LED和电阻。如果您需要有关如何将LED连接到Arduino的更多详细信息,本教程可能会有所帮助。但是这些教程的数量与彩虹的颜色一样多,因此请选择您喜欢的。最后,我将Arduino的以太网端口连接到路由器,然后通过USB电缆将Arduino插入笔记本电脑。就是这样。

步骤3:编写Arduino代码

下一步是确定Arduino将如何执行我想要它做什么。最初,当用户的iPhone首次连接到LAN时,Arduino应该传达门的当前状态。然后,Arduino会从用户的iPhone接收命令来打开/关闭门,并更新Arduino代码中的变量来跟踪门的状态。

我认为最好的方法是传递JSON(Java脚本对象表示法)消息。我喜欢它们,因为它们具有键值结构以及标头信息。事实证明,如果您下载ArduinoJSON库,则Arduino可以支持此功能。他们有许多有关如何与该库进行交互的示例。您需要密切注意几个使用这些类的示例:

EthernetServer

EthernetClient

DynamicsJsonBuffer

或者您可以看一下我的代码以了解如何使用这些类中的函数。

loop()

p》

我也尽可能地在interwebz上寻找示例代码。一个半相关的应用程序是用于Arduino和iPhone的温度传感器应用程序。这是一个非常完整的示例,其中包含很多很好的解释和可下载的代码。

好,所以接下来让我伤脑筋的是我将Arduino用作 server 还是 client 。似乎当用户最初连接时Arduino应该是服务器,因为它正在为iPhone的初始门状态提供服务。另外,当Arduino从iPhone接收命令时,我认为它应该是客户端,因为它被动地接收数据。

事实证明,在两种情况下,使Arduino成为服务器都是可行的。代码的本质分解方式在主要的Arduino

SendAndReceiveJSONData()

调用中,我定义了一个名为

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

的函数,该函数使Arduino成为服务器它会监听所有客户。如果找到一个,它将忽略客户端的JSON头信息(不重要),并尝试解析数据。如果它找到可以解析的数据,则我们知道iPhone已向我们发送了有关门的状态信息,Arduino会相应地更新这些变量。另一方面,如果我们找不到要解析的数据,那么我们知道这是用户第一次连接(因此他不可能向我们发送有关门的任何信息),并且向他发送了一条JSON消息,通知他的门的当前状态是什么。

如果我上面说的话似乎令人困惑,请告诉我,但您也可以在我的仓库中查看代码。

步骤4:在编写iPhone代码之前免责声明

Apple 。..哦,Apple。 [提示重叹] 。我曾经爱过苹果。但是这个小杂物与这个讨论无关。

Swift是用于在iPhone上设计应用程序的最新语言。伙计们,我真的不在乎。潮流似乎在改变,说实话,我什至不知道我在Xcode上安装了哪个版本。此外,在查找示例/教程时,由于语言的更改速度很快,因此并非所有内容都相关。

现在,如果这还不够糟糕,(我保证这会发生的话),我在编译后发现了/构建我的XCode项目,使其不会在我的iPhone上加载。原因是因为我的机器很旧(2010年的MacBook Pro),所以我拥有的最高操作系统是10.11.6(El Capitan)。本质上,这意味着我无法在支持iPhone中最新iOS(11.1或11.2)的计算机上安装最新的Xcode。该错误通过说出诸如“无法找到设备支持文件”之类的东西来体现。

事实证明,如果您遇到相同的问题,则可以通过修复来解决问题。将错误输入Google会导致大量类似的解决方案。这是一个。结果是您需要下载最新版本的Xcode(这很重要,因此它不会自动安装并随后失败),然后导航到:

PerformRestCall()

并复制所有这些您当前的Xcode版本没有相同目录的目录。之后,重新启动Xcode,并尝试编译等,它应该可以正常工作。

步骤5:编写iPhone代码

在控制版本问题的情况下,我不得不拼凑一些资源来编写应用程序,我不想花一个月学习Swift。话虽如此,我确实发现与Chris一起合作的Code是非常好的资源和时间投入。他的教程特别出色,因为它向您展示了如何实现触摸屏功能以及 Main.Storyboard 与实际代码之间的交互。特别是在最近的一些教程中。因此,我真的鼓励您在开始使用Xcoding之前先观看它们。另外,我和其他人一样,寻找相似的Swift实例,并尝试向他们学习。我不是Swift专家,但我找到了我需要的东西。

该应用的背后想法是设计自定义的 Open 和 Close 触摸按钮您拥有的任何绘画应用程序都可以按预期运行。当应用首次启动时,它会使用一个名为

handleResultsOfWebCall()

的函数,该函数随后会调用:

leftOpenImageTapped()

leftClosedImageTapped()

rightOpenImageTapped()

rightClosedImageTapped()

,该函数实际上是繁重的工作并解析来自Arduino的初始JSON数据描述了门的当前状态。

我使用的其他功能是:

CreateJSONMessage()

,它们在被调用时会更新门的当前状态。门,然后调用函数:

实际创建要发送到Arduino的必要JSON。

有关更多详细信息,您可以在此处看到该项目的代码,由于我试图对其进行合理地注释,因此该代码应进行更多说明。老实说,我有点把它砍在一起,以使其能够完成我想要的工作。

在编写代码之后,我将其上传到iPhone并开始调试。

第6步:调试

编写我的代码并将其上传到Arduino和iPhone上,就该进行调试了。由于我还没有将所有东西连接到车库,因此我想以某种方式模仿它的行为。提示LED。

我拿起了两个红色和两个绿色LED的钩子,如上图所示。一组绿色和红色代表左门,其余代表右门。如果任一扇门关闭,则绿灯将不停闪烁。否则,如果任何门打开,则红灯将闪烁。我选择了要关闭的门的初始状态(绿色闪烁的灯),因为当我第一次将Arduino连接到开门器时,我将确保门已关闭。

看看它如何可以,您可以观看正在播放的简短视频(糟糕透顶-对不起!)。瞧!到目前为止可以正常工作!

步骤7:连接

自从维修了3D打印机以来,我还没有机会打印箱子。我以此为基础的先前说明,具有可供下载的.stl文件。(注意:如果您打算使用.stl文件,则单位以厘米为单位,与作者相对应。我不得不缩放我的.stl文件的大小是原来的10倍,因为我的打印机以毫米为单位工作。我必须修改设计,因为我有两个门,因此需要两个继电器。但是由于我渴望将所有东西都连接起来,所以我开始将电子设备安装在我躺在的一块废旧木头上。因此,我不会在这种指导中展示绝对的成品。

一旦将电子设备安装到我拥有的木头上,在其上找到临时住所就很简单了。壁。在图片中,您可以看到从路由器到Arduino,从Arduino到继电器,再到继电器到车库门按钮的电线。当我弹出实际按钮并从墙上拧下外壳时,只有两个接线端子。因此,就像我以前作为基础的指导一样,您可以按任意顺序将继电器的电线钩到门按钮上的端子上。

在此之后,整个设置第一次神奇地起作用了!抱歉,不发布视频。我必须暂时将其取下来,然后才能捕获它的视频,但我发誓确实如此!

步骤8:最终想法

之后玩了一点,我确实注意到了一些问题,我将在下面提到。这些是很重要的,因此在决定重复该项目之前,请先考虑它们。

按下iPhone上的按钮与让车库门响应之间存在一些不一致的延迟。

一个大问题:将应用程序加载到iPhone应用程序后,我注意到几天后我试图打开该应用程序。应用程序,它只会返回主屏幕。这是一致的行为。挣扎了一段时间之后,我终于崩溃了,并在stackoverflow上发布了问题。一个人的答案似乎是正确的:邪恶的帝国使Apple决定,如果您不是开发人员,那么您从Xcode获得的信任证书对您刚开发的应用程序仅有效1周。之后,除非您重新安装它(并重置1周的倒计时),否则您将无法在iPhone上使用它,或者需要为更长的证书支付99美元的费用。我发现这完全令人沮丧。就像我浪费时间一样。但是,如果您是开发人员,那么这对您来说就不是问题了。。

我想到的一个想法是,如果有人手动按下车库门按钮,则不会捕获此事件在Arduino代码中因此,就Arduino而言,在按下按钮之前,门的状态保持不变。此外,如果有人站在门底下,而另一个人正在使用该应用程序将其关闭。门传感器将迫使门再次返回,并且此事件也未在Arduino代码中捕获。不用说,这是要弄清楚的另一点。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • iPhone
    +关注

    关注

    28

    文章

    13518

    浏览量

    215095
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195975
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    车库空气质量监控系统,沃思智能

    随着城市化进程的加快和私家车保有量的持续增长,地下车库已成为现代建筑中不可或缺的配套设施。然而,由于地下空间的封闭性特点,车库空气质量问题日益凸显,成为影响居民健康和生活品质的重要隐患。在这样的背景
    的头像 发表于 09-16 11:03 490次阅读
    <b class='flag-5'>车库</b>空气质量监控系统,沃思智能

    无线数传模块实现智能立体车库多设备高效协同通信方案

    陕西西安智能车库项目由大洋泊车定制,为平面移动类智能车库,总建筑面积165.81平米,设96个车位,高29.7米(13层)。该车库采用物联网智能管理系统,通过集约化管理提升空间利用率与自动化水平,兼具节能减排优势。
    的头像 发表于 09-12 12:47 287次阅读
    无线数传模块实现智能立体<b class='flag-5'>车库</b>多设备高效协同通信方案

    「晶映节能实践」重庆车库节能照明改造,点亮城市地下空间绿色未来

    重庆车库照明改造,晶映节能团队借助蓝牙智能感应技术,实现 74% 节能率,开启从 “长亮” 到 “按需照明” 的智能变革。
    的头像 发表于 08-23 16:49 821次阅读
    「晶映节能实践」重庆<b class='flag-5'>车库</b>节能照明改造,点亮城市地下空间绿色未来

    车库用雷达灯管选择哪种好

    车库选择高光效雷达灯管,可从功率、光效、感应性能等方面考虑,以下是具体推荐要点:功率选择:对于车库而言,可根据实际需求选择2-6W的高光效雷达灯管,如同天的地库系列超高光效雷达灯管,能对
    的头像 发表于 08-04 21:22 548次阅读
    <b class='flag-5'>车库</b>用雷达灯管选择哪种好

    车库用 LED 灯管照明注意事项

    车库用LED灯管照明注意事项​车库作为封闭或半封闭空间,照明不仅影响行车与行人安全,还与能耗、维护成本密切相关。选用LED灯管时,需结合环境特点关注以下要点,以实现高效、安全、耐用的照明效果。​首先
    的头像 发表于 08-04 21:16 1056次阅读
    <b class='flag-5'>车库</b>用 LED 灯管照明注意事项

    地下车库智能照明控制系统:让“无人值守”的车库,高效运行

    一、痛点:传统车库照明的三大难题 地下车库作为现代建筑的标配,其照明管理长期面临挑战: 能耗巨大:24小时长明灯,电费成本居高不下; 管理低效:人工巡检难覆盖,故障响应滞后; 体验不佳:固定亮度无法
    的头像 发表于 07-28 17:49 442次阅读

    图解单片机功能与应用(完整版)

    从基础知识的介绍出发,图文并茂,直观、系统地介绍了单片机的内部结构、工作原理和应用技巧。全书分为10章,内容包括51单片机编程资源图解、51单片机指令系统图解、汇编语言程序设计图解、输入/输出
    发表于 06-16 16:52

    免费分享Arduino入门+进阶(全套例程+书籍)

    Arduino是一款开源电子原型平台,由硬件(单片机开发板)和软件(编程环境)组成,旨在让非专业用户也能轻松入门电子制作和编程。它的核心思想是简化硬件开发,通过直观的编程和模块化设计,让用户快速实现
    的头像 发表于 05-22 11:40 796次阅读
    免费分享<b class='flag-5'>Arduino</b>入门+进阶(全套例程+书籍)

    漫画图解 电感 抗干扰元器件指南(全彩PDF版)

    漫画图解电感基础知识(高清PDF) 内容:很形象的漫画和语言图解关于电感的入门基础知识,让电子初学者也能轻松的看懂电子电路。 纯分享贴,有需要可以直接下载附件获取完整资料! (如果内容有帮助可以关注、点赞、评论支持一下
    发表于 05-13 15:49

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    的发展,在Arduino出现以前,虽然也有很多公司在推广一些简单易用的可编程控制,但是由于开发平台种类繁多,而且使用这些控制基本上都需要对电子技术、数字逻辑、寄存等内容进行多方面
    发表于 05-13 09:28

    PCB封装图解

    PCB封装图解——详细介绍了各种封装的具体参数,并介绍了如何进行封装制作 纯分享贴,有需要可以直接下载附件获取文档! (如果内容有帮助可以关注、点赞、评论支持一下哦~)
    发表于 04-22 13:44

    地下车库CO监测告警与风机远程控制IoT解决方案

    起来就会危害人体健康。因此,加强地下车库CO监测与风机管控,对保障车库内的空气质量和人员安全具有重要意义。 对此,通过传感数据采集技术、物联网通信技术和远程控制算法,数之能提供地下车库
    的头像 发表于 01-08 17:17 557次阅读

    地下车库智能照明方案

    随着城市化进程的加速,地下车库作为现代建筑中不可或缺的一部分,其设计与使用效率日益受到重视。在众多改进方向中,智能照明方案以其节能、高效、便捷的特性,成为提升地下车库使用体验的关键一环。 一
    的头像 发表于 12-17 16:15 986次阅读

    智能地下车库照明系统

    ,通过传感、物联网通信、智能控制等技术,对车库内照明设备的精准控制。按需照明,根据车库内实际光线需求、车辆及人员活动情况自动调节照明亮度,既保证了行车与行人安全,又避免能源浪费,提升用户体验的同时,减少对
    的头像 发表于 12-10 16:21 1043次阅读

    车库智能灯光控制系统架构与功能优势

    在科技日新月异的今天,智能家居的概念已经逐渐深入人心,车库作为一个相对封闭且隐秘的空间,其照明需求往往不同于家庭其他区域。传统的照明方式不仅无法满足车主的多样化需求,存在安全隐患和能源浪费
    的头像 发表于 12-09 16:40 859次阅读