亚博智能论坛  
  
查看: 1271|回复: 1

树莓派学习笔记From BOB

  [复制链接]
  • TA的每日心情
    慵懒
    2017-7-29 14:25
  • 121

    主题

    161

    帖子

    576

    积分

    超级版主

    Rank: 9Rank: 9Rank: 9

    积分
    576
    发表于 2017-6-22 17:36:15 | 显示全部楼层 |阅读模式

    一早上整理不少资料,可是不知为何上传总是403。只有把以前下载的网友的学习笔记上传,文本的,总没有问题吧。
    ====================================================
    【树莓派2B学习笔记】 - Bob总结

    ----------------------------------------------------------------------------
    1.        【开启root用户】

            a>        输入命令 sudo passwd root ,回车
            b>        输入root密码两次,回车
            c>        输入su回车,输入上一步设置的密码即可进入root用户
            d>        用su pi可切换回pi用户

    ----------------------------------------------------------------------------
    2.        【播放音视频】

            a>        omxplayer 音/视频文件名
                    ps1.        默认音频从hdmi口输出,在omxplayer后加入-o hdmi表示从hdmi接口输出音频,加-o local表示音频从audio接口输出
                    ps2.        连续播放的实现方法:omxplayer 音/视频文件名1; omxplayer音/视频文件名2

    ----------------------------------------------------------------------------
    3.        【串口控制】(树莓派串口速率 115200)

            a>        将USB转串口板的RX,TX,GND分别接入树莓派的TX,RX,GND引脚即可

    ----------------------------------------------------------------------------
    4.        【用windows远程桌面连接到树莓派】

            a>安装RDP服务:sudo apt-get install xrdp
            b>打开windows远程桌面连接,输入树莓派IP地址,然后输入账号和密码即可

    ----------------------------------------------------------------------------
    5.        【查看树莓派主板温度】

            a>        sudo /opt/vc/bin/vcgencmd measure_temp

    ----------------------------------------------------------------------------
    6.        【英文转语音服务】

            a>        安装festival软件:sudo apt-get install festival
            b>        使用示例:
                    1> 说出终端打印的内容: echo "hello everyone" | festival --tts
                    2> 说出终端打印的内容: cat xiaoshuo.txt | festival --tts
                    3> 说出本机IP地址:hostname -I | festival --tts
                            ps. 如果需要开机自动语音输出本地IP地址,可将此命令添加至 /etc/init.d/rc.local文件中,可重复添加三行,这样会读三次IP,方便用户记录。

    ----------------------------------------------------------------------------
    7.        【命令行界面下使用wpa_cli命令配置wifi无线网络】

            wpa_cli是命令行界面下的无线网连接工具。
            通过wpa_cli管理备选的网络列表。在备选网络中启用的网络,树莓派会自动试图连接。

            输入sudo wpa_cli启动wpa_cli的命令行界面(必须sudo)。常用的指令如下:

            status                                                                                        #列出目前的联网状态。
            list                                                                                        #列出所有备选网络。目前正连接到的网络会标[CURRENT],禁用的网络会标[DISABLE]。
            scan                                                                                         #启动搜索附近所有无线网络
            scan_results                                                                         #显示搜索到的所有无线网络

            add_network                                                                                #增加一个备选网络,输出新网络的号码(这个号码替代下文的[network_id])。注意新网络此时是禁用状态。
            set_network [network_id] ssid “Your SSID”                #设置无线网的名称(SSID)
            set_network [network_id] key_mgmt WPA-PSK                #设置无线网的加密方式为WPA-PSK/WPA2-PSK
            set_network [network_id] psk “Your Password”        #设置无线网的PSK密码
            enable_network [network_id]                                                #启用网络。启用后如果系统搜索到了这个网络,就会尝试连接。
            save_config                                                                                #保存配置(若不保存,以上设置重启会失效)

            disable_network [network_id]                                        #禁用对应网络。
            remove_network [network_id]                                                #删除对应网络



            举个栗子:

            > add_network
            1
            > set_network 1 ssid "Bob-Mi4"
            OK
            > set_network 1 key_mgmt WPA-PSK
            OK
            > set_network 1 psk "24202420"
            OK
            > enable_network 1
            OK
            > save_config
            OK

            重要提示:        wpa_gui命令可调出wifi配置界面,更方便直观;
                                    如果进入Raspbian系统图形界面,请也可以用menu菜单中的Wi-Fi Configuration工具进入wifi配置界面。

    ----------------------------------------------------------------------------
    8.        【让树莓派开机自动将自己IP地址发到指定邮箱的方法】

            (这里是利用inkdot11@163.com这个邮箱将树莓派IP发给inkdot11@163.comshuangfeiyanworld@163.com这个邮箱里)

            只需下面两步:
            1. 建立Python脚本(脚本内容请看附录):sudo nano /home/pi/send_ip.py
            2. 设置开机自启动:在/etc/rc.local中加入下面一行
                    /usr/bin/python   /home/pi/send_ip.py


            附录(Python脚本内容)(只需根据需要修改最后一行''之间的部分即可,注意:单引号符号不能删掉):

    #/bin/env python
    # -*-coding:utf8-*-
    import socket
    import fcntl
    import time
    import struct
    import smtplib
    import urllib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage

    #发送邮件的基本函数,参数依次如下
    # 'smtp服务器地址','发件人邮箱用户名','发件人邮箱密码','发件人邮箱地址',['收件人1邮箱地址','收件人2邮箱地址'],'邮件主题',邮件html内容
    def sendEmail(smtpserver,username,password,sender,receiver,subject,msghtml):
            msgRoot = MIMEMultipart('related')
            msgRoot["To"] = ','.join(receiver)
            msgRoot["From"] = sender
            msgRoot['Subject'] =  subject
            msgText = MIMEText(msghtml,'html','utf-8')
            msgRoot.attach(msgText)
            #sendEmail
            smtp = smtplib.SMTP()
            smtp.connect(smtpserver)
            smtp.login(username, password)
            smtp.sendmail(sender, receiver, msgRoot.as_string())
            smtp.quit()

    # 检查网络连同性
    def check_network():
            while True:
                    try:
                            result=urllib.urlopen('http://baidu.com').read()
                            print result
                            print "Network is Ready!"
                            break
                    except Exception , e:
                       print e
                       print "Network is not ready,Sleep 5s...."
                       time.sleep(5)
            return True

    # 获得本级制定接口的ip地址
    def get_ip_address():
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(("1.1.1.1",80))
            ipaddr=s.getsockname()[0]
            s.close()
            return ipaddr

    if __name__ == '__main__':
            check_network()
            ipaddr=get_ip_address()
            sendEmail('smtp.163.com','inkdot11','24202420','inkdot11@163.com',['shuangfeiyanworld@163.com','inkdot11@163.com','562949252@qq.com'],'主人您好,小派给您请安了,请点击查看我当前的IP地址',ipaddr)

    ----------------------------------------------------------------------------
    9.        【VNC远程登录树莓派的图形界面】

            a>        安装tightvncserver:sudo apt-get install tightvncserver
            b>        设置vnc远程登录密码:vncpasswd        (先输入操作密码两次,然后会询问是否设置一个查看(view-only)密码,按自己喜欢,一般没必要。)
            c>        设置开机启动:sudo nano /etc/init.d/tightvncserver
                    内容如下:
    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides:          tightvncserver
    # Required-Start:    $local_fs
    # Required-Stop:     $local_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start/stop tightvncserver
    ### END INIT INFO

    # More details see:
    # http://www.penguintutor.com/linux/tightvnc

    ### Customize this entry
    # Set the USER variable to the name of the user to start tightvncserver under
    export USER='pi'
    ### End customization required

    eval cd ~$USER

    case "$1" in
      start)
        # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
        su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 800x600 :1'
        echo "Starting TightVNC server for $USER "
        ;;
      stop)
        # 终止命令行。此处控制台号码与启动一致。
        su $USER -c '/usr/bin/tightvncserver -kill :1'
        echo "Tightvncserver stopped"
        ;;
      *)
        echo "Usage: /etc/init.d/tightvncserver {start|stop}"
        exit 1
        ;;
    esac
    exit 0

            d>        加执行权限,并更新开机启动列表:        sudo chmod 755 /etc/init.d/tightvncserver
                                                                                    sudo update-rc.d tightvncserver defaults
            e>        开启vnc服务:vncserver
            f>        已经可以vnc远程登录.

    ----------------------------------------------------------------------------
    10.        【实现VLC串流实时输出网络视频流】(利用官方CSI摄像头)

            a>        更新软件列表:sudo apt-get update
            b>        安装vlc:sudo apt-get install vlc
            c>        建立脚本:sudo nano vlc.sh
                    内容为:sudo raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
            d>        添加执行权限:sudo chmod +x vlc.sh
            e>        执行脚本:./vlc.sh
            f>        利用手机端或电脑端vlc软件输入这个地址即可查看摄像头实时监控视频:http://树莓派IP:8090

            ps. 摄像头模块工作的时候其红色的led灯会一直亮,要想禁用它的话,在/boot/config.txt文件中加入这句话即可  disable_camera_led=1

    ----------------------------------------------------------------------------
    11.        【安装中文输入法】

            sudo apt-get install scim-pinyin

    ----------------------------------------------------------------------------
    12.        【官方CSI摄像头拍照录像的命令】

            [拍照片]

            延迟2s拍摄一张.jpg格式的图片:  
            sudo raspistill -o raspi.jpg  -t 2000

            延迟2s拍摄一张.raw格式的图片:  
            sudo raspiyuv   -o raspi.raw  -t 2000


            [录视频]

            拍摄10000ms时长的.h264格式视频:
            sudo raspivid   -o raspi.h264 -t 10000

            安装gpac软件包:
            sudo apt-get install -y gpac

            利用gpac软件包中的MP4Box工具将H.264格式的视频流转换为每秒30帧的.mp4格式视频:
            sudo MP4Box -fps 30 -add raspi.h264 raspi.mp4

            利用omxplayer软件播放.mp4格式视频:
            sudo omxplayer raspi.mp4

    13.        【USB摄像头安装与测试】

            a>        将USB摄像头插入树莓派USB接口
            b>        查找USB摄像头设备:ls /dev/video0
                    如果能找到video0这个设备,说明系统已经识别到USB摄像头并安装好了驱动;如果找不到video0这个设备,请更换USB摄像头。
            c>        安装mplayer软件:sudo apt-get install mplayer
            d>        查看USB摄像头实时图像:sudo mplayer  tv://

    ----------------------------------------------------------------------------
    14.        【树莓派+USB/CSI摄像头+Yeelink 实现远程监控】

            【对于USB摄像头】(下文脚本中的1280x800是拍照的尺寸,对于USB摄像头,这个参数不能太小,例如设置为320x240的时候,拍到的图片会非常模糊,什么都看不清)
            a>        将USB摄像头插入树莓派USB接口
            b>        查找USB摄像头设备:ls /dev/video0
            如果能找到video0这个设备,说明系统已经识别到USB摄像头并安装好了驱动;如果找不到video0这个设备,请更换USB摄像头。
            c>        安装fswebcam用来抓取图像:sudo apt-get install fswebcam
            d>        创建上传图片的脚本文件:sudo nano /home/pi/yeelink_usb_camera.sh
                    内容为(请根据需要更改U-ApiKey的值和后面的那个传感器地址):
    sudo fswebcam -d /dev/video0 -r 1280x800 --bottom-banner --title "RaspberryPi @ Yeelink" --no-timestamp /home/pi/yeelink_usb_camera.jpg
    curl --request POST --data-binary @"/home/pi/yeelink_usb_camera.jpg" --header "U-ApiKey: 513ab8334265d536c3e7151cd70bb550" http://api.yeelink.net/v1.1/device/21532/sensor/37983/datapoints
            e>        给脚本添加执行权限:sudo chmod +x /home/pi/yeelink_usb_camera.sh
            f>        添加定时任务:crontab -e 回车,填入如下内容:
                    */1 * * * * /home/pi/yeelink_usb_camera.sh
                    这样就可以了,每分钟上传一次照片,注意间隔不能小于10秒,Yeelink不认
            g>        然后在我的Yeelink账号上找到对应设备里的摄像头传感器,即可看到每分钟上传的照片了!

            【对于官方CSI摄像头】
            a>        将CSI摄像头安装到树莓派上
            b>        创建上传图片的脚本文件:sudo nano /home/pi/yeelink_csi_camera.sh
                    内容为(请根据需要更改U-ApiKey的值和后面的那个传感器地址):
    sudo raspistill -w 1280 -h 800 -o /home/pi/yeelink_csi_camera.jpg
    curl --request POST --data-binary @"/home/pi/yeelink_csi_camera.jpg" --header "U-ApiKey: 513ab8334265d536c3e7151cd70bb550" http://api.yeelink.net/v1.1/device/21532/sensor/38262/datapoints
            c>        给脚本添加执行权限:sudo chmod +x /home/pi/yeelink_csi_camera.sh
            d>        添加定时任务: crontab -e 回车,填入如下内容:
                    */1 * * * * /home/pi/yeelink_csi_camera.sh
                    这样就可以了,每分钟上传一次照片,注意间隔不能小于10秒,Yeelink不认
            e>        然后在我的Yeelink账号上找到对应设备里的摄像头传感器,即可看到每分钟上传的照片了!

    ----------------------------------------------------------------------------
    15.        【树莓派+CSI摄像头+百度云盘 实现远程监控】

            a>        将CSI摄像头安装到树莓派上
            b>        下载 https://github.com/houtianze/bypy/archive/master.zip
            c>        解压上一步的压缩包
            d>        在树莓派上创建脚本存放目录:sudo mkdir /home/pi/baiduyun
            e>        将前一步解压出来的文件夹里的这三个文件(bypy.py,bypygui.pyw,setup.py)拷贝至/home/pi/baiduyun目录下
            f>        添加执行权限:sudo chmod +x /home/pi/baiduyun/*
            g>        安装Python环境: ① 安装python:sudo apt-get install python-dev python-setuptools
                                                     ② 执行更新:sudo easy_install -U distribute
                                                     ③ 安装python-pip:sudo apt-get install python-pip
                                                     ④ 安装python的GPIO库:sudo pip install rpi.gpio
                                                     ⑤ 安装python requests库:sudo pip install requests
            h>        cd /home/pi/baiduyun/
            i>        sudo python bypy.py help (如果不行,用 sudo python bypy.py cleancache

                    执行此命令后勿动键盘,用鼠标复制给出的那个网址到剪切板。
            j>        打开浏览器,登陆百度账号
            k>        用浏览器打开前一步复制的那个网址,点击“授权”二字,会生成一个授权码之类的字符串(这个字符串有效期为十分钟),复制一下,粘贴到前一步的命令行终端,回车,稍后即可授权成功。
            l>        建立文件夹:sudo mkdir /home/pi/baiduyunpan
            m>        建立脚本:sudo nano /home/pi/baiduyunpan_csi_camera.sh
                    内容如下:
    sudo raspistill -w 1280 -h 800 -o /home/pi/baiduyunpan/baiduyunpan_csi_camera.jpg
    sudo python /home/pi/baiduyun/bypy.py syncup /home/pi/baiduyunpan
    var=$(date +%y.%m.%d_%H.%M.%S)
    sudo python /home/pi/baiduyun/bypy.py -d mv baiduyunpan_csi_camera.jpg ${var}.jpg
    echo ${var}.jpg
    echo "${var}".jpg
    echo "${var}.jpg"
            n>        添加执行权限:sudo chmod +x /home/pi/baiduyunpan_csi_camera.sh
            o>        执行脚本: ./home/pi/baiduyunpan_csi_camera.sh
            p>        添加定时任务: crontab -e 回车,填入如下内容:
                    */1 * * * * /home/pi/baiduyunpan_csi_camera.sh
                    这样就可以了,每分钟上传一次照片
            q>        打开百度云盘,在“我的应用数据” --> "bypy"目录下看是不是已经有刚才拍的照片。

    ----------------------------------------------------------------------------
    16.        【树莓派Raspbian系统实现PPPOE上网的方法】

            a>        安装三个工具:sudo apt-get install pppoe pppoeconf pppstatus
            b>        终端运行命令 pppoeconf
            c>        在弹出的操作步骤中,除了填写宽带服务商给的PPPOE账号和密码步骤外,其余步骤全部直接回车按默认设置,完成所有步骤后即可正常上网。

    17.        【将树莓派配置成无线路由器】

            参考此文: http://shumeipai.nxez.com/2014/0 ... ireless-router.html
            ps1. (此方法实现了树莓派的无线AP功能,若要实现联网功能,还需连接到树莓派有线网口的有线宽带具备DHCP功能,
                    由于家里使用的宽带是PPPOE上网方式,所以只能实现树莓派无线热点,无法成功联网)
            ps2. 按照此方法设置后,通过 ssh 192.168.1.1 即可远程连接到树莓派对其进行控制。

    ----------------------------------------------------------------------------
    18.        【树莓派首次使用时,无显示器状态下的配置方法】(此方法基于官方Raspbian系统的树莓派)

            a>        网线直连树莓派到电脑
            b>        电脑端打开dos窗口,输入 arp -a 回车
            c>        在列表中找到已“动态”类型结尾的那些IP地址,一个一个的通过ssh去连接,其中有一个是树莓派的IP。
            d>        由于树莓派有线网口默认设置为动态IP,所以会经常变动,此时可以更改 /etc/network/interfaces的内容将树莓派IP固定,方法如下:
                    将
                    auto eth0
                    allow-hotplug eth0
                    iface eth0 inet manual
                    这三行改为如下内容
                    iface eth0 inet static
                    address 192.168.1.134        #树莓派静态IP地址
                    netmask 255.255.255.0
                    gateway 192.168.1.253        #网关IP地址,即进入无线路由器设置页面的那个IP地址
                    dns-nameservers 8.8.8.8


            e>        这一步可以让树莓派具备联网功能:
                    按照上面的步骤已经可以ssh连接到树莓派了,如果是笔记本(一般都是无线网卡和有线网卡的双网卡配置),并且已经通过wifi连接到网络,
                    此时,在电脑端进入 控制面板→网络和Internet→网络连接,找到无线网络连接,右键点击属性,在共享下面,选择“允许其他网络。。。”,然后选择“本地连接”,点击确定,
                    稍等几秒钟,树莓派即可实现上网,可ssh到树莓派,然后ping www.baidu.com进行测试。

    ps1.        如果是基于官方Raspbian系统的树莓派,其开机信息会通过GPIO中的RX,TX串口打印出来,可将USB转串口板的RX,TX,GND分别接入树莓派的TX,RX,GND引脚,
                    即可通过电脑端的超级终端或者xshell软件查看打印信息并进入树莓派终端命令行界面。
    ps2.        如果树莓派已经设置好连接到了wifi网络,并且手机也连接到了同一个wifi网络,可以在手机端安装RasPi Check软件来查看树莓派的状态,其中包含有线网络eth0的IP地址。

    ----------------------------------------------------------------------------
    19.        【获取CPU和GPU温度的Python小程序】
            a> 建立python脚本:sudo nano cpu_gpu_temp.py
                    内容如下:
    import commands

    def get_cpu_temp():
        tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
        cpu_temp = tempFile.read()
        tempFile.close()
        return float(cpu_temp)/1000
        # Uncomment the next line if you want the temp in Fahrenheit
        #return float(1.8*cpu_temp)+32

    def get_gpu_temp():
        gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\'C', '' )
        return  float(gpu_temp)
        # Uncomment the next line if you want the temp in Fahrenheit
        # return float(1.8* gpu_temp)+32

    def main():
        print "CPU temp: ", str(get_cpu_temp())
        print "GPU temp: ", str(get_gpu_temp())

    if __name__ == '__main__':
        main()

            b> 使用:sudo python cpu_gpu_temp.py ,即可返回CPU和GPU温度

    ----------------------------------------------------------------------------
    20.        【在树莓派上利用讯飞语音将文字转化为语音保存并读出】

            方法详见 “树莓派应用案例”文件夹下的“在树莓派上利用讯飞语音将文字转化为语音保存并读出(Bob亲测好用)”文件夹。
            (另外,Bob已将源码和方法打包上传至inkdot账号的百度云盘,文件名为“在树莓派上利用讯飞语音将文字转化为语音保存并读出(Bob亲测好用).rar”  )

    21.        【无显示屏无USB无线网卡,无需wifi,无需移动网络,仅需一根手机数据线,通过手机USB共享实现树莓派ssh登陆】

            a>        找一根USB数据线(仅带充电功能的手机线不行),将microUSB一端插入手机(这里采用的是小米4,miui6系统),标准USB端插入树莓派
            b>        给树莓派上电
            c>        听到手机发出叮叮一声的提示音后,打开手机的”USB共享网络“开关(在”设置“--”其他连接方式“--“网络共享”下面)(如果还想让树莓派使用手机移动网络或手机连接的wifi网络,则可打开对应网络开关)
            d>        打开 Network Scan 这个手机端软件对手机同一网络下的设备进行扫描(可通过手机百度助手搜索到此软件,同时也已经上传至账号为inkdot的百度网盘中)
            e>        在扫描的结果中,有一项"USB Network", 第一个是自己手机的IP,另外一个即为树莓派自动获取到的IP(后面带 ports:22 ssh 字样)
            f>        打开 JuiceSSH 这个手机端软件,使用刚才那个树莓派IP进行SSH登录,账号pi,密码为11111111(根据自己的设置而定)
            e>        另外,还可以使用手机端”VNC Viewer“登录树莓派图形界面(需树莓派安装tightvncserver之类的软件),
                              还可以使用手机端”RasPi Check”软件查看树莓派内存占用、存储空间使用量等信息,
                              还可以使用手机端”ES文件浏览器”软件,添加SFTP对树莓派的文件系统进行浏览查看,也可以往里面拷贝文件。

    ----------------------------------------------------------------------------
    22.        【安装BerryIO工具 -- 用于浏览器控制树莓派】(可以查看树莓派IP/CPU温度.速率/存储空间大小等信息;可以控制GPIO端口/SPI/Camera/LCD等等)

            a>        安装BerryIO:
                    sudo wget -N https://raw.github.com/NeonHoriz ... /berryio_install.sh
                    sudo chmod +x berryio_install.sh
                    sudo ./berryio_install.sh        (会提示设置邮箱什么的,目前还不知道做什么用)
            b>        使用:
                    方法一、在终端直接执行 sudo berryio,回车会显示所有功能(如 sudo berryio system_status 可查看系统整体状态)
                    方法二、浏览器输入树莓派IP回车(默认使用80端口),输入树莓派登陆的账号密码即可打开图形控制界面

            ps1.如果其他功能需要使用80端口,可以用 sudo berryio shutdown 命令关闭此功能
            ps2.更多内容详见 https://github.com/NeonHorizon/berryio

    ----------------------------------------------------------------------------
    23.        【树莓派GPIO控制工具Python GPIO和WiringPi的安装方法与示例】

            工具一、Python GPIO
                            安装步骤:         a> 安装python-dev:                        sudo apt-get install python-dev
                                                    b> 安装python-rpi.gpio:        sudo apt-get install python-rpi.gpio
                            示例1:                 实现闪烁LED
                                                    a> 编写Python脚本:                 sudo nano led.py (功能:树莓派第11引脚电平每秒变换一次,可驱动LED闪烁)
                                                            内容如下:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-  

    #功能:树莓派第11引脚电平每秒变换一次,可驱动LED闪烁
    #运行方法:sudo ./gpio_11_blink.py

    import RPi.GPIO as GPIO  
    import time  

    # 设置GPIO编号为BOARD编号方式,即基于树莓派插座引脚编号  
    GPIO.setmode(GPIO.BOARD)  

    # 设置GPIO输出模式  
    GPIO.setup(11, GPIO.OUT) #将GPIO第11引脚设置为输出

    while True:  
        GPIO.output(11, GPIO.HIGH)  #将GPIO第11引脚输出高电平
        time.sleep(1)                              #延迟1s
        GPIO.output(11, GPIO.LOW)   #将GPIO第11引脚输出低电平
        time.sleep(1)                              #延迟1s

                                                    b> 执行:sudo python led.py

                            示例2: 实现按键控制LED
                        a> 编写Python脚本: sudo nano btn_led.py    (功能:让树莓派板端第40引脚的输出电平等于38引脚的输入电平)
                                                                                    内容如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-  

    #功能:让树莓派板端第40引脚的输出电平等于38引脚的输入电平
    #运行方法:sudo ./btn_led.py

    import RPi.GPIO as GPIO
    import time

    # 设置GPIO编号为BOARD编号方式,即基于树莓派插座引脚编号  
    GPIO.setmode(GPIO.BOARD)

    # 设置GPIO输出模式  
    GPIO.setup(38, GPIO.IN)                #对应板端GPIO第38引脚
    GPIO.setup(40, GPIO.OUT)        #对应板端GPIO第40引脚

    while True:
            value = GPIO.input(38)
            if value:
                    GPIO.output(40, GPIO.HIGH)
            else        :
                    GPIO.output(40, GPIO.LOW)

                    b> 执行:sudo python btn_led.py


            工具二、WiringPi
                            安装步骤:        a>克隆源码:                 sudo git clone git://git.drogon.net/wiringPi
                                                    b>进入源码目录:         cd wiringPi
                                                    c>安装:                        sudo ./build
                                                    d>测试wiringPi是否安装成功:        gpio -v                 可显示版本信息
                                                                                                                    gpio readall          可显示I/O引脚对应关系表
                            示例1:         实现闪烁LED
                            a> 编写C程序:  sudo nano led_blink.c(功能:树莓派第40引脚电平每秒变换一次,可驱动LED闪烁)
                                                                            内容如下:

    /****************************************************
    功能:树莓派第40引脚电平每秒变换一次,可驱动LED闪烁
    用法:使用gcc -Wall -o led_blink led_blink.c -lwiringPi编译后,直接通过 sudo ./led_blink 运行
    ****************************************************/                                                
    1. #include <wiringPi.h>  
    2. int main(void)  
    3. {  
    4.   wiringPiSetup() ;                  //初始化wiringPi工具
    5.   pinMode (0, OUTPUT) ;          //设置GPIO模式,wiringPi的GPIO_0对应树莓派GPIO的第11引脚
    6.   for(;;)                                   //死循环,实现树莓派GPIO的第11引脚电平以1hz的频率进行变化
    7.   {  
    8.     digitalWrite(0, HIGH) ; delay (500) ;  
    9.     digitalWrite(0,  LOW) ; delay (500) ;  
    10.   }  
    11. }
    复制代码
                                           b> 编译:        gcc -Wall -o led_blink led_blink.c -lwiringPi
                                            c> 执行:         sudo ./led_blink

                            示例2:     实现按键控制LED
                                                    a> 编写C程序:  sudo nano btn_led.c(功能:让树莓派板端第40引脚的输出电平等于38引脚的输入电平)
                                                                            内容如下:

    /****************************************************
    功能:让树莓派板端第40引脚的输出电平等于38引脚的输入电平
    用法:使用gcc -o btn_led btn_led.c -lwiringPi编译后,直接通过 sudo ./btn_led 运行
    ****************************************************/        
    1. #include <wiringPi.h>  
    2. int main(void)  
    3. {   
    4.   wiringPiSetup() ;                   //初始化wiringPi工具
    5.   pinMode (28, INPUT) ;          //对应板端GPIO第38引脚,设置为输入
    6.   pinMode (29, OUTPUT) ;    //对应板端GPIO第40引脚,设置为输出
    7.   for(;;)   
    8.   {  
    9.         if(digitalRead(28))                //如果板端GPIO第38引脚输入电平为高,则第40引脚输出为高
    10.                 digitalWrite(29, HIGH) ;
    11.         else                                        //如果板端GPIO第38引脚输入电平为低,则第40引脚输出为低
    12.                 digitalWrite(29,  LOW) ;
    13.   }  
    14. }
    复制代码
                      
                                            b> 编译:        gcc -o btn_led btn_led.c -lwiringPi
                                            c> 执行:         sudo ./btn_led

    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    43

    帖子

    46

    积分

    新手上路

    Rank: 1

    积分
    46
    发表于 2018-3-19 01:54:26 | 显示全部楼层
    谢谢了你,分享了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表