【前言】

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

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

在文章最后附有所有源代码,有需要的可以自行下载,感谢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. Spring自定义属性编辑器及原理解释.md

    bean的自动装配解释 手动解决方式 自动注入解决方式 bean的自动装配解释 之前有构造注入和设值注入,但是也是手动的 autowire ="byname" 这里要注意自动装配的 ...

  2. 关于多线程中sleep、join、yield的区别

    好了.说了多线程,那就不得不说说多线程的sleep().join()和yield()三个方法的区别啦 1.sleep()方法 /** * Causes the currently executing ...

  3. Selenium3 + Python3自动化测试系列九——cookie操作

    cookie操作 一.Cookie操作 WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. 使用方法: 1:get_cookies() ,获取cookie信息 ...

  4. Mysql系列 - 第3天:管理员必备技能(必须掌握)

    这是mysql系列第3篇文章. 环境:mysql5.7.25,cmd命令中进行演示. 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有 ...

  5. Codeforces Round #506 (Div. 3) 1029 F. Multicolored Markers

    CF-1029F 题意: a,b个小正方形构造一个矩形,大小为(a+b),并且要求其中要么a个小正方形是矩形,要么b个小正方形是矩形. 思路: 之前在想要分a,b是否为奇数讨论,后来发现根本不需要.只 ...

  6. CodeForces 834D The Bakery

    The Bakery 题意:将N个数分成K块, 每块的价值为不同数字的个数, 现在求总价值最大. 题解:dp[i][j] 表示 长度为j 且分成 i 块的价值总和. 那么 dp[i][j] = max ...

  7. Special Judge Ⅱ

    Problem Description Q:什么是 Special Judge,Special Judge 的题目有什么不同? A:一个题目可以接受多种正确答案,即有多组解的时候,题目就必须被 Spe ...

  8. hdu 2895 01背包 Robberies

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. ZOJ 3876 May Day Holiday

    As a university advocating self-learning and work-rest balance, Marjar University has so many days o ...

  10. NOIP 2005 等价表达式 题解

    题意 给一个表达式然后再给n个表达式,判断是否等价 一道大模拟题,将a带为数,并且取模防止溢出 #include<bits/stdc++.h> using namespace std; c ...