树莓派GPIO的一些配置

4 篇文章 0 订阅
2 篇文章 0 订阅

  树莓派可以当一个小电脑用,但是用久了还是打算用用它的引脚。

获取引脚对应的编码

  树莓派和单片机不一样,它没有把引脚编码印在板子上,所以用的时候还是要查看一些引脚的编码的。
  查看的方法很简单,可以在网上查看树莓派的引脚对应,也可以直接用命令行:

gpio readall

来查看。
  用命令行有时候可以会出现问题:

Oops - unable to determine board type... model: 17

这时就要更新一下了。
  如果是4b,更新的方法在:
http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/
有。
  按照它的方法,终端下命令行:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

即可。

如果非4b,也可以在那个网页里找相关的。

使用串口

  有时候单单用树莓派来开发一个机器人之类的东西会感觉效果不好,因为树莓派的硬件PWM只有一个,就是GPIO.1,其他的都只能用软件PWM,软件PWM效果不好(精确的不够高,而且还不稳定)。而如果用单片机来控制舵机、电机等设备,就会发现单片机的控制效果是真的好,一个单片机就可以发出几十路PWM信号,而且还都是硬件的。用单片机开发会有一个问题,很多智能算法用不了,API也不好调用,SDK就更不用说了。而树莓派调用API很方便,用curl就可以了,大不了C/C++里一个FILE *p = popen(“curl xxx”, “r”); fgets(result, resultSize, p); 就解决了,再不行就在树莓派里装个库。而单片机就没这么简单了。
  所以如果能够:树莓派负责软件,单片机负责硬件。效果就非常好了。要解决的其实就只是树莓派和单片机之间的通信问题。用串口通信就非常舒服了。
  树莓派有用来当串口的引脚,而且树莓派有wiringSerial.h这个头文件,串口通信基本上都已经封装得比较好了,所以树莓派只要把串口配置好了,串口通信就会像套接字一样简单。单片机的串口通信稍微复杂一点,这里不涉及,这篇文章是树莓派的配置。
  用串口不难,主要是配置比较坑。

测试串口是否配置好

  测试你的串口能不能用,可以先写一个简单的串口程序,然后把树莓派的引脚TXD和RXD短接起来(不知道哪个是TXD,哪个是RXD的,可以用gpio readall查看)。
  这是一个简单的串口程序:

//serial.cpp
#include <iostream>
#include <wiringSerial.h>
#include <pthread.h>

using namespace std;

void *onReadSerial(void *fd_)
{
	int fd =  *(int *)fd_;
	while(1)
	{
		int len = serialDataAvail(fd);
		if(len > 0)
		{
			cout<<"your send: ";
			for(int i=0; i<len; i++)
			{
				cout<<(char)serialGetchar(fd);
			}
			cout<<endl;
		}
	}
	return NULL;
}

int main()
{
	int fd = serialOpen("/dev/ttyAMA0", 115200);
	pthread_t readThread;
	pthread_create(&readThread, NULL, onReadSerial, &fd);
	char buff[256];
	while(1)
	{
		cin>>buff;
		serialPrintf(fd, "%s\r\n", buff);
	}
	return 0;
}

  编译方法:

g++ serial.cpp -o serial -lwiringPi -lpthread

  运行要加上sudo,程序运行的效果是:你输入什么,它就打印your send: 你的输入。如果没有打印出来,就是没配置好;如果打印出其他什么奇奇怪怪的东西出来,就是蓝牙没关(蓝牙没关有时候会打印一些奇怪的东西出来)。

串口配置方法

终端下命令行:

sudo nano /boot/config.txt

然后在文本最后添加一行(什么都不用管,就在最后添加一行):

dtoverlay=pi3-miniuart-bt

注意:"pi3-miniuart-bt"是在文件夹/boot/overlays中可以找到的。如果没有,你可以下载一个"pi3-miniuart-bt-overlay"文件并将其拷贝至/boot/overlays文件夹中,并且将加入的一行更改为:dtoverlay=pi3-miniuart-bt-overlay即可。

终端下命令行:

sudo nano /boot/cmdline.txt

然后把

rootwait

之前的东西给替换成:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes

然后重启。
重启后,终端下命令行:

ls -l /dev/*serial*

如果输出是:

lrwxrwxrwx 1 root root 7 5月  30 15:01 /dev/serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 5月  30 15:01 /dev/serial1 -> ttyS0

即配置成功。(当然,日期不用纠结)

蓝牙关闭方法

终端下命令行:

sudo systemctl disable hciuart
sudo nano /lib/systemd/system/hciuart.service

然后把ttyAMA0改为ttyS0,把serial0改为serial1。(如果本来就没出现ttyAMA0和serial0就不必纠结了)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值