杂食性程序猿:专注于 Android,web frontend,flutter,node.js 等大前端领域,也会玩玩 python 和 java 等后端技术 ...

2017年01月 的文章归档

共找到 2 篇文章

树莓派(MCU)中python读取jy901陀螺仪数据

前段时间折腾四轴飞行器。 飞控这块打算用陀螺仪和树莓派的方式来实现。不要问哥为啥不直接买现成的,因为我们是有 ( mei ) 逼 ( you ) 格 ( qian ) 的工程师。

后来我发现原来一个飞控大概是我买的陀螺仪和树莓派的成本的1/5吧 --! 摔啊 !!!
某宝上搜索结果比较多的是国外产的10块钱都不到的大众陀螺仪~ jy901貌似是款国产的陀螺仪芯片。
本着“便宜没好货”的思想作祟下。再加上jy901 PR文稿的的忽悠,就果断的下单了。

模块的示例中,大多都是C代码。对于使用者而言比较晦涩难懂。 Python 的简易示例代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*

#
# @author XU Kai(xukai.ken@gmail.com)
# @date 2017-01-21 星期日
#
#
# #fileOverview 树莓派串口操作事件,用来输入和输出陀螺仪数据信息 
#
#
#

from __future__ import division

import os
import sys
import math
import codecs

import serial

sensor = serial.Serial(port='/dev/ttyAMA0', baudrate='9600', timeout=1)


def convert(hexVal):
    return int(codecs.encode(hexVal, 'hex'), 16)


while True:
    data = sensor.read(size=1)
    if (data == b'\x55'):
        print('Get the data !')
        sensor.read(size=10)
        break

    print('trying', data)

try:
    while True:
        data = sensor.read(size=11)
        if not len(data) == 11:
            print('Byte error !')
            break

        if data[1] == b'\x50':

            # print(convert(data[7]))
            pass

        # Angle Output.
        if (data[1] == b'\x53'):
            hexVal = []
            for i in range(11):
                hexVal.append(convert(data[i]))

            ax = ((hexVal[3] << 8) | (hexVal[2] & 0xff)) / 32768 * 180
            ay = ((hexVal[5] << 8) | (hexVal[4] & 0xff)) / 32768 * 180
            az = ((hexVal[7] << 8) | (hexVal[6] & 0xff)) / 32768 * 180

            print(round(ax, 3), round(ay, 3), round(az, 3))

except KeyboardInterrupt:
    sensor.close()
    print('Close the sensor !')

其中有几点需要说明下:

  1. a). 该段示例代码是对串口信息的读取。不包含数据的写入。
  2. b). /dev/ttyAMA0 是树莓派的串口在设备中的名称,依不同的设备而异。

亲测可用,欢迎交流。

Enjoy it !
转载请注明出处
botobe.net
本文Github链接

树莓派智能小车控制

前段时间折腾了一台小车,使用树莓派进行的控制。DEMO和硬件相关的展示部分如下:

软件相关部分为了三块:
一个是小车端(在树莓派中运行)
一个是服务器端,用来中转手机发送给小车的指令。
一个是手机端,用来做小车的遥控器(目前仅包括了小车前后左右和摄像头上下左右的控制)。
三个部分使用socket协议进行连接。相关代码分享在了Github上。
仓库分别是:
小车代码仓库服务器端仓库遥控器代码仓库
其中小车部分的代码仓库中。积累了不少对树莓派的控制相关代码演示(高低电平以及PWM信号)。
欢迎一起交流学习。

Enjoy it !
转载请注明出处
botobe.net
本文Github链接