分类目录归档:智能LED灯

智能LED灯 后记

后记

智能LED灯就设计完了。相信大家看到这个完全由自己打造的智能硬件一定充满了成就感。

虽然这只是个功能上还比较阳春的智能硬件原型,但是你可以根据自己在实际使用中的感受,给它加入更多实用的功能。例如,

  1. 给它加上红色、绿色、蓝色的灯泡,让LED灯能呈现出更多的色彩;同时增加手机端控制软件的功能,设定不同的场景,让LED灯能在不同的场景下变幻不同的灯光颜色和亮度;

  2. 用积木拼出更多形状有特点的LED灯;

智能LED灯 第4节 LED灯的外形结构

第4节 LED灯的外形结构

设计外形结构的时候,可以选择3D建模,然后用3D打印机打印出来的设计方式,也可以简单的使用积木拼接。我们选择用拼接积木的方式,给LED灯搭建外形。

结构设计是一个很有意思的事情。给自己开发的智能硬件做一个个性化的外形十分的令人激动。

4.1 设计软件

LEGO Digital Designer是一款操作简单的、乐高积木设计软件。我们可以用它来进行智能硬件外观的设计,设计完成后把它拼接出来。

这是一款免费的软件,可以去安豆网,根据自己使用的电脑操作系统下载

4.2 软件使用

打开软件开始,创建新文件,开始设计外形,

拖动左边区域中的零件,摆放到右边底板上,开始模型到设计,

下图就是我们给出的一个可能的设计方案。

大家可以在安豆网的示例应用中下载这份参考的设计。

4.3 实际效果

如果你从我们安豆杂货铺中购买了LED灯套件,那么可以将它搭建成如下灯样子,

如果你更加喜欢自己设计台灯,可以使用更多的积木组件进行搭建。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

智能LED灯 第3节 手机控制端开发

第3节 手机控制端开发

Arduino开发板已经可以接收命令了。接下来就要开始考虑手机端如何控制LED灯。

我们在之前一篇文档中开发过蓝牙聊天应用,那里面详细介绍了蓝牙设备互相连接的原理和实现方法。在这一节中,我们只需要将那个应用稍微做些改造,就能实现对LED灯的控制功能了。

如果你对安卓开发实在没有兴趣,只想赶快能用手机控制器控制它。那么你可以在这里下载到APK安装包。安装完成后,直接启动程序就可以了。

3.1 界面设计

首先,我们用Android Studio重新创建一个安卓应用的工程,把蓝牙聊天应用原封不动的照搬过去。删除界面相关的代码,我们将在这个基础上对代码进行修改。你只需要按照下面的步骤做就行了。

给主界面activity_chat.xml添加一个SeekBar,让用户通过拖动SeekBar的方式来改变LED灯带亮度。

3.2 逻辑设计

因为调整了布局文件,相应的代码逻辑也要做出改变。

  1. onCreate()回调中,获取SeekBar

  2. 给这个SeekBar设置它被拖动到最大时所对应的数字-255,对应着LED灯的0~255级

  3. SeekBar添加监听器,当用户开始拖动、正在拖动、结束拖动进度条的时候,都会通知给监听器。开发者就可以根据当前进度条所在的位置,来判断要发送什么值给LED灯。

    我们仅当用户结束拖动的时候,才把要设置的亮度发送给LED灯。而且发送之前要确定当前手机与LED灯之间处于连接状态,

  4. 当蓝牙设备没有连接的时候,让SeekBar不能够被拖动,把它setEnabled(false)掉,

至此,一个能控制LED灯的手机控制器就改造完成了。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

智能LED灯 第2节 硬件端的开发

第2节 硬件端的开发

现在,我们开始实现智能LED灯硬件相关部分的设计。

2.1 硬件连接

选择了Arduino MEGA 、HC-06蓝牙模块、LED灯模块和三引脚按钮开关以后,我们就需要把它们组合起来,为我们所用了。

因为同一个开发板要连接多个外接硬件,这时就需要Arduino扩展板出场了。

Arduino拥有很多的扩展板,其中有一种扩展板可以把Arduino开发板中的引脚,按照引脚-电源VCC-接地GND这样的组合,一组一组的扩展出来,方便开发者插拔。这个开发板就能很方便的解决我们现在遇到的VCC接口不够用的问题。

将Arduino开发板和扩展板上下插入后,引脚就扩展出来了,


HC-06蓝牙模块有4个引脚需要与开发板连接,这里我们选择使用MEGA开发板的Serial2作为蓝牙模块的通信端口。Serial2使用D16作为TX、D17作为RX,

扩展板引脚 连接 蓝牙模块引脚
17组V <---> 电源VC
17组G <---> 接地GND
16组S(TX) <---> 输入RX
17组S(RX) <---> 输出TX

没有选择Serial(D0和D1引脚)是因为,希望用它来输出调试信息到电脑的串口,如果都使用Serial的话,同一个通路就会出现两类完全没有联系的信息,

*如果你对蓝牙模块详细的使用方式感到陌生的话,请先参考蓝牙传输一文。


LED灯模块有3个引脚需要与开发板连接。这里我们选择MEGA板的D45引脚作为LED灯的PWM控制引脚(当然可以选择任何其它具有PWM功能的引脚),

扩展板引脚 连接 LED灯模块引脚
45组V <--->
45组G <---> G
45组S <---> S

*如果你对LED灯模块详细的使用方式感到陌生的话,请先参考控制LED灯一文。


最后,将按钮开关接入Arduino MEGA开发板的D44引脚,

扩展板引脚 连接 LED灯模块引脚
44组V <---> 中间未标注
44组G <--->
44组S <---> S

*如果你对按钮模块详细的使用方式感到陌生的话,请先参考按钮开关一文。


全部组装好后,如下图,

2.2 代码实现

2.2.1 亮度调节命令

要控制LED灯,就要给LED灯发送命令。因此我们需要定一个命令的格式,让Arduino开发板读懂操作者的意图。

为了简单,我们将命令定义成最简单的形式:一个命令只有一个字节(1byte),一个字节有八位(8bit)。而调解LED灯模块的PWM引脚刚好有256级,也就是8bit的大小(00000000~11111111,刚好是256级)。所以我们定义,手机控制端每发送给LED灯的每一个字节的内容,就是要求LED灯显示的亮度。

发送的命令 对应的亮度
0x00 0级
0x01 1级
0x2F 47级
0xFF 255级

2.2.2 控制逻辑

  1. 初始化时,在setup()函数中,

  2. 系统运行当中,不断的尝试从蓝牙模块读取命令,一旦接收到命令,就根据命令的内容,调整LED灯的灯光亮度。

  3. 增加对按钮开关的逻辑控制,

  4. 将程序部署到Arduino MEGA开发板上。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

智能LED灯 第1节 功能规划与设计方案

第1节 功能规划与设计方案

1.1 功能定义

LED灯的功能很简单,

  1. LED灯通过蓝牙模块收到打开或者关闭的命令,并根据命令进行对应的操作;
  2. LED灯收到调节当前灯光强弱的命令,并根据收到的亮度值做相应的操作;
  3. LED灯的蓝牙模块处于被连接状态,随时准备被其他控制设备连接;
  4. 安卓手机端的控制软件能搜索、发现并连接到LED灯的蓝牙模块;
  5. 安卓手机端的控制软件能发送控制命令到LED灯,开启关闭LED灯,并调节LED灯的亮度;
  6. LED灯要有个实体的开关,能够打开关闭LED灯;
  7. LED灯的外观要简洁实用,便于普通人组装;

1.2 设计方案

作为一个智能硬件,需要考虑三个方面的设计:硬件功能、硬件结构、手机控制软件。

1.2.1 硬件功能

硬件开发需要储备很多的硬件知识,需要多年的实际经验,这对于新手或是纯软件开发者来说是个不小的门槛。因此,我们选择采用一套简单的硬件开发平台来帮助我们这些小白们解决这个问题。

Arduino是一个使用非常简单的硬件开发平台,利用它,任何软件开发者都可以在对硬件几乎一无所知的情况下进行智能硬件的开发。

Arduino开发板有多种型号,这里我们选择Arduino MEGA开发板作为智能硬件的控制板。


开发板外接的LED灯模块大同小异,都是3个引脚,需要将它们连接到Arduino开发板上。


开发板外接的蓝牙模块,我们选择HC-06,将它们连接到Arduino开发板上。


开发板要外接一个按钮开关,用来控制LED灯的开关。

为了在开发板上同时接入多个传感器器件,需要使用扩展板,

将以上元件连接以后就具备了通过蓝牙接收命令,控制LED灯亮度开关的功能。

为了节省大家选购这些器件的时间、精力、和经费,我们将它们打包成了Arduino 开发套件的套装版,放在安豆杂货铺中,供大家选购。

1.2.2 硬件结构

硬件组装好以后,需要为它设计一个简洁实用的外壳,将开发板、连接线、LED灯包裹起来。

作为个人设计的智能硬件,一定是个性化的产品。开发者可以采用3D模型软件设计一个精巧的外形,然后通过3D打印机将它变成现实,再和我们之前的智能硬件组合起来。

但是3D建模也是需要花费一定时间和精力学习的。这里我们准备采用积木拼接的方式搭建一个LED灯的外部结构。积木颗粒众多,可以随意插入和拆卸,可定制性很高,各位开发者也可以根据自己的创意随意的修改外形,设计成世界上独一无二的智能LED灯。

1.2.3 手机控制软件

手机端需要控制LED灯,它的界面流程图如下,

  1. 启动控制软件;
  2. 查找要连接的蓝牙模块,点击连接;
  3. 连接成功后,拖动滑块,调节灯光的亮度;

***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

智能LED灯 前言

前言

智能硬件有意思,现在市场上有很多针对普通消费者的智能硬件。例如,智能灯泡、智能插座、智能电子秤,甚至无人飞行器。抛开这些智能设备实现的功能不谈,它们的实现原理都是大同小异:通过手机的蓝牙(或者wifi网络),连接智能硬件上的蓝牙模块,向蓝牙模块发送各种控制命令,让硬件工作起来。

也许你只是个普通的软件开发者,对硬件毫无概念,也不要着急,我们向纯软件开发者推荐一个很好的智能硬件入门平台Arduino,以此为基础,逐步熟悉智能硬件开发。

万事开头难,本章将从最简单的智能LED灯开始,向大家介绍一个智能硬件是如何设计并实现的。

当本章完成之后,大家将会得到如下图的作品,

并且可以通过手机控制LED灯的明暗强弱。

本文针对的读者是:

  1. 对智能开发感兴趣的初学者;
  2. 对安卓开发有初步的了解(假如毫无安卓开发的能力,请参看《手把手教你安卓入门》,快速上手安卓应用开发);

在开始以前,假设各位已经做好了如下准备:

  • 一台Windows系统(Win7 Win8 Win10)的电脑(台式机或笔记本);
  • 一部具有蓝牙功能的安卓系统设备(手机或平板电脑);
  • 一根连接电脑和安卓设备的数据线(通常是micro usb数据线);
  • 四根Arduino线缆;
  • Arduino MEGA开发板;
  • 一根连接电脑和Arduino开发板的数据线;
  • 一个外接蓝牙模块(HC06或者HC05);
  • 一个LED显示灯;
  • 一个按钮开关
  • 若干积木零件;
  • 一到两天时间;
  • 耐心与求知欲。

*以上需要使用到的硬件开发板或者传感器可以在我们的安豆杂货铺中选购。

另外,在开始以前,我们强烈建议大家首先阅读我们发布的5篇智能硬件相关文章:
我选Arduino
从Hello world开始
控制LED灯
蓝牙传输
按钮开关

我们所有的内容都是建立在这四篇文档的基础之上的。

本文的代码,可以从安豆网示例代码中下载。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)