智能开关: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强电。

原文地址:https://www.cnblogs.com/luoc83/p/8421159.html

时间: 2024-08-02 05:29:24

智能开关:orange pi one(arm linux)控制继电器的相关文章

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

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

[中文]Orange Pi家族各大成员一览表

全部复制来自官网,只修改了错别字和优化了排版. Orange Pi Zero 香橙派Zero是一款开源的单板电脑,新一代的arm开发板,它可以运行Android4.4.Ubuntu.Debian等操作系统.香橙派Zero使用全志H2系统级芯片,同时拥有256MB/512MB DDR3 内存(256MB为标准版本) 硬件特性 CPU:全志H2 ARM的Cortex-A7四核 GPU: ·Mali400MP2 GPU @600MHz ·Supports OpenGL ES 2.0 内存:256MB/

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

[Orange Pi Lite2] --2<在使用之前的配置> 本文只在博客园发布 在开始前你需要准备的材料与软件 filezilla/或者不 声明 : 本教程适合0基础新手,本章将会介绍使用前如何配置. 请不要尝试搭建违反网络安全法的相关条款,你已经被警告过了. 本系列的更新,由 E序列 技术支持小组 提供,本小组免费为生物黑客提供技术支持 FileZilla 的错误 open for read: permission denied chomd 777 你的文件/文件夹 你的文件夹权限不代表

arm linux 启动之二:start_kernel到创建1号进程

本文介绍arm linux启动的第二部分,C语言编写,主要讲述start_kernel到1号进程的创建.主要讲述大概过程,以后再对子函数进行讲解. 一.start_kernel start_kernel位于init/main.c,主要完成linux一些子系统的初始化. 1)smp_setup_processor_id() 单CPU位为空. 2)lock_kernel() 锁CPU,linux是支持抢占的,多CPU时调用这个函数防止其他CPU抢占.3)tick_init() 时间相关初始化4)bo

ARM Linux从Bootloader、kernel到filesystem启动流程

转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化.bootloader俨然就成了Power on 之后”第一个吃螃蟹”的代码. 谈到这就得想到硬件机制是如何满足这个功能的了.CPU内部一般都集成小容量的SRAM (又叫stapping stone,垫脚石),

orange pi pc 体验(一)

最近在淘宝上看到一款和树莓派差不多的卡片机,定价才99元,而且是国产的,忍不住入手了一个,就是orange pi 感兴趣的可以百度搜索下,深圳一个公司出的,不过资料比树莓派少了很多,论坛中人也没多少,但是东西确实不错,主要是价钱公道,比树莓派便宜很多 第一步,当然是刷系统了 http://www.orangepi.cn/quickstartcn/startcn_767c4c42e81bb522bffea2e24b26.html 按照上面网址的指导,刷入了Raspbian系统 开机后如下图所示 第

ARM Linux 大小核切换 ——cortex-A7 big.LITTLE 大小核 切换代码分析

ARM Linux 大小核切换——cortex-A7 big.LITTLE 大小切换代码分析 8核CPU或者是更多核的处理器,这些CPU有可能不完全对称.有的是4个A15和4个A7,或者是4个A57和4个A53,甚至像海思麒麟935处理器(4核A53 2.2 GHz + 4核A53 1.5 GHz),这8个核的频率可能不一样,则使用过程中需要大小核切换(频率高的是大核,频率低的是小核).本文以ARM cortex-A7为例,分析大小核切换的代码,着重于分析实现切换的代码,对于为什么要这样切换.以

ARM linux电源管理——Cortex A系列CPU(32位)睡眠和唤醒的底层汇编实现

ARM linux电源管理——Cortex A系列CPU(32位)睡眠和唤醒的底层汇编实现 承接 http://www.wowotech.net/pm_subsystem/suspend_and_resume.html Linux电源管理(6)_Generic PM之Suspend功能一文中的下图. 本文主要分析平台相关的CPU睡眠和唤醒,即下电和上电流程,以及ARM底层汇编代码实现. 内核版本:3.1.0               CPU:ARM Cortex-A7 1 平台相关函数执行流程

为arm linux交叉编译tcpdump

1.从官网www.tcpdump.org下载并解压源文件,这里是 tcpdump-4.5.1.tar.gz libpcap-1.5.3.tar.gz 2.编译libpcap,安装目录为/home/armroot,交叉编译不能确定pcap类型,手工指定为linux ./configure --host=arm-linux --with-pcap=linux --prefix=/home/armroot make make install 3.编译tcpdump.交叉编译不能确定内核版本,手工指定为