ezgif-4-5d181e9b42.gif

本文介绍如何在H5页面控制树莓派GPIO

仅实现以BCM编码方式控制GPIO,其他方式未做.

演示地址:http://gpio.exmll.cn/ 点击BCM编码列即可控制对应GPIO

1.部署准备

1.树莓派3b+

2.webpy

3.杜邦线\LED灯若干

2.安装webpy

2.1 pip install web.py

2.2 如果2.1安装失败

使用sudo wget http://webpy.org/static/web.py-0.38.tar.gz

sudo tar -zxvf web.py-0.38.tar.gz

cd web.py-0.38

sudo python setup.py install

3.新建code.py文件

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import web

import sys

defaultencoding = 'utf-8'

if sys.getdefaultencoding() != defaultencoding:

reload(sys)

sys.setdefaultencoding(defaultencoding)

try:

import RPi.GPIO as GPIO

except RuntimeError:

print("导入 RPi.GPIO 时出现错误!这可能由于没有超级用户权限造成的。您可以使用 'sudo' 来运行您的脚本。")

urls = (

'/', 'index',

)

app = web.application(urls, globals())

render = web.template.render('templates/')

class index:

def GET(self):

name = '树莓派40pin引脚对照表'

footnote = '欢迎收藏'

wiringPi = 'wiringPi编码'

BCM = 'BCM编码'

fun = '功能名'

pin = '物理引脚'

web.header('Content-Type', 'text/html; charset=UTF-8')

return (render.index(name,footnote,wiringPi,BCM,fun,pin))

def POST(self):

i = web.input()

channel = i.channel

mode = i.mode

state = i.st

print(i)

stateStr = ''

if state == '1':

stateStr = '高电平'

else:

stateStr = '低电平'

setGPIO(mode,int(channel),int(state))

return ("SUCCEED:以BCM方式设置GPIO%s为%s" % (channel,stateStr))

def setGPIO(mode,channel,state):

if mode == 'BOARD':

GPIO.setmode(GPIO.BOARD)

if mode == 'BCM':

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)

GPIO.setup(channel, GPIO.OUT)

GPIO.output(channel, state)

if __name__ == "__main__":

# web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)

app.run()

4.新建templates文件夹 并在文件下新建index.html

$def with (name,footnote,wiringPi,BCM,fun,pin)

$name

jQuery(document).ready(function(){

jQuery("li").click(function(){

state = 1;

if(jQuery(this).hasClass("bcm"))

{

if(jQuery(this).hasClass("outColor"))

{

state = 0;

jQuery(this).removeClass("outColor");

}else

{

state = 1;

jQuery(this).addClass("important outColor");

}

jQuery.post("/",{

channel:jQuery(this).text(),

mode:"BCM",

st:state

},

function(data,status){

alert(data);

});

}

if(jQuery(this).hasClass("bord"))

{

alert(jQuery(this).text()+"bcm");

}

});

});

body ul li{

text-align:center;

height:40px;

line-height:40px;

}

.outColor{

color: red;

}

.threev{

background-color:rgb(255,160,32);

}

.firvev{

background-color:rgb(255,33,21);

color: white;

border: 1px solid black;

}

.gray{

background-color:rgb(190,192,191);

border: 1px solid black;

}

.white{

background-color:rgb(255,255,255);

border: 1px solid black;

}

.bcm{

background-color:rgb(255,239,176);

border: 1px solid black;

}

.wiringpi{

background-color:rgb(199,237,160);

border: 1px solid black;

}

.darkblue{

background-color:rgb(5,51,255);

color: white;

border: 1px solid black;

}

.blue{

background-color:rgb(1,255,255);

color: black;

border: 1px solid black;

}

.black{

background-color:rgb(0,0,0);

color: white;

border: 1px solid black;

}

.grassgreen{

background-color:rgb(148,222,73);

border: 1px solid black;

}

.purple

{

background-color:rgb(157,68,185);

color: white;

border: 1px solid black;

}

$name

  • $wiringPi
  • $BCM
  • $fun
  • $pin
  • $pin
  • $fun
  • $BCM
  • $wiringPi

  • 3.3V
  • 1
  • 2
  • 5V

  • 8
  • 2
  • SDA.1
  • 3
  • 4
  • 5V

  • 9
  • 3
  • SCL.1
  • 5
  • 6
  • GND

  • 7
  • 4
  • GPIO7
  • 7
  • 8
  • TXD
  • 14
  • 15

  • GND
  • 9
  • 10
  • RXD
  • 15
  • 16

  • 0
  • 17
  • GPIO0
  • 11
  • 12
  • GPIO1
  • 18
  • 1

  • 2
  • 27
  • GPIO2
  • 13
  • 14
  • GND

  • 3
  • 22
  • GPIO3
  • 15
  • 16
  • GPIO4
  • 23
  • 4

  • 3.3V
  • 17
  • 18
  • GPIO5
  • 24
  • 5

  • 12
  • 10
  • MOSI
  • 19
  • 20
  • GND

  • 13
  • 9
  • MISO
  • 21
  • 22
  • GPIO6
  • 25
  • 6

  • 14
  • 11
  • SCLK
  • 23
  • 24
  • CEO
  • 8
  • 10

  • GND
  • 25
  • 26
  • CE1
  • 7
  • 11

  • 30
  • 0
  • SDA.0
  • 27
  • 28
  • SCL.0
  • 1
  • 31

  • 21
  • 5
  • GPIO21
  • 29
  • 30
  • GND

  • 22
  • 6
  • GPIO22
  • 31
  • 32
  • GPIO26
  • 12
  • 26

  • 23
  • 13
  • GPIO23
  • 33
  • 34
  • GND

  • 24
  • 19
  • GPIO24
  • 35
  • 36
  • GPIO27
  • 16
  • 27

  • 25
  • 26
  • GPIO25
  • 37
  • 38
  • GPIO28
  • 20
  • 28

  • GND
  • 39
  • 40
  • GPIO29
  • 21
  • 29

$footnote

matlab控制树莓派3b,树莓派3B+ 手机h5网页控制GPIO相关推荐

  1. 支付宝手机h5网页支付不再提供「继续浏览器付款」按钮了吗

    来自圈友的疑惑,记录一下 之前写过一篇「支付宝手机h5支付的文章」,如果下载运行过Demo的小伙伴肯定发现了一个问题 > 「Demo中有显示继续浏览器付款按钮,但自己实际环境并没有」 难道是操作 ...

  2. 如何用手机语音助手控制电脑

    如何用手机语音助手控制电脑 软件介绍 神秘鸭是一款开源免费的可以让你通过手机语音助手来远程控制电脑的软件 .它支持通过小米的小爱同学 .苹果的Siri .华为的小艺 .vivo的小V 等多款语音助手来 ...

  3. Arduino开发:网页控制ESP8266三色LED灯闪烁

    根据板卡原理RGB三色LED对应引脚: int LEDR=12.int LEDG=14.int LEDB=13; 设置串口波特率为115200 Serial.begin(115200); 源代码如下所 ...

  4. 树莓派4b和3b+功耗_从入手树莓派开始

    从入手树莓派开始 在我们日常生活中可以看到大量的计算设备(手机.电脑.路由器.电视盒子.监控摄像头.智能音箱等),当我对操作系统产生了一定的初步认识后,对周围这些设备所用的操作系统产生兴趣.这些设备是 ...

  5. raspberry pi 3B 树莓派 安装tensorflow

    raspberry pi 3B 树莓派 安装tensorflow 这两天买了raspberry pi 3b回来折腾着玩,拿到手装好系统后就开始安装树莓派版本的TensorFlow,这个安装过程也是踩了 ...

  6. 树莓派要mysql的密码_树莓派raspberry Pi 3B+系统中安装mysql过程中不提示输入密码,安装完后如何设置密码...

    树莓派raspberry Pi 3B+安装mysql未提示输入密码,安装后修改mysql密码默认密码 使用mysql -uroot -p 命令连接mysql时,报错 pi@raspberrypi:/ ...

  7. 【树莓派】树莓派3B+搭建Ubuntu

    相关硬件 树莓派3 B+ 内存卡 Sandisk 32GB 高清HDMI线一条 树莓派电源线一条(5V3A) 读卡器一个 usb键鼠 支持HDMI的显示器 准备SD卡 清空SD卡后,如果当前系统是 L ...

  8. 树莓派 Raspberry Pi 3B+ 无线路由器, WEB 服务器(Nginx,PHP,Sqlite3),UART 串口数据采集

    目标: 测试四核 A53 树莓派 Raspberry Pi 3B+ 无线路由器, 轻量级WEB 服务器(Nginx,PHP,Sqlite3),UART 串口数据采集性能 初始配置,部分选项需要sudo ...

  9. 手机控制树莓派linux,使用安卓手机控制树莓派

    在特殊情况下,没有用于树莓派显示的显示器,用电脑控制树莓派也不方便,这时可以通过手中的手机来登陆树莓派,这种方法仅仅需要一部手机,条件非常容易满足.这篇文章教大家如何用手机的手机连接树莓派,并将手机的 ...

最新文章

  1. JavaScript的格式--从格式做起,做最严谨的工程师
  2. Hive的基本操作-基本查询语法
  3. golang mysql 防注入_Go,Gorm 和 Mysql 是如何防止 SQL 注入的
  4. C#LeetCode刷题之#697-数组的度( Degree of an Array)
  5. enable 华为交换机ntdp_华为交换机配置
  6. 软件工程学习进度表06
  7. CentOS 上snmp的安装和配置
  8. Python——jieba分词并统计词频
  9. 如何获取JVM的dump文件
  10. aps.net mysql_支持aps版
  11. 太阳直射点纬度计算公式_高中地理——每日精讲1题(地震、太阳高度角、极昼、昼夜长短)...
  12. c语言编程倒三角九九乘法表,【请用C语言变成】把九九乘法表分别显示成矩形,正三角,倒三角形状...
  13. 建筑施工员日常工作内容,施工员证全国通用吗?
  14. ikbc 104键win键失效
  15. 如何关闭VS的DEP保护(数据执行保护)
  16. 微众银行再次入驻微信小程序,人人可申请,66万人提额100亿,发福利啦!!!...
  17. 1577 例题3 数字转换(LOJ10155) 约数计算 树上最长链(两次找最大深度)
  18. 一步一步安装CentOS7(图文)
  19. 计算机工程研究生美国专业排名,美国计算机研究生专业排名
  20. 第三方支付系统-支付流程

热门文章

  1. ARM LDR与MOV的区别
  2. PTA-7-1 将数组中的数逆序存放 (20分)(C语言)
  3. 为什么vsdebug没有生成obj文件_用iPad实时扫描生成模型??两款实用App
  4. 信息学奥赛一本通(1240:查找最接近的元素)
  5. 信息学奥赛一本通(1074:津津的储蓄计划)
  6. 计算几何 —— 欧拉公式
  7. 训练日志 2019.1.13
  8. 潜伏者(洛谷-P1071)
  9. 斐波那契数列(信息学奥赛一本通-T1159)
  10. 信息学奥赛一本通C++语言——1100:金币