pikapython/document/7.Pika派开发板游玩指南,到手的开发板玩起来!.md

191 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pika派开发板游玩指南到手的开发板玩起来
今天我们不聊驱动开发还有架构原理这些令人头大的硬核内容我们就单纯的用Pika派开发板玩玩Python编程
在单片机上点亮一个“人生苦短我用Python”的成就
观看此篇文章的读者想必大部分手里已经有一块Pika派如果没有的话也可以去淘宝店铺搜索“皮卡派”就可以找到了~
开发板长下面这个样子板载一个STM32芯片型号是STM32G030上面有4个炫彩RGB和一个串口转USB芯片采用Type-C接口。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/193551_ac53c408_5521445.png "屏幕截图.png")
这个开发板由PikaScript项目官方支持持续滚动更新PikaScript的最新内核最新功能都可以在这个开发板上抢先体验到。
这个开发板也由项目官方适配了大量外设驱动、包括GPIO、TIME、ADC、IIC、LCD、KEY、PWM等模块的驱动都已经开发好可以直接用python进行编程。
## 如何给单片机下载Python程序
下载方法非常简单只需要连接上Type-C数据线就可以了。
然后我们点examples文件夹
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/200332_3e87979e_5521445.png "屏幕截图.png")
我们用一根USB数据线连接电脑和Pika派开发板就可以下载程序了。
下载程序的时候需要使用一个串口助手工具我们可以使用正点原子开发的XCOM助手在正点原子的论坛可以下载到。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/200618_b8f264a8_5521445.png "屏幕截图.png")
选择好COM口然后波特率选为115200再点打开串口这时候就和Pika派连接上了。
这时候直接发送一个Pthon脚本文件就可以给Pika派下载Python程序了。
为了验证下载能不能成功我们使用PikaScript源码仓库里面的示例Python脚本。
我们进入PikaScript的代码仓库
https://gitee.com/Lyon1998/pikascript
惯例点一个Star~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201054_c22a0714_5521445.png "屏幕截图.png")
然后我们点击examples文件夹里面放的就是可以运行的Python例程了~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201133_2caa690c_5521445.png "屏幕截图.png")
我们打开GPIO文件夹来点亮一下流水灯看看~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201304_ee6f19c7_5521445.png "屏幕截图.png")
GPIO文件夹里面的main.py就是GPIO的示例代码了
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201351_226525cc_5521445.png "屏幕截图.png")
我们可以点开main.py看看~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201416_4e812a19_5521445.png "屏幕截图.png")
先不解释里面的内容,我们直接下载这个脚本看看。
我们也在桌面新建一个main.py文件然后把这段代码复制进去。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201535_8f49da20_5521445.png "屏幕截图.png")
我们选择这个main.py文件
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201639_79a783b1_5521445.png "屏幕截图.png")
然后点击"发送文件", 就可以把脚本下载进去了!
我们可以看到[ OK ]: Programing ok!的提示,这就是说明下载成功了!
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201816_13337449_5521445.png "屏幕截图.png")
这时开发板上面的LED就会闪动起来
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/202935_f82345e6_5521445.png "屏幕截图.png")
恭喜你达成单片机玩Python的成就
## GPIO的脚本里写了什么?
下面我们来逐行解析一下GPIO的这个例程。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203322_8cbe563c_5521445.png "屏幕截图.png")
首先是第一行和第二行,这表示导入了两个模块,一个是```PikaStdLib```模块,一个是```STM32G0```模块。
PikaStdLib是PikaScript的标准库里面有一些系统的功能比如可以检查内存的占用。
第四行里面我们就新建了一个mem对象这个对象的类是PikaStdLib.MemChecker()。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203532_a3e2dc7b_5521445.png "屏幕截图.png")
这个类有max()方法和now()方法使用这两个方法就可以打印出当前PikaScript所使用的内存大小。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203657_3ef8a678_5521445.png "屏幕截图.png")
我们可以看看串口的打印输出可以看到最大的内存占用是1.51kB而当前的内存占用是0.61kB,是不是很小!
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203737_1509b9db_5521445.png "屏幕截图.png")
time对象是通过STM32G0的Time()类新建的,可以提供基本的延时功能。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203848_4a13cdf4_5521445.png "屏幕截图.png")
通过time.sleep_ms()方法就可以按毫秒进行延时了比如下面代码的作用就是延时500ms。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203938_62748bd5_5521445.png "屏幕截图.png")
io1就是我们今天的主角了这是一个GPIO对象是用STM32G0.GPIO()类新建的。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204024_6adc51e3_5521445.png "屏幕截图.png")
在新建了io1对象之后我们要给这个io进行初始化init()用于对象初始化在最前面使用然后setPin('PA8')表示使用PA8口setMode('out')表示使用输出模式而enable()表示启动io1的硬件low()将io1的电平拉低。
PA8上连接了Pika派上面的一个led灯只要控制PA8的电平就可以控制灯的亮灭了。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204104_1f08a3b3_5521445.png "屏幕截图.png")
而在程序的主循环里面对io1进行高低电平的切换就可以使LED闪动了~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204301_0ec427ea_5521445.png "屏幕截图.png")
## 其他的Python例程解读
我们再解读一下examples里面的其他例程比如这个ADC例程就是读取PA1管脚上面的模拟电压值然后打印出来~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204751_8bb53225_5521445.png "屏幕截图.png")
下面是串口的例程,功能是读取收到的两个字节,然后打印出来
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205006_0e0113df_5521445.png "屏幕截图.png")
再下面这个是PWM的例程可以指定管脚输出PWM波可以设置频率和占空比
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205127_5f60a8d7_5521445.png "屏幕截图.png")
再下面这个就是RGB的例程了~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205232_6de29e2f_5521445.png "屏幕截图.png")
这个例程可以驱动板载的4个RGB流水灯~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205338_ae2e2de2_5521445.png "屏幕截图.png")
还有一个LCD的例程可以在LCD上面显示一个小方块而你可以使用板载的四个按键控制小方块运动~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210940_f30be3d5_5521445.png "屏幕截图.png")
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/211210_43b35b56_5521445.png "屏幕截图.png")
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/211404_c89d9a17_5521445.png "屏幕截图.png")
当你熟悉了LCD驱动之后可以试试自己开发小游戏哦~
## 固件升级
Pika派的固件是滚动更新的会不断推出新的固件版本不断提供新的功能而有一些新的功能只有升级固件才能玩到所以学会升级固件也是很重要的~
升级固件也是使用串口就可以了在升级时我们需要用bsp编译出一个固件的.bin文件如果你是一个动手能力很强的DIY爱好者可以自己编译固件编译的方法在视频里面~
https://www.bilibili.com/video/BV1c44y1v7Jd
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205647_0d32ad97_5521445.png "屏幕截图.png")
如果你想用现成的固件也可以直接下载编译好的~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210126_d14c9754_5521445.png "屏幕截图.png")
点击下载就可以获得最新的固件了~
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210155_5248a47c_5521445.png "屏幕截图.png")
下面需要让pika派进入升级模式我们按住开发板上面的SW0键同时按下RST键就可以进入升级模式了。
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210422_3acb9ed0_5521445.png "屏幕截图.png")
在升级模式下,我们可以看到串口的提示信息
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210526_b7b28342_5521445.png "屏幕截图.png")
然后我们用串口助手选择刚才下载的stm32g030c8.bin文件通过串口发送。
识别到固件后会显示Reciving....
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210611_2fd707d0_5521445.png "屏幕截图.png")
发送完毕后再按一下RST键重启就完成升级了