树莓派与arduino通信
一、安装树莓派及arduino开发环境
搭建树莓派串口通信开发环境
(1)安装Python:
sudo apt-get update
sudo apt-get install python
(2)安装python的GPIO模块,用于控制LED、电机等: wget https://sourceforge.NET/projects/raspberry-gpio-python/files/RPi.GPIO-0.6.2.tar.gz (下载GPIO库,因为更新,具体参考官网网址变动)
tar xvzf RPi.GPIO-0.6.2.tar.gz (tar解压)
cdRPi.GPIO-0.6.2 (进入解压后的文件夹)
sudo python setup.py install (安装GPIO库文件)
(3)安装serial,用于串口通信及USB通信:
sudo apt-get install python-serial
(4)检验前三步环境安装是否正确
#用nano编辑器编辑一个test文件
sudo nano test.py
#在test.py文件中写入下面两行代码
import serial
import RPi.GPIO
#运行python test.py语句,如果没有报错说明树莓派开发环境搭建正确。
到此树莓派及arduino通信开发环境搭建完毕,下面讲解具体通信实现。
二、树莓派与arduino通过USB进行通信
1、将树莓派与arduino通过usb线进行连接
2、在树莓派终端输入 ls /dev/tty*查看两者连接端口的名字。查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACM0就说明二者可以通讯了。
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发送一个字符‘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 输入
sudo nano /boot/cmdline.txt
看到
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 删除 变成这样
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
ctrl+x 按Y保存退出 2.修改inittab 然后禁止掉从串口登录的功能, 输入
sudo nano /etc/inittab
找到
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
这一行 在前面加个#注释掉这一行变成
#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即可。
- Spring @RequestBody 传递 List/Map 参数
- win7怎么去除快捷方式的小箭头
- 零基础学编程015:画些有趣的图案
- Spring boot with Thymeleaf
- 零基础学编程014:小海龟做画
- Springboot @RequestBody 传递 List
- 零基础学编程013:import让你飞起来
- 【教程】利用Tensorflow目标检测API确定图像中目标的位置
- 零基础学编程012:画出复利曲线图
- OpenAI发布高度优化的GPU计算内核—块稀疏GPU内核
- SQL SERVER 原来还可以这样玩 FOR XML PATH
- 零基础学编程011:复利数据表问题(总结)
- 一个小程序引发的思考
- 深入内核:DUMP Block的数据读取与脏数据写入影响
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 教你用云开发打造一个双端自动发布的博客体系(上)
- [Oracle概念]密码文件
- [Oracle 11g RAC安装]OPENFILER配置
- [Oracle 11g RAC安装]RAC环境搭建
- [Oracle 11g RAC安装]Grid安装
- [Oracle 11g RAC安装]Oracle安装
- [Oracle 11g RAC安装]UDEV设置
- Oracle参数(Undo_Retention)
- Oracle基本概念(Undo空间)
- [AWR报告]Buffer Hit %
- [AWR报告]Library Hit %
- [Oracle 9i安装]Redhat 4.8的配置
- [Oracle 9i安装]Oracle软件的安装
- [AWR报告]Latch Hit %
- [Python运维]Python3.6的安装