树莓派
nat123
LAMP
方法/步骤
在树莓派上安装linux系统,到官网下载系统压缩包,推荐使用raspbian。
如果在windows下安装,需要下载win32diskimager,解压系统,将解压出来的系统映像写到内存卡(内存卡最好大点,推荐8G以上的内存卡)。
如果在Linux系统下安装,先输入命令:sudo fdisk -l
查询内存卡的分区,一般是/dev/sdb。
把系统映像解压到家目录下/home/***,输入命令:
sudo dd bs=1M if=~/2016-02-26-raspbian-jessie-lite.img of=/dev/sdb
这步按你自己的实际情况操作。
看到以下输出就成功写入了。
把内存卡装入树莓派,开机启动,第一次会需要配置系统,可以按默认设置直接启动进入系统。
安装Apache。apache服务器一般在linux软件源列表有,可以用apt安装。
在安装可以先更新一下apt的软件列表,以确定安装的软件是最新。
输入命令:sudo apt-get update
更新完毕可以正式安装apache了。
输入命令:sudo apt-get install apache2
安装mysql。这个也是软件列表中的软件,所以直接用apt安装。因为我们是使用服务器端应用,输入以下命令安装:
sudo apt-get install mysql-server
安装PHP。
输入命令:sudo apt-get install php5
php还需要对数据库进行操作,所以还需要安装php5-mysql
输入命令:sudo apt-get install php5-mysql
8
注册一个域名,用nat123将你的域名与你的IP进行域名解析。若是内网则还需要内网映射。
9
在浏览器输入打开你的网址,网页正常显示服务器就搭建成功了。
第一步是安装Mercurial,这是Google用来管理Go源代码的版本控制系统。sudo apt-get install -y mercurial
对于Mercurial系统来说,其主要的命令行接口是hg,有了这个你就能下载Golang的源代码。下面的命令将把构建Golang所必须的源代码下载到/usr/local/go目录中去:
sudo hg clone -u default
这一过程大约需要10分钟,取决于你的网速有多快了。一旦下载完成,你就可以开始构建的过程了。用cd命令将当前目录修改为/usr/local/go/src,然后开始构建过程:
sudo ./all.bash
构建过程中会在终端上输出很多内容,大部分都是一些信息提示。整个构建过程大概需要90分钟到2小时。
构建进程会提示我们将Go的二进制包所在的目录添加到系统PATH中去。要做到这一点你需要编辑.profile文件,每次你创建一个新的shell会话时,Bash都会处理这个文件。用cd命令将你的当前目录切换回home,使用nano编辑器编辑.profile文件:
nano .profile
在文件最底部,添加如下这行:
export PATH=$PATH:/usr/local/go/bin
键入CTRL + X来退出nano编辑器,然后输入Y来确定编辑过的文件已保存。按下ENTER键来保持当前文件名不变。
你需要退出当前的终端然后重新开启另一个(如果你用的是桌面环境),或者也可以登出再登入(如果你用的是纯命令行界面)。
要验证Go是否安装正确,可以创建一个名为hello.go的文件,然后写下如下代码(著名的hello world又来了):
package main
import "fmt"
func main() {
fmt.Printf("Hello Make Tech Easier!\n")
}
要运行它,请在终端上输入:
1
go run hello.go
程序的输出结果是一行文本:Hello Make Tech Easier!
在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形。(PWM也就是脉宽调制,一种可调占空比的技术,得到的效果就是:如果用示波器测量引脚会发现有方波输出,而且高电平、低电平的时间是可调的。)
这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以和我联系。 github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是 GPIO1 。这可是不小的打击,因为我想使用至少四个 PWM ,还是不死心,想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事。
手册上找寻东西稍等下讲述,这里先提供一种方法测试 树莓派3B 的 PWM 方法:用指令控制硬件PWM。
这里通过指令的方式掌握了基本的pwm设置技巧,决定去翻一下手册看看到底PWM怎么回事,这里因为没有 BCM2837 的手册,根据之前文章引用官网所说, BCM2835 和 BCM2837 应该是一样的。这里我们直接翻阅 BCM2835 的手册,直接找到 PWM 章节。找到了如下图:
图中可以看到在博通的命名规则中 GPIO 12、13、18、19、40、41、45、52、53 均可以作为PWM输出。但是只有两路PWM0 PWM1。根据我之前所学知识,不出意外应该是PWM0 和 PWM1可以输出不一样的占空比,但是频率应该是一样的。因为没有示波器,暂时不好测试。先找到下面对应图:
根据以上两个图对比可以发现如下规律:
对照上面的表可以看出从 BCM2837 中印出来的能够使用在PWM上的就这几个了。
为了验证个人猜想是否正确,这里先直接使用指令的模式,模拟配置下是否能够正常输出。
通过上面一系列指令模拟发现,(GPIO1、GPIO26)、(GPIO23、GPIO24)是绑定在一起的,调节任意一个,另外一个也会发生变化。也即是PWM0、PWM1虽然输出了两路,可以理解成两路其实都是连在一个输出口上。这里由于没有示波器或者逻辑分析仪这类设备(仅有一个LED灯),所以测试很简陋,下一步是使用示波器这类东西对频率以及信号稳定性进行下测试。
小节:树莓派具有四路硬件输出PWM能力,但是四路中只能输出两个独立(占空比独立)的PWM,同时四路输出的频率均是恒定的。
上面大概了解清楚了树莓派3B的PWM结构,接下来就是探究如何使用Go语言进行设置。
因为拿到了手册,这里我想直接操作寄存器的方式进行设置,也是顺便学习下Go语言处理寄存器的过程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手册,发现只有偏移,没有找到基地址。
经过了一段时间的努力后,决定写一个 树莓派3B golang包开源放在github上,只需要写相关程序进行调用就可以了,以下是相关demo(pwm)(在GPIO.12 上输出PWM波,放上LED灯会有呼吸灯的效果,具体多少频率还没有进行测试)
以下是demo(pwm) 源码
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)