Difference between revisions of "Template:FriendlyCoreAllwinnerH3"

From FriendlyELEC WiKi
Jump to: navigation, search
(测试红外接收)
(updated by API)
 
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{#switch: {{{1}}}
 +
| NanoPi-M1 =
 
===Connect to DVP Camera CAM500B===
 
===Connect to DVP Camera CAM500B===
The CAM500B camera module is a 5M-pixel camera with DVP interface. For more tech details about it you can refer to [[Matrix - CAM500B]].<br>
+
{{FriendlyCoreAllwinner-DVPCam|NanoPi-M1}}
connect your H3 board to a CAM500B. Then boot OS, connect your board to a network, log into the board as root and run "mjpg-streamer":
+
| NanoPi-M1-Plus =
 +
===Connect to DVP Camera CAM500B===
 +
{{FriendlyCoreAllwinner-DVPCam|NanoPi-M1-Plus}}
 +
| NanoPi-NEO-Air = 
 +
===Connect to DVP Camera CAM500B===
 +
{{FriendlyCoreAllwinner-DVPCam|NanoPi-NEO-Air}}
 +
| NanoPi-Duo2 = 
 +
===Connect to DVP Camera OV5640===
 +
{{FriendlyCoreAllwinner-DVPCam|NanoPi-Duo2}}
 +
}}
 +
 
 +
===Connect to USB Camera(FA-CAM202)===
 +
The FA-CAM202 is a 200M USB camera. Connect your board to camera module. Then boot OS, connect your board to a network, log into the board as root and run "mjpg-streamer":
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
$ cd /root/mjpg-streamer
+
$ cd /root/C/mjpg-streamer
 
$ make
 
$ make
 
$ ./start.sh
 
$ ./start.sh
 
</syntaxhighlight>
 
</syntaxhighlight>
The mjpg-streamer application is an open source video steam server. After it is successfully started the following messages will be popped up:
+
 
 +
You need to change the start.sh script and make sure it uses a correct /dev/videoX node. You can check your camera's node by running the following commands:
 +
<syntaxhighlight lang="bash">
 +
$ apt-get install v4l-utils
 +
$ v4l2-ctl -d /dev/video0 -D
 +
Driver Info (not using libv4l2):
 +
        Driver name  : uvcvideo
 +
        Card type    : HC 3358+2100: HC 3358+2100  / USB 2.0 Camera: USB 2.0 Camera
 +
        Bus info      : usb-1c1b000.usb-1
 +
...
 +
</syntaxhighlight>
 +
The above messages indicate that "/dev/video0" is camera's device node.The mjpg-streamer application is an open source video steam server. After it is successfully started the following messages will be popped up:
 
<syntaxhighlight lang="bash">  
 
<syntaxhighlight lang="bash">  
 +
$ ./start.sh
 
  i: Using V4L2 device.: /dev/video0
 
  i: Using V4L2 device.: /dev/video0
 
  i: Desired Resolution: 1280 x 720
 
  i: Desired Resolution: 1280 x 720
Line 20: Line 46:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
start.sh runs the following two commands:
 +
<syntaxhighlight lang="bash">
 +
export LD_LIBRARY_PATH="$(pwd)"
 +
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0" -o "./output_http.so -w ./www"
 +
</syntaxhighlight>
 +
Here are some details for mjpg_streamer's major options:<br>
 +
-i: input device. For example "input_uvc.so" means it takes input from a camera;<br>
 +
-o: output device. For example "output_http.so" means the it transmits data via http;<br>
 +
-d: input device's subparameter. It defines a camera's device node;<br>
 +
-y: input device's subparameter. It defines a camera's data format: 1:yuyv, 2:yvyu, 3:uyvy 4:vyuy. If this option isn't defined MJPEG will be set as the data format;<br>
 +
-r: input device's subparameter. It defines a camera's resolution;<br>
 +
-f: input device's subparameter. It defines a camera's fps. But whether this fps is supported depends on its driver;<br>
 +
-q: input device's subparameter. It defines the quality of an image generated by libjpeg soft-encoding;<br>
 +
-n: input device's subparameter. It disables the dynctrls function;<br>
 +
-fb: input device's subparameter. It specifies whether an input image is displayed at "/dev/fbX";<br>
 +
-w: output device's subparameter. It defines a directory to hold web pages;<br><br>
 
In our case the board's IP address was 192.168.1.230. We typed 192.168.1.230:8080 in a browser and were able to view the images taken from the camera's. Here is what you would expect to observe:<br>
 
In our case the board's IP address was 192.168.1.230. We typed 192.168.1.230:8080 in a browser and were able to view the images taken from the camera's. Here is what you would expect to observe:<br>
 
[[File:mjpg-streamer-cam500a.png|frameless|400px|mjpg-streamer-cam500a]] <br>
 
[[File:mjpg-streamer-cam500a.png|frameless|400px|mjpg-streamer-cam500a]] <br>
mjpg-streamer是用libjpeg对摄像头数据进行软编码,Linux-4.x内核的ROM目前并不支持视频硬编码, 但是如果使用Linux-3.x内核的ROM的话, 则可以使用ffmpeg对摄像头数据进行硬编码,这样能大大降低CPU的占用率并提高编码速度:
 
<syntaxhighlight lang="bash">
 
$ ffmpeg -t 30 -f v4l2 -channel 0 -video_size 1280x720 -i /dev/video0 -pix_fmt nv12 -r 30 \
 
        -b:v 64k -c:v cedrus264 test.mp4
 
</syntaxhighlight>
 
By default it records a 30-second video. Typing "q" stops video recording. After recording is stopped a test.mp4 file will be generated.
 
 
===Connect to USB Camera(FA-CAM202)===
 
The FA-CAM202 is a 200M USB camera, 连接测试USB摄像头的方法请参考 <连接DVP摄像头模块(CAM500B)> 章节。<br>
 
请自行修改start.sh, 确保使用正确的/dev/videoX节点, 下列命令可以用来确定FA-CAM202摄像头的video节点:
 
<syntaxhighlight lang="bash">
 
$ apt-get install v4l-utils
 
$ v4l2-ctl -d /dev/video1 -D
 
Driver Info (not using libv4l2):
 
        Driver name  : uvcvideo
 
        Card type    : HC 3358+2100: HC 3358+2100
 
        Bus info      : usb-1c1b000.usb-1
 
...
 
</syntaxhighlight>
 
  
 
===Check CPU's Working Temperature===
 
===Check CPU's Working Temperature===
You can use the following command to read H3's temperature and frequency
+
You can get CPU's working temperature by running the following command:
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="text">
cpu_freq
+
$ cpu_freq
 +
Aavailable frequency(KHz):
 +
        480000 624000 816000 1008000
 +
Current frequency(KHz):
 +
        CPU0 online=1 temp=26548C governor=ondemand freq=624000KHz
 +
        CPU1 online=1 temp=26548C governor=ondemand freq=624000KHz
 +
        CPU2 online=1 temp=26548C governor=ondemand freq=624000KHz
 +
        CPU3 online=1 temp=26548C governor=ondemand freq=624000KHz
 +
</syntaxhighlight>
 +
This message means there are currently four CPUs working. All of their working temperature is 26.5 degree in Celsius and each one's clock is 624MHz.<br>
 +
Set CPU frequency:
 +
<syntaxhighlight lang="text">
 +
$ cpu_freq -s 1008000
 +
Aavailable frequency(KHz):
 +
        480000 624000 816000 1008000
 +
Current frequency(KHz):
 +
        CPU0 online=1 temp=36702C governor=userspace freq=1008000KHz
 +
        CPU1 online=1 temp=36702C governor=userspace freq=1008000KHz
 +
        CPU2 online=1 temp=36702C governor=userspace freq=1008000KHz
 +
        CPU3 online=1 temp=36702C governor=userspace freq=1008000KHz
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<!--
 
===Check System Information with Rpi-Monitor===
 
===Check System Information with Rpi-Monitor===
 
Our OS contains the Rpi-Monitor utility with which users can check system information and status.<br>
 
Our OS contains the Rpi-Monitor utility with which users can check system information and status.<br>
Line 57: Line 100:
 
[[File:rpi-monitor.png|frameless|500px|rpi-monitor]] <br>
 
[[File:rpi-monitor.png|frameless|500px|rpi-monitor]] <br>
 
Users can easily check these system information and status.
 
Users can easily check these system information and status.
 +
-->
  
===测试看门狗===
+
{{#switch: {{{1}}}
使用下列命令可以测试看门狗功能:
+
| NanoPi-R1 =  
<syntaxhighlight lang="bash">
+
<!-- don't have IR-Receiver-->
$ cd /root/demo/watchdog/
+
| #default =
$ gcc watchdog_demo.c -o watchdog_demo
+
===Test Infrared Receiver===
$ ./watchdog_demo /dev/watchdog0 10
+
{{Linux-IR-Receiver}}
Set timeout: 10 seconds
+
}}
Get timeout: 10 seconds
+
System will reboot in 10 second
+
</syntaxhighlight>
+
系统将在10秒之后重启.
+
 
+
===测试红外接收===
+
注意: 此章节仅适用于带有红外接收的板子(如NanoPi M1 / NanoPi M1 Plus等), 其他板子(如NanoPi NEO / NanoPi NEO Air等)则需要自行在GPIOL11引脚处接上红外接收器。<br>
+
红外接收功能默认是关闭的, 可以通过npi-config使能:
+
<syntaxhighlight lang="bash">
+
$ npi-config
+
    6 Advanced Options    Configure advanced settings
+
        A8 IR              Enable/Disable IR
+
            ir Enable/Disable ir[enabled]
+
</syntaxhighlight>
+
重启系统, 然后使用下列命令测试红外接收:
+
<syntaxhighlight lang="bash">
+
$ apt-get install ir-keytable
+
$ echo "+rc-5 +nec +rc-6 +jvc +sony +rc-5-sz +sanyo +sharp +mce_kbd +xmp" > /sys/class/rc/rc0/protocols  # 使能紅外协议
+
$ ir-keytable -t
+
Testing events. Please, press CTRL-C to abort.
+
</syntaxhighlight>
+
ir-keytable -t用于检查是否有接收到红外信号, 使用任意遥控器发送按键信息给红外接收器, 可以看到类似下列信息:
+
<syntaxhighlight lang="bash">
+
1522404275.767215: event type EV_MSC(0x04): scancode = 0xe0e43
+
1522404275.767215: event type EV_SYN(0x00).
+
1522404278.911267: event type EV_MSC(0x04): scancode = 0xe0e42
+
1522404278.911267: event type EV_SYN(0x00).
+
</syntaxhighlight>
+
 
+
===Access GPIO Pins/Wirings with WiringNP===
+
The wiringPi library was initially developed by Gordon Henderson in C. It contains libraries to access GPIO, I2C, SPI, UART, PWM and etc. The wiringPi library contains various libraries, header files and a commandline utility:gpio. The gpio utility can be used to read and write GPIO pins.<br>
+
FriendlyElec integrated this utility in FriendlyCore system allowing users to easily access GPIO pins. For more details refer to WiringNP [[WiringNP:_WiringPi_for_NanoPi_NEO/NEO2|WiringNP]]<br />
+
  
 +
{{#switch: {{{1}}}
 +
| NanoPi-R1
 +
| NanoPi-R1S-H3
 +
| NanoPi-R1S-H5
 +
| NanoPi-Duo2
 +
| ZeroPi =
 +
<!-- do nothing -->
 +
| #default =
 
===Run Qt Demo===
 
===Run Qt Demo===
 
Run the following command<br />
 
Run the following command<br />
Line 105: Line 125:
 
Here is what you expect to observe. This is an [https://github.com/friendlyarm/QtE-Demo open source Qt Demo]:<br />
 
Here is what you expect to observe. This is an [https://github.com/friendlyarm/QtE-Demo open source Qt Demo]:<br />
 
[[File:K2-QtE.png|frameless|400px|K2-QtE]]<br />
 
[[File:K2-QtE.png|frameless|400px|K2-QtE]]<br />
 +
}}
 +
 +
{{UbuntuXenial-Armhf-Install-Docker}}
 +
{{#switch: {{{1}}}
 +
| NanoPi-R1 =
 +
===Using RTC===
 +
NanoPi-R1提供了RTC电池接口,使用系统的RTC功能需要连接CR2032带线RTC纽扣电池给板子的RTC电路供电,电池连接如下图所示:<br />
 +
[[File:NanoPi R1-RTC-BAT-en.png|frameless|350px|]]<br />
 +
[http://wiki.friendlyelec.com/wiki/images/c/c5/1.25mm-2A.pdf Dimensional diagram of on board RTC battery connector ]
 +
***待完善****
 +
}}

Latest revision as of 06:33, 4 July 2022


1 Connect to USB Camera(FA-CAM202)

The FA-CAM202 is a 200M USB camera. Connect your board to camera module. Then boot OS, connect your board to a network, log into the board as root and run "mjpg-streamer":

$ cd /root/C/mjpg-streamer
$ make
$ ./start.sh

You need to change the start.sh script and make sure it uses a correct /dev/videoX node. You can check your camera's node by running the following commands:

$ apt-get install v4l-utils
$ v4l2-ctl -d /dev/video0 -D
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : HC 3358+2100: HC 3358+2100  / USB 2.0 Camera: USB 2.0 Camera
        Bus info      : usb-1c1b000.usb-1
	...

The above messages indicate that "/dev/video0" is camera's device node.The mjpg-streamer application is an open source video steam server. After it is successfully started the following messages will be popped up:

 
$ ./start.sh
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 1280 x 720
 i: Frames Per Second.: 30
 i: Format............: YUV
 i: JPEG Quality......: 90
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled

start.sh runs the following two commands:

export LD_LIBRARY_PATH="$(pwd)"
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0" -o "./output_http.so -w ./www"

Here are some details for mjpg_streamer's major options:
-i: input device. For example "input_uvc.so" means it takes input from a camera;
-o: output device. For example "output_http.so" means the it transmits data via http;
-d: input device's subparameter. It defines a camera's device node;
-y: input device's subparameter. It defines a camera's data format: 1:yuyv, 2:yvyu, 3:uyvy 4:vyuy. If this option isn't defined MJPEG will be set as the data format;
-r: input device's subparameter. It defines a camera's resolution;
-f: input device's subparameter. It defines a camera's fps. But whether this fps is supported depends on its driver;
-q: input device's subparameter. It defines the quality of an image generated by libjpeg soft-encoding;
-n: input device's subparameter. It disables the dynctrls function;
-fb: input device's subparameter. It specifies whether an input image is displayed at "/dev/fbX";
-w: output device's subparameter. It defines a directory to hold web pages;

In our case the board's IP address was 192.168.1.230. We typed 192.168.1.230:8080 in a browser and were able to view the images taken from the camera's. Here is what you would expect to observe:
mjpg-streamer-cam500a

2 Check CPU's Working Temperature

You can get CPU's working temperature by running the following command:

$ cpu_freq 
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU1 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU2 online=1 temp=26548C governor=ondemand freq=624000KHz
        CPU3 online=1 temp=26548C governor=ondemand freq=624000KHz

This message means there are currently four CPUs working. All of their working temperature is 26.5 degree in Celsius and each one's clock is 624MHz.
Set CPU frequency:

$ cpu_freq -s 1008000
Aavailable frequency(KHz):
        480000 624000 816000 1008000
Current frequency(KHz):
        CPU0 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU1 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU2 online=1 temp=36702C governor=userspace freq=1008000KHz
        CPU3 online=1 temp=36702C governor=userspace freq=1008000KHz


3 Test Infrared Receiver

Note: Please Check your board if IR receiver exist.
By default the infrared function is disabled you can enable it by using the npi-config utility:

$ npi-config
    6 Advanced Options     Configure advanced settings
        A8 IR              Enable/Disable IR
            ir Enable/Disable ir[enabled]

Reboot your system and test its infrared function by running the following commands:

$ apt-get install ir-keytable
$ echo "+rc-5 +nec +rc-6 +jvc +sony +rc-5-sz +sanyo +sharp +mce_kbd +xmp" > /sys/class/rc/rc0/protocols   # Enable infrared
$ ir-keytable -t
Testing events. Please, press CTRL-C to abort.

"ir-keytable -t" is used to check whether the receiver receives infrared signals. You can use a remote control to send infrared signals to the receiver. If it works you will see similar messages as follows:

1522404275.767215: event type EV_MSC(0x04): scancode = 0xe0e43
1522404275.767215: event type EV_SYN(0x00).
1522404278.911267: event type EV_MSC(0x04): scancode = 0xe0e42
1522404278.911267: event type EV_SYN(0x00).

4 Run Qt Demo

Run the following command

$ sudo /opt/QtE-Demo/run.sh

Here is what you expect to observe. This is an open source Qt Demo:
K2-QtE

5 How to install and use docker (for armhf system)

5.1 How to Install Docker

Run the following commands:

sudo apt-get update
sudo apt-get install docker.io

5.2 Test Docker installation

Test that your installation works by running the simple docker image:

git clone https://github.com/friendlyarm/debian-jessie-arm-docker
cd debian-jessie-arm-docker
./rebuild-image.sh
./run.sh