|
前言
KittenBot 的结构设计为方便接插到树莓派上,以便利用树莓派强大的计算能力来弥补 328p 的不足。通过串口与树莓派通信。这里我们就来测试一下吧。
正文
0. 恢复固件
首先使用 KittenBlock 恢复固件,参考前文,这里从略。
1. 树莓派准备
用什么版本都没什么影响,只要接口能正确插上就可以。我用的是 2B。使用官方的 Pixel 系统,系统也没什么关系,我们测试只用了最基本的 bash 功能以及 httpd 网页服务,基本上所有的系统都支持。
安装 web 服务,配置好 cgi 等环境,这个大家根据自己的系统因地制宜就可以了。
2. 测试串口通信
将 kittenBot 和树莓派接插好,H 桥一接上 LED 后 ssh 登录树莓派,在控制台下测试串口功能,如下语句先根据 kittenBot 的串口配置信息进行设置波特率、校验位等参数。第二三四行就是发送串口命令了。
测试情况看:
A 绿灯亮:
B 红灯亮(虽然命令参数与上面一致但接线反过来了,所以就亮了不一样的灯):
B 绿灯亮:
3. 呼吸灯
上面测试完了,那么继续我们的呼吸灯吧,为什么这么偏爱呼吸灯?有呼吸就有生命嘛
bash 脚本参考:
[mw_shl_code=bash,true]#!/bin/bash
# breathing.sh
# Created by seesea @ 2017-07-11
# 测试树莓派与 kittenBot 的串口通信的呼吸灯实验
# 设置串口参数
stty -F /dev/ttyAMA0 ispeed 115200 ospeed 115200 cs8 -parenb -cstopb
# 渐亮渐暗的步进
step=5
# kittenBot 板的 H 桥端口
HPort=A
serialToKitten()
{
cmd=$1
para=$2
echo "$1 $para" > /dev/ttyAMA0
}
# 呼吸灯循环
while true
do
for i in `seq 1 $step 255`
do
echo $i
serialToKitten M200 $HPort$i
done
for i in `seq 255 -$step 1`
do
echo $i
serialToKitten M200 $HPort$i
done
done[/mw_shl_code]
视频:
4. 页面控制全彩 LED
树莓派来当服务器给 kittenBot 增加远程控制的能力!
网页代码参考:
[mw_shl_code=html,true]<!--
colorLed.html
Created by seesea @ 2017-07-11
树莓派与 kittenBot 的全彩 LED 远程控制
-->
<!DOCTYPE>
<style type="text/css">
html,body {
margin:0;
height:100%;
}
</style>
<html>
<head>
<script>
function setColor(r, g, b)
{
var request = new XMLHttpRequest();
request.open("GET", "/cgi-bin/setColor.sh?r=" + r + "&g=" + g + "&b=" + b);
request.send(null);
}
function createTable()
{
var table = document.createElement("table");
var tbody = document.createElement("tbody");
for (var r = 0; r <= 0xFF; r += 0x33)
{
for (var g = 0; g <= 0xFF; g += 0x33)
{
var row = document.createElement("tr");
for (var b = 0; b <= 0xFF; b += 0x33)
{
var col = document.createElement("td");
col.style.background = "rgb(" + r + "," + g + "," + b + ")";
col.onmouseover = new Function("setColor(" + r + "," + g + "," + b + ")");
row.appendChild(col);
}
tbody.appendChild(row);
}
}
table.appendChild(tbody);
table.height = "100%";
table.width = "100%";
document.getElementById("divTable").appendChild(table);
}
</script>
</head>
<body>
<div id="divTable" style="border:3px solid black;position:absolute; left:0; top:0; width:100%; height:100%" />
<script>
createTable();
</script>
</body>
<html>[/mw_shl_code]
cgi 代码参考:
[mw_shl_code=bash,true]#!/bin/bash
# setColor.sh
# Created by seesea @ 2017-07-11
# 树莓派与 kittenBot 的全彩 LED 远程控制的 CGI 脚本
# 仅实验使用,脚本中使用 eval 来执行远程发来的参数是危险的
# 使用字符串截取操作更安全但更麻烦,作为实验就不讲究了
echo -e "Content-type: text/html\n\n"
# 设置串口参数
stty -F /dev/ttyAMA0 ispeed 115200 ospeed 115200 cs8 -parenb -cstopb
# kittenBot 板的 H 桥端口
RPort=A
GPort=B
BPort=C
# $QUERY_STRING 的格式:r=xx&g=xx&b=xx
eval "${QUERY_STRING//&/;}"
serialToKitten()
{
cmd=$1
para=$2
echo "$1 $para" > /dev/ttyAMA0
echo "$1 $para" >> /tmp/a.txt
}
serialToKitten M200 $RPort$r
serialToKitten M200 $GPort$g
serialToKitten M200 $BPort$b[/mw_shl_code]
注意:由于 apache2 不允许使用 root 权限运行,从而 cgi 程序对串口的写入操作受到限制,简单处理就是把串口文件设置成 777 权限,咱就是个实验嘛,不用太注意安全方面。
参考语句:
[mw_shl_code=bash,true]chmod 777 /dev/ttyAMA0
[/mw_shl_code]
截图:
接线:
红:
黄:
蓝:
绿:
白:
视频:
总结
1. kittenBot 的接口充分适应树莓派的扩展,接上后无需处理电源,使用方便
2. 配套固件与树莓派使用串口通信,简单易用,容易写代码操作
3. 使用时发现 kittenBot 与 hdmi 接口接触就会发生短路,官方如果后续有改进建议处理一下。用户则简单拿个透明胶做绝缘即可。我实验的时候更是拿一张纸垫上就将就过了
4. 虽然说 5 6 9 10 引脚接到一号 H 桥上,但如果能引出的话,偶尔有用到比较多引脚的时候也会更自由一些
后记
今天加班加点终于完成了,拖延症犯了一阵,放松一段时间总算是又勤快了。写完帖子,也算是放下包袱了。kittenBot 的评测到此告一段落,谢谢小喵科技的板子,总体来说感觉很不错,主流操作系统的PC软件,主流移动平台的app,固件,硬件质量及配套模块都很全,小喵科技的技术真是没得说。嗯,不得不说官方文档还不够全的问题,这也是所有的技术人员不爱写文档的通病哈,估计也是太忙没时间,经常大半夜好多次官方技术人员居然都在线及时回复我遇到的问题,惊讶于大家的拼劲,也感叹创业的辛苦啊。
参考文档
1. 恢复固件:http://www.arduino.cn/thread-46208-1-1.html
|
|