树莓派论坛

 找回密码
 立即注册

新手的求助.希望大家能帮下我.

zhanran00 发表于 2012-9-19 20:46:16 | 显示全部楼层 |阅读模式
高中生一名.前几天无意间看见raspberry pi .就被吸引到这个论坛来了.平时挺喜欢捣鼓的.看了u大做的小车也真的很喜欢.u大也说平时和朋友的孩子一起做小车.于是下定决心要买一块.
想着是主要是相当开发板用.也学习下linux的使用.
在windows平台上c语言的嵌入开发教程很多.我之前看教程用80c51弄了跑马灯之类的.也基本能搞明白是单片机里面驱动引脚.可是看了很多u大的中级教程.一头雾水.有没有像raspberry pi guide 那本书一样的比较基础一点的.
所以恳请大家能推荐本 python的书或教程.好像python是raspberry主要编程语言.(但是好像学会了基本的phthon也不会用来控制gpio哎.)
还有就是推荐本arm 嵌入式开发的书或者教程.raspberry不是arm么.所以想知道原理..
从网上看raspberry pi guide 这书很棒.不过是英文的.中文的有没有那么对口的书.
希望大家能帮帮我..也希望u大能收我为徒.我真的很想学习电子开发.
树老大 发表于 2012-9-19 22:50:22 | 显示全部楼层
鼓励鼓励,希望懂这些方面的,给LZ一些建议。。。当个好人。
topzdx 发表于 2012-9-20 10:22:31 | 显示全部楼层
python 是脚本语言。应用上需要很多库。没有书的话看一眼维基百科也是好的。
HELLO WORLD 这样的打印(输出)语句很好懂的。
http://zh.wikipedia.org/wiki/Python#Python.E8.AA.9E.E6.B3.95

看下U版的GPIO库安装教程(好象是4步)
先把这些东东装好,系统里软件(库)齐了就有的用了。

再看U版的点亮LED教程。把软件(程序)下载解压。
建议先搞一个LED。用个面包板或自已焊一下,检查一下不要短路或断路。
这里简化一下U版的blink.py (闪灯程序),并在每一行后加点注释
(实际上很简单,不加注释也很好懂,有时加多了看起来乱)


python 中 使用 # 作为注释语句的开头 (也可放在语句后面)

from time import sleep            # 导入时间(休眠相关)的库
import RPi.GPIO as GPIO      # 导入GPIO 控制库
GPIO.setup(13, GPIO.OUT)   # 指定树莓派GPIO第13脚为输出模式(你才能控制外面的LED)

while 1:                                   # 死循环,反复执行,不然只执行一次,没注意会以为程序不对
     GPIO.output(13, False)     # GPIO13 脚 OFF,(低电平)
     sleep(1)                             # 休眠一秒(保持 GPIO13脚的低电平状态 , HOLD 1秒)
     GPIO.output(13, True)      # GPIO 13 脚 ON,(高电平)
     sleep(1)                            # 休眠一秒(保持 GPIO13脚的高电平状态 , HOLD 1秒)

如此不断重复。要想2秒变一次,就用 sleep(2)
topzdx 发表于 2012-9-20 10:25:20 | 显示全部楼层
要想控制更多的脚,如15脚。
在循环前面加上初始化15脚语句:
GPIO.setup(15, GPIO.OUT)

这次把循环写成:

while 1:
     GPIO.output(13, False)
     GPIO.output(15, True)

     sleep(1)

     GPIO.output(13, True)
     GPIO.output(15, False)

     sleep(1)

看下是什么效果......
偶从没用过Python, 说的不对的大家指正。
楼主重要的是不断尝试。 网上资料很多,有的不一定对,或者时过境迁(API改变了)
要多查资料,多练习。高手都很忙,指望别人用大把时间教你是不可能的。
求人不如求已。在实践中碰到问题了让人指点一下会记得牢。以下省略若干字......

还有,GPIO的脚不能错,LED的管脚是有方向的,这些东西一定要搞清。错了又不知道怎样查就麻烦了。
ukonline2000 发表于 2012-9-20 10:28:56 | 显示全部楼层
树莓派的GPIO控制目前看,主要是用到C语言和Python语言,C语言的书籍就太多了,普通大学也学过我就不多说了,说说Python吧,其实我也是懂皮毛而已,我可以推荐几本书给你,一会我发个帖子,你可以下载看看,几本很不错的入门到深入的书籍
ukonline2000 发表于 2012-9-20 10:38:00 | 显示全部楼层
你可以下载python的相关书籍学习一下
http://www.shumeipai.net/read.php?tid-911.html
zhanran00  楼主| 发表于 2012-9-20 19:05:55 | 显示全部楼层

回 ukonline2000 的帖子

ukonline2000:树莓派的GPIO控制目前看,主要是用到C语言和Python语言,C语言的书籍就太多了,普通大学也学过我就不多说了,说说Python吧,其实我也是懂皮毛而已,我可以推荐几本书给你,一会我发个帖子,你可以下载看看,几本很不错的入门到深入的书籍 (2012-09-20 10:28)
谢谢你了.方便大家了.硬件方面有没有推荐的书籍?
geraintmoore 发表于 2012-9-20 22:16:15 | 显示全部楼层
我也是才学习嵌入式不久。接触8051、arm之前一直玩网页设计和cgi(python写后台)。先学习的python然后才发现这个语言还是非常强大的。不过python常被用来作快速开发和“胶水”(因为开发速度快,而且接口灵活)。
看LZ的描述,我觉得LZ在嵌入式方面有一点点着急了。
8bit MCU (8051)和一些低端32bit MCU都是没有类似于Pi的linux 系统的。即便是有RTOS ucLinux,这些系统也与常见的linux大不相同。简单的讲,这些是精简的OS,只有系统的内核,你要运行的程序需要和内核一起编译后运行。
举例说明:
同样驱动LED跑马灯。你在8051上面做的就是在开发驱动程序,指挥硬件操作LED。而在Pi这个级别的SOC上面,你做的是写一段程序,告诉操作系统(linux)指挥硬件操作LED,驱动程序实际上在Pi的系统里面早就写好了。
明白了没?
就是编程的对象不同,在Pi上面用Python写的应该算不上是纯粹的硬件开发,而只是一个软件应用。更像是给自己的手机写一个小游戏。就像是换了一台小号的PC,但还是在写PC程序。
在我看来,Raspberry Pi的定位非常准确,就是用来普及计算机教育的廉价实验器材。不是不能,而是,不大适合用来学习嵌入式开发。因为Pi与普通PC最大的差异就是个头。而且BroadCom可不一定允许RPi将芯片的开发信息公布出来。想象一下,你根本不知除了板子上接口之外的那上百根针脚干什么去了。离开了linux,这块芯片能做什么?
个人认为,嵌入式开发一定少不了最底层的部分--干苦力活的,比如8bit的MCU。为什么PC能力强却很少听说PC主板上面有预留的GPIO的?SPI、IIC总线接口都很罕见?因为这些“外联”工作都被MCU做好了,PC只需要用RS232(现在用USB的多了,但串口还是非常耗用的)把数据采集回来作处理,然后再把指令发出去就可以了。再强的CPU都需要有这些助手才能显示出自己的能力。
目前8bitMCU的市场占有率还是相当高的。身边很多机器、设备的”大脑“还停留在8051的时代。雷磁的pH计,里面有ATMEL的AVR作处理器。Eppendrof的桌面高速冷冻离心机还在用atmel的8位机。所以,ARM只是炒得很火,还没有能够在实际应用中完全取代成熟的8bitMCU。
不过,话说回来。上面的一大堆都是偏硬件开发的。针对手机等移动平台编写的程序应该也算作是嵌入式开发吧。这方面的学习用Pi确实是很恰当。相信这也是为什么QT、 android要附体ARM的原因了——嵌入式应用需要一个漂亮的交互界面呗。WinCE太丑陋了……
偏软还是偏硬,相信LZ自有定夺。
窃以为不要迷信python,在寸”土“寸金的嵌入式领域,C才是王道。为什么i设备总是比其他配置更高的竞争者有更好的用户体验(iphone VS Android)?因为Android用的是Java,而iOS用的是C的超集Objective-C(片面观点,说笑的)。
整理一下我的观点:Pi适合作嵌入式软件开发。嵌入式的路很宽,怎么走由自己。
topzdx 发表于 2012-9-20 23:08:46 | 显示全部楼层

回 geraintmoore 的帖子

geraintmoore:我也是才学习嵌入式不久。接触8051、arm之前一直玩网页设计和cgi(python写后台)。先学习的python然后才发现这个语言还是非常强大的。不过python常被用来作快速开发和“胶水”(因为开发速度快,而且接口灵活)。
看LZ的描述,我觉得LZ在嵌入式方面有一点点着急了。
8bit MCU (8 .. (2012-09-20 22:16)
楼上说的很明白,强烈支持.

Python 在PI上的GPIO 驱动语句,有点象搭积木,先控制起来LED有个感性认识,
(基本没有发挥Python 的强大功能.)

有兴趣了才容易入门.
外围数字电路等部分有很多要学,看任何一本MCU讲外设驱动的书都行,找深入浅出的.

有人从8位机向ARM靠,先用C,偏硬。
有人从瘟到死向智能手机,安桌,LINUX,ARM靠,用Python,Lua等,偏软。
走哪条路要看个人的底子和境遇,很多人从PI 才开始摸LINUX,不要说外围电路了,有的人可能还没有电烙铁,不要说万用表了。


楼上估计是偏硬的,呵呵。
topzdx 发表于 2012-9-20 23:42:10 | 显示全部楼层

回 geraintmoore 的帖子

geraintmoore:我也是才学习嵌入式不久。接触8051、arm之前一直玩网页设计和cgi(python写后台)。先学习的python然后才发现这个语言还是非常强大的。不过python常被用来作快速开发和“胶水”(因为开发速度快,而且接口灵活)。
看LZ的描述,我觉得LZ在嵌入式方面有一点点着急了。
8bit MCU (8 .. (2012-09-20 22:16) 

工控板有没看过? X86的 3寸板,5寸板,PC104 这些都是工业用的,平时贵而不太在DIY市场看到。
属于PC类,但串口之 外很多有GPIO。I2C抗干扰和通讯距离都不行,一般工业上不太用。工控板要注意应用的是CAN总线接口。
RS485等速度 太慢,技术老化,USB在工业上好象还有点.....

民用的主板等了很久,只有INTEL的DN2800MT 引起偶的注意,可惜显卡驱动不给力,不开源,3D支持不行...
(这个是外接12V笔记本电源,是少数不用风扇散热的民用主板,有点工控的意思。)
只是170x170板子太大,基本没有适合嵌入的地方。
个人希望看到PICO-ITX这样100x72 或更小的板子,同面积下长一点更方便放入宽度有限的地方(不要太方)

还是ARM的能耗低,对电池移动的应用比较合适。 嵌入式对LINUX要求低,小系统象TINYCORE 就行,有的不要XWINDOW。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )