Arduino 到手了

前天在DFRobot买的意大利原装Arduino UNO R3到手了,比某宝上的山寨贵,不过还是喜欢原装的东西,贵也贵得值,拆开包装一看,一张信用卡大小的蓝色小板子,很不错。

准备学习的工具

晚上有时间做了一个小实验,GND针脚与13号针脚,LED就亮了,一闪一闪,不明真相,好像默认是不会闪的吧,是不是售前测试给我装了个来测试的。

接下来就是去看 "http://study.163.com/course/introduction.htm?courseId=194002":http://study.163.com/course/introduction.htm?courseId=194002 的视频了,这套视频不错。

什么是Arduino,Arduino是一个开源的单板机控制器,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O 接口版,并且具有使用类似Java,C 语言的Processing/Wiring开发环境。参考维基百科 "https://zh.wikipedia.org/wiki/Arduino":https://zh.wikipedia.org/wiki/Arduino

Arduino 第一个实验

按照图片所示接线,四个电阻都是220Ω。


/**
 * 连接2、4、6、8四个针脚,这四个灯会间隔1秒依次亮起后又依次熄灭
 */

void setup()            // setup函数为初始化函数,第一次启动Arduino或重启执行,且只执行一次.
{
  pinMode(2, OUTPUT);   // pinMode函数是把一个引脚设置为INPUT(输出)或OUTPUT(输出).
  pinMode(4, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop()               // loop函数是setup后执行,是一个死循环,类似while(true).
{
  digitalWrite(2, HIGH);  // digitalWrite函数是把一个引脚设置为HIGH(高电平)或LOW(低电平).
  delay(1000);            // delay函数是睡眠,此处睡眠1秒.
  digitalWrite(4, HIGH);
  delay(1000);
  digitalWrite(6, HIGH);
  delay(1000);
  digitalWrite(8, HIGH);
  delay(1000);
  digitalWrite(8, LOW);
  delay(1000);
  digitalWrite(6, LOW);
  delay(1000);
  digitalWrite(4, LOW);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}

Raspberry Pi Install BitTorrent Sync

BitTorrent Sync是一个非常强的同步软件,不需要远程服务器的支持,完全是机器与机器之间的通讯。

一、安装BitTorrent Sync

1.1 在Raspberry Pi树莓派里安装

$ wget http://btsync.s3-website-us-east-1.amazonaws.com/btsync_arm.tar.gz
$ tar zxvf btsync_arm.tar.gz
$ ./btsync

解压出来就是一个可执行文件,执行它之后会在当前用户目录下产生.sync目录

此时打开 "http://raspberrypi-ip:8888/gui":http://raspberrypi-ip:8888/gui 即可打开web管理界面,界面非常简洁。

1.2 在OS X下安装,这个做得非常不错,为retina屏而生的

下载http://btsync.s3-website-us-east-1.amazonaws.com/BTSync.dmg,直接安装到应用目录下即可。

已经添加了Raspberry Pi的目录了,这个时候同步太方便了,同步速度完全是局域网的速度。

Raspberry Pi GPIO LED

手上的Raspberry Pi是ModeB的第二版,GPIO接口方面有有所变动,具体看http://www.elinux.org/Rpi_Low-level_peripherals的说明。

前天买的实验小物品今天收到了,明天Arduino也会到,今天就先用Raspberry Pi来玩一下GPIO先,第一次玩这种电路的东西,总是小心翼翼的,怕不小心把板子给毁了,新手一枚...

接线前找了很多例子,网上很多例子没有使用220欧的电阻,而我手上只有200欧的电阻,担心不行,后来找到了http://www.bianbian.me/2012/07/raspberry-pi-led-test.html这个例子,看板子是第一版的,主要看音频接口的颜色,黑色就是国产的第一版,蓝色就是英国产的第二版。

根据它的接线方式是一个GND即地线接口,看刚刚那个网址就能看到板子上有5个地线接口,电压是0v的,第二个是GPIO17,即音频口向上下排左边第6个接口,

由于Fritzing中没有Raspberry Pi Rev2版的图片,暂时使用Rev1版的图,刚好使用到的两个接口是一样的

这个实验用到的元件有

  1. Raspberry Pi Rev2板子一块
  2. 220欧电阻一只
  3. Led灯一枚
  4. 杜邦线两根
  5. 面包板一块

代码,目前新版本中的系统已经默认装好GPIO的库了

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

while True:
    GPIO.output(11, GPIO.LOW)
    time.sleep(1)
    GPIO.output(11, GPIO.HIGH)
    time.sleep(1)
$ vim testled.py
$ sudo python testled.py

执行代码就可以看到Led灯一闪一闪的,第一个小实验,还是挺有意思的。

mosquitto与paho实现推送服务

mosquitto是一个开源的mqtt服务器,官网: "http://mosquitto.org/":http://mosquitto.org

paho是eclipse的一个开源项目,使用c、java、lua实现了mosquitto客户端,官网: "http://www.eclipse.org/paho/":http://www.eclipse.org/paho

一、 安装mosquitto

$ brew install mosquitto
$ /usr/local/sbin/mosquitto  // 启动mosquitto服务器

二、 下载并编译paho的jar包

$ wget http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/snapshot/org.eclipse.paho.mqtt.java-0.2.1.zip
$ unzip org.eclipse.paho.mqtt.java-0.2.1.zip
$ cd org.eclipse.paho.mqtt.java-0.2.1
2.1 编译jar包
$ cd org.eclipse.paho.client.mqttv3
$ ant
2.2 编译Sample例子
$ cd org.eclipse.paho.sample.mqttv3app
$ mkdir bin
$ javac -d bin -classpath ../org.eclipse.paho.client.mqttv3/target/ship/org.eclipse.paho.client.mqttv3.jar src/org/eclipse/paho/sample/mqttv3app/Sample.java
$ java -classpath ../org.eclipse.paho.client.mqttv3/target/ship/org.eclipse.paho.client.mqttv3.jar:bin org.eclipse.paho.sample.mqttv3app.Sample -b localhost

运行Sample将会看到

再看一下服务器的反应

实现订阅,如果其它客户端连接进来则收到提示消息

$ java -classpath ../org.eclipse.paho.client.mqttv3/target/ship/org.eclipse.paho.client.mqttv3.jar:bin org.eclipse.paho.sample.mqttv3app.Sample -b localhost -a subscribe

服务器的反应,是一个订阅类型的客户端

启动一个新客户端

订阅客户端的反应

服务器的反应

参考: http://mobilave.info/blog/2012/Quick_start_guide_for_the_Paho_MQTT_Java_Client.html