树莓派与Arduino串口通信

摘要:
看到ttyACM0表示他们可以通信。接下来,测试代码。Arduino代码:void setup(){Serial.begin;//9600bps}void loop(){if{ifSerial.println;}}通过python IDE将上述代码下载到arduino,然后链接到树莓派USB。覆盆子馅饼的代码:importserial#importserialmoduleser=serial。序列号opennamedport9600,1timeot#try和deceptstructurereexceptionhandlertry:while1:ser。写入;#writeastringtoportresponse=ser。readall();#从端口打印响应读取;除了:ser。close();我把上面的代码保存在树莓派中,作为一种交流。py文件。

咳,时隔多月又回到了熟悉的博客园。

从现在开始重新去培养写博客的习惯。

主要是用于科研技术方面的,去记录一些我的学习和思考。

会把问题尽量的具体化,新手化

一是记录方便回忆,二是梳理,三也是希望为遇到相关问题的朋友提供多多少少的借鉴和帮助吧

回归正题,如何实现树莓派与Arduino串口通信

首先是接线方式

一、树莓派与arduino通过USB进行通信

1、将树莓派与arduino通过usb线进行连接

树莓派与Arduino串口通信第1张

2、在树莓派终端输入 ls /dev/tty*查看两者连接端口的名字。查看有没有ttyACM0这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了 接下来上测试代码。

树莓派与Arduino串口通信第2张

3、编写树莓派与arduino通信代码。

arduino代码:

void setup()
{
Serial.begin(9600); // 9600 bps
}
void loop()
{
if ( Serial.available())
{
if('s' == Serial.read())
Serial.println("Hello Raspberry,I am Arduino.");
}
}

把上面代码通过python IDE下载到arduino中,然后再再与树莓派usb链接。

树莓派代码:

import serial  #import serial module
ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1); #open named port at 9600,1s timeot

#try and exceptstructure are exception handler
try:
while 1:
ser.write('s');#writ a string to port
response = ser.readall();#read a string from port
print response;
except:
ser.close();

我这里把上面代码在树莓派中保存为communication.py文件。

2、在树莓派终端输入sudo python communication.py运行程序。

显示结果:

树莓派与Arduino串口通信第3张

此图是两者之间的通信结果:树莓派向arduino发送一个字符‘s’,arduino向树莓派回复字符串“hello raspberry,i am arduino”。

二、树莓派与arduino通过GPIO引脚通信

1、连接方式:

树莓派的RX    -----   arduino的TX

树莓派的TX    -----   arduino的RX

树莓派的GND   -----   arduino的GND

2、修改树莓派配置文件(要看详细的请移步这里http://www.eeboard.com/bbs/thread-8574-1-1.html)

(1)修改cmdline.txt
输入

  1. sudo nano /boot/cmdline.txt

复制代码

看到

  1. dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

复制代码

把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200删除
变成这样

  1. dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

复制代码

ctrl+x 按Y保存退出
2.修改inittab 然后禁止掉从串口登录的功能,
输入

  1. sudo nano /etc/inittab

复制代码

找到

  1. T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

复制代码

这一行 在前面加个#注释掉这一行变成

  1. #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

复制代码

ctrl+x 按Y保存退出
然后重启树莓派,之后树莓派的pin8(GPIO14) pin10(GPIO15)这两个口就可以当成普通的串口来用了 现在你可以像使用一个普通串口那样使用/dev/ttyAMA0了。

3、实验代码及效果

只需要将上面USB通信树莓派上的代码ser = serial.Serial('/dev/ttyACM1', 9600,timeout=1); 中的ttyACM1改成ttyAMA0即可。

树莓派与Arduino串口通信第4张

树莓派与Arduino串口通信第5张

免责声明:文章转载自《树莓派与Arduino串口通信》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇delphi 各新版本特性收集VMware 获取该虚拟机的所有权失败下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用 linux kernel +busybox 定制linux系统

目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序: grub-> bzimage > initrd > init > chroot sbin/init (从内存镜像转换成rootfs...

gitlab介绍与操作

Gitlab GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。 与 Github 类似,GitLab 能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访 问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(W...

树莓派3B+(一)

一:安装raspbian系统   介绍:Raspbian是为树莓派设计,基于Debian的操作系统,由一个小团队开发。其不隶属于树莓派基金会,但被列为官方支持的操作系统。   下载地址:https://www.raspberrypi.org/downloads/ (建议用IDM下会快一点)   IDM破解 永久有效链接: https://pan.baidu...

Linux下对LVM逻辑卷分区大小调整 [针对xfs和ext4文件系统]

当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间。如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容!不同文件系统类型所对应的创建、检查、调整命令不同,下面就针对xfs和ext2/3/4文件系统的lvm分区空间的扩容和缩容的...

android studio多渠道多包名多apk打包

转自 利用 Android Studio 和 Gradle 打包多版本APK 搬砖的道路上,经常会有各种不同的需求,比如今天就碰到过一个打包版本的apk的要求, 比如一个apk给多个客户使用,如张三公司 ,李四集团,而我们的服务端的api域名以及处理方式也不一样, 苦逼的方式是一个一个修改包名,代码,但如果我们使用了Android Studio 和 Gra...

Bootargs参数详解

Bootargs参数详解 U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。 一:bootcmd bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数,而且在bootcmd中可以使用调用的方式,方便修改。  eg:setenv bo...