跟随.net core 3.0 一起发布的System.Device.Gpio 1.0已经可以让我们用熟悉的C#原汁原味的开发莓派上面的GPIO了.并且在 Iot.Device.Bindings这个包下面有许多开发者已经封装好了许多模块,供我们使用.入门的教程可以参考https://www.cnblogs.com/zhanggaoxing/,写的非常好哈.

  我这里使用的是吃灰已久的树莓派3B,其他的配件还包括超声波模块,红外避障模块,TT马达(使用L298N驱动),一块定制的电路板(个人感觉,主要为了好看),电池盒,电压显示模块,第一步,先把这一堆配件组装起来,效果如下:

1.先安装树莓派.net core环境

  怎么接线等下章在讲 首选我们先把树莓派运行.net core的环境安上,由于现在官方操作系统Raspbian不是64位的.第三方系统我没有用,想在树莓派上跑 .net core 3.0,我们只能使用ARM32.怎么安装系统,百度一大堆,这里就不介绍了.

树莓派要联网,先更新系统:

  1. sudo apt-get update
  2. sudo apt-get upgrade

之后下载下载 .net core 3.0 sdk 和 asp.net core 3.0 runtime :

  1. wget https://download.visualstudio.microsoft.com/download/pr/8ddb8193-f88c-4c4b-82a3-39fcced27e91/b8e0b9bf4cf77dff09ff86cc1a73960b/dotnet-sdk-3.0.100-linux-arm.tar.gz
  2. wget https://download.visualstudio.microsoft.com/download/pr/e9d4b012-a877-443c-8344-72ef910c86dd/b5e729b532d7b3b5488c97764bd0fb8e/aspnetcore-runtime-3.0.0-linux-arm.tar.gz

下载完成之后我们建立一个目录,把刚才下载的文件解压进去

  1. mkdir dotnet
  2. tar zxf aspnetcore-runtime-3.0.-linux-arm.tar.gz -C $HOME/dotnet
  3. tar zxf dotnet-sdk-3.0.-linux-arm.tar.gz -C $HOME/dotnet

现在只能在dotnet这个目录里面执行dotnet命令,要在任何地方都能执行命令,我们要创建一个环境变量指向这个文件夹.

  1. export DOTNET_ROOT=$HOME/dotnet
  2. export PATH=$PATH:$HOME/dotnet

我们使用dotnet --info看一下:

环境是装完了,但是重启这个环境不见了.所以我们需要配置一下自启动环境变量:

  1. sudo vim .profile

这里我习惯使用vim 如果没有安装换成 nano即可

在最后添加:

  1. export DOTNET_ROOT=$HOME/dotnet
  2. export PATH=$PATH:$HOME/dotnet

保存 重启 可直接使用dotnet命令.到此为止,我们可以建立一个asp.net core的web放在上面试一下了.

2.新建项目,并配置nginx

  打开VS2019,新建一个asp.net core3.0项目:

我这里修改了 Program.cs 文件添加了指定监听:

  1. public static IHostBuilder CreateHostBuilder(string[] args) =>
  2. Host.CreateDefaultBuilder(args)
  3. .ConfigureWebHostDefaults(webBuilder =>
  4. {
  5. webBuilder.UseStartup<Startup>();
  6. webBuilder.UseUrls("http://localhost:5000/");
  7. });

之后在树莓派home/pi下新建文件夹web->iot文件夹用debug模式生成把所有生成的文件全都传到这个目录下面.之后我们 dotnet 一下看看:

现在我们的网站只能localhost访问.现在我们安装NGINX做反向代理.首先,安装并启动ngix

  1. sudo apt-get install nginx
  2. sudo /etc/init.d/nginx start

打开配置文件:

  1. sudo vim /etc/nginx/sites-available/default

替换为:

  1. server {
  2. listen default_server;
  3. server_name _;
  4. location / {
  5. proxy_buffer_size 128k;
  6. proxy_buffers 32k;
  7. proxy_busy_buffers_size 128k;
  8. proxy_pass http://localhost:5000;
  9. proxy_http_version 1.1;
  10. proxy_set_header Upgrade $http_upgrade;
  11. proxy_set_header Connection $connection_upgrade;
  12. proxy_set_header Host $host;
  13. proxy_cache_bypass $http_upgrade;
  14. # 转发websocket需要的设置
  15. proxy_set_header X-Real_IP $remote_addr;
  16. proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
  17. }
  18. }

保存 完成 测试 重启nginx:

  1. sudo nginx -t
  2. sudo nginx -s reload

现在我们dotnet我们的网站.在浏览器中使用树莓派的IP来访问:

但是这样有个缺点.我们必须每次重启都要dotnet xx.dll 并且程序一旦异常了,也需要手动执行.这里我们借助 systemd 服务实现来重启

  1. sudo vim /etc/systemd/system/kestrel-carapp.service

替换如下内容:

  1. [Unit]
  2. Dcription=ASP.NET Core 3.0 App - Car
  3.  
  4. [Service]
  5. WorkingDirectory=/home/pi/web/iot
  6. ExecStart=/home/pi/dotnet/dotnet /home/pi/web/iot/WebIoT.dll
  7. Restart=always
  8. # Restart service after seconds if the dotnet service crashes:
  9. RestartSec=
  10. KillSignal=SIGINT
  11. SyslogIdentifier=dotnet-car
  12. User=root
  13. Environment=ASPNETCORE_ENVIRONMENT=Production
  14. Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
  15.  
  16. [Install]
  17. WantedBy=multi-user.target

注意,systemd 要求我们使用绝对路径。

注册,并启动服务:

  1. sudo systemctl enable kestrel-carapp.service
  2. sudo systemctl start kestrel-carapp.service
  3. sudo systemctl status kestrel-carapp.service

现在重启系统后也可以访问网站,不用我们手动敲命令了.

3.后记

今天就这么多了,下章在说怎么接线,并使用刚才建立的web项目显示超声波模块的数据

参考:

https://github.com/dotnet/iot

https://mp.weixin.qq.com/s/ksWs-_5JsmTQpACZfcKo6Q

  

使用asp.net core 3.0 搭建智能小车1的更多相关文章

  1. 使用asp.net core 3.0 搭建智能小车2

    上一篇中我们把基本的运行环境搭建完成了,这一篇中,我们实战通过树莓派B+连接HC-SR04超声波测距传感器,用c# GPIO控制传感器完成距离测定,并将距离显示在网页上. 1.HC-SR04接线 传感 ...

  2. asp.net core 2.0+sqlsugar搭建个人网站系列(0)

    一些废话 马上就要过年了,回顾这一年最大的收获就是技术有了很大的提升,其他的方面没有什么改变,现在还是单身小屌丝一枚. 这一年来学习的主要重点就是asp.net core,中间也使用 core+EF做 ...

  3. Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  4. win10下ASP.NET Core 2.0部署环境搭建(转)

    此文用于记录在win10环境下,新建的Asp.net Core 2.0 Web应用项目如何运行在IIS上 一.运行环境 操作系统: Window10 家庭中文版 版本 10.0.15063 版本 15 ...

  5. 初识ASP.NET Core 1.0

    本文将对微软下一代ASP.NET框架做个概括性介绍,方便大家进一步熟悉该框架. 在介绍ASP.NET Core 1.0之前有必要澄清一些产品名称及版本号.ASP.NET Core1.0是微软下一代AS ...

  6. ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介

    概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...

  7. 在 Mac OS 上使用 TypeScript 编写 ASP.NET Core 1.0 应用

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  8. 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】

    鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash  ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台  ,收 ...

  9. ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统

    为什么使用 Jwt 最近,移动开发的劲头越来越足,学校搞的各种比赛都需要用手机 APP 来撑场面,所以,作为写后端的,很有必要改进一下以往的基于 Session 的身份认证方式了,理由如下: 移动端经 ...

随机推荐

  1. 一个网站完整的SEO优化方案,方法,怎么做seo优化?

    SEO优化主要分为站内优化,站外优化.如果非得说一套完整的SEO优化方案,那就是需要4名专业人员:前端人员,内容编辑,网络推广人员,和数据分析人员.那以下就详细介绍这四个岗位各自负责的工作有哪些: 一 ...

  2. $(document).height 与$(window).height的区别

    $(document).scrollTop() 获取垂直滚动的距离 (即当前滚动的地方的窗口顶端到整个页面顶端的距离)$(document).scrollLeft() 这是获取水平滚动条的距离 要获取 ...

  3. Android自动跳过app开屏广告

    跳过开屏广告,体验流畅人生 开屏广告 是应用启动时显示的广告,一般右下角(或右下角)有倒计时跳过,不主动点击就会 等待3到5秒 后再进入App 自动跳过 是跳过应用的开屏广告的App 一图胜千文,来我 ...

  4. Redis分布式锁的一点小理解

    1.在分布式系统中,我们使用锁机制只能保证同一个JVM中一次只有一个线程访问,但是在分布式的系统中锁就不起作用了,这时候就要用到分布式锁(有多种,这里指 redis) 2.在 redis当中可以使用命 ...

  5. Spring Cloud 版本控制

    ### 正常版本 ``` org.springframework.boot spring-boot-starter-parent 2.1.7.RELEASE ``` ### SpringCloud 版 ...

  6. 尝鲜 vue3.x 新特性 - CompositionAPI

    0. 基础要求 了解常见的 ES6 新特性 ES6 的导入导出语法 解构赋值 箭头函数 etc... 了解 vue 2.x 的基本使用 组件 常用的指令 生命周期函数 computed.watch.r ...

  7. Java8 Stream性能如何及评测工具推荐

    作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...

  8. jmeter从获取token开始设计接口

    用自己实习时候的一个项目来实现一下获取token的接口测试 以登录dmp的学科列表为例子: 从登录开始,打开开发者选项 点击登录 在开发者窗口中network xhr Fildder中,看登录时的请求 ...

  9. eclipse中Tomcat version 9.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, 7, and 8 Web modules

    eclipse中导入了一个别人的项目,运行时提示没有可以使用的服务器,如下: 查看了下项目属性设置中的服务器,还是提示没有可用服务器: 尝试对部署在已有服务器下的项目Add and Remove... ...

  10. linux系统下使用宝塔面板安装owncloud常见问题

    在安装owncloud时出现 无法写入“config”目录! 解决方法 在宝塔面板,找到owncloud根目录,点击"权限“设置权限 将权限设置为777,应用到子目录打勾(如下图) 确定后再 ...