一步一步玩转树莓派~

1.树莓派的装机教程

步骤:

  1. 镜像文件和镜像写入SD卡工具的下载
  2. RASPBIAN系统烧录至micro SD卡
  3. 设备连网
  4. 外接显示器或者SSH连接

具体:

  1. 镜像文件地址 ,选择RASPBIAN STRETCH WITH DESKTOP 版本的ZIP文件,这是图形化界面版本的系统,另一个是轻量级的不带桌面的版本;
    镜像写入SD卡工具地址,点击download下载到本地;
  2. 打开Win32 Disk Imager,选择下载完解压好的.image文件,然后写入位置为你的SD卡即可,其他选项都用默认的不用修改,几分钟后即可写入完毕,最终弹出提示是否格式化,点否!
  3. 接下来是连网过程,树莓派自带了网线插槽,如果选择有线连接的方式,直接插上网线即可
    这里主要讲一下无线连接上网的方式:

将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,将下面内容保存在 wpa_supplicant.conf 文件中.

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="此处填写:你的无线网的名称"
psk=" 此处填写:你的无线网的密码"
}

为了启用树莓派的ssh服务,我们还需要在/boot目录下再新建一个名称为ssh的空文件
!!!注意,此文件没有后缀名!

  1. 树莓派自带了HDMI插槽,所以说,有显示器的同学,可以直接通过HDMI连接树莓派和显示器,然后开启你的树莓派之旅~
    当然,这里更推荐采用ssh连接的方式,通过电脑远程登录你的树莓派主机,详细步骤如下:
    (1)大家知道,远程登录的话,需要知道你远程服务器的IP地址,所以这里我们第一步是要获取到树莓派的IP地址,方法有两种,一是登录到你的路由器网关(查询路由器地址,最简单的办法是打开你手机的WiFi,查看你当前连接的WiFi的详情,里面的路由器的IP地址即为所求);
    (2)在电脑端进入路由器的管理界面,找到raspiberry的名称,所对应的IP地址就是我们所找的;

补充一下,如果没有显示器的话,还可以下载一个开源的软件,名为 ipscan然后一个一个的试你的树莓派的IP地址

         (3)上述办法是你完全不想用显示器的时候,所采取的方法,不过我想大部分搞计算机的,都还是会买一个显示器的,那么我们这里可以偷懒,稍微借助一下显示器,登录到树莓派图形界面,打开命令行窗口,然后用 ifconfig命令查看树莓派IP地址;
         (4)获取到IP地址之后,我们就可以通过ssh连接到咱们的树莓派啦!(windows用户可以下载putty或者xshell软件进行登录; Linux/Mac用户可以直接在命令行 通过 ssh pi@ip_address 远程登录,初始默认密码是 raspberry 你的电脑和树莓派需要在同一个局域网,或者二者能相互ping通即可
         (5)ssh登录成功之后,输入 sudo passwd ,修改默认的登录密码;输入 sudo vi /etc/hostname 修改主机名,重启;或者直接输入 sudo raspi-config 在图形化界面中进行更改一系列的配置!

2. 树莓派入门:控制LED小灯亮

  1. 连接好树莓派的引脚、LED小灯、电阻,我这里是把LED的负极连接pin 6(GROUND),LED的正极连接的是 pin 12;一定要串联一个电阻,否则小灯很容易烧掉 !
          

  2. 编写python程序,代码也比较简单,如下所示:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time 
# 树莓派上的引脚,有两种GPIO的编号方式
# GPIO.BOARD模式是采用Z形计数法,如上图的 1,2,3,4,5,6,7...
# GPIO.BCM模式,去掉了具有特定功能的引脚,编号为GPIO2,GPIO3,GPIO4...
# 啰嗦一句:在GPIO.BCM模式中,如果想要绑定的编号是GPIO18,那么写作LED_PIN = 18
GPIO.setmode(GPIO.BOARD) 	  # 1.设置编号模式;
LED_PIN = 12			  # 2.设置要绑定的pin值;
GPIO.setup(LED_PIN,GPIO.OUT) 	  # 3.设置pin的功能;
GPIO.output(LED_PIN,GPIO.HIGH)	  # 4.设置输出为低电平还是高电平;
time.sleep(3)					  
GPIO.cleanup()			  # 5.程序运行结束,清空所有GPIO的配置

3. 树莓派进阶:LCD显示屏显示信息(python实现)

      我这里是参考了这篇文章,这是一份提交在Github上面的代码,提供一个Demo,有兴趣的可以点进去查看与收藏。

  1. 第一步还是连接设备,我这里买的是4pin版本的LCD显示屏,如图:
             

#1 Connect GND to GROUND. (Pin 6)
#2 Connect VCC to 5V. (Pin 2)
#3 Connect SDA to GPIO.(Pin 3)参考GPIO接口图,这是固定的pin
#4 Connect SCL to GPIO. (Pin 5)参考GPIO接口图,这是固定的pin

  1. 通过ssh登录到你的树莓派主机,或者在树莓派系统中打开终端,安装下面的包。

sudo apt-get update -y && sudo apt-get install python-smbus git i2c-tools -y

  1. 编辑 modules file

sudo nano /etc/modules

  1. 打开的文件中,对比下面的内容,没有的内容则补充进去
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835     # This enables GPIO pins on the pi.
i2c-dev         # This enables i2c communication.
  1. 检查黑名单中是否有i2c-bcm2708,如果有的话,则#注释掉;打开黑名单命令如下

sudo vi /etc/modprobe.d/raspi-blacklist.conf

  1. 输入 sudo raspi-config命令,在打开的图形化界面中,选择 5 Interfacing Options选项,进去之后 enable I2C这个服务;
  2. 下载Github上的代码到你的本地

git clone https://github.com/bradgillap/I2C-LCD-Display

  1. 运行Demo里的python文件 demo_lcd.py

4. 树莓派进阶:基于MQTT协议实现远程控制(python实现&&Android实现)

  1. MQTT通信的三要素

  2. 基于Python实现MQTT通信

  3. 基于Android实现MQTT通信

具体:

  1. MQTT通信的三要素是消息订阅方、消息发布方、消息中间件。

 

  1. 基本流程:消息订阅方首先连接到消息代理,然后订阅代理服务器上的某些主题,并保持监听状态;消息发布方也是连接到代理服务器,然后朝某个主题发送消息;消息代理接收到消息之后,查找订阅了该主题的服务器,再把消息转发过去;

  2. 需要说明一下的是,消息发布方和消息订阅方可以用不同的语言实现,我分别实现了两个Demo,一个demo是发布方和订阅方都是python实现,另一个demo是python发布消息,Android APP接收消息,本文结尾会附上代码;

  3. 我们在实现MQTT通信的时候,第一件事是构建消息中间件(代理),也就是所谓的Broker,这一部分的实现比较简单,我们可以直接在服务器上部署Mosquitto开源消息代理组件,根据自己代理服务器的操作系统,在链接界面选择对应的并安装。这里再给一个CentOS安装Mosquitto教程要注意的是,一定要关闭服务器上的防火墙服务,否则哪怕是安装成功了消息代理服务,我们的客户端也还是会连不上代理服务器

  4. 基于python实现MQTT通信(我这里用的是这个开源框架

     (1)消息订阅方的实现代码 mqtt_sub.py

# 使用之前 pip install paho-mqtt
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.    
    client.subscribe("/jianghui/test")
    
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    if(msg.payload == "hello world"):
    	print("hello world!")
 
 client = mqtt.Client()
 client.on_connect = on_connect
 client.on_message = on_message
 client.connect("your broker's ip_adress", 1883, 60)
 
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()

     (2)消息发布方的实现代码 mqtt_pub.py

#-*- coding: UTF-8 -*- 
import paho.mqtt.publish as publish
publish.single("/jianghui/test", "hello world", hostname="your broker's ip_adress")
print("publish successfully!")

     (3)代码测试
        开启两个ssh连接你的树莓派服务器的会话,在会话一中执行 python mqtt_sub.py 命令,如果Shell窗口输出 Connected with result 0,那就说明订阅主题成功,处于监听状态,否则说明broker的配置出了问题,或者mqtt_sub.py代码有问题;
        在会话二中执行 python mqtt_pub.py 命令,输出 publish successfully! 就说明发布消息出错,遇到其他错误,直接Google解决 ~

  1. 基于Android实现MQTT通信(我参考了这篇博客)上面给的博客链接中,给出了详细的步骤说明,此处不再赘述,但是上面的博客只给了代码的讲解,具体实现请看我这里,代码下载,已测试成功,有疑问欢迎评论或者私信交流。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值