使用Python编程与硬件相关

14

我开始对最近制作的一些小玩具编程感到有点无聊了,我希望能够开始编写并与硬件进行交互。

唯一的问题是,我主要是使用Python语言的人,没有学习或使用过其他语言。我是否仍然可以使用Python与硬件进行交互呢?

此外,我可以与哪些硬件进行交互?我没有东西可以使用,所以我需要购买一个套件之类的东西。有哪些廉价选项可供选择?

9个回答

14

在PC上与串口进行交互相当容易,有可用的Python Serial库。通过串口接口可以控制Roomba机器人。可能还有其他机器人,但这可能是一个简单、小步骤来让你开始。

就个人而言,我通过购买PIC编程器和制作一些简单的LED闪烁电路学到了很多。我进一步通过串口控制这些PIC,并后来使用USB(通过libusb)。那里有一个更大的学习曲线,因为您将不得不使用C或汇编语言对这些PIC进行编程,但一旦掌握了基础知识,就可以实现一些非常令人难以置信的结果。我警告你,一旦你意识到你可以构建多少酷炫的小玩意儿,你就会走上一个滑坡的道路 :-)


1
pySerial非常棒(并且令人耳目一新的跨平台);我一直在使用它与我的汽车中的ECU(嵌入式车载计算机,基本上是SuperH架构)通信,以执行闪存和日志记录,并且它表现得像个冠军。如果您正在使用没有本地串行端口的更现代硬件,则FTDI(http://www.ftdichip.com/)串行到USB设备非常方便;虽然您仍然可以使用pySerial与它们交流,但您也可以使用libftdi(http://www.intra2net.com/en/developer/libftdi/),其SWIG接口提供了一个稍微丰富的API。 - esm
1
对于微控制器的想法点赞。这是一个很好的方式,可以在一个仍然可管理的环境中从低级别开始。 - Marco van de Voort
你还可以使用USB串口转接器,甚至是USB微控制器,并且仍然可以像使用异步串行(EIA232)端口一样与它们通信。 - XTL

11

一定要看看 Arduino

  • 硬件设计是开源的,所以你甚至可以自己组装
  • 板子包括数字和模拟输入输出,因此很容易快速闪烁一些LED灯
  • 您可以用称为Wiring的“语言”对其进行编程,这个语言隐藏了通常在PIC上使用的C语言的许多复杂性

在PC端,您可以像上面提到的那样使用pySerial通过USB与板子通信。


+1:提到Arduino真是太好了。我之前一直在想它的名字,但就是想不起来。我经常琢磨着要试试玩一下呢 :-) - Jon Cage

5

新款树莓派设备拥有丰富的I/O接口,Python似乎是最常用的编程语言。


3

1
这方面有什么便宜的选项吗?购买手机可不便宜。 - Josh Hunt

3
您可以使用ctypes来与硬件进行交互。它允许您调用本地库,因此您基本上可以使用它来执行C语言可以执行的任何操作。当然,这是假设您希望通过运行Python的主机计算机与硬件进行交互。

我已经在几个项目中使用了ctypes:

我发现它通常很容易使用,但我已经知道C / C ++,这有所帮助。


+1 对于键盘LED和莫尔斯电码的想法赞同! - Mehdi Maghrouni

2

购买乐高Mindstorm套件。这个编程语言很容易上手,虽然不是Python,但非常接近。而且它们是真正的机器人,具有真正的执行器和传感器。


1
“便宜的选项”可能是相对的 :) - XTL

2
许多个人电脑仍然具有并行端口,并且存在一个Python模块用于与并行端口交互,尽管我没有使用过它。
并行端口可能是开始控制硬件的最简单方法,因为您可以将最简单的电子元件连接到它上面。只需一个LED就可以立即得到可见的东西。
然后,正如Jon Cage提到的那样,您可以获得一个Pic编程器。

+1:你说得没错,并口可能更容易入手。 - Jon Cage
我已经使用过它。请注意不要过载难以更换的端口。此外,USB并行端口通常不是通用的。它们被硬编码为驱动并行端口打印机。 - XTL

1
SNAP 无线节点位于 www.synapse-wireless.com,运行名为 SNAPpy 的 Python 子集。您可以在 SNAPpy 语言中使用 peek() 和 poke() 内置函数直接与芯片内部的硬件进行交互(例如 PWM)。SNAPpy 还具有 I2C、SPI 和串口的内置函数,因此您可以控制外部硬件。它还具有较低级别的输入/输出内置函数,如 readPin()、writePin() 和 readAdc()。像 EK2500 套件这样的东西可能是入门的好选择。另请参阅 forums.synapse-wireless.com 上的在线用户论坛。

我找到的唯一价格是$180。哎呀,即使对于一个开发套件来说也太贵了。 - XTL

0

我不确定是否有人提到过BASIC Stamp。虽然它的功能非常有限,但是它非常简单易用。他们还制造了一些其他处理器,但作为入门级别的设备,我认为这是一个很好的选择。

Arduino也是一个不错的选择,你可以在这个设备上获得更多的性价比。

如上所述,我开始使用PIC处理器 - 这并不是最容易的事情(或者说永远都不容易...哈哈 - 这是有争议的),但我对微控制器/硬件交互的工作原理有了很好的理解。

祝你好运!如果你有任何问题,请随时问我!


多年前我也从BASIC Stamp开始入门,但我认为它无法充分展示现代微控制器的能力。更不用说套件价格如此之高了! - Michael Molter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接