Raspberry Pi 3B+ 实现入门物联网

本章主要讲述简便实现物联网,我们需要使用树莓派作为控制主板,使用python flask实现web服务器挂载,通过驱动板控制电机正反转,微信小程序作为远程控制终端,一起渐入IoT佳境吧!

智能窗帘概念图:

本次实验依赖的产品:

  1. Raspberry Pi 3B+ (既树莓派,含sd卡)
  2. 一台拥有HDMI接口的显示器
  3. UNL2003步进电机驱动器配套28BYJ-48步进电机
  4. 杜邦线若干
  5. 一台健康的电脑

起步

起初,我们需要为购买一张SD卡为树莓派烧录系统,这步操作网上有很多教程,在此不赘述。 一般烧录系统后的树莓派是有python环境的,如果没有的话,执行如下代码:

1.下载

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

2.解压Python-3.7.0.tgz

tar -zxvf Python-3.7.0.tgz

3、建立一个空文件夹,用于存放python3程序

mkdir /usr/local/python3

4、执行配置文件,编译,编译安装

cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install
安装完成没有提示错误便安装成功了

5、建立软连接

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

6、测试一下python3是否可以用

[root@mini Python-3.7.0]# python3
Python 3.7.0 (default, Jul 28 2018, 22:47:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world!")
hello world!
>>> exit()
[root@mini Python-3.7.0]# pip3 --version
pip 10.0.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

ok,写一段python小程序,没问题的话python就安装成功了。

硬件介绍

当我进入硬件环节的时候,对电机的了解及选配一筹莫展,得知此消息的同事奋不顾身拆开了自家电扇,囊中取物一般把他的罩极异步电机奉献给我(如下图)
对比我后入手的28BYJ-48电机

显然,这台沙包大小的电机沦为过客,暂时不会和它发生任何故事,随即把它还给了风扇。

连接设备

树莓派、电机、驱动器三端用杜邦线连接。

树莓派引脚图:

驱动器和电机连接很简单,四口线对接即可,这里要注意的是驱动器和树莓派连接:

可以通过上图看出 PIN02是我们要的正极5v电,然后负极接到Groud PIN06

  • 5V (PIN-02)
  • GND (PIN-06)
  • in1 (PIN-35)
  • in2 (PIN-36)
  • in3 (PIN-38)
  • in4(PIN-40)

注:PIN对应树莓派的引脚编号,in1~in4为驱动器引脚

编码

思路:(可参考前言模型图)

树莓派:核心主板兼服务提供者,需部署python flask搭建的web服务器,通过内网服务发布api接口,api接口中包含对硬件的一系列指令。
微信小程序:服务消费层,对接微型主板提供的程序操控api接口,以参数形式改变硬件设备的状态。

发布在树莓派上的python服务代码:

from flask import Flask, request
import json
import RPi.GPIO as GPIO
import timeapp = Flask(__name__)#对应引脚
IN1 = 35  # pin11
IN2 = 36
IN3 = 38
IN4 = 40def setStep(w1, w2, w3, w4):GPIO.output(IN1, w1)GPIO.output(IN2, w2)GPIO.output(IN3, w3)GPIO.output(IN4, w4)#停转
def stop():setStep(0, 0, 0, 0)#电机反转
def backward(delay, steps):for i in range(0, steps):setStep(0, 0, 0, 1)time.sleep(delay)setStep(0, 0, 1, 0)time.sleep(delay)setStep(0, 1, 0, 0)time.sleep(delay)setStep(1, 0, 0, 0)time.sleep(delay)#电机正转
def  forward(delay, steps):for i in range(0, steps):setStep(1, 0, 0, 0)time.sleep(delay)setStep(0, 1, 0, 0)time.sleep(delay)setStep(0, 0, 1, 0)time.sleep(delay)setStep(0, 0, 0, 1)time.sleep(delay)def setup():GPIO.setwarnings(False)GPIO.setmode(GPIO.BOARD)  # Numbers GPIOs by physical locationGPIO.setup(IN1, GPIO.OUT)  # Set pin's mode is outputGPIO.setup(IN2, GPIO.OUT)GPIO.setup(IN3, GPIO.OUT)GPIO.setup(IN4, GPIO.OUT)def loop():while True:print("backward...")forward(0.003, 360)  # 512 steps --- 360 angle# print# "stop..."# stop()  # stop# time.sleep(3)  # sleep 3s## print# "forward..."# forward(0.005, 512)## print# "stop..."# stop()# time.sleep(3)def destroy():GPIO.cleanup()  # Release resource#提供服务核心代码
@app.route("/action", methods=["GET"])
def index():setup()if int(request.args.get("state"))==0 :loop()print(request.args.get("state"))return "当前装置状态为开"else :destroy()return "当前装置状态为关"if __name__ == '__main__':app.run(port='80',debug=True,host='0.0.0.0')

发布后即可通过链接 http://192.168.56.1/action (这里是我的内网ip,需要替换成自己的ip) 访问服务。

实现层微信小程序架构图:

只包含两个文件,学过前端的同学一目了然,这里可以理解成HTML和JavaScript

index.html 代码:

<!--index.wxml-->
<view class="container"><view class="userinfo"><button bindtap='changeState'> {{textState}} </button></view><view class="usermotto"><span class="user-motto">当前状态:<text style="color:red">{{oneState}}</text> </span></view>
</view>

index.js 代码:

//index.js
//获取应用实例
const app = getApp()Page({data: {motto: 'Hello World',userInfo: {},hasUserInfo: false,textState:'打开设备',oneState: '关'},//主要函数changeState:function(e){var state =0;let that = this;if (that.data.oneState=='关'){state=0;that.setData({oneState:'开',textState:'关闭设备'})}else{that.setData({oneState: '关',textState: '打开设备'})state=1;}wx.request({url: 'http://192.168.56.1/action?state='+state,success: function(res) {console.log("状态为:" +state)console.log(res)}})}
})

最后

树莓派实现物联网

当它转起来的时候,你能感受到世界是美好的

附个人公众号二维码
一起
搞点事情

Raspberry Pi+Python+微信小程序入门物联网相关推荐

  1. 微信小程序入门二:底部导航tabBar

    小程序底部导航栏组件tabBar,可以参考下官方的API:tabBar 先看代码 //app.json {"pages":["pages/index/index" ...

  2. 天河微信小程序入门《四》:融会贯通,form表单提交数据库

    天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数 ...

  3. 微信小程序入门---01

    目录 微信小程序入门 一.小程序简介 二.第一个小程序 二.小程序代码的构成 三.WXML模块 四.WXSS 样式 五.JS 逻辑交互 六.组件 七.API 八.WXML 模板语法 - 数据绑定 九. ...

  4. 微信小程序入门之常用组件(04)

    常见组件 重点讲解微信小程序中常见的布局组件 view,text,rich-text,button,image,navigator,icon,swiper, radio,checkbox 等 一.vi ...

  5. 微信小程序入门案例-会议邀请函

    微信小程序入门案例-会议邀请函 涉及内容:地图 目录结构: pages\index\index.wxml <view class="box"><view clas ...

  6. 【零基础微信小程序入门开发一】小程序介绍及环境搭建

    什么是小程序? 微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打 ...

  7. 微信小程序入门教程+案例demo

    微信小程序入门教程+案例demo 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 首先摆在好姿态,--微信小程序开发也就那么回事.你只需要 ...

  8. 微信小程序入门七登录注册

    上一章介绍了 微信小程序入门六本地缓存和搜索 ,这章介绍小程序的登录注册页面.主要有表单的验证,错误信息的提示,form表单的取值,get / post 请求 ,反馈交互提示框,页面跳转 以及 页面U ...

  9. 微信小程序入门-音乐播放器

    萌新,随便做做,只是了解一下微信小程序,希望可以给看到的胖友一点参考. 之前在网上看到这个人入门四天做完一个,我五天做完了,比他好看,突然有一点自信 然后发现自己特别不乐意重新看自己的代码,总觉得写的 ...

最新文章

  1. (解释)单片机与各种外围设备(Flash、RAM、网络控制器、A/D、传感器、MCU等)进行直接串行通信通常采用( D)接口
  2. datatables中的bug
  3. thinkphp5带条件分页
  4. 什么是jsf_为什么应该避免JSF
  5. C++定时器的实现之格式修订版
  6. C++笔记-空指针加强、auto自动类型
  7. 关于Visual Studio .NET 2010最近的发布情况
  8. cmder 神器 +curl
  9. jquery 后代 children, find方法
  10. ubuntu启动时的初始化信息二
  11. struts2继承ActionSupport
  12. 真人发音计算机怎么弄成音乐模式,文字转语音真人发声怎么转换?简单教程分享...
  13. 金融风控实战——反欺诈特征
  14. TabLayout 不显示下划线
  15. 腾讯云商用密码合规解决方案,亮相2021商用密码应用创新高端研讨会
  16. win10linux双系统引导设置,win10 + Ubuntu20.04 LTS双系统引导界面美化
  17. 对龙邱科技TC264库的理解
  18. 栈和堆的区别是什么? 为什么说栈的速度快,堆的速度慢?
  19. 虚拟机vs裸金属服务器,裸金属虚拟机
  20. Windows Server 中 DNS 服务器的新增功能

热门文章

  1. (转)史上最强Tomcat8性能优化
  2. 如何无需开发集成易快报、金蝶等第三方应用
  3. C#中WPF ListView绑定数据的实例详解
  4. Vulkan 预旋转处理设备方向
  5. [os]pkg 解包和打包
  6. 3dmax:3dmax三维之各种材质参数化设置(贴图简介、设计流程)图文教程之详细攻略(切记收藏!)
  7. 如何查看slice order
  8. oracle封面制作,简历个人求职封面电子版模板
  9. 软件过程与项目管理之描述软件2
  10. SAP角色描述-只能在Logon语言中修改问题解决 .