大家都知道,继电器是用小电流去控制大电流运作的一种“自动开关”,在我们生活、工作中随处可见。现在的“智能家居”概念,有很多功能模块其实就是“智能开关”,远程开关、定时开关、条件触发开关等等。

下面介绍的“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)控制继电器的更多相关文章

  1. golang 2行代码在基于arm linux的树莓派、orangepi上运行http web服务

    go语言(golang)简化了跨平台交叉编译步骤,支持在windows系统下交叉编译基于arm+linux平台的应用,运行时无需其它依赖库.以下以一个简单的http server为例,先上源码: ** ...

  2. 【Orange Pi Lite2】 ——1《如何开始使用开源硬件》

    [Orange Pi Lite2] --1<如何开始使用开源硬件> 本文只在博客园发布 在开始前你需要准备的材料与软件 用户手册_Orange Pi Lite2 OrangePi_Lite ...

  3. 【Orange Pi Lite2】 ——2《在使用之前的配置》(未完)

    [Orange Pi Lite2] --2<在使用之前的配置> 本文只在博客园发布 在开始前你需要准备的材料与软件 filezilla/或者不 声明 : 本教程适合0基础新手,本章将会介绍 ...

  4. 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 ...

  5. orange pi pc 体验(一)

    最近在淘宝上看到一款和树莓派差不多的卡片机,定价才99元,而且是国产的,忍不住入手了一个,就是orange pi 感兴趣的可以百度搜索下,深圳一个公司出的,不过资料比树莓派少了很多,论坛中人也没多少, ...

  6. ARM Linux Qt 5.x.x 无标题栏

    /********************************************************************************* * ARM Linux Qt 5. ...

  7. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS

    上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来.但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Kernel Panic). 原因是找不到文件 ...

  8. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  9. ARM Linux 3.x的设备树(Device Tree)

    http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1.     ...

随机推荐

  1. DropDownList年份的添加

    http://blog.sina.com.cn/s/blog_4b9e030e01007sc3.html

  2. 8.11zju集训日记

    今天的比赛打得很不好,前一个小时的看的题目都非常难,没有做出题目,中期看到两道题,一道题是我读题,金大佬solo的,另外一道题是金大佬读题,写了代码但wa了,然后我和zz找bug,最后发现答案的范围是 ...

  3. Windows安装redis数据库以及集群部署

    1. 安装Redis版本:win-3.0.501https://github.com/MSOpenTech/redis/releases页面有,我下载的是zip版本的:Redis-x64-3.0.50 ...

  4. Django视图系统

    Django的view(视图)                                 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. ...

  5. 阿里云服务器mail 命令发邮件

    一.申请开通25端口 https://yundun.console.aliyun.com/?spm=5176.2020520001.aliyun_topbar.188.KbmgKc&p=sc# ...

  6. zabbix--高级篇-监控docker服务(一)

    一,配置zabbix 客户端环境 rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix//x86_64/zabbix-release-.el7.noarc ...

  7. 关于KEIL下的图形化显示和输出问题

    一 keil自带的虚拟示波器:只能在软件仿真下使用:右边的这个可以查看变量. 二 SEGGER的工具软件: 1 RTT:可以进行日志输出调试信息输出,需要配置工程,但不占用串口. 2 JSCOPE:可 ...

  8. SSM项目spring配置文件详细步骤(分门别类、灵巧记忆)

    spring-dao.xml文件 1.配置外部db.property文件: <context:property-placeholder location="classpath:jdbc ...

  9. 基于log4net自定义异步logging组件

    我们在做开发的时候,需要把一些信息记录下来,方便问题排查.数据分析和统计.通常我们使用log4net作为logging的工具,但是大部分时候需要加以封装,以便更加方便的使用,并且不妨碍主业务程序的运行 ...

  10. .NET面试题3

    1.什么是拆箱和装箱? 2.什么是箱子? 3.箱子放在哪里? 4.装箱和拆箱有什么性能影响? 5.如何避免隐身装箱? 6.箱子的基本结构? 7.装箱的过程? 8.拆箱的过程? 9.下面这段代码输出什么 ...