树莓派使用BLE模块HM-05 zs-040

与树莓派接线

raspberry-pi-bluetooth-02

上图中HM-05接的4个针脚从左到右分别是:RXD,TXD,GND,VCC

注意HM-05的RXD与树莓派的TXD相接,而TXD与树莓派的RXD相连,所以一端的发送连的是另一端的接收。

按照上面方法接线,并且树莓派上电之后,可以看到HM-05模块上的灯快速闪烁(大概每秒4次)。

应用

serial console

默认情况下,树莓派会将开机信息通过串口发送出去,并且系统启动之后通过串口启动一个会话,允许外部设备通过串口登录树莓派并执行命令。HM-05就支持与树莓派进行串口通信,同时如果外部设备(比如带蓝牙功能的智能手机)又可以与HM-05进行蓝牙通信。因此我们可以实现将树莓派的开机信息通过串口在通过蓝牙传递到智能手机,并且系统启动之后由智能手机进行shell登录并执行shell命令。

步骤简介:

1. 配置树莓派的baud rate

默认情况下,树莓派读写串口的boud rate是115200,而HM-05默认的baud rate是9600,为了使树莓派与HM-05的串口通信能正常进行,需要使他们的baud rate一致,比如这里将树莓派的baud rate设置成9600。

修改文件/boot/cmdline.txt,将

改成

修改/etc/inittab,将

改成

2. 安卓智能手机使用BlueTerm连接HM-05

安卓手机需要先在系统设置界面里面先搜索并匹配蓝牙模块HM-05

然后安装BlueTerm应用,在 Menu菜单中选择”Connect device”

3.

 

参考:http://blog.miguelgrinberg.com/post/a-cheap-bluetooth-serial-port-for-your-raspberry-pi

安装一些BLE调试工具

minicom

 

 

 

树莓派安装文字转语音工具espeak

介绍

espeak是一个文字转语音工具,默认情况下只支持英文,但通过配置可以添加其他语言。它的作用就是将一段文本转化成机器人发音(效果不是那么清晰,但要听懂没问题),可以保存成wav文件,也可以直接由plaback device播放。

源代码方式

安装espeak

安装完之后,可以测试一下效果

将英文”hellow”转化为语音并保存成文件

或者可以由espeak直接播放语音

我运行这一命令会出错,还没找到解决方法

添加简体中文支持

 

系统软件包方式

安装espeak

这样安装的espeak虽然版本会比较旧,但可以直接使用,包括保存成wav文件和直接播放语音

添加简体中文支持

在raspbian wheezy (Apr 21 18:07:59 BST 2015)这个系统下,安装了espeak 1.46.02之后,中文也能直接支持,使用方法如下:

参考文档:

http://www.eguidedog.net/doc/doc_install_espeak.php

linphone音频:文件和麦克风实时切换

linphone是一个开源的voip客户端,正常情况下,都是从麦克风读取音频流发送给对方,而将接收到的对方发送的音频流用playback设备播放。

最近项目上有一个需求,当通话建立之后,一个客户端要从先从某个a.wav文件读取音频流发送给对方,等播放完毕后再切换到麦克风,这一过程中只有对方有按按键(比如#号键),就中断当前的音频流(不管当前是在传送a.wav,还是在读取麦克风),转而读取并发送b.wav文件里面的音频,发送完毕再切换到麦克风。
阅读全文

使用wifi dongle检测手机等无线设备

最近做的一个项目,需要检测认证的手机是否进入一些特定区域,并且在检测到认证的手机之后,触发一些操作。这些特定区域,就是一些运行树莓派系统的终端。树莓派与门锁连接,需求就是当检测到认证手机之后自动开门。

最初的想法是通过蓝牙,树莓派接一个bluetooth dongle,当工作于master模式时,可以搜索包括手机在内的蓝牙设备。但这要求手机开启蓝牙,而且iphone手机还得保持唤醒并且处在蓝牙设置界面才能被发现。由于用户群体较广,要求手机开启蓝牙不太实际,因为人们大多数情况都会关闭蓝牙。

而如果将bluetooth dongle工作于slave模式,又要求手机app始终在后台运行,并且手机要持续扫描蓝牙设备,应该也会很耗电。

另一种方案是通过wifi。树莓派接一个wifi dongle,工作于monitor模式。手机开启wifi的情况下,会持续发送信号搜索附近的热点,wifi dongle通过抓取手机发送的信号来判断是否有认证手机进入区域。

阅读全文

apache代理服务器设置

访问wiki.xmcrtech.com的时候,实际访问的是同一个服务器上8090端口提供的服务

 

树莓派SD卡克隆

SD卡作为树莓派的硬盘,如果能够做到简单的将一张SD卡上的内容复制到另一张上,就可以轻松的将系统和各种配置进行备份和量产了。

作为磁盘,SD卡可以用多中磁盘工具进行克隆,比如Windows下可以用分区助手,linux下可以用dd命令行工具。需要注意的是,SD卡由于厂家和型号的不同,即便是标注容量想通的两张卡,其实际可用容量也是不一样的。如果源SD卡的容量比目标SD卡更大,可以先用磁盘工具将源卡的分区缩小成比实际使用的空间稍微大一点,然后克隆的时候就指定只复制SD卡的前面多少G的内容。

linux

以root用户运行下面代码,将SD卡1(/dev/sdb)克隆到SD卡2(/dev/sdc)上,每次(block)拷贝512字节,总共拷贝14680064个block,也就是7G

也可以将SD卡复制到一个文件中,之后再利用这个文件复制更多的SD卡。

在使用dd命令进行复制的过程中,可以给这个进程发送USR1 signal,让它在命令行输出当前进度

 

linux diff工具

@2:A文件的32行,替换成B文件的33到49行。

@8:A文件的53到57行,替换成B文件的70到74行。注意这里A文件的行号和B文件的行号不一样,这是因为前面B文件相对A文件添加了十几行。

 

ant管理安卓项目

无论是Android Studio还是命令行创建的安卓项目,都会有一个build.xml文件。因此可以用ant进行编译和安装

编译debug版本,生成的apk文件存放在bin目录下

安装debug版本到连接的手机或者模拟器

 

 

git

本地有一个git repository,将其唯一的分支master推送到服务器上。

假定已经在服务器上设置好了git专用的用户git,所在组也是git。

首先以root用户远程登录服务器,在服务器上新建并配置一个新的repository

之后就可以将本地git repository的master分支推送到新的repository里面了