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来控制树莓派,刚开始还很担心已经安装好的操作系统到底 ...
随机推荐
- 干掉 Postman?测试接口直接生成API文档,ApiPost真香!
实不相瞒我的收藏夹里躺着很多优质的开发工具,我有个爱好平时遇到感兴趣的开发工具都会记录下来,然后有时间在慢慢研究.前几天刚给同事分享一款非常好用的API文档工具,真的被惊艳到了,粉丝朋友们也感受一下吧 ...
- C语言字幕从外向中间汇聚
演示数据中多个字符,从两端向中间移动,向中间汇聚 简单,粗暴,先上代码: Sleep()函数属于<windows.h>头文件中. sizeof()函数求右下标:数组内是数字时,求右下标要- ...
- Linux 安装 MySQL 8.0.26 超详细图文步骤
1.MySQL 8.0.26 下载 官方网站下载 MySQL 8.0.26 安装包,下载地址: https://downloads.mysql.com/archives/community/ 需要注意 ...
- python文档2-unittest单元测试之mock.patch
介绍mock里面另一种实现方式,patch装饰器的使用,patch() 作为函数装饰器,为您创建模拟并将其传递到装饰函数 patch简介 1.unittest.mock.patch(target,ne ...
- 二进制方式搭建Kubernetes高可用集群
转:https://jiangxl.blog.csdn.net/article/details/120428703 详细:https://developer.aliyun.com/article/78 ...
- docker 传入变量
1.Dockerfile中定义变量 ENV maxmemory="" 2.脚本接收变量 if [ "$maxmemory" ];then sed -i &quo ...
- AI 智能写情诗、藏头诗
一.AI 智能情诗.藏头诗展示 最近使用PyTorch的LSTM训练一个写情诗(七言)的模型,可以随机生成情诗.也可以生成藏头情诗. 在特殊的日子用AI生成一首这样的诗,是不是很酷!下面分享下AI 智 ...
- IDEA使用MybatisCodeHelperPro插件
下载MybatisCodeHelperPro: 链接:https://pan.baidu.com/s/1H6csq9STVh0Ofldh6V6gxQ提取码:r2g3 IDEA安装本地插件: ctrl+ ...
- js 数组map用法 Array.prototype.map()
map 这里的map不是"地图"的意思,而是指"映射".[].map(); 基本用法跟forEach方法类似: array.map(callback,[ thi ...
- java创建自定义类的对象数组
1 public class Student{ 2 static int number = 0; // 静态变量的访问可以不用创建类的实例就可就可使用< 类名.属性 >的方法访问 3 ...