OpenHarmony开源社区
直播中

陈星闽

8年用户 619经验值
擅长:嵌入式技术
私信 关注

【小河狸创客格物开发板试用体验】+ 熟悉硬件加micropython

本帖最后由 cxmin303 于 2022-11-26 23:19 编辑

这次的试用比较新颖,是一款面向幼儿编程的开发板,收到板子后还是很惊喜的,首先包装很结实,外观也很漂亮。打开后可以找到很多积木,之前拼过类似的积木,所以还是比较熟悉的。
微信图片_20221124235216.jpg

除了积木之外,真正用来开发的就是以下几个模块,可以看到包括一个格物板本板、一个360度舵机、一个180度舵机、两个红外测距、以及一根USB-TPYEC线,用于供电与串口下载,4根白色板间互联线,可与其他积木进行拼接,也可以通过连线与其他模块互联实现专门的功能。
试用的主角当然是格物板了,从正面看十分简洁,中间一个小液晶屏,下方两个按钮,四周分布着咪头、NFC,金手指等等,左右两侧下方分别有2个接口,定义为P1~P4,主要功能能引脚线定义与下图示,可以看到左边的只能用于输出,也就是说2个舵机需要连接到这边,右边可用于输入,可以连接红外测距模块。
微信图片_20221125000327.jpg
格物板支持图形化界面,也支持micropython,前者更幼儿向,也比较简单,通过拖入模块的方式进行编程,也可认为是搭建软积木。需要安装的软件是Gewucode,它是基于scratch3,同时增加了与格物板相关的模块。可以十分直观方便地进行编程,无需编写相关编程语言,只需要有一定的面向过程的编程思路就好。而软件右侧还支持micropython.通过左边的积木模块编程也可以同步显示右侧的代码,方便高阶用户熟悉代码开发流程。
无标题.png
此外,还支持直接通过python编程,可通过下载相应的python ide便于开发,这里我用的是推荐的MU-EDITOR,界面相当简洁,初始需要配置模式,选择ESP-MICROPYTHON,此时,当将USB线连接到格物板后,程序右下角将会出现连接成功标志,(即将没连接的叉叉去掉~)码完代码后,通过点击运行按钮就可以下载到开发板,很方便。
无标题.png
熟悉开发工具后,接下来就是欢欢喜喜的搭积木环节,这里有一个不太方便的是,积木分装成多个袋子,却没标注上每个袋子用于哪些课程,盲猜一是可能是试用装,没那么仔细分,二是可能适用的案例比较多,也不好分开。
首先搭起来的是智能晾衣杆,这里使用到的是格物板和360度舵机,利用格物板上的光敏元件还判断光强并控制舵机正反运转。晾衣杆运行的原理是利用曲柄滑块实现圆周运行与直线往复运动相互转换,采用剪叉式结构,利用平行四边形不稳定的特性,实现杆的升降。
微信图片_20221126230734.jpg
微信图片_20221126231740.jpg
搭好积木后就是编程了,这里先用图形化界面,本质上也是将一些函数、逻辑用可视化模块化的方式进行连接、嵌套,一个功能的实现一般由格物板启动模块开始,再加上在“重复”模块按顺序添加模块来实现整个代码的编写。同时如果需要同时实现不同功能,还可以用多个格物板+重复模块,通过代码可知,本质上就是定义了多个函数,并在主函数中不断重复。这里设置了两个部分:液晶屏显示部分和舵机控制部分
液晶屏显示部分用于显示光照强度,不断刷新显示光照强度值,为后面进行光照强度调整提供数据参考。舵机控制部分,硬件上直接将格物板的P3口与舵机数据口相连,再通过编程,控制舵机转动,并通过皮带带动曲柄滑块运行。基本原理也比较简单,当光照强度大于上阈值时,控制舵机正向转动速度,使之运行若干秒后停止;当光照强度小于下阈值时,控制舵机反向转动速度,使之运行若干秒后停止。
无标题.png
完成后上传到格物板后就可自动运行了。见底部视频。
本次初体验测试也暂告一段。最后再看看自动生的python代码,也很清晰。使用了库文件gewu,并定义了两个函数,一个on_start()  用于实现显示功能(display),另一个on_start1(),通过gewu.light_sensor读取到光照值,再做一定判断,通过gewu.servo_p3.set_speed来控制舵机转动。
  1. # generated by GewuBit
  2. import gewu

  3. def on_start():
  4.   while True:
  5.     gewu.display.fill(OLED.BLACK)
  6.     gewu.display.text(str(gewu.light_sensor.get_value()), 0, 0, 16)
  7.     gewu.display.show()
  8.     yield

  9. func_start = on_start()

  10. def on_start1():
  11.    while True:
  12.       while not (gewu.light_sensor.get_value() > 90):
  13.           yield
  14.      gewu.servo_p3.set_speed(90)
  15.      start_time = gewu.ticks_ms()
  16.      while gewu.ticks_ms()- start_time < int(1.5 * 1000):
  17.         yield
  18.      gewu.servo_p3.release()
  19.      while not (gewu.light_sensor.get_value() < 60):
  20.         yield
  21.      gewu.servo_p3.set_speed((-90))
  22.      start_time = gewu.ticks_ms()
  23.      while gewu.ticks_ms()- start_time < int(1.5 * 1000):
  24.         yield
  25.      gewu.servo_p3.release()
  26.   yield

  27. func_start1 = on_start1()

  28. def repeat():
  29.   next(func_start)
  30.   next(func_start1)

  31. while True:
  32.   repeat()
  33.   gewu.sleep_ms(1)







71a902afae502200e18263a9063b8fe0

更多回帖

发帖
×
20
完善资料,
赚取积分