目录

pc端通过python与arduino实现通信

pc端通过python与arduino实现通信

最近想做个项目,利用python抓取网页信息数据,然后根据数据分析来控制arduino实现相应的动作操作,首先需要实现的是电脑端与arduino的通信。

那么我们还是从最简单的点灯,实现电脑端与arduino的通信,控制LED灯一亮一灭。

一、软件安装

首先我们需要在电脑上安装python以及pycharm,相应的教程可以网上查找。

pycharm安装可参考:

https://i-blog.csdnimg.cn/blog_migrate/c56dd3e25acea201e41d405154e27790.png

安装完成后,最重要的一步是需要在pycharm上配置python运行环境。

https://i-blog.csdnimg.cn/blog_migrate/392adfe5b31cf1885aca91f2e4f0b0df.png

https://i-blog.csdnimg.cn/blog_migrate/7559215990c3db8848b3b9ee76e56aa1.png

找到python.exe文件。

https://i-blog.csdnimg.cn/blog_migrate/fc94d20bc363e4877c275a52efed54d8.png

二、模块安装

我们运行主要是通信,需要安装serial,但是python对应的模块是pyserial。在pycharm软件 File-settings 中找到 Project Interpreter ,然后 双击pip ,在弹出栏里面搜索 pyserial ,找到后选中,点击 Install package 即可

https://i-blog.csdnimg.cn/blog_migrate/2166d12d6809698fe38d9da59fcfa214.png

三、通信测试

相应的软件环境已经准备完成,接下来我们来写一段程序,测试下串口通信功能。

新建一个文件,输入下面代码:如果没有相应python基础可上网自学

主要功能:

1、检测是否有可用端口

2、如果有可用端口,循环发送字符o和c,间隔1秒

# coding:utf-8

import serial.tools.list_ports
import time
plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
print("没有发现端口!")
else:
plist_0 = list(plist[0])
serialName = plist_0[0]
serialFd = serial.Serial(serialName, 9600, timeout=60)
print("可用端口名>>>", serialFd.name)
while 1:
serialFd.write("o".encode())
time.sleep(1)
serialFd.write("c.encode())
time.sleep(1)

用 arduionIDE 给 arduino 控制板上传接收程序:当收到字符 o(open 的缩写)LED 灯亮,收到字符 c(close 的缩写)LED 灯灭

const int pinNumber = 11; //因为电路连接中用的是 11 好管脚作为输出

//这里就是定义 开和关
void setup(){ //arduino 程序必须有的函数,用作初始化,设置管脚,调用库等等
Serial.begin(9600); //这里要和树莓派中串口波特率一致
pinMode(pinNumber,OUTPUT); //将 10 号管脚状态设置为输出状态
}
void loop() {
char val = Serial.read();
if(val == 'o')
{
digitalWrite(pinNumber,HIGH);
}
if(val == 'c')
{
digitalWrite(pinNumber,LOW);
}
}

上传成功后,运行代码

https://i-blog.csdnimg.cn/blog_migrate/e177884fcb2faaabec58a7ae93b01f60.png

然后就可以看到 LED 灯,一闪一闪了,现在通信部分原理跑通了,接下来就是爬取网络相应信息,做完处理后,给 arduino 发送控制信号即可

更多交流可加微信

https://i-blog.csdnimg.cn/blog_migrate/d282277c54bcde829839b0f8e30f4341.png