树莓派3变身iBeacon发射器

iBeacon是apple公司提出的“一种可以让附近手持电子设备检测到的一种新的低功耗、低成本信号传送器”的一套可用于室内定位系统的协议。iBeacon技术通过低功耗蓝牙(BLE),也就是我们所说的智能蓝牙来实现。

[Read More]

在树莓派3上搭建监控系统

之前用过tsar做监控,但没有基于浏览器的图表展示,而且tsar收集数据很频繁,容易写坏SD卡。后来一直用Xively SaaS服务,但因为服务在国外,访问速度一直不尽人意。直到今天早上读到InfoQ的一篇文章才知道了Prometheus,看了一下介绍后发现Prometheus的以下特点非常合适在树莓派上部署:

  1. 采用Go实现支持,天然支持跨平台,配置相当简单,维护和二次开发的成本小;
  2. 采集数据支持Pull和Push模式,可以自定义不同采集点的采样频率,适合轻量型应用降低能耗;
  3. 二次计算和查询方式很灵活
  4. 自带 Grafana数据可视化工具;
  5. 可配置的内存+磁盘存储大小,采用的时间序列文件和Level DB做索引效率较高,不会让监控软件本身消耗过多的树莓派计算和存储资源
[Read More]

树莓派3初体验

树莓派基金会今年推出的新品Raspberry Pi 3已经到手,官方宣传性能比树莓派2代快50%,比树莓派1代快10倍,第一次使用的64位四核处理器(博通BCM2837)配备了ARM Cortex-A53处理器,内置了802.11 b/g/n 2.4GHz WIFI和蓝牙4.1,显卡没变,还是双核VideoCore IV(并不支持4K视频)。CPU升级也对能耗有了更高的要求,官方说法最好是使用5V 2.5A的电源输入(iPad充电器),实测在无外设的情况下,2A的电流输出也可以让Pi 3正常运行。价格和树莓派2也一样,官方售价税前35美金,国内可以在淘宝上买到,238元一枚,点此购买 我深深的认为每个程序员都需要有一块树莓派,24*7的运行在家里的网络上 ,投入成本在300人民币以内(树莓派加电源:250,SD卡:50),每年电费在10元以内。树莓派支持各种编程语言的开发,安装体验各种操作系统非常简单,丰富的外部接口,支持很多类型的传感器和控制器外设,可以让你轻松设计和实现智能硬件,技术让生活更美好~ 外观 树莓派3的规格大小则和树莓派2完全一样,你甚至可以直接用树莓派2的外壳,完全贴合。 背面看略有不同,中间的芯片是1G内存,树莓派3的内存速度快了1倍,右边是CF卡插槽,树莓派2是回弹式卡槽(取出CF卡时只要往力再摁一下就会弹出),树莓派3可能为了降低成本或是因为板卡空间的问题改成了更紧凑的插入式,装上外壳后取出的时候有点费劲,我需要用瑞士军刀的镊子夹出来。 (下图是树莓派3) 安装启动 如果你不需要GUI,推荐安装Raspbian Jessie Lite,大小只有298.3M,下载完成后解压缩成img文件后用dd命令写到CF卡上去。你也可以下载NOOBS完整安装。 WIFI 编辑无线配置文件/etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="<无线AP的名称>" psk="<无线密码>" } 如果有多个无线网络可以接入,增加network即可 修改好后如果没有自动生效连上网络可以通过以下命令强制生效 ifdown wlan0 ifup wlan0 非常重要的一点是:如果你希望无线网络一直连接,需要关闭掉无线模块的电源管理,否则没有网络流量后,WIFI会自动关闭。。。 sudo iwconfig wlan0 power off 测试wifi速度:从通过网线连接到极路由2的Mac拷贝文件到树莓派3上,内置网卡的传输速度在4MB/s左右,如果换上300Mbps的USB无线网卡EDUP EP-N1557则可以达到9MB/s左右,速度要快1倍。结论是内置的wifi模块速度只有150Mbps,如果对网络速度要求较高,最稳定的方法还是插根网线。 安装好nginx后,用ab测试最简单的HTML网页性能,树莓派3可以轻松超过1000 QPS,满足个人网站的性能需求。 CPU 树莓派3使用的4核Cortex-A53 BCM2837 SoC为了向下兼容,架构上和树莓派2使用的4核Cortex-A7 BCM2836差不多,在32位模式运行下,速度要快50~60%(时钟频率1.2GHz vs 900MHz),尽管CPU已经支持64位,官方的操作系统Raspbian还是32位,当然树莓派3内存只有1G,运行64位操作系统可能会有点累,。 如果要体验真64位系统,目前可以考虑带2G内存,千兆网口的ODROID-C2,可装Ubuntu 16.04和Android 5.1。 一般情况下,不带散热片的CPU温度在45度左右,我有个脚本会每五分钟上传一下温度:https://personal.xively.com/feeds/1480103458 Node.js 安装5.0.0 wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-armv7l.tar.gz tar -xvf node-v5.0.0-linux-armv7l.tar.gz cd node-v5.0.0-linux-armv7l sudo cp -R * /usr/local/ 升级 [Read More]

在树莓派上运行Docker

Docker

Docker是目前非常流行的代码运行容器,操作系统虚拟化,运维自动化架构和开源的解决方案。

Docker的基础是Linux容器(LXC)技术,相比传统的VM虚拟化技术, LXC更轻量,性能更好。

Docker采用Golang语言开发,在LXC基础上Docker进行了封装,简化了容器的管理。

[Read More]

使用树莓派搭建低成本,便携,多用户的弱网模拟器:高效测试手机App在弱网下的可用性

背景

我们的手机经常会处于弱网情况下,电梯里,高铁上,在地铁站,电影院里。。。如果手机应用不针对弱网做优化,就会出现:白屏页面刷不出来,界面卡死,错误提示一堆,菊花转不停,用户抓狂。。。

移动应用开发团队应该将App在弱网下的可用性作为一个重要的性能指标,在设计和开发阶段考虑在弱网下的体验。

[Read More]

用16M的SD卡启动树莓派,在U盘上安装和运行Linux

树莓派官方的操作系统Raspbian最少需要4G的SDCard,如果你恰好有比较小的SD卡怎么办呢?设计上树莓派只能从SD卡引导启动,但我们可以在SD卡上装一个最小的引导系统,然后把树莓派引导到U盘上启动。SD卡连续运行,读写比较频繁也容易损坏(我已经坏掉3张了。。。),相比之下U盘价格便宜些,读写速度可以比SD卡还高。

制作引导SD卡

这个引导系统只需要16M容量的SD卡,先把SD卡格式化成FAT(windows),然后拷贝下面的文件到根目录。

git clone https://github.com/hugozhu/mini_raspbian_boot

修改 cmdline.txt 中的 root=/dev/mmcblk0p2root=/dev/sda2 以指定用U盘启动

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait cgroup_enable=memory

安装操作系统Raspbian到U盘

方法和安装到SD卡一样,在Mac上使用 dd 命令安装,在Windows上可以用win32diskimager:

sudo dd bs=1m if=2015-01-31-raspbian.img of=/dev/disk4 #/dev/disk4

扩展分区

如果你的U盘容量大于4G,那么上一步安装完后,你的U盘只能看到4G空间,大容量的SD卡的这个问题可以通过自带的raspi-config命令来解决。 Linux下可以用fdisk来解决,我的方法是把该U盘插到已经正常启动的树莓派的USB口上,正常识别后,执行sudo fdisk /dev/sda

  1. p后打印出分区表:
/dev/sda1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sda2          122880     6399999     3138560   83  Linux
  1. 记住/dev/sda2的起始点122880',然后按d,删除掉二个分区,接着按n重新创建一个分区,起始点就设置为122880`,结束点可以设置为最大

  2. 最后按w保存新的分区表

插上引导SD卡和系统U盘后树莓派就可以愉快的运行起来了,如果U盘的速度足够快,你会发现系统还变快了。

参考文章

  1. http://www.raspberrypi.org/boot-from-a-16mb-sd-card/

用Telegram和树莓派交互

如果你的树莓派不能通过路由器端口转发直接从家庭网络外访问,你还可以用类似聊天App一样的方式来和防火墙后的树莓派轻松交互,通过命令来控制树莓派。 Telegram Telegram是一个跨平台的即时通讯软件,客户端和通讯及加密协议完全公开且开源。官方有正式发布Android,iOS,Mac OS X, Web等客户端版本;Telegram允许多端同时登录。我们在手机上安装Telegram客户端,同时在树莓派上用同一个帐号或另一个帐号也登录Telegram,那么就可以用手机和树莓派聊天了,更高级的一些用法可以是把树莓派帐号加到群聊中,实现类似微软小冰的功能;也可以由树莓派主动向你的手机Push消息实现提醒功能。 安装telegram-cli Linux的Telegram客户端telegram-cli源代码在 https://github.com/vysheng/tg,按照Readme在树莓派上编译好。telegram-cli支持消息事件对lua脚本中的函数进行回调,支持的函数列表在:https://github.com/vysheng/tg/blob/master/README-LUA,也支持外部程序通过telegram-cli侦听的端口发送交互命令(一次连接只能一个命令) Lua交互脚本 脚本命名为:tg_raspberrypi.lua now = os.time() chat = "树莓派通知" -- telegram的会话名称 safe_commands = {} safe_commands["uptime"] = "uptime" safe_commands["w"] = "w" safe_commands["ps"] = "ps ax" safe_commands["netstat"] = "netstat -na" safe_commands["df"] = "df" safe_commands["ss"] = "ss" safe_commands["free"] = "free" function on_msg_receive (msg) if msg.out then return end if msg.text then -- mark_read(msg.from.print_name) -- vardump(msg) cmd = string.lower(trim(msg.text)) if cmd == "ping" then send_msg (chat, 'pong', ok_cb, false) elseif safe_commands[cmd] ~= nil then send_msg (chat, exec(safe_commands[cmd]), ok_cb, false) end end end function on_our_id (id) end function on_secret_chat_created (peer) end function on_user_update (user) end function on_chat_update (user) end function on_get_difference_end () end function on_binlog_replay_end () end function exec(cmd) local output = "" f = assert (io. [Read More]