瑞士军刀扩展板的跑马灯实现(C++版)

树莓派上通过C和Python来控制GPIO已经成为了很流行的方式,本文介绍如何使用C++/Boost/OOP和用户空间驱动树莓派瑞士军刀扩展板的LED,实现跑马灯效果。相关原理和方法通用,当然也可以用于瑞士军刀扩展板之外的情况。

1、运行环境
系统信息:Linux raspberrypi 4.4.21-v7 #1 SMP Sat Sep 24 20:40:17 CST 2016 armv7l GNU/Linux
硬件搭配:Raspberry Pi 3B + 瑞士军刀扩展板,如图所示。
20161220201908269-0

阅读全文

树莓派“瑞士军刀”扩展板教程 V1.X TO V2.X 的适配说明

本文介绍在树莓派瑞士军刀扩展板升级到V2.0之后,如何对原先V1.X的教程做出适当修改之后应用到V2.0的方法。以下将通过链接引用V1.0的内容并附上差异说明和代码变更来对每一个DIY应用进行阐述。

开始之前,你需要了解SAKS V2.0在硬件和SDK上做了哪些变更,可以参考硬件变更SDK变更

由于V2.0的引脚顺序重新定义过,因此原有教程中的引脚编号对应表需要自行对应到新版本。另外,SDK升级说明中关于LED组的调用方法也请特别注意。虽然Github上我们将SDK的目录结构做了调整,但我们尽可能保证了对旧有代码的兼容性,main.py 主程序中对SDK的导入依然可沿用之前的方式无需变更。

阅读全文

树莓派瑞士军刀扩展板 SAKS SDK 升级

过去的一周我们发布了瑞士军刀扩展板硬件的升级版本,现在我们完成了瑞士军刀扩展板 SAKS SDK 的适应性升级,并提交到 Github 上,通过以下命令获取。

git clone https://github.com/spoonysonny/SAKS-SDK.git

本次 SDK 的升级作了如下改动:

  • 加入了两种IC的支持——IC_74HC595类和IC_TM1637类,以及依赖这两个IC的LED排灯(Led74HC595类)和数码管(DigitalDisplayTM1637类)。
  • 重新定义了适用于瑞士军刀V2.0的模板——SAKSPins、SAKSHAT。
  • 适用于瑞士军刀V1.X的模板被移动到了 v1.x 目录下,如果您在使用旧版本的 SAKS,请注意使用该目录下的源文件覆盖根目录相应的文件。
  • 原有的蜂鸣器、开关按键、温度传感器通过修改GPIO映射的配置已经被无缝移植过来,使用方法同之前的SDK教程所述。

下面结合示例先简要地说明下新特性的用法,该部分示例亦可在 examples 目录下的 main.py 文件找到。

#批量设置LED排灯的状态,从左到右依次为:亮,灭,亮,灭,亮,灭,亮,灭
SAKS.ledrow.set_row([True, False, True, False, True, False, True, False])
#批量设置LED排灯的状态,从左到右依次为:不变,亮,灭,不变,不变,不变,不变,亮
SAKS.ledrow.set_row([None, True, False, None, None, None, None, True])
#点亮LED排灯的第8个灯,0代表第1个灯,依次类推
SAKS.ledrow.on_for_index(7)
#灭掉LED排灯的第1个灯
SAKS.ledrow.off_for_index(0)
#LED排灯全亮
SAKS.ledrow.on()
#LED排灯全灭
SAKS.ledrow.off()
#注意,新的SDK不再支持 SAKS.ledrow.items[3].on() 这种用法了。
#数码管的用法完全兼容之前的 SDK,由于硬件层使用了专用芯片,数码管的显示不再闪烁,效果更稳定了!
# 将显示“1234”4位数字,并且每一位右下角的小点点亮
SAKS.digital_display.show("1.2.3.4.")
# 将显示“1234”4位数字,并且数字2后面的小点点亮
SAKS.digital_display.show("12.34")
# 在第4位数码管显示“1”,其他3位数码管不显示
SAKS.digital_display.show("###1")

其他元件,如开关按键、蜂鸣器、温度传感器用法未做变更,请参考之前的相关例程
http://shumeipai.nxez.com/swiss-army-knife-shield-for-raspberry-pi-diy-tutorials-v1

阅读全文

树莓派 SAKS 扩展板实用应用 之 DS1307 RTC 时钟模块

本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS 基于树莓派通用的 GPIO 设计,文中的原理和代码也适用于其他情况。

本节以 SAKS 扩展板为硬件基础,实现让树莓派掉电后系统时间能继续保持的功能。在这个扩展板上已经有一个DS1307 RTC实时时钟模块,它是I2C类的设备,首先我们需要修改树莓派的配置文件使能I2C,通过nano编辑器修改raspi-blacklist.conf 文件内容。

sudo nano /etc/modprobe.d/raspi-blacklist.conf

修改为如下,开启I2C功能

# blacklist spi and i2c by default (many users don't need them)
blacklist spi-bcm2708
blacklist i2c-bcm2708

打开/etc/modules ,在文件结尾加上 i2c-dev

sudo nano /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
i2c-bcm2708
i2c-dev

阅读全文

树莓派“瑞士军刀”扩展板V2.0已开售

树莓派实验室自1年前发布了树莓派“瑞士军刀”扩展板以来,倾听用户意见不断打磨和改进这款产品,一度成为全网最畅销的树莓派扩展板。数月来我们反复修改和实验,在旧版本基础上做了如下改进,最终完成了SAKS2!

1. 增加了时钟模块
2. 增加了EEPROM芯片
3. 改进了数码管和LED的驱动方式,集成了相应的驱动芯片
4. 改进了功能引脚模块,留出更多的GPIO可供扩展使用
5. 优化了整体布局,使布局更紧凑
6. 重新定义了LED的颜色和排布
7. 更换了部分元件供应商,品质优化

新版本的SAKS支持最新的树莓派3B并兼容树莓派A+、B+、树莓派2B。现已开售,点这里可以订购。相关的介绍和资料已经更新,旧版本的SAKS已停售,旧版本的资料已经被移动到这个网址(供老用户查阅比对)。

SAKS 2016年5月28开始发售的版本是 v2.0 版,在上个版本的功能基础上做了全面的重新设计,由于几乎是全部修改,GPIO与功能的对应关系改变,LED、数码管增加了驱动IC,使得它们的使用方式也大为不同。因此旧的V1.X的教程不再适用于新版本的SAKS,我们会在接下来的数周陆续更新SAKS2的教程、实验资讯以及SAKS SDK

SAKS 的设计初衷,是将实验室网站所积累的这些基于树莓派的 DIY 方案尽可能多地在一块扩展板上实现。由于这些 DIY 案例可能要用到LED、蜂鸣器、数码管、传感器等各种电子元件,这样每做一个案例不仅要软件重写,硬件上也要重新连线。我们在对这些进行归纳、高度抽象之后,最终设计出了 SAKS。SAKS 配备了常用的电子元件,通过精心的引脚设计,不仅使它能满足实验室的很多教程和 DIY 方案的硬件需求,更成为了一个极有开发潜力的扩展板。

P1100532-0

产品特色

1. 本产品尺寸与 Raspberry Pi A+\B+\Raspberry Pi 2\Raspberry Pi 3 兼容,可直插安装。
2. 常用功能器件的高度合理集成,整合更多功能单元。
3. 配备专用传感器接口和功能扩展接口。
4. 集成时钟模块可防止树莓派掉电时间被重置。
5. 专用芯片驱动数码管(TM1637)、LED(74HC595),效率、效果兼备。

阅读全文

树莓派 SAKS 扩展板进阶例程 之 数字秒表

20151213123938836-0

本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS 基于树莓派通用的 GPIO 设计,文中的原理和代码也适用于其他情况。

本文由树莓派实验室创作,遵循CC协议(署名-非商业性使用-禁止演绎-相同方式共享),欢迎树莓派爱好者们遵循协议内容转载传播。谢绝不遵守协议的转载和抄袭。

本节将介绍如何通过 SAKS 扩展板 DIY 一个数字秒表。需要用到一个轻触开关,开关按下时开始计时,再次按下时停止计时。数码管显示秒表读数。

阅读全文