【前言】

一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:“技术改变世界”。

就让我们一步步动手搭建一个属于自己的“智能家居平台”吧(不要对这个名词抬杠啦,技术在手,怎么设计实现因人而异),本文只做抛砖引玉,各路大神如果有更好的想法可以各显神通,当然能在评论区留下更好的想法让大家共同学习是再好不过啦。

在文章最后附有所有源代码,有需要的可以自行下载,感谢Star~

【系列目录】

  1. 树莓派GPIO简介(Python版)
  2. 温湿度数据采集存储(DHT11,MySql)
  3. 温湿度数码管展示(四位共阳数码管)
  4. 构建App展示温湿度报表(ApiCloud,Python Flask)
  5. 普通家用排插集成继电器手工改造
  6. App远程控制“自制智能”排插
  7. 使用花生棒内网穿透实现外网访问
  8. App远程监控(摄像头模块集成)

【本节概要】

要做一些神奇的骚操作,比如环境数据采集,智能控制等,最终还是要落地到设备上。要和各种各样的设备打交道,肯定是离不开电子元件的。市场上有大量的开箱即用的封装的很好的硬件,但是都是独立的或者是集成了某些功能于一身的,并不能自己灵活的进行扩展。

如果我们要自己灵活地配置各种各样的功能组合,自己操作原始的电子元件或许是更明智的选择。在我们这个项目中,我们将采用树莓派+一系列电子元件来构建我们的整个系统。

树莓派

树莓派是什么这里只做简单介绍,贴个不带壳子的图~

加上壳子可以长这样,当然了壳子是千变万化的,不可"以貌取派“

Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI)   是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。 随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。

说白了就是迷你电脑,当然电脑能干的事树莓派都可以干,浏览网页,看视频,玩一些对性能要求不高的游戏都是可以的。甚至还可以当服务器,多个树莓派搭建一个集群(树莓派官网就是部署在一堆树莓派组成的集群上)。

GPIO

那么,GPIO又是什么呢?

GPIO(英语:General-purpose input/output),通用型之输入输出的简称。说白了,就是一堆针脚,可以自由地通过编程手段控制其输入还是输出。

树莓派自带了很多针脚,给程序员提供电子元件控制的出入口。以“3代B+”型号树莓派为例,本身提供了两排共40个针脚,从上面不带壳的树莓派图片中可以看到上面有两排裸露的针脚。下面是针脚分布图:

第三列和第六列(表头为功能名)展示了40个针脚的作用,绿色的是开放通用的输入输出针脚,黑色的是接地,5V和3.3V高电平输出,其他颜色的针脚用在一些特殊场合,比如输出视频流什么的,并不十分常用。我们目前关注 输出电压/接地/通用针脚 这几种。

树莓派用不同的编码规则给40个针脚起制定了编码,方便我们对针脚的输入输出进行开发。常见的编码规则有:BOARD编码规则,见上图中的BOARD编码对应的40个针脚的位置;还有BCM编码规则,也可根据上图找到对应针脚。

树莓派GPIO一般采用 Arduino脚本或者python脚本进行控制,也有少数人使用C或者其他编程语言,理论上讲,越高级的语言API往往封装的越完善,代码也越简洁容易,我们的系列文章采用python脚本进行开发。

RPi.GPIO 模块

RPI.GPIO是python下控制GPIO的模块,可以通过命令 “npm install RPI.GPIO” 进行安装。注意:该命令务必在有GPIO的环境下安装,比如树莓派设备上可以顺利安装成功,但是在windows下没有GPIO设备,因此安装会出现各种问题,不建议在windos上开发时安装这个包,我们可以直接远程 PI 边写边执行测试效果。

导入 RPi.GPIO 模块:

import RPi.GPIO as GPIO

下面是一段简单的python代码,用来展示如果使用RPI.GPIO控制树莓派的针脚

# 设置GPIO布局编码,这里采用BOARD编码风格,也可以使用BCM风格,注意针脚编码规则是不同的
GPIO.setmode(GPIO.BOARD) # 关闭警告,如果设置某个针脚为非默认状态,可能会得到警告
GPIO.setwarnings(False) # 设置某个针脚的用途
# 下面例子:设置BOARD编码风格的12号(对应GPIO.1)针脚为读取模式
GPIO.setup(12, GPIO.IN) # 读取BOARD-12针脚的电平值
GPIO.input(12) #设置BOARD编码风格的12号(对应GPIO.1)针脚为输出模式
GPIO.setup(12, GPIO.OUT) # 输出BOARD-12针脚为低电平,这里GPIO.LOW/0/False,三种参数是等效的
GPIO.output(12,GPIO.LOW) # 在任何程序结束后,请养成清理用过的资源的好习惯
# 注意:这行代码会将针脚状态恢复成默认值,如果要保持状态,请不要执行该命令
GPIO.cleanup()

上面代码是最常用的控制各个针脚输入输出的命令,我们可以灵活组合基本命令完成更复杂的功能。

【总结】

本节内容是我们后续搭建系统的基础,通过学习树莓派的GPIO使用,为我们后续的温湿度采集,电路控制等准备了充足的条件。

【源码地址】

GitHub:https://github.com/sevenTiny/SevenTiny.SmartHome

自己动手实现智能家居之树莓派GPIO简介(Python版)的更多相关文章

  1. 自己动手实现智能家居之温湿度数据采集存储(DHT11,MySql)

    [前言] 一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:"技术改变世界". 就让我们一步步动手搭建一个属于自己的"智能家居平台& ...

  2. raspberry-gpio-python(树莓派GPIO与Python编程)

    国外的设计接口设计得很棒,包括问题:读脏与防抖,还包括读这个数据提供了两种方式,一种是阻塞等待方式,还有一种是回调函数,前一种是通讯中常用的方式,后一种来自系统架构设计的整体性考虑.这种硬件接口设计的 ...

  3. Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇

    转载:Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇 目录 HASS 配置框架 主文件设置 Homebridge 设置 鹬蚌相争? 设备追踪设置 更新日志 作者的话 相信 ...

  4. Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

    Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...

  5. 树莓派安装开源智能家居系统 Domoticz

    前言 最近闲来无事开始折腾自己的智能家居系统,对比了几种比较流行的开源智能家居系统,觉得 Domoticz 更适合,Domoticz的官方中文文档,虽然不是很完善但还是可以参考一下.需要注意的是下文用 ...

  6. DIY智能家居——零基础入门篇

    概要 本文主要根据笔者从零开始接触硬件,以小白视角开启IoT探索,根据相关资料DIY一个温湿度传感器.后经过探索发现新大陆--Home Assistant&Homebridge,最终实现了一个 ...

  7. 转载智能家居 作者:热情的沙漠 出处:http://www.cnblogs.com/buptzym/

    理工男打造帝都89平智能家庭   毕业后的2016年年初,搬入新家,总算不用在出租屋里鬼混了,于是就想把之前童年的梦想:智能家居+家庭影院好好实现一下~ 相比帝都高昂的房价,这些东东还凑合玩得起,不过 ...

  8. 一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用

    一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用 先上图:     随着科学技术的不断发展,局域网也正逐渐向无线化,多网合一的方向发展,在这个多网合一快速发展过程中,带 ...

  9. 智能家居DIY

    近期智能家居比較火,将房子简单改造下,也算体验智能家居. 本文解说的是用无线的方式,长处是:不用改造现有线路,直接安装模块就可以实现想要的功能,花的钱也较少,共六百左右 =============== ...

随机推荐

  1. 《Java 8 in Action》Chapter 6:用流收集数据

    1. 收集器简介 collect() 接收一个类型为 Collector 的参数,这个参数决定了如何把流中的元素聚合到其它数据结构中.Collectors 类包含了大量常用收集器的工厂方法,toLis ...

  2. unity之加载场景

    游戏中的Loading分为:静态Loading和动态Loading. 简单形象的做个比喻: 静态Loading可能就是一张背景图.而动态的Loading就是在读取的同时有一个东西在“转圈”. 1.静态 ...

  3. Git学习笔记-相关命令记录

    内容来自:https://www.liaoxuefeng.com/wiki/896043488029600/896067074338496 1.Linux安装Git 首先,你可以试着输入git,看看系 ...

  4. NLP(十四) 情感分析

    情感在自然语言中的表达方式 例句 解释 I am very happy 开心的情感 She is so :( 表达悲伤的图标 import nltk import nltk.sentiment.sen ...

  5. HDU 4322Candy 最大费用最大流

    由于被小孩子不喜欢的糖果的对小孩产生的效力是一样的,所以我们在网络流的时候先不考虑. 1 - 源点0到1~N个糖果,容量为1,费用为02 - 根据like数组,like[i][j] == 1时在糖果j ...

  6. CF - 1106 E Lunar New Year and Red Envelopes DP

    题目传送门 题解: 首先要处理出每个时间点会选择哪一个线段. 对于这个问题,可以用multiset去维护信息. 当时间线开始的时候,往mutiset里面插入这个信息,当时间线结束的时候,删除这个信息. ...

  7. CH 4302 Interval GCD 题解

    题意 给定一个长度为N的数列A,以及M条指令 (N≤5* 10^5, M<=10^5),每条指令可能是以下两种之一: "C l r d",表示把 A[l],A[l+1],-, ...

  8. 编码神器Lombok,学会后开发效率至少提高一倍!

    Lombok会利用注解自动生成javaBean中的getter.setter.equals.toString等一系列方法,大大提供开发效率,本文详细介绍下Lombok的安装及使用. 本文目录 一.Lo ...

  9. 《Fluent Python》---一个关于memoryview例子的理解过程

    近日,在阅读<Fluent Python>的第2.9.2节时,有一个关于内存视图的例子,当时看的一知半解,后来查了一些资料,现在总结一下,以备后续查询: 示例复述 添加了一些额外的代码,便 ...

  10. 【Offer】[11] 【旋转数组的最小元素】

    题目描述 思路分析 Java代码 代码链接 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...