Welcome to LED Control Wiki
About this project
This project was developed after I had to find out that controlling my RGB ambient light with the normal infrared remote control was complicated and not reliable. Within a few months I build this solution that enabled controlling my LEDs with a Bluetooth-enabled Android Device running a self programmed app. On the hardware side an Arduino is receiving the commands and controlling three PWM signals.
The app is available at Google Play for free (but closed source), the Arduino sketch is released under Apache License. The used protocol is also documented in this wiki and open for usage by others.
If you like this project I would be pleased with recommendations or a good rating at Google Play. Let me also know when you find some bugs.
Requirements
You need a few things to get started:
- Arduino Uno
- Android powered Phone/Tablet with bluetooth running Android 4.0 or above
- RGB-LED-Stripes with common anode (one common '+' and a seperate '-/GND' for each color) (you can also use stripes with common cathodes, but the showed circuit diagramm will not work (in particular the output stage). A solution therefore is also available.)
- External Power Supply (to power Arduino and LEDs)
- USART capable bluetooth module (for example HC-06, available on ebay for < 10$)
- 3x 220 Ohm resistors (gate current limiter)
- 3x 10 kOhm resistors (gate pull-down)
- 3x N-Channel Power-MOSFETs (enhancement mode) (for example IRF1404)
optional voltage divider
- 1x 4,7 kOhm resistor
- 1x 10 kOhm resistor
Assembly
Connect the Arduino and the others parts as showed below. Be sure that you do not change the RX pin with the TX pin of the bluetooth module. In General: RX of the bluetooth module has to be connected to TX of Arduino and vice versa.
Caution: The HC-06 bluetooth module I bought works with 3,3V. You can power it with 5V because there is a built-in voltage regulator (make sure that yours has also one or power it with 3,3V), but RX and TX are not 5V tolerant. To avoid permanent damage the Arduino output-voltage is reduced to 3,3V by a voltage divider (therefore the 4k7 and 10k resistors). On the other hand a special step-up circuit is not necessary because the Arduino recognizes 3,3V of the bluetooth module as HIGH-Level.
Note: For permanent installations you should consider soldering your circuit on a Arduino Proto Shield (bought or home made). I personally soldered everything on a stripboard and put the whole thing in a small case.
Note: You don't need the connection from TX (pin 3) on Arduino to RX of the bluetooth module, because currently nothing will be send back to the Android device. Just remove the connection from pin 3 (Arduino) to RX (bluetooth module) and the voltage divider. It may be possible that a bidirectional communication will be used in future releases.
Installing the software
You're almost done. Now you need to install the software and select the target device.
- Upload the Arduino Sketch (https://github.com/fennel-labs/LED-control/blob/master/LEDControlArduino.ino)
- Install the Android app on your phone (https://play.google.com/store/apps/details?id=com.fennel.ledcontrol)
- Start a new bluetooth device discovery (Android -> Settings -> Bluetooth -> Add)
- Start the LED Control app and select your receiver (LED Control -> Connection Settings -> your device)

Troubleshooting
There are several reasons why your circuit may not work as intended. Here are some possibilities:
- Check if the LED voltage is high enough and your stripes have the right polarity by connecting them directly to your power source.
- Are RX and TX connected in the right way? Read also the notes above.
- By default, the Arduino sends some debug data to the PC via the hardware serial. If the Software in Arduino behaves abnormal check the console log.
- In case you are not sure whether your bluetooth module works properly or not, connect it directly to your Arduino (still keeping the voltage levels in mind, see note above). Therefore you have to remove the 328P chip temporary from your Uno.
- To check the output stage, you can try pulling the gate of each channel to ground or +5V.
thanks:https://github.com/fennel-labs
Welcome to LED Control Wiki的更多相关文章
- Matlab安装记录 - LED Control Activex控件安装
Matlab安装记录-LED Control Activex控件安装 2013-12-01 22:06:36 最近在研究Matlab GUI技术,准备用于制作上位机程序:在Matlab GUI的技术 ...
- 针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法
Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauge ...
- WPF自定义LED风格数字显示控件
原文:WPF自定义LED风格数字显示控件 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP11199988899/article/de ...
- 【openwrt】再设置
https://wiki.openwrt.org/zh-cn/doc/uci/network https://wiki.openwrt.org/zh-cn/doc/uci/wireless https ...
- 剖析ironic
关键技术 在安装操作系统时需要存储介质来存储系统镜像.需要控制物理机开关机,在网络部署环境中还需要预启动环境. PXE (预启动环境) IPMI(电源管理) iSCSI(存储) 什么是PXE PXE( ...
- DIY PIXHAWK APM等飞控用的PPM转接板
需要的硬件 一块arduino pro mini(推荐这个,比较小,当然如果你没有USB转转口的烧写工具买个ardunio nano板也是不错的,直接用USB线连接电脑就可以,用nano板要注意.它的 ...
- 【网络——Linux】——IPMI详细介绍【转】
一.IPMI含义 智能平台管理接口(IPMI:Intelligent Platform Management Interface)是一项应用于服务器管理系统设计的标准,由Intel.HP.Dell和N ...
- AIX 常用命令和知识
BOOTLIST:#bootlist -m normal -o (查看bootlist)#bootlist -m normal (设置bootlist为空,谁要在我机器上执行我就要哭了)#boot ...
- arduino pro mini不能下载
刚毕业时就知道arduino,但当时崇拜技术极致,喜欢把单片机的性能用到尽,觉得操作寄存器运行效率高,对arduino 这种高效模式贬为投机取巧,不过其中也一直对arduino 有关注. 随着芯片技术 ...
随机推荐
- Checkpoint--与lazy writer区别
checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...
- [问题2014A10] 复旦高等代数 I(14级)每周一题(第十二教学周)
[问题2014A10] 设 \(A\) 为 \(n\) 阶实方阵满足 \(AA'=I_n\) (即 \(A\) 为 \(n\) 阶正交阵), 证明: \[\mathrm{rank}(I_n-A)=\ ...
- 后勤数据源增量队列Delta Queue(RSA7)中的增量更新区Delta Update、增量重复区Delta Repetition
声明:原创作品,转载时请注明文章来自SAP师太技术博客:( 博/客/园www.cnblogs.com)www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Web Service 通过BinaryFormatter序列化和反序列化泛型List
1.序列化和反序列化的扩展方法如下: using System; using System.Collections.Generic; using System.Linq; using System.T ...
- js函数式编程
最近在看朴灵的<深入浅出nodejs>其中讲到函数式编程.理解记录下 高阶函数 比较常见,即将函数作为参数,或是将函数作为返回值得函数. 如ECMAScript5中提供的一些数组方法 fo ...
- requestAnimationFrame 动画
requestAnimationFrame : 调用这个方法,就是告诉浏览器要执行动画了,从而浏览器自动计算动画时间间隔,从而在恰当的时候刷新UI, 动画更加平滑. 他的用法和setTimeout() ...
- linux查看及改变运行级别
Linux运行级别从0-6,共7个. 0:关机.不能将系统缺省运行级别设置为0,否则无法启动. 1:单用户模式,只允许root用户对系统进行维护. 2:多用户模式,但不能使用NFS(相当于Window ...
- IntelliJ UI安装
- hdu 1005 1021 递归超限 找规律 // 只要看题中n较大都是有规律的
因为n>1000000000所以用递归 数组超限, 由递归函数f(n)=(A*f(n-1)+B*f(n-2))%7; 因为是除7的余数 因次一共有7*7=49种情况, 以后的值都和之前的对应相等 ...
- [转]JAVA虚拟机的生命周期
JAVA虚拟机体系结构 JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例 ...
