跟随.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.怎么安装系统,百度一大堆,这里就不介绍了.

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

sudo apt-get update
sudo apt-get upgrade

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

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

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

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

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

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

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

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

sudo vim .profile

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

在最后添加:

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

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

2.新建项目,并配置nginx

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

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

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

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

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

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

打开配置文件:

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

替换为:

server {
listen default_server;
server_name _;
location / {
proxy_buffer_size 128k;
proxy_buffers 32k;
proxy_busy_buffers_size 128k;
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# 转发websocket需要的设置
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
}
}

保存 完成 测试 重启nginx:

sudo nginx -t
sudo nginx -s reload

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

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

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

替换如下内容:

[Unit]
Dcription=ASP.NET Core 3.0 App - Car [Service]
WorkingDirectory=/home/pi/web/iot
ExecStart=/home/pi/dotnet/dotnet /home/pi/web/iot/WebIoT.dll
Restart=always
# Restart service after seconds if the dotnet service crashes:
RestartSec=
KillSignal=SIGINT
SyslogIdentifier=dotnet-car
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install]
WantedBy=multi-user.target

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

注册,并启动服务:

sudo systemctl enable kestrel-carapp.service
sudo systemctl start kestrel-carapp.service
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. Bumblebee服务网关之统一请求验证

    对于微服务网关来说,统一请求验证是一个比较重要和常用的功能,通过网关验证后台服务就无须关注请求验证:对于多语言平台的服务而言制定验证方式和变更验证配置都是一件比较繁琐和工作量大的事情.Bumblebe ...

  2. ng form组件(表单)

    tip: 数据的双向绑定(数据的双向绑定只是针对表单) 实现数据的双向绑定需要在app_module.ts(根模块)中进行注册一些东西 import {FormsModule} from '@angu ...

  3. [scrapy-redis] 将scrapy爬虫改造成分布式爬虫 (2)

    1. 修改redis设置 redis默认处在protection mode, 修改/etc/redis.conf, protected-mode no, 或者给redis设置密码, 将bind 127 ...

  4. .net core session的使用步骤

    步骤 操作 备注 1   Microsoft.AspNetCore.Session Microsoft.AspNetCore.Http.Extensions nuget安装包 2 ConfigureS ...

  5. struts 2.3.28+spring 4.2.5.RELEASE+hibernate 5.1.0.Final整合maven构建项目基本配置

    第一次写博客,主要也是记录给自己看的,可能很多比较熟的地方就没注释 用maven构建,ssh框架都是选用的最新的release版(感觉还是不要用beta),环境jdk1.8 tomcat8.0 mys ...

  6. MyBatis拦截器自定义分页插件实现

    MyBaits是一个开源的优秀的持久层框架,SQL语句与代码分离,面向配置的编程,良好支持复杂数据映射,动态SQL;MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyB ...

  7. 不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤

    数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更 ...

  8. 微信小程序登入流程

    微信小程序登入流程 一.首先前端先传code去后端 wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ url: app.g ...

  9. DM7经常使用的命令汇总

    由于DM7兼容oracle ,所以当你不知道某个命令时,大抵就是可以参照oracle的命令及语法,当然有极少的情况会不一样.常用命令如下: 1.连接登录 disql SYSDBA/SYSDBA@223 ...

  10. [Luogu1313][NOIP2011提高组]计算系数

    题目描述 给定一个多项式 (by+ax)k(by+ax)^k(by+ax)k ,请求出多项式展开后 xn×ymx^n \times y^mxn×ym 项的系数. 输入输出格式 输入格式: 共一行,包含 ...