精华内容
下载资源
问答
  • 树莓派控制电机

    2021-03-19 23:47:21
    树莓派针脚图 我所使用的是树莓派4b,它的针脚图如下图所示: 其中,图像底端的黑色框框表示网线接口和usb接口。 舵机接线图 我所使用的舵机是经典的SG90舵机,它的接线图如下图所示: 其中,GPIO13对应于树莓派4b...

    树莓派针脚图

    我所使用的是树莓派4b,它的针脚图如下图所示:
    在这里插入图片描述
    其中,图像底端的黑色框框表示网线接口和usb接口。

    舵机接线图

    我所使用的舵机是经典的SG90舵机,它的接线图如下图所示:
    在这里插入图片描述其中,GPIO13对应于树莓派4b针脚图中的BCM 13针脚

    控制舵机

    安装GPIO库

    我所使用的python版本为pyhton3.7,因此,可以通过以下命令安装GPIO库:

    pip3 install rpi.gpio
    

    如果大家没有安装pip,可以通过以下命令进行pip的安装

    sudo apt-get install python-pip
    

    使用GPIO库控制舵机

    基础的使用方法如下所示:

    # -*- coding:utf-8 -*-
    import RPi.GPIO as GPIO
    import time
    
    # 将舵机角度转换为信号占空比,0-180度对应2.5%-12.5%
    def tonum(num):
    	fm = 10.0/180.0
    	num = num*fm + 2.5
    	num = int(num*10)/10.0
    	return num
    
    # 设置模式
    GPIO.setmode(GPIO.BCM)
    # 设置几号引脚为输出引脚
    GPIO.setup(13, GPIO.OUT)
    test = {}
    # PWM波的采样速度
    p13 = GPIO.PWM(13, 50)
    # 将舵机的角度归零
    p13.start(tonum(0))
    # 测试使用list来包装引脚
    test[13] = p13
    
    while 1:
    	num = int(input('num'))
    	# 如果输入的角度值不在舵机可转动范围内
    	if num < 0 or num > 180:
    		test[13].stop()
    		exit()
    	else:
    		# 根据输入的角度来换算成信号并进行转动
    		test[13].ChangeDutyCycle(tonum(num))
    	# 以下两句话用于放置舵机在上电保持角度是出现抖动
    	time.sleep(1)
    	test[13].ChangeDutyCycle(0)
    
    展开全文
  • 树莓派利用Python开启GPIO功能代码如下 import RPi.GPIO as GPIO //引入RPi.GPIO库 GPIO.setmode(GPIO.BCM) //设置GPIO引脚编号的模式,这里引脚编号采用BCM编码方式; GPIO.setmode(GPIO.BOARD) //设置GPIO引脚...

    树莓派利用Python开启GPIO功能代码如下

    import RPi.GPIO as GPIO  //引入RPi.GPIO库
    GPIO.setmode(GPIO.BCM) //设置GPIO引脚编号的模式,这里引脚编号采用BCM编码方式;
    GPIO.setmode(GPIO.BOARD) //设置GPIO引脚编号的模式,这里引脚采用BOARD编码方式。

    如下图所示:


    展开全文
  • 树莓派3b与散热风扇

    千次阅读 2018-06-13 16:58:54
    准备好树莓派3b与散热风扇2首先将风扇与树莓派针脚相连接,红色线接树莓派4针脚,黑色线接树莓派6针脚,树莓派针脚请看下3实物连接如4上电,风扇成功运转。5安装完成,尽情玩转你的树莓派吧...
    1. 准备好树莓派3b与散热风扇

      如何给树莓派3B安装散热风扇
    2. 2

      首先将风扇与树莓派针脚相连接,红色线接树莓派4针脚,黑色线接树莓派6针脚,树莓派针脚请看下图

      如何给树莓派3B安装散热风扇
    3. 3

      实物连接如图

      如何给树莓派3B安装散热风扇
    4. 4

      上电,风扇成功运转。

      如何给树莓派3B安装散热风扇
    5. 5

      安装完成,尽情玩转你的树莓派吧

    展开全文
  • 接着上一篇《树莓派-通过Web网页实现对树莓派的关机和重启操作》的思路继续扩展,通过Web网页来控制GPIO针脚的电平输出。 实现思路 1.通过在树莓派上搭建一个http服务器,如:Apache,增加一个控制树莓派的页面。 2....

    接着上一篇树莓派-通过Web网页实现对树莓派的关机和重启操作的思路继续扩展,通过Web网页来控制GPIO针脚的电平输出。

    实现思路

    1.通过在树莓派上搭建一个http服务器,如:Apache,增加一个控制树莓派的页面。
    2.通过在树莓派的控制页面,写入需要在终端执行的命令。
    3.服务器端通过python,定时读取文件内容,执行终端命令。

    效果图


    实现步骤

    1.搭建php+Apache环境:
    本文主要描述程序编写,如何搭建php+Apache环境,可以网上查找资料,自行实现。
    2.编写Web网页控制端:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>树莓派Web控制中心</title>
        <script src="js/jquery-3.2.1.min.js" type="text/javascript"></script>
        <script src="js/bootstrap.min.js" type="text/javascript"></script>
        <link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
        <link href="css/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
        <style type="text/css">
            .page-header { margin: 20px 0; border-bottom: 1px solid #eee; padding-bottom: 0; text-align: center; }
            .btn-item { text-align: center; }
            i { margin-right: 3px; display: inline-block; }
            h1 { text-align: center; }
            .tip { font-weight: bold; color: black; }
            .lead { font-size: small; }
            .gpio-item { text-align: center; }
            .btn-gnd, .btn-gpio { padding: 10px 5px; margin-bottom: 5px; width: 100%; font-size: small; }
            .gpio .row { margin-top: 5px; }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="page-header">
                <h3>
                    树莓派Web控制中心</h3>
                <p class="lead">
                    用于控制连接到树莓派的各种传感器
                </p>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading">
                    设备</div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-xs-3 btn-item">
                        </div>
                        <div class="col-xs-3 btn-item">
                            <a class="btn btn-danger btn-trigger"><i class="fa fa-power-off"></i>关机</a>
                        </div>
                        <div class="col-xs-3 btn-item">
                            <a class="btn btn-primary btn-trigger"><i class="fa fa-refresh"></i>重启</a>
                        </div>
                        <div class="col-xs-3 btn-item">
                        </div>
                        <script type="text/javascript">
                            var url = "ajax/pi.php";
                            $(function () {
                                $(".btn-test").click(function () {
                                    $.ajax({
                                        type: "POST",
                                        url: url,
                                        data: {
                                            action: "excute-linux-shell",
                                            cmd: "ls"
                                        },
                                        success: function (result) {
                                            $(".tip").html(result);
                                        }
                                    });
    
                                });
                                $(".btn-trigger").click(function () {
                                    var text = $(this).text().replace(/ /g, "").replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "");
                                    var cmd = "";
                                    switch (text) {
                                        case "关机":
                                            cmd = "sudo shutdown -h now";
                                            break;
                                        case "重启":
                                            cmd = "sudo reboot";
                                            break;
                                    }
                                    if (confirm("确定要执行该命令吗?")) {
                                        $.ajax({
                                            type: "POST",
                                            url: url,
                                            data: {
                                                action: "set-linux-cmd",
                                                cmd: cmd
                                            },
                                            success: function (result) {
                                                $(".tip").html(result);
                                            }
                                        });
                                    }
                                });
                            });
                        </script>
                    </div>
                </div>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading">
                    GPIO (蓝色->低电平,红色->高电平)</div>
                <div class="panel-body gpio">
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            左侧
                        </div>
                        <div class="col-xs-6 gpio-item">
                            右侧
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (9) 左05</button>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (6) 右03</button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">17 (11) 左06</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">18 (12) 右06</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">27 (13) 左07</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (14) 右07</button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">22 (15) 左08</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">23 (16) 右08</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (25) 左13</button>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">24 (18) 右09</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">05 (29) 左15</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (20) 右10</button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">06 (31) 左16</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">25 (22) 右11</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">13 (33) 左17</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (30) 右15</button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">19 (35) 左18</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">12 (32) 右16</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">26 (37) 左19</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (34) 右17</button>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">20 (37) 右19</a>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">16 (36) 右18</a>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 gpio-item">
                            <button disabled="disabled" class="btn btn-info btn-gnd">
                                GND (39) 右20</button>
                        </div>
                        <div class="col-xs-6 gpio-item">
                            <a class="btn btn-primary btn-gpio">21 (40) 右20</a>
                        </div>
                    </div>
                    <script type="text/javascript">
                        $(function () {
                            $(".btn-gpio").click(function () {
                                if ($(this).hasClass("btn-danger")) {
                                    $(this).removeClass("btn-danger").addClass("btn-info");
                                } else {
                                    $(this).removeClass("btn-info").addClass("btn-danger");
                                }
                                var gpio = $(this).text().replace(/ /g, "").replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "").split("(")[0];
                                var val = $(this).hasClass("btn-danger") ? 1 : 0;
                                $.ajax({
                                    type: "POST",
                                    url: url,
                                    data: {
                                        action: "set-linux-gpio",
                                        gpio: gpio,
                                        val: val
                                    },
                                    success: function (result) {
                                        $(".tip").html(result);
                                    }
                                });
    
                            });
                        })
                    </script>
                </div>
            </div>
            <div class="panel panel-primary" style="border-color: #555">
                <div class="panel-heading" style="background: #555">
                    终端</div>
                <div class="panel-body">
                    <div class="row">
                        <div class="col-xs-12">
                            <div class="alert alert-success" style="" role="alert">
                                执行:<span class="tip"> </span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    
    请求处理代码(ajax/pi.php):

    <?php 
    $action=$_POST["action"];
    if($action=="set-linux-cmd"){
    	$cmd=$_POST["cmd"];
    	$myfile=fopen("../python/cmd.txt","w") or die("unable to open file!");
    	$txt=$cmd;
    	fwrite($myfile,$txt);
    	print_r($cmd);	 
    }
    else if($action=="set-linux-gpio"){
    	$gpio=$_POST["gpio"];
    	$val=$_POST["val"];
    	
    	$text="import os\n";
    	$text=$text."import time\n";
    	$text=$text."import sys\n";
    	$text=$text."import RPi.GPIO as GPIO\n\n";
    	
    	$text=$text."num=".$gpio."\n";
    	$text=$text."GPIO.setmode(GPIO.BCM)\n";
    	$text=$text."GPIO.setwarnings(False)\n";
    	$text=$text."GPIO.setup(num,GPIO.OUT)\n"; 
    	if($val=="1"){
    		$text=$text."GPIO.output(num,GPIO.HIGH)\n";
    	}else{
    		$text=$text."GPIO.output(num,GPIO.LOW)\n";
    	}
    	$text=$text."if(GPIO.input(num)==1):\n";
    	$text=$text."	print(\"HIGH\")\n";
    	$text=$text."else:\n";
    	$text=$text."	print(\"LOW\")\n";
    	
    	$text=$text."\n";
    	$text=$text."#GPIO.cleanup()\n";
    	$text=$text."sys.exit(0)\n";
    	
    	$myfile=fopen("../python/gpio/gpio-".$gpio.".py","w") or die("unable to open file!");
    	fwrite($myfile,$text);
    	print_r($gpio."-".$val);
    }
    else if($action=="excute-linux-shell"){
    	 $last_line = system('ls', $retval);
    	 echo '<hr />Last line of the output: ' . $last_line . '<hr />Return value: ' . $retval;
    }
    ?>
    3.服务器端Python脚本(autorun.py)

    import os
    import time
    import RPi.GPIO as GPIO
    
    while True: 
        file=open("/var/www/html/pi/python/cmd.txt","r")
        text=file.read()
        file.close()    
        
        if(text!=""):     
            file=open("/var/www/html/pi/python/cmd.txt","w")
            file.write("")
            file.close() 
            os.system(text)
        
        dir="/var/www/html/pi/python/gpio"
        list=os.listdir(dir)
        for i in range(0,len(list)):
            path=os.path.join(dir,list[i])
            if os.path.isfile(path):
                os.system("python "+path)
                print("excute "+path)
                os.remove(path)
        
        time.sleep(.3)
    大致思路:

    1./var/www/html/pi/python/cmd.txt 文件用于控制树莓派的重启或关闭,每次通过php页面来写入shell命令,当然要传入其他命令,也是可以的。

    2./var/www/html/pi/python/gpio 目录用于存放控制GPIO针脚的py脚本,上面的autorun.py将会设置为开机启动。

    3.while True语句将一直循环执行,当发现cmd.txt中有命令时,读取cmd.txt文件,并执行语句,执行完后将cmd.txt置空,下次循环时将直接跳过。

    接着继续遍历/var/www/html/pi/python/gpio目录,如果发现有python脚本,则调用python命令执行python脚本,执行完后,将其删除。

    4.因为GPIO的针脚一旦设置为高电平或低电平后,如果没改变其输出电平,将保持设置的电平输出,所以执行完设置电平的脚本后,python自动退出就可以了。

    2017-9-19 10:17:27 补充:

    利用 Tornado 服务器创建http端口侦听,比轮询方式更好。 

    1.tornado安装
    方式1:pip 安装:
    sudo pip install tornado


    方式2:源代码安装:
    wget https://pypi.python.org/packages/source/t/tornado/tornado-4.3.tar.gz
    tar xvzf tornado-4.3.tar.gz
    cd tornado-4.3
    python setup.py build
    sudo python setup.py install

    2.编写http服务器代码

    #coding: utf8 
    import sys
    import tornado.ioloop
    import tornado.web
    import tornado.httpserver
    import tornado.options
    from tornado.options import define,options
    
    class IndexHandler(tornado.web.RequestHandler):
            def get(self):
                    self.render("index.html") #请在py脚本同一目录放置此页面
            def post(self): 
                    arg = self.get_argument('q')                
                    self.write("your arg is:"+arg)
                    
    if __name__ == '__main__':
        tornado.options.parse_command_line()
        app = tornado.web.Application(handlers=[(r"/",IndexHandler)])
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(8018)
        tornado.ioloop.IOLoop.instance().start() 
    代码很简单,设置请求路径为"/"时,由IndexHandler处理,请求分get和post两种方式,可以根据传入的不同参数做不同的处理。


    3.程序改进

    将最初的实现方式结合到tornado服务器方式即可,思路已很清晰了,详情请参考:树莓派-通过Web控制GPIO针脚输出高低电平(改进版)


    展开全文
  • 食用指南配置清单硬件硬件链接软件所需软件(Windows系统)所需软件(Raspbian系统)开启i2C功能查看i2c地址安装Adafruit_Python_SSD1306库屏幕显示python程序运行命令后台运行命令退出ssh,仍可...连接树莓派针脚位置
  • 这里给出一个树莓派针脚图 一般接入设备,需要两部分 电源,正极(3.3v 5v) 数据,输入输出 屏幕 GND 接树莓派 GND 屏幕 VCC 接树莓派 3V3 屏幕 SDA 接树莓派 SDA 屏幕 SCL 接树莓派 SCL 如图 远程连接树莓派 ...
  • 一、安装散热片: 二、安装亚克力外壳以及风扇 可能要注意的问题:小风扇正负极线接树莓派针脚的卡槽可能无法插入,建议用小刀削掉一些材料如: ...
  • 树莓派接口介绍

    2019-09-20 07:15:34
    介绍 除了供电针脚(包括GND,3.3V和5V),所有的GPIO针脚均可被用于数字输入或输出。标记为SCL和SDA的针脚可被用于I2C。标记为MOSI,MISO和SCKL的针脚... 树莓派B版本接口 树莓派2代B版本接口 [ca...
  • 树莓派登录方式

    2020-09-29 18:52:22
    将对应针脚连接到树莓的TXD和RXD上(GPIO14和15),如所示: 来源:https://pinout.xyz/pinout/uart 修改系统配置,启用串口登录树莓派 1.打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保存。
  • 树莓派2代B的GPIO与实物关系及入门教程 实物,注意中标注的脚号: 上标注的脚号与下的脚号的圈住的对应 右上角有左右两排共40根针脚,并不是所有的针脚都是GPIO针脚。 ...
  • 在石头剪刀布这个游戏里面,树莓派需要通过控制舵机的转动来和我进行“猜拳”游戏。这篇文章介绍树莓派控制舵机的基础操作。...关于树莓派的引脚,可以参照下,右边的引脚编号和左边的树莓派针脚一一对应。根...
  • 树莓派驱动DHT22

    2018-07-19 13:21:00
    树莓派-DHT22测量湿度 一般的温湿度传感器有dht11和dht22,dht11比较便宜,dht22比dht11贵好几倍,自然测量的准确度肯定是dht22高一些。追求更高精准度的可以使用SHT1x。 一、DHT22介绍 如,一个dht22温湿度...
  • 连接的时候,5.0V(或者标有VCC)接P2,GND接P6,RXD接P8,TXD接P10,其它针脚置空。示意如下 连接完毕后,将SD卡插进树莓派,刷机线的USB口插上电脑,树莓派就会启动。此时点击putty的连接(Open),候就会在...
  • 15.树莓派+继电器

    2021-01-29 02:11:02
    首先,输入gpio readall,就可以查看树莓派IO口的名称等等,如 继电器工作电压是3.3V,所以树莓派的3.3V要和继电器的VCC用杜邦线接好,再接一根0V对GND的线,最后一根线挑一根树莓派上标有GPIO字样的针脚,我们...
  • 树莓派点亮LED

    2018-12-22 16:35:24
    1 接线 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力...
  • 树莓派开始,玩转Linux9:GPIO触手 ...树莓派3上的GPIO接口由40个针脚(PIN)组成,如11-1所示。 每个针脚都可以用导线和外部设备相连。你可以通过焊接的方式把导线固定在PIN上,也可以用母型的跳线套
  • 这是本节用的接线方式,底下是个面包板,当然了,你可以选择直接每个杜邦线插在树莓派上对应的针脚也是一样的。 RGB分别接G17,G18,G27,GND接地(就是0V)(这里针脚号是BCM GPIO对应那一列号)。 1.Scratch 2.后...
  • #!/usr/bin/env python# encoding: utf-8"""接线:RPi digital7 1011 513 315 929 831 633 735 437 ...import RPi.GPIO as GPIOimport timeimport os# 数码管1-2正极分别使用的针脚LED_POWER_1 = 7...
  • 红外探测有三个针脚,两端的是供电,中间是信号输出,直接将信号输出接到树莓派的一个GPIO上即可。 注意的是红外探测有两个调节旋钮,一个调节感应距离,一个调节感应时间: 调节距离电位器顺时针旋转,感应距离...
  • 网络上有许多通过python控制舵机的...舵机有三条线,红色(VCC-5v), 棕色(GND),黄色(signal),黄色线需要接到树莓派硬件PWM针脚 (物理引脚 12, 32, 33, 35),任选一;舵机频率为50HZ;占空比2.5% - 12.5%,对应0°-180
  • 树莓派学习笔记2->GPIO口应用 通过GPIO控制二极管和开关 开关 开关有四个两对针脚,每一对功能完全一样。 按下接通,松开恢复。 二极管 长脚正极,短脚负极。 初次接触电子元件人往往对此不敏感导致接错...
  • 先上个 这个模块的针脚跟之前玩的那三个有所区别,除了VCC和GND两个针脚,还多了两个Trig和Echo针脚,分别是输出和输入,Trig我接的是20针脚,Echo是21 该模块的工作原理为,先向TRIG脚输入至少10us的触发信号...
  • 四个阵脚连接:VCC接3.3伏电源,Dout接GPIO口,我接的是物理12针脚,NC留空,GND接地。 波折1:电阻被错接进了VCC,于是看了无数遍时序,改了无数遍的驱动无论怎么改都是读不出数据。 波折2:偶然看了网上的DHT...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

树莓派针脚图