树莓派变身笔记本:整体模块化可改

如果玩过树莓派的人应该知道Pi-Top,他们创建了由树莓派驱动的笔记本电脑,近期他们宣布推出其最新一代产品,新的Pi-Top笔记本电脑基于Raspberry Pi 3。新一代产品采用了模块化的设计,可以将键盘下滑并在树莓派的接口上添加其他设备,让我们来看一下它的外形:

树莓派隐藏在键盘底部,通过排线连接屏幕与键盘。新型号是世界上第一款具有滑动键盘的笔记本电脑,考虑到Raspberry Pi 3包含一系列GPIO引脚,用于与各种物理组件(如电机,伺服机构,泵等)进行交互时,这一点非常有用。

它拥有8到10个小时的电池寿命,以及一个14英寸1080p屏幕。

基于Raspberry Pi 3,性能上采用四核1.2Ghz ARM CPU,1GB内存,以及至关重要的蓝牙和Wi-Fi功能。

现在这款产品主要面向学生编程学习市场,目前这款产品零售价格319美元。虽然Raspberry Pi 3的性能算不算一台合格的笔记本,但是对于学生编程还是非常实用的,因为它提供了更多的接口让学生可以用于开发调试。

转发自搜狐

基于树莓派的迷你“火星车”,开启不走寻常路的地球之旅

电池驱动、智能终端控制、全高清摄像头、承重11磅、防水….只有你想不到的,没有它做不到的。

人类的火星之旅路途遥远,并且花费不菲。如果你的梦想是拥有“火星漫游者”探测器,那么它可能不会成真了。但如果你想要“地球漫游者”探测器,现在触手可及。

Turtle Rover 就是地球版的迷你“火星车”,它由 Kickstarter 项目团队研发。目前该团队正在发起募集6万欧元(约7.15万美元)的众筹活动,以促成 Turtle Rover 在“地球”上面世。

 

Turtle Rover 是四轮地面无人机,内置电池支持运行4小时;另外它的智能控制终端,兼容于大部分电脑、笔记本和手机。断网了也不用担心,它会自动生成自己的 Wi-Fi 网络连接。

Turtle Rover 可以深入到人类难以抵达的地方,并且它的行动比人类要灵活得多。该项目团队称,在“火星漫游者”探测器的启发下,这款“地球漫游者”也被设计成低重心和悬浮设置。这样即便在复杂的地形中,探测器也能行动自如、不会翻滚在地。

 

另外,Turtle Rover 的机械臂可以提起重达1.1磅重量的物体,用户可以定制专属的机械臂。不仅如此,用户还可以添置专属的附件,如微软 Kinect(Xbox360的体感装置)或者激光雷达(LiDAR)传感器,用于探测深度和感知环境。

Turtle Rover 的机顶可以承重 11 磅。你可以在它上面安装单反相机、镜头等。如果开展远距离的洞穴探险,你可以准备一个里面装满地质样本的缓存器的盒子,然后安装在机顶,Turtle Rover 就能代替你观察和探测地质了。

目前,以上这些硬件和软件全部是开放源码的。该团队解释:之所以这样做,是想把 Turtle Rover 打造成一个发展性平台或教育平台。

在没有外部资金援助的情况下,该项目仅依靠赞助人的支持。

但他们表示,自从向外界展示了自身实力以来,现在有不少风险投资人兴致勃勃。

据悉,2018年4月,Turtle Rover 将以 1000 美元左右的价格起售。届时,它将为买家配备定制的工具包和完善的机械系统。

Turtle Rover 作为一个自力更生的智能硬件创业项目,它的前途看起来一片光明。对于太空和无人机爱好者来说,其吸引力不容小觑:Turtle Rover 可以帮助这些人深入挖掘自己的兴趣,发现新的天地。

Kickstarter 团队的众筹活动将于9月24日结束。截止9月6日,众筹目标已经完成了一半。

 

本文来自

https://36kr.com/p/5092701.html

 

基于树莓派为儿童打造编程教育,Piper获760万美元A轮融资

【猎云网(微信号:ilieyun)】9月24日报道 (编译:叶展盛)

Piper是编程教育计算机树莓派(Raspberry Pi)的制作公司,这种编程教育工具专为儿童打造。今日这家公司获得了760万美元A轮融资,由Owl Ventures领投。

儿童想要在未来取得一番成就,合适的技能必不可少。我们从现有的创企动态来看,一般性的编程和计算机技能无疑会是其中之一。Piper于2014年成立于旧金山,这家公司的第一款产品是一种电脑工具箱,它能通过《我的世界》来帮助孩子学习电子元器件和编程知识。

这个工具箱包含了很多部件,包括一台树莓派电脑、LCD显示屏、按键、电线、蜂鸣器、电池、快关和扬声器等。

近年来,这块市场里出现了不少公司。比如Littlebits就为它的电子元器件搭建平台筹集了不少融资,该平台能让孩子将不同的部件拼在一起(无需焊在一起)制作一些东西。另外,英国的Kano也成为了这个行业的先驱之一。

目前Piper的融资总额已经超过了1000万美元,公司计划利用新一轮的融资“为产品打造一个更大的生态系统”,从而服务于各年龄的儿童,培养他们的STEM(科学、技术、工程及数学)能力。

Piper表示自己的电脑工具箱已经被推广到全球750多个学校里,其中有三分之二在美国。只需要300美元,你可以在Piper的线上网店或常规的实体零售店买到它。

基于Zero W和Batocera的游戏掌机

使用batocera系统配置树莓派Zero W掌机,batocera系统与其他游戏机系统相比性能要求低,非常适合用于Zero这种低配置的板子上使用。

下载镜像

这个网站,选择针对树莓派Zero W的镜像下载,Windows用Win32DIskImager直接烧写,Linux用dd命令即可。
 

初次配置

通过HDMI线连接电视机或者显示器,给树莓派正常供电,系统会自动分配空间,自动配置完,然后强制关机直接切断电源就行。

配置分辨率

考虑到我们需要用小屏幕来作为掌机的显示,系统不会默认就直接适配屏幕,以我的这个5寸屏幕为例

需要修改一些配置文件,这个步骤需要Linux系统或者虚拟机。
首先需要修改/RECALBOX目录下的config.txt
将下面这段加到里面去(可能需要sudo命令行)。
framebuffer_width=800
framebuffer_height=480
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt  800  480  60  6  0  0  0
device_tree=bcm2710-rpi-3-b.dtb
dtparam=spi=on
把/SHARE/system/recalbox.conf中的两处CEA 4 HDMI改成DMT 87 HDMI
使用其他屏幕的时候用类似的操作就行了,配置成功之后应该可以使batocera的主屏幕和游戏界面都完全适配使用的硬件屏幕。

设置GPIO控制

修改/SHARE/system/recalbox.conf中的两行配置
controllers.gpio.enabled=1  
controllers.gpio.args=map=1,2 => controllers.gpio.args=map=1
重启之后就可以尝试用上面这张图的相关引脚了,默认是上拉的引脚,所以只要把引脚比如27号连一下GND,看他会不会有左滑的效果,如果有效果的话,就是说软件上配置成功了,硬件上还需要做一些事情,需要焊一块小型的掌机来操作才行。
 
总体思路就是在一块洞洞板上焊接需要数量的微动开关,然后每个开关一边连到相应的开关,另一边一起连到GND即可,具体随意就行,包括整个的布局之类的,只要按下去有效果就行了。
比如像我这样的很多飞线的,能用就行…
使用游戏机

正式玩游戏之前需要一些其他额外的配置
配置WI-FI

游戏上传在无法联网的板子上,我们只能通过直接对SD卡读写,拔下SD卡然后往里面复制粘贴进去游戏ROM文件,需要用Linux系统或者虚拟机来打开SD卡,ROM放置的目录在/recalbox/share/roms,里面有分开各种模拟器的目录,把相应的游戏rom或者压缩包粘贴到相应的模拟器目录下就好了。

网络上传对于能联网的板子,尤其是树莓派3和ZERO w这类有无线WiFi的板子,完全可以通过网络的方式上传游戏文件,而不需要麻烦的插拔SD卡。

首先肯定需要联网,可以看上一篇文章中的联网的步骤,确保板子和PC在同一局域网里面

打开我的电脑中的网络,应该能看到RECALBOX的一个网络位置

进入这个位置,就能看到下面的目录结构

直接复制相应的ROM文件到对应的模拟器目录下面,然后在游戏机上,进入主菜单的游戏设置,然后选择更新游戏列表,之后再进入对应的模拟器目录,就能看到刚刚复制进去的游戏了。

有时候可能在网络中直接看不到这个网络位置,我们也能在我的电脑的地址栏里面,直接输入\\RECALBOX或者对用的ip地址,比如\\192.168.3.18,应该也能进入上面的那个目录结构,然后做类似的操作即可。

最后就能用自己做的手柄开始玩各种复古游戏了,只要你能找到它的ROM。

用树莓派DIY共享鱼缸,支持微信远程喂鱼

近期把精心打理数年的水族缸给“开源共享了”,实现了远程观赏和喂鱼互动的功能,先看效果吧。
直播页面:http://maker.quwj.com/program/nature-aquarium
远程喂鱼没有自己设计操作界面,而是接入了微信公众平台,通过微信发送指令实现投食。看这段现场演示视频:https://v.qq.com/x/page/f0554ga4h2k.html

投食说明在直播页面和项目主页都有详细介绍。这个项目的意义还在于你可以把自家的屏幕变成虚拟水族馆,没事看看鱼,和鱼互动一下,等同于养了一缸鱼。更让人激动的是,你根本只管投食只管享用悠然自得,维护鱼缸等琐碎繁杂的问题全都不用管,是不是便宜占尽了呢?

 

下面分享一下搭建这套共享水族馆的 Make 过程,其中有关于树莓派上实现视频直播的几种方案近期会在树莓派实验室进行介绍,有兴趣的朋友可以参考把自家的宠物也共享出来(需要支持可以联系本项目作者)。

组件清单

普通生态鱼缸 × 1
树莓派主板 × 1
罗技 C270 摄像头 × 1
自动投食器 × 1
LED 鱼缸灯 × 1
继电器 × 2
路由器 × 1
公网IP地址 × 1
微信公众账号 × 1

系统架构

这里介绍下最关键的投食流程。用户通过微信给趣无尽微信公号发送投食指令,微信公众平台调用之前设定好的后台服务,将指令保存在控制服务器上。然后由树莓派去从控制服务器上取这个指令并执行。
这么设计主要是考虑到实际环境下的稳定性,当然最简单的方式是把树莓派直接暴露在外网,用户直接连上树莓派进行操作也完全可行。
树莓派拿到投食的指令之后,控制投食机完成投食。
没错,这个投食机怎么方便实现是小问题。我直接买了一个现成的投食机,Hack 一下开关部件,加一个继电器接入树莓派就搞定了。

Hack 投食机

Hack 前的投食机如图所示。

拆开后发现结构简单,测试了一下,最上面的开关位置短接即可启动投食机。

所以就把开关接出来,用继电器控制吧。用烙铁在旁边捅了个洞,以便把线引出来。

 

接好继电器。

整个树莓派控制设备如下。

投食机装到鱼缸上,大功告成。

至于直播,采用 motion、simple rtmp plublish 或 gstreamer 方案。几种方案近期会在树莓派实验室进行介绍。

其中最关键的非技术性因素是,你的 ISP 需要给你分配了公网 IP 地址,这样你才可以将树莓派的某个服务(比如视频采集)通过路由器的端口映射暴露在外网。

项目主页:http://maker.quwj.com/project/4

项目补充说明:
1.视频实时采集自一台树莓派3B,由于树莓派性能、稳定性、家庭带宽等多重因素限制,在线人数较多时直播服务可能会出现卡顿或不可用。
2.请使用安装了 Flash 插件的浏览器打开,目前暂不支持 iPhone、iPad 浏览器观看,推荐使用 Chrome。
3.一般情况下,10~22点之外的时间段水族馆灭灯,这时基本上神马都看不到属于正常状况。
4.项目当前处于测试中,对性能优化尚在探索中,画质没有开到最佳。
5.项目随时会因设备维护而临时中断直播、关闭投食,属于正常状况。维护结束后会重新开放。
6.如发现水族馆存在异常状况,请联系作者处理,微信 spoony002。
7.作者组建了一个微信群,欢迎对热带鱼、草缸等有兴趣的朋友加入交流养鱼的经验和乐趣。添加作者微信号 spoony002 说明入群。

本文来自

用树莓派DIY共享鱼缸,支持微信远程喂鱼

无屏幕和键盘配置树莓派WiFi和SSH

不算是什么新功能了,在树莓派3B发布后不久,树莓派官方 Raspbian 系统久加入了允许在开机前对 WiFi 网络进行配置的机制。

一、WiFi 网络配置

用户可以在未启动树莓派的状态下单独修改 /boot/wpa_supplicant.conf 文件配置 WiFi 的 SSID 和密码,这样树莓派启动后会自行读取 wpa_supplicant.conf 配置文件连接 WiFi 设备。

操作方法简单:将刷好 Raspbian 系统的 SD 卡用电脑读取。在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,按照下面的参考格式填入内容并保存 wpa_supplicant.conf 文件。

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
 
network={
ssid="WiFi-B"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}

说明以及不同安全性的 WiFi 配置示例:
#ssid:网络的ssid
#psk:密码
#priority:连接优先级,数字越大优先级越高(不可以是负数)
#scan_ssid:连接隐藏WiFi时需要指定该值为1

如果你的 WiFi 没有密码

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}

如果你的 WiFi 使用WEP加密

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
wep_key0="你的wifi密码"
}

如果你的 WiFi 使用WPA/WPA2加密

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=WPA-PSK
psk="你的wifi密码"
}
<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>

如果你不清楚 WiFi 的加密模式,可以在安卓手机上用 root explorer 打开 /data/misc/wifi/wpa/wpa_supplicant.conf,查看 WiFi 的信息。

二、开启 SSH 服务

和 WiFi 配置相似,同样在 boot 分区新建一个文件,空白的即可,文件命名为 ssh。注意要小写且不要有任何扩展名。
树莓派在启动之后会在检测到这个文件之后自动启用 ssh 服务。随后即可通过登录路由器找到树莓派的 IP 地址,通过 ssh 连接到树莓派了。

如果需要远程桌面方式操作树莓派,可以通过 ssh 安装 xrdp,再用 Windows 的远程桌面客户端连接到树莓派

这个小技巧对于没有有线网卡、没有标准 USB 接口来直连键鼠,但集成了 WiFi 的树莓派 Zero W 尤其实用。

本文来自

无屏幕和键盘配置树莓派WiFi和SSH

树莓派驱动OLED屏幕以及花屏问题的处理

最近在学习树莓派,驱动OLED屏时出现了一个问题,就是花屏,折腾了两天后发现原来这个OLED的驱动芯片不是SSD1306而是SH1106,所以用Adafruit_Python_SSD1306这个库是花屏的。
OLED的驱动芯片有好几种,但是有的库只支持SSD1306芯片,所以当你的OLED屏出现花屏时就应该是芯片和库没对应上,购买OLED屏时最好购买i2c的SSD1306芯片的,库多且接线比较简单。

Python有两个可以用的OLED库:

Adafruit_Python_SSD1306库与Luma.oled库的安装说明(看不懂英文没关系,看下面我会说)。

本文的Luma.oled库参考了I2C接口的OLED在树莓派3上的应用 ,但这是旧版本的,新版本库不是这样安装,请看下文。

i2c接线

OLED引脚 树莓派物理BOARD引脚
VCC 1号
GND 6号
SCL 5号
SDA 3号

接好线后就是像一个L型的。

开启i2c功能

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools
sudo raspi-config

打开树莓派配置选择5 Interfacing Options。

选择P5 I2C回车激活I2C。

按回车启动就得了。

查看i2c地址

sudo i2cdetect -y 1

然后你能看到下面的地址,3c就是oled屏的i2c地址了,说明已经成功开启i2c啦

– 安装Adafruit_Python_SSD1306库

终端输入下面命令。

sudo apt-get update
sudo apt-get install build-essential python-dev python-pip
sudo pip install RPi.GPIO
sudo apt-get install python-imaging python-smbus
sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install

安装好Adafruit_Python_SSD1306库后,cd examples进入例程目录,ls查看文件,以shapes.py例程说明。

import time
      
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
      
import Image
import ImageDraw
import ImageFont
 
# Raspberry Pi pin configuration:
RST = 24
# Note the following are only used with SPI:
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0
      
# Beaglebone Black pin configuration:
# RST = 'P9_12'
# Note the following are only used with SPI:
# DC = 'P9_15'
# SPI_PORT = 1
# SPI_DEVICE = 0
 
# 128x32 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
      
# 128x64 display with hardware I2C:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
      
# Alternatively you can specify an explicit I2C bus number, for example
# with the 128x32 display you would use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_bus=2)
      
# 128x32 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
      
# 128x64 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
      
# Alternatively you can specify a software SPI implementation by providing
# digital GPIO pin numbers for all the required display pins.  For example
# on a Raspberry Pi with the 128x32 display you might use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, sclk=18, din=25, cs=22)
 
# Initialize library.
disp.begin()
      
# Clear display.
disp.clear()
disp.display()
      
# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
      
# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)
      
# Draw a black filled box to clear the image.
draw.rectangle((0,0,width,height), outline=0, fill=0)
 
# Draw some shapes.
# First define some constants to allow easy resizing of shapes.
padding = 2
shape_width = 20
top = padding
bottom = height-padding
# Move left to right keeping track of the current x position for drawing shapes.
x = padding
# Draw an ellipse.
draw.ellipse((x, top , x+shape_width, bottom), outline=255, fill=0)
x += shape_width+padding
# Draw a rectangle.
draw.rectangle((x, top, x+shape_width, bottom), outline=255, fill=0)
x += shape_width+padding
# Draw a triangle.
draw.polygon([(x, bottom), (x+shape_width/2, top), (x+shape_width, bottom)], outline=255, fill=0)
x += shape_width+padding
# Draw an X.
draw.line((x, bottom, x+shape_width, top), fill=255)
draw.line((x, top, x+shape_width, bottom), fill=255)
x += shape_width+padding
 
# Load default font.
font = ImageFont.load_default()
      
# Alternatively load a TTF font.
# Some other nice fonts to try: http://www.dafont.com/bitmap.php
#font = ImageFont.truetype('Minecraftia.ttf', 8)
      
# Write two lines of text.
draw.text((x, top),    'Hello',  font=font, fill=255)
draw.text((x, top+20), 'World!', font=font, fill=255)
 
# Display image.
disp.image(image)
disp.display()

按照你的oled屏修改代码,程序默认是12832的,你的oled屏是这个就不用改直接运行就OK。
如果是12864的I2C就像下面那样修改,把12832加#注释,12864#注释去掉保存。

# 128x32 display with hardware I2C:
#disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
      
# 128x64 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

终端输入sudo python shapes.py或用Python打开文件运行就能看到OLED屏有显示了。

– 安装Luma.oled库

终端输入下面命令。

sudo apt-get install python-dev python-pip libfreetype6-dev libjpeg-dev
sudo -H pip install --upgrade pip
sudo apt-get purge python-pip
sudo -H pip install --upgrade luma.oled<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>

注:如果你需要安装Python3的Luma.oled库的则按下面对应的Python3版本修改上面的命令进行安装。
pip ⇒ pip3
python ⇒ python3
python-dev ⇒ python3-dev
python-pip ⇒ python3-pip

如果安装Luma.oled库时出现红字错误,请继续执行命令重试,那是因为网络问题下载一个叫Pillow的库不成功。

安装好Luma.oled库后新建文件命名为oled.py,复制粘贴下面代码。参考这里使用说明

from luma.core.interface.serial import i2c, spi
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
 
# rev.1 users set port=0
# substitute spi(device=0, port=0) below if using that interface
serial = i2c(port=1, address=0x3C)
 
# substitute ssd1331(...) or sh1106(...) below if using that device
device = sh1106(serial)#这里改ssd1306, ssd1325, ssd1331, sh1106
 
with canvas(device) as draw:
    draw.rectangle(device.bounding_box, outline="white", fill="black")
    draw.text((30, 40), "Hello World", fill="white")

如果你的oled驱动芯片是其它型号找到device = sh1106(serial),把sh1106改成库支持的其它型号。
树莓派上用Python2打开oled.py运行就能看到下图的Hello World。

能驱动成功后我们去下载Luma.oled的examples代码
然后是examples里面的例子怎么用呢?如果是非ssd1306芯片直接运行还是花屏的,因为那个examples的代码需要修改。
下面以pi_logo.py为例参考上面那个Hello World的例子修改成自己OLED芯片型号的(文件放在在examples内)。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2014-17 Richard Hull and contributors
# See LICENSE.rst for details.
# PYTHON_ARGCOMPLETE_OK
 
"""
Display the Raspberry Pi logo (loads image as .png).
"""
 
import os.path
from PIL import Image
 
from luma.core.interface.serial import i2c, spi
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
 
def main():
    img_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
        'images', 'pi_logo.png'))
    logo = Image.open(img_path).convert("RGBA")
    fff = Image.new(logo.mode, logo.size, (255,) * 4)
 
    background = Image.new("RGBA", device.size, "white")
    posn = ((device.width - logo.width) // 2, 0)
 
    while True:
        for angle in range(0, 360, 2):
            rot = logo.rotate(angle, resample=Image.BILINEAR)
            img = Image.composite(rot, fff, rot)
            background.paste(img, posn)
            device.display(background.convert(device.mode))
 
if __name__ == "__main__":
    try:
        serial = i2c(port=1, address=0x3C)
        device = sh1106(serial)
        main()
    except KeyboardInterrupt:
        pass

Python运行上面的程序oled屏会出现一个能旋转的树莓派LOGO。

本文来自

http://shumeipai.nxez.com/2017/09/13/solve-the-raspberry-pi-drive-oled-problem.html

树莓派 Ubuntu 64 位系统玩家体验版

 

前言

我对于 Linux 里的 Ubuntu 情有独钟,包括对树莓派3也不放过,树莓派3有一个64位的CPU,但一直使用的是32位的系统,太憋屈了,最近看见 barnami 大神移植了 Debian stretch arm64 到树莓派上(项目地址 https://github.com/bamarni/pi64),不过,我想说的,还是 Ubuntu。
Ubuntu 的 arm64 版本可不好找,不像 Debian 有一个健壮的 arm64 移植版,所以我找了很久,找到了一个15.10(没办法,只能这样了),对于 15.10 官方不给支持了(毕竟不是LTS)。

介绍

本系统由以下组成

  • boot: 原汁原味官方 Ubuntu 16.04 armhf for Raspiberry Pi 3
  • firmware: 由树莓派官方的 linux-rpi-4.9.y 编译的 aarch64
  • rootfs: Ubuntu15.10 (无力吐槽)

对于这次移植呢,有点小问题,就是开机在boot界面时会连接某服务器,但这服务器访问不了,会重试几次,但还不善罢甘休,请求 192.168.1.1 的相应地址(废话,更不行了),导致开机可能要花一点时间,不过不影响系统的正常使用,各项功能没有太大问题。

欢迎大家参与测试,优化,调试。

特点

  • 使用了 aarch64 内核,完美搭建arm64系统底层
  • 使用了 arm64 系统,性能更好
  • 完美释放出了树莓派3的性能
  • 驱动各方面迄今无太大问题
  • 稳定性有待提高

暂时没有升级到 16.04 或 17.04,可以借助官方帮助文档进行交叉升级。

传送门

Ubuntu 15.10 arm64
GitHub 地址: https://github.com/chainsx/ubuntu64-rpi
版本说明:
默认用户:ubuntu 密码:ubuntu;root 用户密码:root
默认开启 SSH,不想要的自己去关。
默认为命令行,想要图形界面的自己装。
第一次开机时不会拓展 rootfs 分区,意思是你需要自己拓展,用 fdisk 或 gparted 来拓展吧。

Ubuntu 17.04 for rpi3(64位内核,32位系统)
GitHub 地址: https://github.com/chainsx/ubuntu-17.04-for-RaspberryPi3
版本说明:
集成了raspi-config,你只需要在命令行里输入raspi-config就行了。
默认用户名:ubuntu 密码:chainsx007
支持安装gnome, apt install gnome 即可,unity 待测(不过,gnome卡出翔)。
默认为命令行,需要桌面的自行安装,推荐lxqt,:安装apt install lxqt。
因为是源自 rpi2 移植的,所以在 boot 分区有两个内核,一个是rpi3的(默认),另外一个是rpi2的(当然不支持64位内核),需要在config.txt里将kernel=kernel8.img改为kernel=uboot.bin。我觉得,你要在pi2上用的话还不如直接在官方下载。

关于我

本人喜欢玩 Linux,更多的是喜欢乐在其中,结交更多好友,学习更多技术。
小编按:本文作者 Github 中提供了联系方式 1396219808[a]qq.com,如有项目相关问题可尝试联系原作者。

虽然只是推荐,但我相信,树莓派3的64位除了 openSUSE 的系统(Debian、Ubuntu)是非常惊人的吧!
我也亲自测试过,这两种系统完全完全的把树莓派3的64位性能给释放出来了,十分惊人,不推荐一下完全对不起原作者的苦心和树莓派的 ARMv8 芯片。
原作者表示:原文无任何版权,我们只是乐在其中,以后还要定期更新,我其实想抽空一直维护这个系统,直到Ubuntu官方的系统正式发布为止。此系统无任何风险(因为我以前制作安卓第三方ROM时就被质疑过,但最后证明了的却无任何风险,这个也一样)。

作者:CX_Dandelion

本文来自

http://shumeipai.nxez.com/2017/09/10/raspberry-pi-ubuntu-64-bit-system-player-experience-version.html

 

 

树莓派安装运行 Minecraft 1.8.9 教程

本文来自 Gloomy Ghost 的投稿,介绍了如何在树莓派2B上安装运行 Minecraft 1.8.9。

更新系统

sudo apt-get update && sudo apt-get -y upgrade

安装相应的显示程序

sudo apt-get -y install xcompmgr libgl1-mesa-dri && sudo apt-get -y install libalut0 libalut-dev && sudo apt-get -y install mesa-utils

配置显卡显示选项

sudo raspi-config

找到Advanced Options,设置GL Driver为GL (Full KMS)。

超频
这个不用我教了吧,超到 High(1000MHz)就行了。

然后重启。

sudo reboot

测试显卡是否配置完成

glxgears

一、使用官方账号游戏

获取官方启动器

mkdir ~/Minecraft; mkdir ~/Minecraft/Natives; cd ~/Minecraft && wget http://ouav818sk.bkt.clouddn.com/raspimc/Minecraft.jar

这里我创建2个文件夹,用于存放文件,运行mc启动器,下载游戏文件。

java -jar Minecraft.jar

下载配置文件

登陆

新建配置

版本选择1.8.9

下载安装

 

二、无账号游戏

下载 Hello Minecraft!! Launcher

mkdir ~/Minecraft; mkdir ~/Minecraft/Natives; cd ~/Minecraft && wget https://github.com/huanghongxun/HMCL/releases/download/v2.5.3/HMCL-2.5.3.88.jar

这里我创建2个文件夹,用于存放文件,运行mc启动器,下载游戏文件。

java -jar HMCL-2.5.3.88.jar

下载运行库文件

cd ~/Minecraft/Natives && wget http://ouav818sk.bkt.clouddn.com/raspimc/liblwjgl.so && wget http://ouav818sk.bkt.clouddn.com/raspimc/libopenal.so

更新lwjgl

cd ~/.minecraft/libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209 && rm lwjgl-2.9.4-nightly-20150209.jar; wget http://ouav818sk.bkt.clouddn.com/raspimc/lwjgl-2.9.4-nightly-20150209.jar

(基于Roger Allen的教程:http://rogerallen.github.io/jetson/2014/07/31/minecraft-on-jetson-tk1/
复制运行脚本)

cd ~/Minecraft/ && wget http://ouav818sk.bkt.clouddn.com/raspimc/run.sh && sudo chmod +x run.sh

编辑 run.sh(正版)
编辑下面的配置,填上你的游戏账户信息。
MINECRAFT_LOGIN
MINECRAFT_USERNAME
MINECRAFT_PASSWORD
完成正版登陆

运行游戏

./run.sh

 

相关代码如果觉得不方便,可以到这里查看,我把所有命令整合了一下。

 

转载自树莓派实验室

裸板开发操作系统Baking-Pi教程 一

OK01这个教程会从零开始尝试把树莓派的RCA和USB口附近的那个’ACT’LED点亮,并搭建好环境为接下来的教程做好铺垫。

准备

在实际动手之前,需要你先看完前一篇教程,并下载安装了必要的GUN工具链以及代码的模版文件OS Template

文件结构

在模版文件夹里面你会看到这样的文件目录:

build/
    (empty)
source/
    main.s
kernel.ld
LICENSE
Makefile

找个编辑器打开main.s文件,我们就可以开始写汇编代码了,树莓派使用的汇编是ARMv6,我们要写的汇编也就是ARMv6。

把下面这些代码复制粘贴进去:

.section .init
.globl _start
_start:

这些代码对树莓派没有直接的作用,它们是写给汇编器看的,汇编器是一个把我们将要写的汇编代码转换成树莓派能直接运行的机器码的程序。在汇编代码中,每一行都是一条新的命令,这里的第一行告诉汇编器和链接器把我们的代码放到哪里去,.init这里的代码会和模版文件组合,最终被放到输出代码的最前面。这一点很重要,因为我们要保证哪部分代码首先运行,如果我们不这么做的话,代码会按照字母表的顺序运行。
.section命令只是告诉了汇编器从这一点到下一个.seciton是代码的链接后的位置,而后面的两行告诉了工具链程序的入口。

第一行代码

把下面的代码拷贝粘贴进去

ldr r0,=0x20200000

在汇编代码中,计算机会简单的从上往下运行代码,每一行都是一个指令,除非遇到某些指令发生跳转。 这第一行代码告诉处理器,把0x20200000这个数字存储到r0这个寄存器里面,0x20200000显然是个十六进制的数字,那么什么是寄存器?

寄存器是处理器内部的一些用来存数据的小部件,可以理解成一个个的抽屉,有些寄存器会有一些特定的功能,在树莓派上有13个通用寄存器,每一个可以存储一个32比特的数字(从0到4,294,967,295 ),从r0一直到r12,对于这13个寄存器,做任何操作和运算都没关系,在这一行代码中,换成其他寄存器也没关系。

这行代码把0x20200000存到r0,是为了接下来的控制GPIO,而GPIO控制器的位置恰好就是0x20200000,这一点可以通过参考中的数据手册来查到。

指令

ldr reg,=val  
把val存到对应的寄存器中

设置GPIO的输出模式

mov r1,#1
lsl r1,#18
str r1,[r0,#4]

要让这个ACT LED亮起来,首先和Arduino类似的要先设置这个引脚端口为输出模式,然后再让它输出高电平。
上面的代码就能让ACTLED这个GPIO16设置为输出模式,首先我们把1存到r1,然后通过lsl指令,得到二进制的1000000000000000000,其实也可以直接把这个数存到r1,但是为了后面的操作和代码,这样写更有意义。

在GPIO控制器中,有24个字节用来设置GPIO,前4个对应前10个GPIO,第二个4个对应第二个10个,总共有54个GPIO,所以我们需要6×4总共24个字节。
在4个一组里面,每三个比特对应一个GPIO,我们操作的是16号GPIO,所以我们需要操作第二个4字节中第六个3比特,也就是上面代码中18的由来。
其中的str指令,会把r1中的值,写到地址为r0的值加上4偏移的位置

指令

mov reg, #val  
把val存到对应的reg寄存器  
mov指令比ldr快,因为mov不牵涉到内存,而ldr是从内存把数存到寄存器,但是mov只能对某些数字做操作  

lsl reg, #val  
reg寄存器的值逻辑左移val位

str reg, [dest, #val]  
把reg寄存器重的值写到地址为dest寄存器的值+val

输出高电平

mov r1,#1
lsl r1,#16
str r1,[r0,#40]

 

现在GPIO已经准备好被点亮了,这意味着我们要让GPIO16输出低电平,没错是低电平,板子本身设计就是这样。
上面的指令都已经见过了,为了让GPIO16输出低电平,我们得让一个第十六位是1的数写到偏移GPIO控制器40的地址位置,这样就能输出低电平了。

死循环

需要的代码都写完了,应该结束了,但是假如就那样的话,只要有供电,处理器就会持续工作,如果不给他其他的任务,树莓派就会崩溃。

loop$:
b loop$

 

这里的第一行不是一个命令,是一个标签,或者说名字,这意味着我们可以通过loop$这个名字来找到这一行代码,代码编译完成之后标签都没有意义了会变成地址,对于写代码的我们则是又很重大的意义,b指令的作用是下一条执行的指令跳转到后面的标签所指代的代码块,在这里就会导致树莓派一直循环直到断电。

另外GNU工具链要求代码的最后有一个空行。

编译和运行

编译非常简单,用终端进入到代码的根目录,也就是Makefile的同级目录中,运行make,没什么问题的话,就会生成一个kernel.img的文件。

安装这个系统代码之前,首先需要一个已经装好了常规的Raspbian系统的树莓派SD卡,在SD卡的目录中很容易就能找到一个kernel.img的文件,把它替换成刚刚生成的新文件,然后插上电源,就能看到这个ACTLED亮起来了。

参考

数据手册