当前位置:网站首页>use. Net drives the OLED display of Jetson nano
use. Net drives the OLED display of Jetson nano
2022-07-06 20:31:00 【Sang Yu Xiao Wu】
background
Recent years , The demand for edge computing has exploded . Artificial intelligence 、 Internet of things and 5G The evolution of brings infinite possibilities to edge computing . Because of work , I'm lucky to be here 2019 Began to contact NVIDIA Jetson Family of edge computing devices :Nano,TX2,AGX,NX etc. , Its operating system uses Ubuntu 18.02. We can use it as an independent small server , Which programmer would refuse to own a small computer of his own ? On top of it , Especially having GPU On , We can toss about infinite possibilities .
stay Jetson The development version of the equipment is on the board , There is usually one 40 Pin pin SPIO And GPIO, Through it, we can expand more interesting things . for instance : A piece of I2C Of OLED display , And then through .Net To drive it to show something fun ( Software status , Equipment status , Other key data indicators ).
Screen installation
The screen here is a piece 0.96 Inch yellow and blue OLED LCD module , altogether 4 Interface :3.3V Positive pole VCC, Negative pole GND, And responsible for I2C Communicating SDA and SCL.
So how to connect the monitor with Jetson The equipment is connected ? The demonstration here is based on the earlier Nano Carrier board of Developer Suite , The pins of other series of official carrier boards are basically similar , You can also find the hardware specification or Refer to the guidelines on the official website To find the I2C Interface can .
I'm using I2C1, The pin connected is 1,3,5,6 , Install as defined OLED display .
To configure I2C Bus
After installing the screen , Must be configured I2C, Only our own login account can be in non Root Access... Under permission I2C Bus .
Put the following command username Change to your login account name
sudo usermod -aG i2c username
Better restart the device , If you execute the following command, it can be displayed normally , Then there's no problem .
i2cdetect -y -r 1
In the following illustration ,OLED Address of the display 3c Be particularly highlighted .
use .NET Drive display
Drive this oled Screen we need to use Microsoft IoT Related libraries “System.Device.Gpio” , Through this library, we can realize the connection with external devices I2C Communications , Of course drive OLED The display needs to use various instructions familiar with its driver chip , The driver chip here is SSD1306, Have the biggest 128*64 Pixel support , Widely used in small size OLED The drive of the display screen .
Here we won't introduce the related drivers and instructions , I have encapsulated the relevant instructions into a library , You can use it directly , Open source library , Interested students can consult relevant knowledge and source code by themselves .
Now let's go through Jetson Nano Show how to use “Sang.IoT.SSD1306” Library to control OLED display frame .
install .Net development environment
because Jetson yes arm64 The equipment , Let's go straight to .Net Choose to download from the official website .Net6 Of Arm64 edition .
Execution and installation
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-6.0.301-linux-arm64.tar.gz -C $HOME/dotnet
Then change the user directory .bashrc
file , Add the following environment configuration at the end :
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
function dotnet
Command to check the installation .
Using the demonstration
Create a console program
dotnet new console -o i2c_oled
Add driver library
dotnet add package Sang.IoT.SSD1306
Modify the code
using Sang.IoT.SSD1306;
using (var oled = new SSD1306_128_64(1)) {
oled.Begin();
// The display content that needs to be sent to the display
byte[] c = new byte[128*64]{
...};
oled.SetBuffer(c);
oled.Display();
}
To display the array data to the screen , You need to store the data in SSD1306 Of RAM. there RAM The size is 128x64 position , It is divided into 8 page , from 0 Page to 7 page , For monochrome 128x64 The dot matrix shows .
The above code may not be used at ordinary times , It is mainly a customized content display interface .
Picture shows
The class library here uses Microsoft SkiaSharp Cross platform image processing library , About cross platform image processing library , If you have a need , Sure Look at this article to compare .
The pictures used for demonstration here are as follows , We put it in OLED The display shows .
Original image address :https://raw.githubusercontent.com/marin1993/Sang.IoT.SSD1306/master/assets/test.png
using Sang.IoT.SSD1306;
using (var oled = new SSD1306_128_64(1)) {
oled.Begin();
oled.Image("assets/test.png");
oled.Display();
}
The effect is as follows :
According to the text
that , How to display text ? Of course , The same way of thinking , We first pass SkiaSharp Create a bitmap , Then display it , So it's not difficult to load font files to display Chinese fonts .
using Sang.IoT.SSD1306;
using SkiaSharp;
using (var oled = new SSD1306_128_64(1)) {
oled.Begin();
oled.Clear();
using(var bitmap = new SKBitmap(128, 64, true)){
SKCanvas canvas = new SKCanvas(bitmap);
SKPaint paint = new SKPaint() {
Color = new SKColor(255, 255, 255),
StrokeWidth = 1, // The width of the brush
Typeface = SKTypeface.FromFile("/home/sangsq/i2c_led/SourceHanSansCN-Normal.ttf"),
TextSize = 13, // font size
Style = SKPaintStyle.Fill,
};
canvas.DrawText(" official account :sangxiao99 ", 0, 13, paint);
paint.TextSize = 30;
canvas.DrawText(" Sang Yu Xiao Wu ", 0, 50, paint);
oled.Image(bitmap.Encode(SKEncodedImageFormat.Png, 100).ToArray());
}
oled.Display();
}
The effect is as follows :
Clear the display
oled.Clear();
Conclusion
If the IoT If you are interested in this field or want to toss the development board at hand , You can go to the official website to learn more .Net Of IoT resources .
Just arrived at a SPI Interface LCD Color display , There are new toys to play with .
边栏推荐
- Recyclerview GridLayout bisects the middle blank area
- [DSP] [Part 2] understand c6678 and create project
- 设计你的安全架构OKR
- Core principles of video games
- Tencent T4 architect, Android interview Foundation
- Anaconda安裝後Jupyter launch 沒反應&網頁打開運行沒執行
- 2022 construction electrician (special type of construction work) free test questions and construction electrician (special type of construction work) certificate examination
- In line elements are transformed into block level elements, and display transformation and implicit transformation
- 【每周一坑】输出三角形
- 【GET-4】
猜你喜欢
Leetcode question 283 Move zero
[DIY]如何制作一款个性的收音机
Tencent T2 Daniel explained in person and doubled his job hopping salary
Continuous test (CT) practical experience sharing
Introduction of Xia Zhigang
Maximum likelihood estimation and cross entropy loss
[weekly pit] information encryption + [answer] positive integer factorization prime factor
Node.js: express + MySQL实现注册登录,身份认证
使用.Net驱动Jetson Nano的OLED显示屏
(工作记录)2020年3月11日至2021年3月15日
随机推荐
Guangzhou's first data security summit will open in Baiyun District
使用.Net驱动Jetson Nano的OLED显示屏
【每周一坑】正整数分解质因数 +【解答】计算100以内质数之和
Is it difficult for small and micro enterprises to make accounts? Smart accounting gadget quick to use
Groovy基础语法整理
01 基础入门-概念名词
【Yann LeCun点赞B站UP主使用Minecraft制作的红石神经网络】
02 basic introduction - data package expansion
Tencent T3 teaches you hand in hand. It's really delicious
逻辑是个好东西
Solution to the 38th weekly match of acwing
I've seen many tutorials, but I still can't write a program well. How can I break it?
微信小程序常用集合
[Yann Lecun likes the red stone neural network made by minecraft]
BeagleBoneBlack 上手记
Discussion on beegfs high availability mode
永磁同步电机转子位置估算专题 —— 基波模型与转子位置角
OLED屏幕的使用
Appx code signing Guide
Comment faire une radio personnalisée