完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
本章主要讲述简便实现物联网,我们需要使用树莓派作为控制主板,使用python flask实现web服务器挂载,通过驱动板控制电机正反转,微信小程序作为远程控制终端,一起渐入IoT佳境吧!智能窗帘概念图: 本次实验依赖的产品:
起初,我们需要为购买一张SD卡为树莓派烧录系统,这步操作网上有很多教程,在此不赘述。 一般烧录系统后的树莓派是有python环境的,如果没有的话,执行如下代码: 1.下载 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 1 2.解压Python-3.7.0.tgz tar -zxvf Python-3.7.0.tgz 1 3、建立一个空文件夹,用于存放python3程序 mkdir /usr/local/python3 1 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
编码 思路:(可参考前言模型图) 树莓派:核心主板兼服务提供者,需部署python flask搭建的web服务器,通过内网服务发布api接口,api接口中包含对硬件的一系列指令。 微信小程序:服务消费层,对接微型主板提供的程序操控api接口,以参数形式改变硬件设备的状态。 发布在树莓派上的python服务代码: from flask import Flask, request import json import RPi.GPIO as GPIO import time app = Flask(__name__) #对应引脚 IN1 = 35 # pin11 IN2 = 36 IN3 = 38 IN4 = 40 def 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 location GPIO.setup(IN1, GPIO.OUT) # Set pin's mode is output GPIO.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 # "stop..." # stop() # stop # time.sleep(3) # sleep 3s # # "forward..." # forward(0.005, 512) # # "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.html 代码: 当前状态: 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) } }) } }) |
|
|
|
只有小组成员才能发言,加入小组>>
2434 浏览 0 评论
9099 浏览 4 评论
36771 浏览 19 评论
5025 浏览 0 评论
24743 浏览 34 评论
1527浏览 2评论
1742浏览 1评论
2192浏览 1评论
1552浏览 0评论
523浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 11:03 , Processed in 1.165356 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号