Overview

Front

Back

NanoPi是友善之臂专门为嵌入式Linux爱好者、创客、玩家设计的一款低功耗ARM主控板,它的尺寸只有Raspberry Pi(RPi)的一半大小,并且兼容RPi的GPIO接口,NanoPi集成无线WiFi和蓝牙4.0模块,并带有并行摄像头接口,和全彩LCD接口,可从TF卡运行Linux/Debian系统,非常适合物联网、无线智能小车、机器人、图像识别、人机界面等应用开发。

CPU: Samsung S3C2451, 运行主频400Mhz

RAM: 64M DDR2

集成SDIO WiFi蓝牙模块

USB Type A x1

调试串口 x1

microSD Slot x1

microUSB x1: 支持供电和数据传输,可模拟为串口和以太网

LCD接口: 0.5mm间距贴片FPC座,支持全彩LCD (RGB:8-8-8)

DVP Camera接口:0.5mm间距竖直贴片FPC座,包含ITU-R BT 601/656 8-bit,I2C和IO

GPIO1: 2.54mm间距,40pin, 兼容RPi的GPIO,含UART, SPI, I2C, IO等管脚资源

GPIO2: 2.54mm间距, 12pin, 含I2S, I2C, UART等管脚资源

PCB 尺寸: 75 x 30 mm

供电: DC 5V

软件支持: u-boot, Linux-4.1, Debian8 jessie, Rabbit linux

NanoPi接口布局

GPIO1 管脚定义

GPIO2 管脚定义

Pin#

Name

Pin#

Name

1

VDD_5V

2

VDD_SYS_3.3V

3

TXD2

4

RXD2

5

SDA0

6

SCL0

7

IISSDO0

8

IISSDI0

9

IISSCLK0

10

IISLRCK0

11

IISCDCLK0

12

DGND

Debug Port CON1(UART0)

Pin#

Name

1

DGND

2

VDD_5V

3

TXD0

4

RXD0

DVP Camera IF 管脚定义

Pin#

Name

1, 2

VDD_SYS_3.3V

7,9,13,15,24

DGND

3

SCL0

4

SDA0

5

GPH13

6

GPJ12

8

XCLK

10

NC

11

VSYNC

12

HREF

14

PCLK

16-23

Data bit7-0

RGB LCD IF 管脚定义

Pin#

Name

1, 2

VDD_5V

11,20,29

DGND

3-10

Blue LSB to MSB

12-19

Green LSB to MSB

21-28

Red LSB to MSB

30

GPG12

31

GPG2

32

XnRSTOUT Form CPU

33

VDEN

34

VSYNC

35

HSYNC

36

LCDCLK

37,38,39,40

XM,XP,YM,YP

说明

VDD_SYS_3.3V: 3.3V电源输出

VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V。

要开启你的NanoPi新玩具,请先准备好以下硬件

NanoPi主板

microSD卡/TF卡: 最小系统需要64M

microUSB线

一台运行Linux的电脑,需要联网,建议使用Debian jessie 64位系统

1) 将microSD插入Ubuntu的电脑,用以下命令查看你的SD卡设备名

dmesg | tail

当dmesg输出类拟信息 sdc: sdc1 sdc2时,则表示SD卡对应的设备名为 /dev/sdc,也通过用命令cat /proc/partitions来查看。

2) 下载固件并制作microSD卡

git clone https://github.com/friendlyarm/sd-fuse_nanopi.git

cd sd-fuse_nanopi

su

./fusing.sh /dev/sdx

(注:/dev/sdx请替换为实际的SD卡设备文件名)

如果你从github获取文件遇到障碍,我们提供了一个http下载的链接:[1]。

如果你在使用fusing.sh脚本制作卡时遇到问题,可以通过下载NanoPi-fuser-win32.zip固件包,在Windows系统下制作SD卡,下载地址:[2]。

将制作好的microSD卡插入NanoPi,使用microUSB线连接电脑,NanoPi会上电自动开机,看到板上的蓝色LED闪烁,这说明系统已经开始正常运行了,默认安装的是Debian系统。

用microUSB线将NanoPi连接到电脑后,在电脑上敲入dmesg命令,看到以下输出信息表示连接成功:

[12601.100339] usb 2-1.7: Product: FriendlyARM Gadget v2.4

[12601.100343] usb 2-1.7: Manufacturer: Linux 4.1.2-FriendlyARM with s3c-hsudc

[12601.103192] cdc_acm 2-1.7:2.0: This device cannot do calls on its own. It is not a modem.

[12601.103368] cdc_acm 2-1.7:2.0: ttyACM0: USB ACM device

[12601.105300] cdc_ether 2-1.7:2.2 usb0: register 'cdc_ether' at usb-0000:00:1d.0-1.7, CDC Ethernet Device, 46:a1:e7:6d:5c:32

在电脑上输入ifconfig命令,可以看到多了一个usb0的网络设备,这时可以通过ssh到192.168.100.1这个地址来登录NanoPi:

ssh root@192.168.100.1

在提示输入密码时,输入预设的密码fa,即可登入。

在电脑上搜索并连接nanopi-wifiap这个无线热点(密码为123456789),连接成功后,可以通过ssh到192.168.8.1这个地址来登录NanoPi:

ssh root@192.168.8.1

在提示输入密码时,输入预设的密码fa,即可登入。

NanoPi出厂时WiFi已被设置为无线热点模式,要连接WiFi网络,需要先退出热点模式,可使用以下命令退出:

turn-wifi-into-apmode no

接着,使用ssh连接NanoPi,先输入以下命令查询一下WiFi的网络接口,wlan开头的就是WiFi:

ifconfig -a

默认情况下是wlan0,你需要在/etc/network/interfaces.d/目录下新建一个与网络接口同名的配置文件 ,以wlan0为例,用vi命令新建以下文件:

vi /etc/network/interfaces.d/wlan0

wlan0文件的内容如下:

auto lo

iface lo inet loopback

auto wlan0

iface wlan0 inet dhcp

wpa-driver wext

wpa-ssid YourWiFiESSID

wpa-ap-scan 1

wpa-proto RSN

wpa-pairwise CCMP

wpa-group CCMP

wpa-key-mgmt WPA-PSK

wpa-psk YourWiFiPassword

其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码。

需要注意的是,你的TF卡如果在多块板子上运行,WiFi的网络接口可能会被重命名为wlan1, wlan2等,你可以通过清空这个文件的内容并重启让它恢复为默认值:/etc/udev/rules.d/70-persistent-net.rules。

连接WiFi后,用手机的SSH客户端登陆NanoPi

NanoPi在出厂时,已将WiFi设置为无线热点模式,默认的热点名称为 nanopi-wifiap,密码为123456789。

WiFi工作模式可通过以下命令查询:

cat /sys/module/bcmdhd/parameters/op_mode

输出为数字2则表示当前处于无线热点模式。

如果当前的WiFi不是无线热点模式,则可以通过以下命令进行开启:

turn-wifi-into-apmode yes

无线热点的名称和密码可以通过编辑/etc/hostapd/hostapd.conf文件来修改。

在Debian jessie系统中我们已经预装了蓝牙所需的相关软件包:bluetooth,bluez,obexftp等。

下面我们将在命令行演示NanoPi与手机之间通过蓝牙来上传和下载文件。

本例中,我使用测试设备是一台MX4的手机,在测试之前,先将手机的蓝牙功能开启,并设置成可被发现的模式,之后在NanoPi上输入以下命令搜索周边的蓝牙设备:

hcitool scan

Scanning ...

8C:BE:BE:C5:2C:C7 MX4

上面列出的结果成功找到了我测试用的MX4手机,我们记住它的地址是8C:BE:BE:C5:2C:C7,然后可以用sdptool命令看看它支持哪些协议:

sdptool browse 8C:BE:BE:C5:2C:C7

由于我们要测试的是蓝牙的文件传输功能,所以我们只关心设备是否支持OBEX File Transfer协议,如果有该协议的支持才能进行下一步的操作:

Service Name: OBEX File Transfer

Service RecHandle: 0x1000c

Service Class ID List:

"OBEX File Transfer" (0x1106)

Protocol Descriptor List:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Channel: 11

"OBEX" (0x0008)

Language Base Attr List:

code_ISO639: 0x454e

encoding: 0x6a

base_offset: 0x100

Profile Descriptor List:

"OBEX File Transfer" (0x1106)

Version: 0x0100

可以看到我的手机是支持OBEX File Transfer协议,那么就可以用obexftp命令来操作了,以下命令列出手机根目录下的文件:

obexftp -b 8C:BE:BE:C5:2C:C7 -c / -l

以下命令下载手机上的/Adnroid/djaof.dll文件到NanoPi:

obexftp -b 8C:BE:BE:C5:2C:C7 -c /Android -g djaof.dll

以下命令将上传本地的hello.txt文件到手机的/Android目录:

obexftp -b 8C:BE:BE:C5:2C:C7 -c /Android -p hello.txt

iBeacon技术主要用于室内测距和定位,输入以下命令可以让NanoPi成为一个iBeacon基站:

hciconfig hci0 up

hciconfig hci0 leadv 3

hciconfig hci0 noscan

hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 00 00 00 C8

完成后NanoPi的蓝牙会不间断地发送广播消息,这时,只要在你的Android或iPhone手机上安装一个叫Locate Beacon的应用,则可以通过该应用测试到从手机到NanoPi的距离,如果你需要实现室内定位,则需要配置多个iBeacon基站,可在网上查阅这方面的资料。

该功能需要在NanoPi部置一个BLE服务程序,通过运行该服务程序,使NanoPi成为一个BLE外围设备,然后手机就可以通过蓝牙与NanoPi进行连接和数据通讯了。

BLE服务程序是 Open source 的,你可以通过以下途径获取:

git clone https://github.com/friendlyarm/ble-peripheral-service-demo.git

通过执行其下的build.sh编译脚本,即可编译出一个名为nanopi_ble_server的可执行文件:

./build.sh

这个脚本假设你的交叉编译器安装在以下路径:/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc,如果不是这个路径,请自行更改脚本,

编译完成后,将nanopi_ble_server拷贝到NanoPi上,使用以下命令启动它:

hciconfig hci0 down

service bluetooth stop

chmod 755 nanopi_ble_server

./nanopi_ble_server

最后,在你的Android手机上安装一个名叫 BLE Scanner,或者iPhone上安装一个名叫Lightblue的应用,则可以通过蓝牙搜索并连接到NanoPi,

我们在上面的仓库中也提供了一个开源的 Android Demo,位于android/BLETest目录,这是一个eclipse的工程,该Android Demo演示了在手机上如何通过BLE连接到NanoPi,并进行数据的接收与发送, 手机端Demo的运行界面如下:

NanoPi端的服务程序输出如下:

我们提供的是标准的Debian jessie系统,你可以使用apt-get等命令来安装软件包,如果板子是首次运行,需要先用以下命令更新软件包列表:

apt-get update

然后就可以安装软件包了,例如要安装ftp服务器,使用以下命令:

apt-get install vsftpd

如果软件包下载速度不理想,你可以编辑 /etc/apt/sources.list 更换一个更快的源服务器,这个网址[3]有一份完整的源镜像服务器列表,注意要选用一个带armel架构的。

首先下载并解压编译器:

git clone https://github.com/friendlyarm/prebuilts.git

tar xvzf prebuilts/gcc/arm-linux-gcc-4.4.3.tar.gz -C /

然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:

export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin/:$PATH

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

. ~/.bashrc

由于编译器是32位的,如果你的电脑安装的是64位的Linux系统,你还需要安装一些软件包才能运行该编译器,例如在Debian8 jessie desktop 64bit系统下,可输入以下命令安装:

dpkg --add-architecture i386

apt-get update

apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

下载U-Boot源代码并编译,注意分支是nanopi:

git clone https://github.com/friendlyarm/uboot_nanopi.git

cd uboot_nanopi

git checkout nanopi

make nanopi_config

make

编译成功结束后您将获得u-boot.bin, 如果想马上就测试u-boot,可使用脚本fusing.sh烧写新的u-boot 到SD 卡。

假设您的 SD 卡对应设备名是/dev/sdd,以root运行以下命令:

su

./fusing.sh /dev/sdd

注意:以上操作会破坏SD卡的数据,请先进行备份。

下载内核源代码并编译

git clone https://github.com/friendlyarm/linux-4.x.y.git

cd linux-4.x.y

git checkout nanopi-v4.1.y

make nanopi_defconfig

touch .scmversion

make

NanoPi内核所属的分支是nanopi-v4.1.y,在开始编译前先切换分支,编译成功结束后,新生成内核烧写文件为 arch/arm/boot/zImage 。

目前的内核配置会编译生成内核模块,如ipv6、netfilter,通常在编译内核时,内核模块(.ko)已经编译,如果您有新的内核模块或者内核配置有变化,则需要编译安装内核模块并打包成 kernel-modules.tgz,然后替换Rootfs下的 basefs/kernel-modules.tgz。

以root用户运行以下命令安装.ko到/tmp/nanopi-modules 。

make INSTALL_MOD_PATH=/tmp/nanopi-modules modules_install

接下来可对内核模块进行strip,然后创建压缩包。

cd /tmp/nanopi-modules/lib/

find . -name \*.ko | xargs arm-linux-strip --strip-unneeded

tar czvf kernel-modules.tgz modules/

如果想测试新编译的内核模块,也可以解压压缩包或复制modules 到已制作好的能启动NanoPi的SD卡的rootfs下的/lib 目录。

假设SD卡的rootfs已经mount到 /media/fa/NANOPI,以root 运行以下命令:

rm -rf /media/fa/NANOPI/lib/modules/

tar xzvf kernel-modules.tgz -C /media/fa/NANOPI/lib/

预装的Debian系统使用的是官方编译的软件包,该文件系统你可以在以下仓库中找到:

git clone https://github.com/friendlyarm/sd-fuse_nanopi.git

cd sd-fuse_nanopi/prebuilt/

ls -l rootfs.tgz

如果你想重新制作Debian系统,你可以解压rootfs.tgz来进行编辑,完成后再用tar重新压缩即可,例如,要预装一个下载好的deb包到文件系统,可使用以下命令:

tar xzf rootfs.tgz

dpkg -i --force-all --root=./rootfs /tmp/qtembedded-4.8.5_armel.deb

tar czf rootfs.tgz rootfs

先下载SD卡烧写的工具包,并切换到相应master分支:

git clone https://github.com/friendlyarm/sd-fuse_nanopi.git

cd sd-fuse_nanopi

git checkout master

在sd-fuse_nanopi下有个prebuilt,用于存放SD系统运行所需的二进制文件:

Bootloader: u-boot.bin

内核命令行参数: sdenv.raw

Linux内核:zImage

文件系统压缩包: rootfs.tgz

你只需要将上面章节中编译生成的文件替换它们,就可以测试运行你所编译的系统了,替换文件后,在sd-fuse_nanopi目录下执行以下命令制作SD卡:

su

./fusing.sh /dev/sdx

(注:/dev/sdx请替换为实际的SD卡设备文件名)

烧写成功完成后,把SD卡放入NanoPi运行试试吧。

启动NanoPi后,通过以下命令可以查看U-Boot命令环境变量:

fw_printenv bootargs

如果需要更改环境变量,例如加入lcd的参数,可以使用fw_setenv命令,以下是调用示例:

fw_setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 init=/sbin/init console=ttySAC0,115200 lcd=S70

如果你想制作SD卡时就立即拥有新的环境变量,可以将SD卡插入电脑,在电脑上执行以下命令把环境变量导出来,替换掉prebuilt目录下的sdenv.raw,然后重新烧写SD卡即可:

cd sd-fuse_nanopi

./readenv.sh /dev/sdd

cp sdenv.raw prebuilt/

由于CPU S3C2451的iROM 是从SD卡的尾部来读取Bootloader,且普通SD卡和SDHC卡的位置不同,而不同品牌或是不同容量的SD卡的大小又是不同的,因此没办法创建适应不同卡的RAW文件。

如果您有一批大小完全一致的SD卡,可使用工具如linux下的dd 读取已经制作好的SD 卡的全部数据,保存为RAW文件,然后将此文件写入其它大小相同的SD卡。

另外,由于现在的SD卡容量通常都比较大,对于8 GB的SD卡,写一个RAW文件将需要较长时间,而目前的rootfs实际只有 ~23 MB,因此直接使用脚本制作SD卡将更快。

NanoPi可以连接友善之臂生产的以下型号的LCD:H43,S70,A70,W50,A97,L80,G10,A56,W101,W35,P43,P35,TD35。

要让LCD开始工作,还有2个步骤需要做:

1) 如果你的miniUSB是连接电脑的,那么其供电可能没法满足LCD的要求,你需要外接一个5V 2A的电源,连接到GPIO的VDD_5V和DGND引脚即可;

2) 你需要更改 U-boot 的环境变量,加入lcd型号参数,例如S70,在板子运行之后,输入以下命令修改:

先打印一下现有的环境变量:

fw_printenv bootargs

输出如下:

bootargs=root=/dev/mmcblk0p2 rootfstype=ext4 init=/sbin/init console=ttySAC0,115200

将bootargs=后面的参数内容加上lcd=S70,再用fw_setenv命令重新设置

fw_setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 init=/sbin/init console=ttySAC0,115200 lcd=S70

重启后,LCD应该能显示Debian的命令行登录界面,可以连接USB键盘进行登录操作。

下载Qt和tslib软件包:

apt-get update

apt-get install qtembedded

apt-get install friendlyarm-tslib

qtemebdded是Qt4相关的库,friendlyarm-tslib则用于触摸屏校准。

运行Qt示例程序:

. /usr/bin/setqt4env

/usr/local/Trolltech/QtEmbedded-4.8.5-arm/examples/tetrix -qws

脚本setqt4env用于设置Qt和tslib相关的环境变量,如果是第一次运行该脚本,则会出现校准界面,根据提示点击5个点完成校准。

tetrix则是用Qt4编写的一个小游戏俄罗斯方块,其运行效果如下。

Nanopi_with_s70.jpg

LED模块:

模数转换:

继电器模块:

[8]

三轴重力加速度模块:

[9]

三轴数字指南针模块:

温度传感器模块:

温湿度传感器模块:

无源蜂鸣器模块:

摇杆模块: Joystick

I2C(PCF8574)+LCD1602:

声音传感器:

超声波模块:

nanopi网站服务器,NanoPi/zh相关推荐

  1. linux怎么添加中文服务器,linux不支持中文怎么办_网站服务器运行维护

    linux如何实现图形界面与命令行界面的切换_网站服务器运行维护 linux实现图形界面与命令行界面的切换的方法是:执行[init 3]命令可以切换到命令行模式,执行[init 5]命令可以切换到图形 ...

  2. 导购网站 服务器,导购网站云服务器配置

    导购网站云服务器配置 内容精选 换一换 云耀云服务器与弹性云服务器的主要区别:云耀云服务器:云耀云服务器是可以快速搭建简单应用的新一代云服务器,云耀云服务器按已搭配的套餐售卖,适用于低负载应用场景,可 ...

  3. 提高IIS网站服务器的效率的八种方法 (转载)

    作者:未知  请作者速与本人联系 以下是提高IIS 5.0网站服务器的执行效率的八种方法: 1. 启用HTTP的持续作用可以改善15~20%的执行效率. 2. 不启用记录可以改善5~8%的执行效率. ...

  4. 数据库服务器跟网站服务器间传输慢的问题

    数据库服务器和网站服务器是分开的,现在从网站服务器这边查数据比较慢,什么原因??? 一.首先确定服务器之间的网络有没有问题 可以简单的在网站服务器上ping数据库服务器(反过来也可以),一般ping出 ...

  5. Linux web 网站服务器 虚拟主机

    Linux  web 网站服务器  虚拟主机 转载于:https://blog.51cto.com/daijiehao/1861625

  6. linux运行隐藏文件,Linux下如何隐藏文件_网站服务器运行维护,Linux,隐藏文件

    linux系统怎样安装软件_网站服务器运行维护 linux系统安装软件的方法:1.使用apt命令进行安装,如[apt install app_name]:2.使用rpm命令进行安装,如[rpm -i ...

  7. 像淘宝、京东这样的大型电商网站服务器构架完全部署解决方案

    像淘宝.京东这样的大型电商网站服务器构架完全部署解决方案 参考文章: (1)像淘宝.京东这样的大型电商网站服务器构架完全部署解决方案 (2)https://www.cnblogs.com/lazb/p ...

  8. centos桌面进入服务器,解决如何在centos7桌面中打开终端_网站服务器运行维护

    如何解决在Centos中NAT无法上网_网站服务器运行维护 在Centos中NAT无法上网的解决方法:首先将网络设置为"DHCP"自动获取IP:然后查看主机的相关服务是否开启:最后 ...

  9. 什么命令看服务器系统,查看linux系统版本可以使用什么命令_网站服务器运行维护...

    win10系统任务栏不显示应用图标怎么办_网站服务器运行维护 win10系统任务栏不显示应用图标的解决方法是:1.鼠标右键点击任务栏空白处,在弹出的选项列表中选择[任务管理器]选项:2.右键点击[Wi ...

最新文章

  1. 危机四伏的千亿级金融放贷市场,我们能做什么?
  2. CentOS 7系统关闭yum自动下载更新
  3. idea部署maven+javaweb项目到jboss
  4. is array php,PHP 源码 — is_array 函数源码分析
  5. 谈谈一些有趣的CSS题目(十五)-- 谈谈 CSS 关键字 initial、inherit 和 unset
  6. 不一样的摊余成本法债基—终篇
  7. (完整版)环境工程学复习资料资料
  8. Outlook邮箱开启POP服务
  9. win7下安装python库的若干问题
  10. 爬取巨潮资讯网中与“贵州茅台”相关的公告的标题和网址。
  11. SCU2016-05 I题 trie图 + 大数dp
  12. 软件工程复习题-快来划重点
  13. 不积小流,无以成江海;不积跬步,无以至千里
  14. day3-转自金角大王
  15. IFA与“色“俱进,三星“量子点+曲面”如何掀起新变革?
  16. 01-名词冠词(思维导图记录)
  17. 查询客户时,提示“查询已超出200行,请限制查询“
  18. eclipse 取消xml校验
  19. Java实现 蓝桥杯 算法提高 扶老奶奶过街
  20. 亚马逊工作室与Gillian Flynn签订全面协议,将制作《乌托邦》新剧集

热门文章

  1. 通过链接打开公众号的方法
  2. 基于FPGA的双目相机目标深度图像提取实现——详细版
  3. loading加载效果(纯css)
  4. Ubuntu详细安装教程(小白友好型)
  5. java 循环遍历字符串_遍历字符串中所有字符的最快方法
  6. Git提交代码完整流程
  7. dsoframer打包cab加签名
  8. 找出星型图的中心节点
  9. 大数据测试类型,学习步骤
  10. JS截取字符串方法实例