C#控制树莓派入门
何为树莓派
许久没有写博客了,十二月份西安疫情的影响,居家隔离了一个多月,在其期间,学习了一下树莓派,觉得硬件还是挺有意思的,刚好也看到了巨硬有提供使用c#用来开发树莓派应用的解决方案叫Net Iot,就自己买了一个树莓派入手,尝试用c#去控制树莓派的各个引脚,当然,Net Iot不仅仅支持树莓派一个开发板,同时支持Arduino开发板,以及香橙派,荔枝派,不过目前只是入手了树莓派,所以此处以及后续开发板会以树莓派为主,后面可能也会出乐鑫ESP32单片机的入门教程,接下来我们了解一下什么是树莓派吧。
树莓派,一个只有信用卡大小的电脑,其操作系统是基于Linux系统,目前支持的系统为树莓派官方操作系统Raspberry Img官方操作系统,Windows 10 IOT操作系统,Ubuntu,Centos,Debian,其中官方操作系统是基于Debian的。虽然树莓派只有信用卡大小,但是别看它麻雀虽小,却五脏俱全,它是一款基于ARM的微型电脑主板,以电脑不同的是,它是使用SD卡用来做存储,操作系统,数据都是存储SD卡上的,最新版的树莓派4B,有两个3.0的USB接口,两个USB2.0的接口以及一个千兆以太网接口,大家可以看下图,树莓派发布至今的各个版本的对比。可以看到虽然树莓派小,但是它有多个USB接口,支持以太网接口,以及蓝牙,音频,以及HDMI接口,并且也是支持蓝牙的,这上面没有标注。并且树莓派最重要并且最好玩的部分就是它的引脚模块,可以用来使用它的引脚去进行控制其他电子元器件,并且支持多种总线通讯协议,包括I²C,SPI,CAN,以及串口通讯,也包括了PWM脉冲宽度调制等,树莓派总共提供了40的引脚,也叫GPIO,GPIO全称是General-purpose input/output,翻译过来就是通用的输入输出,可以看到下面的图片展示了树莓派的引脚,以及部分引脚所带有的其他功能,其中3.3V的是供电接口可以用来给其他的电子元器件供电,5V也是同样的道理,5v也可以给树莓派供电,可以外接电源给树莓派以及其他的电子元器件进行供电,GND为接地引脚,理解为我们三插插座的接地,GPIO开头的为没有任何其他功能的输入输出引脚,RXD和TXD为串口通讯可以使用这两个引脚使用485或者232协议去进行通讯,CE是片选信号,SDA和SCL的是I²C总线协议的接口,MOSI,MISO,SCLK是SPI协议的接口,引脚不一定非要全部记住,但是需要知道它的作用是什么,刚开始的时候我以为SPI和I²C是一种什么特制线路用来通讯的,后来知道了它仅仅是作为一种协议用来传输数据的,接好之后就可以用来传输数据。
上面我们提到了一些总线协议,以及脉冲宽度调制,这里我们做一下简单的介绍,I²C协议是由两根线组成的一个是SDA用来主控设备和被控从设备进行一个双向数据传输的线路,SCL是一根时钟线,用来协调双方设备进行发送和传输数据;SPI协议是由四根线组成,分别是
目前为止我使用树莓派写过一个入门级别的智能小车,其中的功能有控制摄像头,控制舵机,实现摄像头的转动,以及控制电机来实现小车的前进,后退,左右,同时带有红外线避障和超声波测距模块,以及蜂鸣器,等几个案例,后面我会附上图片以及视频,展示我这段时间的一个学习成果。
Net IOT
接下来进入到我们的重头戏,我们可以看看巨硬提供的关于硬件的树莓派等开发板的解决方案,我们可以在API浏览器上面找到一个叫Net Iot Libraries的一个项目这个项目提供了我们树莓派,香橙派等开发板的解决方案API,而且微软默认的编码都是使用的是BCM编码,可以参考上面引脚图查看对应的引脚BCM编码,但是由于这里都是英文的,所以在过年期间我把他所支持的硬件主要是传感器等电子元器件进行了一个翻译并且整理成了一个文档,后面我会附上文档的一个地址,当然有些还是不全面的,后续也会慢慢完善,目前是大部分都已经整理出来了,我们可以看到下图,API浏览器可以看到他所支持的一些电子元器件,包括ADC(模数转换器),以及PN532读写芯片,还支持了RFID,蜂鸣器,电机,摄像头,显示屏等电子元器件的封装,最主要的是巨硬已经帮我们把I²C,Spi,CAN总线通讯协议,以及PWM脉冲宽度调制封装好了,这样我们只需在理解了总线的协议概念之后,就可以直接用了,这个类库下面是没有提供串口通讯的,不过大家都知道我们在PC机上面是可以进行串口通讯的,那树莓派肯定也可以,依旧用的是SerialPort类来实现串口通讯,使用方式是没有任何变化的,不过刚才我也说了对应的引脚是RXD和TXD,对于串口怎么接线,一般都是树莓派的RXD接通讯设备的TXD,RXD的意思是Read数据,TXD是用来传输数据的,这样就是发送接传输,传输接发送来实现串口通讯,此处的话我是写了一个树莓派和ESP32实现串口通讯的Demo,本文会展示一些我整理的资料以及部分写好的Demo,后续也会为我家里打造一个智能家居的一个解决方案,用树莓派做大脑控制系统来向单片机发送接收的远程指令,从而实现控制窗帘,或者空调或者门锁的一个解决方案,当然成本可能有些高,也可能会只是用单片机用来做控制。因为ESP单片机同时也是支持链接无线网,或者启动一个Web服务器并且成本相较于树莓派低很多,一个树莓派好几百块钱一个ESP32开发板仅需20块钱左右,当然后续也会用一些其他开发板用来实践,譬如树莓派PICO价格也是二十块钱,或者是51或者stm系列的单片机。
最后我为大家展示一下我这段时间用树莓派做的一些东西以及和单片机串口通讯,视频和电子元器件代码和小车的代码以及资料都在我的网盘中,有兴趣的朋友可以下载下来看看。
小车代码:http://121.43.235.192:8082/s/WEtG2ZKLpTsmGKb
各种电子元器件传感器代码:http://121.43.235.192:8082/s/DdoWXYfTLb7npoN
由于本篇博客写的可能有些凌乱,往大家见谅,如果有不懂想入门的同学可以添加QQ群6406277找到我,或者看所在QQ群有没有叫四川观察的基本上就是我了,欢迎大家骚扰,后续的树莓派和单片机学习也会逐渐更新到博客中,期待各位大佬的关注。
C#控制树莓派入门的更多相关文章
- 树莓派入门教程——使用Qt开发界面程序
前言 Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特 ...
- node 控制 树莓派做的天气闹钟
node 控制 树莓派做的天气闹钟 在成都上班,下雨天堵车,迟到的概率会很大. 正好手上有一块树莓派 ,做了一个晴雨闹钟. 下雨天 早上 7:00叫我起床 晴天 早上 7:30叫我起床 将自己喜欢的歌 ...
- 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led
云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...
- 树莓派进阶之路 (023) - Windows下用串行连接控制树莓派(转)
转载:http://shumeipai.nxez.com/2014/05/04/under-windows-serial-connection-control-raspberry-pi.html 在没 ...
- Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度
我接到一个需求,需要调节LED灯的亮度,且是从上位机进行控制,我了解到树莓派也有PWM,就准备通过PWM来控制灯的亮度. PWM又叫脉宽调制,是用微处理器的数字输出来对模拟电路进行控制,对模拟信号电平 ...
- UNIX/Linux-进程控制(实例入门篇)
UNIX进程 进程标识符 要想对进程控制,必须得获取进程的标识.每个进程都有一个非负整数表示的唯一进程ID,虽然是唯一的,但是进程ID可以重用.当一个进程终止后,其进程ID就可以再次使用了. 系统 ...
- 转载:Raspberry Pi 树莓派入门
转载说明: 整理转载,原文链接http://www.eeboard.com/bbs/thread-5191-1-1.html 这篇帖子我打算用Q&A的方式来编写,这样大家更容易一目了然的看明整 ...
- web控制树莓派摄像头
首先测试摄像头保证能顺利拍照 raspistill -o a.jpg 安装flask sudo pip install flask 确认无误之后向下进行. 文件夹结构: CapPic ----stat ...
- 树莓派B+使用入门&RPI库安装&wringPi库安装
最近看看试用一下树莓派进行一些开发操作,于是入手一块Raspberry Pi B+的板子来玩.由于没有显示器,没有备用的键盘和鼠标,所以想到用SSH来控制树莓派,刚开始还很担心已经安装好的操作系统到底 ...
随机推荐
- Solon Web 开发,十四、与Spring、Jsr330的常用注解对比
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- manjaro20软件商店无法链接下载
软件商店如果无法链接下载 解决方案1 可以使用terminal慢慢下载,.bashrc中配置代理 如果依然不行,检查网络设置代理是否为自动或者手动设置正确. 解决方案2 检查是否未设置中国社区源或者重 ...
- LaTex用法笔记(一)——LaTex源文件的基本结构
首先打开TeXstudio,创建一个新文件并保存 用\documentclass{article}引入一个文档类,也可以引用book/report/letter 然后用\begin{}和\end{}输 ...
- golang中结构体的嵌套、方法的继承、方法的重写
package main import "fmt" type human struct { name, phone string age int8 } type student s ...
- [源码分析] Facebook如何训练超大模型---(4)
[源码分析] Facebook如何训练超大模型 --- (4) 目录 [源码分析] Facebook如何训练超大模型 --- (4) 0x00 摘要 0x01 背景知识 1.1 单精度.双精度和半精度 ...
- Centos配置yum本地源最简单的办法
有关centos配置yum本地源的方法 一.前提 先连接镜像 然后在命令行输入如下命令 mount /dev/sr0 /mnt cd /etc/yum.repos.d/ ls 之后会看到如下的界面 二 ...
- MySQL基本数据类型之枚举与集合类型
目录 一:枚举 1.枚举 2.创建表(使用枚举) 3.表内添加数据 二:集合 1.集合 2.创建表(使用集合) 3.表内添加数据 一:枚举 1.枚举 枚举作用: 提前定义好数据之后 后续录入只能录定义 ...
- linux远程搭建yum网络仓库《全面解析》
目录 一:远程版本需求 1.yum简介 2.yum安装解析 二:yum安装的生命周期 三:yum私有仓库作用与必要性 四:搭建yum私有仓库 本地版本 1.下载必须的软件包 2.创建软件仓库(就是创建 ...
- redis集群运维
Redis 的数据类型? Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zsetsorted set(有序集合) redis优势 速度快, ...
- 近期Android学习II
一晃眼又过了5天,这几天的学习有些杂乱,半年在家没运动,返校了准备慢慢恢复运动,身体才是革命的本钱~ 四天跑了三回步,每次都死亡喘息= = 这几天的学习重点总归还是放在Android上了,前面31天连 ...