什么是 I2C 总线 I2C 总线(Inter-Integrated Circuit Bus)是设备与设备间通信方式的一种.它是一种串行通信总线,由飞利浦公司在1980年代为了让主板.嵌入式系统或手机用以连接低速周边设备而发展[1].I2C 总线包含两根信号线,一根为信号线 SDA ,另一根为时钟线 SCL .总线上可以挂载多个设备,以 7 位 I2C 地址为例,总线上最多可以挂载 27 - 1 个设备,即 127 个,地址 0x00 不用(类似于网络中的广播地址).I2C 还包括一个子集叫 S…
什么是 GPIO GPIO 是 General Purpose Input Output 的缩写,即"通用输入输出". Raspberry Pi 有两行 GPIO 引脚, Raspberry Pi 通过这两行引脚进行一些硬件上的扩展,与传感器进行交互等等. Raspberry Pi B+/2B/3B/3B+/Zero 引脚图 简单的讲,每一个 GPIO 引脚都有两种模式:输出模式(OUTPUT)和输入模式(INPUT).输出模式类似于一个电源,Raspberry Pi 可以控制这个电源…
如何在 Raspberry Pi 的 Raspbian 上构建使用 GPIO 引脚的 IoT 程序?你可能会回答使用 C++ 或 Python 去访问 Raspberry Pi 的引脚.现在,C# 程序员可以使用 .NET Core 在 Raspbian(Linux) 上构建 IoT 应用程序.只需要引入 System.Device.GPIO NuGet 包即可.   注意 System.Device.GPIO 仍处于早期预览状态.并且目前仅支持部分 Raspberry Pi . Pine64…
什么是 SPI 和上一篇文章的 I2C 总线一样,SPI(Serial Peripheral Interface,串行外设接口)也是设备与设备间通信方式的一种.SPI 是一种全双工(数据可以两个方向同时传输)的串行通信总线,由摩托罗拉于上个世纪 80 年代开发[1],用于短距离设备之间的通信.SPI 包含 4 根信号线,一根时钟线 SCK(Serial Clock,串行时钟),两根数据线 MOSI(Master Output Slave Input,主机输出从机输入)和 MISO(Master…
什么是 PWM 在解释 PWM 之前首先来了解一下电路中信号的概念,其中包括模拟信号和数字信号.模拟信号是一种连续的信号,与连续函数类似,在图形上表现为一条不间断的连续曲线.数字信号为只能取有限个数值的信号,比如计算机中的高电平(1)和低电平(0). PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制,通过对一系列的脉冲的宽度进行调制,从而等效出所需要的模拟信号.如图 1 所示,蓝色波形为调制的一系列脉冲,红色波形为模拟的正弦样信号.在模拟电路中,模拟信号的值可以…
在开始之前,首先要说明的是串口通信所用到的 SerialPort 类并不包含在 System.Device.Gpio NuGet 包中,而是在 System.IO.Ports NuGet 包中.之所以在这里介绍串口通信,是因为在嵌入式中串口通信是与其他设备进行交互的一种重要方式,而且在某些没有屏幕的设备中充当着程序调试的工具. 什么是串口 串口是串行接口的简称,这是一个非常大的概念,在嵌入式中串口通常指 UART (Universal Asynchronous Receiver/Transmit…
距离上一篇<张高兴的 .NET Core IoT 入门指南>系列博客的发布已经过去 2 年的时间了,2 年的时间 .NET 版本发生了巨大的变化,.NET Core 也已不复存在,因此本系列博客更名为 <张高兴的 .NET IoT 入门指南>,我也重新审阅了之前的内容进行了相应的更改以保证内容的时效性. 和单片机不同,使用 Linux 开发板.现成的传感器套件以及合适的后端技术几乎可以做成任何东西.为了更好的整合前面章节介绍的内容,本文将制作一个简单的气象站(也许叫环境信息收集装置…
时间究竟是什么?这既可以是一个哲学问题,也可以是一个物理问题.古人对太阳进行观测,利用太阳的投影发明了日晷,定义了最初的时间.随着科技的发展,天文观测的精度也越来越准确,人们发现地球的自转并不是完全一致的,这就导致每天经过的时间是不一样的.这点误差对于基本生活基本没有影响,但是对于股票交易.火箭发射等等要求高精度时间的场景就无法忍受了.科学家们开始把观测转移到了微观世界,找到了一种运动高度稳定的原子--铯,最终定义出了准确的时间:铯原子电子跃迁 9192631770 个周期所持续的时间长度定义为…
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD…
这章主要讲当前 kotlin 的一些编码习惯. 命名 如无疑问,kotlin 的命名风格与以下的java风格一样: --驼峰命名法(不要使用下划线) --类名首字母大写 --方法和属性名首字母小写 --四个空格缩进 --公共方法要写文档注释 冒号 冒号分开类与父类时,要在冒号前面加空格,而分开类与实例时则不需要加. 1 interface Foo<out T : Any> : Bar { 2 fun foo(a: Int): T 3 } Lambdas lambda 表达式中,花括号前后要用空…