智能开关:orange pi one(arm linux)控制继电器
大家都知道,继电器是用小电流去控制大电流运作的一种“自动开关”,在我们生活、工作中随处可见。现在的“智能家居”概念,有很多功能模块其实就是“智能开关”,远程开关、定时开关、条件触发开关等等。
下面介绍的“orange pi one(arm linux)控制继电器”,就可以轻松实现“智能开关”。
orange pi 和 树莓派一样,是基于arm linux的开发板,大家把它当成一台普通linux电脑用就行了。当然相比普通linux电脑,它有自己的优势和劣势。简单来说,劣势就是硬件配置低、基于arm架构,开发难度比x86稍大;优势是:价格便宜、功耗低、可常年开机运行。
我在网上买了一个“USB控制继电器模块”,它集成了“USB转TTL串口”和“继电器”模块,并且在大多数现代操作系统上是免驱的,直接插入USB接口,操作系统就能识别出来,并加载为“串口设备”。在windows xp、windows 7等操作系统直接用串口调试软件就可发送指令操纵它。当然,我们的树莓派、orange pi 也可以。
继电器有NO、NC、COM三各接线端。
NO是常开(NORMAL OPEN),就是通常即未通电状态下,是断开的,通电后在电磁线圈的作用下(吸合)处于闭合状态。NC是常闭(NORMAL CLOSE),就是通常即未通电状态下,是闭合的,通电后在电磁线圈的作用下(吸合)处于断开状态。可选择接NO+COM 或 NC+COM,注意:NO、NC不可同时接入,否则会发生短路。
我用的是一个“orange pi“,从官网上下载了armbian for orange pi one并烧写进tf卡,插进开发板,上电就可以启动了。
把USB继电器模块插到开发板的USB接口,然后在控制台输入” cd /dev “,再输入” ls “,会看到 “ ttyUSB0 ”,这就是系统加载的USB串口。
通过串口发送“A0 01 01 A2“ 可以控制继电器吸合,发送 “A0 01 00 A1”则断开。
现在试一试,输入echo -n -e "\xA0\x01\x01\xA2" >/dev/ttyUSB0 ,可以听到USB继电器模块“卡塔“地响一声,说明继电器已经吸合,如果接线方式选择”NC+COM“,现在相当于发送”开“指令。
再输入 echo -n -e"\xA0\x01\x00\xA1" >/dev/ttyUSB0 ,USB继电器模块会再“卡塔“响一声,说明开关状态已经改变,如果接线方式选择”NC+COM“,现在相当于发送”关“指令。
把“开“、”关“指令分别写到一个脚本文件里,如下所示:
ttyUSB0Open.sh
#!/bin/bash
echo -n -e "\xA0\x01\x01\xA2" >/dev/ttyUSB0
ttyUSB0Close.sh
#!/bin/bash
echo -n -e "\xA0\x01\x00\xA1" >/dev/ttyUSB0
那么直接在控制台执行 ./ttyUSB0Open.sh 和 ./ttyUSB0Close.sh 也能达到控制继电器开关的目的。
到了这一步,相信程序猿朋友已经知道怎么实现“智能开关了“,利用自己擅长的开发语言,如c/c++、java、python 、nodejs、golang等,都可以在arm+linux下开发”上与web通讯、下与串口通讯“的远程、智能应用了。
当然,也可以不调用脚本文件,直接在应用代码里发送串口数据。
我用的是nodejs,这里列出主要代码:
/****************************************************************************************************/
function util_ExeCmd(cmd, param, callback) {
var rst = {};
var spawn =require('child_process').spawn;
var free = spawn(cmd,param);
free.stdout.on('data',function (data) {
rst.out = ""+ data;
});
free.stderr.on('data',function (data) {
rst.err = ""+ data;
});
free.on('exit', function(code, signal) {
rst.exit ="" + code;
callback(rst);
});
}
router.get('/ttyusb/open', function (req, res, next) {
console.log("open");
util_ExeCmd("ttyUSB0Open.sh", [], function (rst) {
res.send(JSON.stringify(rst));
});
});
router.get('/ttyusb/close', function (req, res, next) {
util_ExeCmd("ttyUSB0Close.sh", [], function (rst) {
res.send(JSON.stringify(rst));
});
});
/****************************************************************************************************/
我已经通过上面的步骤控制了一个USB照明灯,放在卫生间门口:) 但还没有接入220V电源来控制洗衣机、电饭煲、空调等,希望胆大的朋友,接入220V测试后,能告诉我,谢谢!请在保证安全第一的情况下使用220V强电。
智能开关:orange pi one(arm linux)控制继电器的更多相关文章
- golang 2行代码在基于arm linux的树莓派、orangepi上运行http web服务
go语言(golang)简化了跨平台交叉编译步骤,支持在windows系统下交叉编译基于arm+linux平台的应用,运行时无需其它依赖库.以下以一个简单的http server为例,先上源码: ** ...
- 【Orange Pi Lite2】 ——1《如何开始使用开源硬件》
[Orange Pi Lite2] --1<如何开始使用开源硬件> 本文只在博客园发布 在开始前你需要准备的材料与软件 用户手册_Orange Pi Lite2 OrangePi_Lite ...
- 【Orange Pi Lite2】 ——2《在使用之前的配置》(未完)
[Orange Pi Lite2] --2<在使用之前的配置> 本文只在博客园发布 在开始前你需要准备的材料与软件 filezilla/或者不 声明 : 本教程适合0基础新手,本章将会介绍 ...
- How to install Armbian on Orange Pi Plus 2e
bian on Orange Pi Plus 2e How to install Armbian on Orange Pi Plus 2e Armbian on the microSD You jus ...
- orange pi pc 体验(一)
最近在淘宝上看到一款和树莓派差不多的卡片机,定价才99元,而且是国产的,忍不住入手了一个,就是orange pi 感兴趣的可以百度搜索下,深圳一个公司出的,不过资料比树莓派少了很多,论坛中人也没多少, ...
- ARM Linux Qt 5.x.x 无标题栏
/********************************************************************************* * ARM Linux Qt 5. ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS
上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来.但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Kernel Panic). 原因是找不到文件 ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel
经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...
- ARM Linux 3.x的设备树(Device Tree)
http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1. ...
随机推荐
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_元数据
1.元数据简介 全称:metadata 属性:数据表集合 产地:面向 CLR 的编译器在托管模块中生成 2.元数据内部结构及与托管模块的关系 [概述] 托管模块中包含着元数据,元数据是由一组数据表组成 ...
- 搭建一个wordpress网站需要做哪些工作
今天做了自己的个人网站:二飞日志 之前因为服务器的问题,因为备案的原因辛辛苦苦做的站点数据没了.还好的是没有多少数据.没关系,重新来.有了上一次的经验,这次搭建起来比较顺手.但是也出现了几个问题.下面 ...
- 4.AOP
1.代理模式 代理模式(Proxy Pattern)是GoF23种常用设计模式之一使用代理模式创建代理对象,让代理对象控制目标对象的访问,并且可以在不改变目标对象的情况下添加一些额外的功能包括静态代理 ...
- 并行执行hive脚本
### 模板脚本存放路径(无需修改) cd /tmp/fix_data/tmp_wjj_20180322_01 ### 脚本名称 script=tmp_wjj_20180322_01 ### 开始日期 ...
- Linux ps命令记录
ps命令:查看当前系统进程状态 ps -a 显示当前所有进程ps -ax 显示没有控制终端的进程ps -u better 查看用户better的进程ps aux|less 通过cpu和内存来 ...
- thinkPHP 全局函数
M函数 TP的Model父类,封装的功能比较多,增删改查操作都具备.一些表,比如留言表,comment class CommentModel extends Model { } M('comment' ...
- my23_pxc其中一个节点重建记录
PXC报废了一个节点,时间大概在周五,而此时故障的数据库节点比较多,警告信息也成百上千,此信息混合于已有的故障节点信息中,没有被及时发现:然后周六.周日各报废一个,在周一的时候,业务已经没有节点可以写 ...
- shell查看内存
<1>jps<2>ps<3>free<4>df<5>top jps: 很多Java命令都在jdk的JAVA_HOME/bin/目录下面,jp ...
- 使用summernote编辑器上传图片,重写onImageUpload
JS部分:$('.summernote').summernote({ height: 200,//高度 tabsize: 2,//页面上的summernote编辑框的个数 lang: 'zh-CN', ...
- Unity 游戏对象的组件列表
描述: 1 个游戏对象,上面有 4 个组件, 如图: 脚本 Test_01 的内容,如下: using System.Collections; using System.Collections.Gen ...