前面成功的使用RPi.GPIO库,设置高低电平完成了LED灯和蜂鸣器的状态控制,因为RPi.GPIO没有提供对TM1637的支持,所以借助了已有的库完成了四位数码管的显示。从tm1637.py源码看,他实际也是使用了RPi.GPIO库。 虽然PRi.GPIO库只提供了简单的设置GPIO高低电平的功能,但是我们前面说过这是所有通信的基础,你可以自己通过设置高低电平来实现所有的协议通信。这么一说和我们只用0和1来编程有点象了。只要有0和1,你可以编写任何代码。而这里有高低电平你可以控制任何设备。所以这一篇打算简单分析一下TM1637的源码。

 

一 TM1637

 

先从高层次的TM1637开始分析。在控制LED和蜂鸣器时,我们使用一个高低电平就能控制设备,因为对于这样的设备来说,他们的通信协议非常简单。 高电平发光、低电平不发光。相比而言,TM1637数码的协议就负责很多。要想知道一个设备的通信协议就需要有设备的资料。

我们在网上买到的TM1637一般是下面这个样子。这是由CATALEX公司出的4-Digit Display。而一般称他为TM1637是指它背后的拿颗20针的控制芯片。整个数码管子是由TM1637芯片(U1)、4位数码管(U2)和4针接口(J1)组成的。

继续阅读

前面已经学习了一些树莓派系统和GPIO的基本知识了,现在可以开始动手做一些简单的东西了。因为一些外设的连接会涉及到一些电路的知识,如果操作不当可能会损坏外设或者是树莓派。所以在哦动手之前最好还是补充点电路相关的知识。我是花了点时间又把初中电路稍微复习了下,然后又乱七八糟看了点模拟电路、数字电路。所以最终应该也没有太多用处。

网上对于树莓派第一个项目基本就是接LED,然后控制。所以我第一个程序也使用LED,只不过想做的稍微复杂一点。 结合数码管和蜂鸣器来模拟十字路口的交通信号灯。使用的材料主要有:

  • 3个不同颜色的LED灯
  • TM1637四位数码管
  • 有源蜂鸣器
  • 若干100欧以上的电阻
  • 面包板和面包板连接线
  • 若干杜邦线

 

继续阅读

树莓派基本环境搭建好之后就可以在上面安装各种应用了。这样对树莓派来说就是一台小型电脑,基本电脑、服务器能做的事情她也都能做。只不过内存比较小。1G的内存多跑2个服务内存就吃不消了。最近VPS也是,apache和tomcat一跑,差不多吃了500M内存,也不知道能怎么优化了。而且家里光猫无法破解成桥接模式,外网穿透还没有做,所以就没装什么服务。 所以还是玩一玩树莓派相比电脑特有的东西吧。

 

一 GPIO

 

GPIO全称是General Purpose Input Output (通用输入/输出)。广义上来说它并不是类似USB、DVI、HDMI这样一种特定协议的接口,而是通用接口的总称。对于了解单片机的人来说应该非常熟悉,而对于我们这些纯软件开发,没有接触过单片机的人来说,并不是很好弄清楚到底是个什么东西。 下面是维基百科的定义:

general-purpose input/output (GPIO) is an uncommitted digital signal pin on an integrated circuit or electronic circuit board whose behavior—including whether it acts an input or output—is controllable by the user at run time.

从上面总结出几点:

    1. 数字针脚(可以是集成电路上的针脚,比如CPU或位处理器的针脚;也可以是开发板比如树莓派、Arduino上提供的GIPO接口)
    2. 可以用来输入或输出
    3. 运行时可控

继续阅读

一 安装开发必备软件

 

 

build-essential

 

最基本的,系统已经装好了,里面主要包括gcc, libc, make

pi@raspberrypi-cc:~ $ sudo apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

 

gcc/g++

 

build-essential系统已经装好了,那么gcc自然也好了

pi@raspberrypi-cc:~/source $ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 6.3.0-18+rpi1+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1+deb9u1)

好像从Android 7.0开始的source编译默认编译器已经使用clang,不过目前也没编译源码的需求,关键这机器得编译一天吧。。。哈哈,先不装了

继续阅读

目前除了官方系统和其他基于Linux的系统外,树莓派还可以使用Windows IoT系统,当然也有然把Windows10 ARM移植到了树莓派上。不过Windows IoT是官方系统。 微软目前有一整套物联网相关的解决方案,主要包括Azure IoT 和 Windows10 IoT,应该分别对应的了云端和设备端。 对于云端来说可以利用微软的Azure云平台,提供大数据存储和处理,人工智能,机器学习等功能,然后和安装了Windows10 IoT的设备进行联通控制。 有兴趣的话可以看一下微软的网站:https://www.microsoft.com/zh-cn/internet-of-things/products

 

Windows10 IoT

 

Windows 10 IoT powers the intelligent edge

Simplify the Internet of Things with a rich device platform, world class developer tools, enterprise grade support and a global partner ecosystem. Do more at the edge with machine learning capabilities and scale with the power of Azure IoT.

通过利用 Windows 10 IoT 将你的资产转变为智能设备,以实现边缘和云智能的出色平衡,从而拓展深度学习,完成更多事项。

这是微软对Windows10 IoT的解释。利用Windows10 IoT可以实现跨平台,在不同平台上有相同的表现。IoT系统主要有两种:

  • Windows IoT Core

    Built for small, secure, smart devices. Our smallest Windows 10 operating system can run on both Intel or ARM hardware.

  • Windows IoT Enterprise

    Bringing the full power of Windows to smart devices, Windows 10 IoT Enterprise has specialized lockdown features for creating dedicated devices.

对于树莓派来说安装的是Windows10 IoT Core。

 

继续阅读