锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

NanoPi/zh

时间:2023-06-23 13:37:00 30sdc24v继电器二极管tv02w101b传感器zh30104

ed1d7ae9b3ace7b11ac59ad99eaa0cc4.png

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.登录这个地址NanoPi:

ssh root@192.168.100.1

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

搜索并连接电脑nanopi-wifiap该无线热点(密码为123456789),连接成功后可通过ssh到192.168.8.登录这个地址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/interfacesd/目录下新建一个与网络接口同名的配置文件 ,以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编写的一个小游戏俄罗斯方块,其运行效果如下。

LED模块

模数转换:

继电器模块:

[8]

三轴重力加速度模块:

[9]

三轴数字指南针模块:

温度传感器模块:

温湿度传感器模块:

无源蜂鸣器模块:

摇杆模块: Joystick

I2C(PCF8574)+LCD1602:

声音传感器:

超声波模块:

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章