[实践OK]手把手教你树莓派与Arduino Uno的对接(USB及GPIO方式)

jackxiang 2015-5-3 12:32 | |
背景:想在树莓派上插上Arduion Uno的串口,进而两者进行通讯,后根据数据进一步判断并通过另一个Raspberry Pi的usb接口接上SIM900打电话的功能。
实践OK,如下:

输入minicom后,想退出怎么办,帮助:Ctrl+a,退出:x(eXit and reset.....X ),清屏:c(Clear Screen.......C)

用c语言读取的代码如下:
http://jackxiang.com/post/8003/

1.安装python(安装过的请跳到下一步):  sudo aptitude install python-dev
2.安装python的GPIO模块,用于控制LED、电机等(安装过的请跳到下一步)
  命令行下 输入(一行一个命令)
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.3.1a.tar.gz    (下载GPIO库)
  tar xvzf RPi.GPIO-0.3.1a.tar.gz  (tar解压)
  cd RPi.GPIO-0.3.1a               (进入解压后的文件夹)
  sudo python setup.py install     (安装GPIO库文件)
复制代码 要是看不懂上面的两点请移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=939

  3.安装serial,用于串口通信及USB通信:
sudo apt-get install python-serial
复制代码 4.当然你要是想在树莓派装串口调试工具就装:
sudo apt-get install minicom  
配置minicom:
sudo minicom -s    
启动出现配置菜单:选serial port setup
进入串口配置
输入A 配置串口驱动为/dev/ttyAMA0
输入E 配置速率为9600 8N1
输入F 将 Hardware Flow Control 设 为 NO
回车 退出      
由于我们使用minicom作为超级终端控制路由器等设备, 而不是控制modem, 所以需要修改Modem and dialing, 将Init string, Reset string, Hang-up string设置为空. 设置完成后选择Save setup as dfl将当前设置保存为默认设置.    在配置菜单 选Save setup as df1保存(一定要记得这一步)   选Exit退出下次在输入minicon 即可直接进入。
命令minicom是进入串口超级终端画面,而minicom -s为配置minicom。说明/dev/ttyAMA0 对应为串口0 为你连接开发板的端口
。(如何更详细使用说明移步到这http://www.shumeipai.net/forum.php?mod=viewthread&tid=550)

接下来测一下环境是否都OK
sudo nano test.py
或用xwindow下用python IDE打开一个空的文件
    输入内容
import serial
import RPi.GPIO
保存退出,
    然后运行代码:
python test.py
(如果没有报错那就说明RPi.GPIO与serial两个库安装成功)上面环境说完了,重点部份来了

USB对接方式:
  1.插上两个Arduion Uno与树莓派 的USB 然后 在树莓派输入:
ls /dev/tty*
查看有没有ttyACM0 这个文件(注只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的) 最新的系统一般都会自动生成。看到ttyACMO就说明二者可以通讯了 接下来上测试代码
  Arduino代码:
  byte number = 0;
  void setup(){
     Serial.begin(9600);
  }

  void loop(){
    if (Serial.available())  {
       number = Serial.read();
       Serial.print("character recieved: ");
       Serial.println(number, DEC);
   }
   }
先把上面的代码下载的Arduino上然后再把两者USB互接

树莓派python代码:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
ser.open()

ser.write("testing")
try:
    while 1:
             response = ser.readline()
             print response
except KeyboardInterrupt:
    ser.close()
保存xxx.py 退出

注:树莓派下的serial与GPIO库都要在root帐户下才能运行
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法:
http://lovesoo.org/python-script-error-attributeerror-module-object-has-no-attribute-solve-method.html

然后运行树莓派代码 python xxx.py(这里的xxx就是你保存的树莓派代码)看到
character recieved: 116
character recieved: 101
character recieved: 115
...
character recieved: 103
说明两者USB通迅成功了

摘自:http://forum.eepw.com.cn/thread/258770/1

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/8003/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2015-5-3 18:50
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]