HaaS100 Python应用入门

HaaS100 Python应用入门

1、前言

Python 语言的是一款非常容易使用的解释性语言,它的主要特点如下:

  • 易学易用
  • 可扩展可移植
  • 丰富的三方库

正是由于以上这些特点,使得python在一些逻辑简单,功能复杂的场景应用非常广泛。近几年,随着人工智能的飞速发展,Python 的优点得到的充分的体现,因此成为了AI开发的首选语言。

MicroPython(简称mpy)在保留了python语言主要特性的基础上,他还对嵌入式系统的底层做了非常不错的封装,它的特点如下:

  • 沿用python语法和基本数据结构,保持易学易用性
  • 提供基于嵌入式系统的硬件功能库封装,让嵌入式开发简单便捷

今天要介绍的是如何使用micropython 在HaaS100 上实现跑马灯功能

2、动态效果图

开机启动交互式mpy如下图

HaaS100 Python应用入门

 

跑马灯效果如下图

HaaS100 Python应用入门

 

3、代码清单

目前HaaS100 上面一共内置了六个led 灯,电源指示灯默认开机常亮,跑马灯程序是基于剩下五个灯进行的,要实现这个功能,只需要大概十行的Python代码即可

# coding=utf-8
# This is a sample Python script.
import utime
from haascv import driver
GPIO = driver.gpio()
leds=(34,35,36,40,41)
print("*****micropython start led test******")
for i in range(10):
    for led in leds:
        GPIO.open(led, 5, 0)
        GPIO.write(0)
        utime.sleep_ms(100)
        GPIO.write(1)
        utime.sleep_ms(100)
        GPIO.close()
print("*****micropython end led test******")

4、物品清单

4.1、硬件

  1. HaaS100 开发板一块
  2. 电源一个
  3. micro usb 一个

4.2、软件及工具

  1. 最新的HaaS100 开源代码
  2. 串口工具

5、实现方法

我们提供了两种方式:

  • 交互式python 方式
  • 执行文件的方式

这两种方式基本流程一致,系统启动---->应用启动---->初始化python---->

只有最后一步不一样,第一种是启动一个交互式的python环境,支持动态输出python命令执行,第二种是直接运行一个指定的python工程文件。

因此我们重点看下最后一步是如何实现的。

5.1、交互式

 

关于HaaS100 的详细介绍可以参考文章:HaaS100快速开始

在下载了HaaS100 最新的开源代码以后 ,进去application/example 目录,可以看到所有关于micropython 的demo 工程: micropython_xxxx_demo

我们以micropython_repl_demo 为例,介绍下如何基于HaaS100 启动一个交互式的micropython

 

5.1.1、编译

aos make micropython_repl_demo@haas100 -c config

aos make

编译完成以后,在 out/micropython_repl_demo@haas100/binary/ 目录,会生成一个 micropython_repl_demo@haas100.bin

5.1.2、烧录

如果是windows 电脑,编译完成以后,按照HaaS100快速开始 文档,烧录新的micropython_repl_demo@haas100.bin 文件即可。

如果是Mac 电脑可以按照如下文档进行烧录

烧录之前,先确保机器开机,并通过usb 连接Mac 电脑。

  • 将附件中的aos_burn.zip解压
  • 将micropython_repl_demo@haas100.bin 拷贝到aos_burn 目录
  • 执行 python flash_program.py --bin=./micropython_repl_demo@haas100.bin 进行烧录

注意事项:

  • sudo pip install pyserial,确保电脑安装了pyserial
  • 烧录过程之前,确保aos_burn 目录中.config_burn 中配置的串口路径无误,并且没有被其它串口程序占用

5.1.3、开启MicroPython之旅

在机器烧录完成以后,会自动开机,开机默认会启动之前烧录进去的micropython_repl_demo@haas100.bin文件。打开串口工具,选择对应的串口设备,设置波特率为1500000.启动成功的话你看到的界面如下:

接着,我们输入print('hello-world') 就能看到相应的打印

HaaS100 默认有6 个led 灯,电源灯是常亮的,我们可以通过依次输入如下代码,尝试通过micropython点亮一个led灯。或者如下图所示,使用SerialPortUtility 直接将全部代码粘贴到输入框中,然后回车,点击发送即可

from haascv import driver
GPIO = driver.gpio()
led = 34
GPIO.open(led, 5, 0)
GPIO.write(0)

注意事项:

  1. Ctrl +d 退出交互式模式
  2. Ctrl +a  加上Ctrl + q 退出串口

以上代码是点亮单个led灯,如果需要点亮多个led,请参照代码清单中的跑马灯代码,将代码通过串口工具(推荐使用SerialPortUtility,一次性全部拷贝)输入到机器,就跑马灯效果

5.2、执行Python文件

在开始之前,务必保证按照 HaaS100快速开始 搭建好helloworld_demo 的开发和烧录环境。

要创建一个自己工程有两个方法:

  1. 基于application/example/helloworld_demo 的 helloworld_demo ,增加自己的工程文件,并参数运行
  2. 复制一份helloworld_demo程序,重新命名为一个新的工程,并修改相关Config.in 和 aos.mk 文件

本文中的led_demo 采取的是第二种方法,具体代码位置位于application/example/micropython_led_demo 目录

接下来我们来看下led_demo 这个工程是如何组织工作的?

5.2.1、工程剖析

跑马灯程序的工程目录结构如下:

  • aos.mk 控制了需要链接的micropython 的库和头文件
NAME := led_demo
$(NAME)_MBINS_TYPE := app
$(NAME)_VERSION := 1.0.1
$(NAME)_SUMMARY := led_demo
$(NAME)_SOURCES := maintask.c appdemo.c
$(NAME)_INCLUDES += ../../../components/haascv
$(NAME)_COMPONENTS += osal_aos
$(NAME)_COMPONENTS += littlefs
$(NAME)_COMPONENTS += haascv
GLOBAL_DEFINES += AOS_NO_WIFI
  • appdemo.c 是程序的入口,负责启动python 工程文件led_test.py
#include "haascv_main.h"
int application_start(int argc, char *argv[])
{
    int count = 0;
    //arg_num 为传入参数的个数
    int arg_num =  2 ;
    //参数列表,第一个参数为默认参数,第二个参数是需要执行的文件绝对路径
    char* argvs[] = {"micropython","/data/led_test.py"} ;
    printf("led_demo start\r\n");
    //micropython 初始化
    mpy_init();
    //运行python 文件
    mpy_run(arg_num,argvs);
    printf("led_demo end\r\n");
}

 

  • res 目录是工程的资源文件目录,目录里面的文件会通过父目录的cp_py_to_data.sh 拷贝到platform/mcu/haas1000/prebuild/data/ 目录,对应到机器的/data/led_test.py, led_test.py 里面的内容就是文章最前面的python代码。python文件最终编译到了platform/mcu/haas1000/release/write_flash_tool/ota_bin/littlefs.bin 中

5.2.2、编译

切换到HaaS100 代码根目录,编译之前确保res 中的资源文件已经拷贝到了platform/mcu/haas1000/prebuild/data/  目录

aos make micropython_led_demo
aos make

编译完成以后,会在out/micropython_led_demo@haas100/binary 目录生成一个micropython_led_demo@haas100.bin 文件

5.2.3、烧录

由于这个工程同时更新了两个bin 文件:micropython_led_demo@haas100.bin和littlefs.bin 文件,因此烧录的时候也需要同时烧录这两个文件

Windows 电脑烧录请参考 HaaS100快速开始

Mac 电脑烧录请参考交互式mpy中的烧录环节

烧录命令替换为  :

python flash_program.py --bin=./micropython_led_demo@haas100.bin --bin=./littlefs.bin#0xB32000

烧录完成以后,机器自动开机,就能看到以上效果了

 

6、写在最后

MicroPython 继承了Python易学易用的特点,同时提供了基于嵌入式硬件的基础库封装,让开发者可以很方便的通过交互式的环境,实时进行嵌入式开发,让嵌入式开发也变得简单方便。

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号

HaaS100 Python应用入门

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

 

上一篇:扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)


下一篇:HaaS100开发调试系列 之 遇到内存问题怎么解