Microsoft announced to deliver a version of Windows 10 that supports Raspberry Pi 2:
We’re excited to announce that we are expanding our Windows Developer Program for IoT by delivering a version of Windows 10 that supports Raspberry Pi 2. This release of Windows 10 will be free for the Maker community through the Windows Developer Program for IoT.
Windows 10 is the first step to an era of more personal computing. This vision framed our work on Windows 10, where we are moving Windows to a world that is more mobile, natural and grounded in trust. With the Windows for IoT developer program we're bringing our leading development tools, services and ecosystem to the Raspberry Pi community!
We see the Maker community as an amazing source of innovation for smart, connected devices that represent the very foundation for the next wave of computing, and we’re excited to be a part of this community.
We are excited about our partnership with the Raspberry Pi Foundation and delivering a version of Windows 10 that supports Raspberry Pi 2, and we will be sharing more details about our Windows 10 plans for IoT in the coming months.
source: http://dev.windows.com/en-us/featured/raspberrypi2support
#windows10 #raspberrypi2
Monday, February 2, 2015
Saturday, January 31, 2015
Install pip on Raspberry Pi
pip is a recommended tool for installing Python packages.
To install pip for Python2 on Raspberry Pi:
$ sudo apt-get install python-pip
To install pip for Python3 (or Python3.2) on Raspberry Pi:
$ sudo apt-get install python3-pip
To install any package:
$ pip install package
for Python2.
or
$ pip-3.2 install package
for Python3.
To uninstall any package:
$ pip uninstall package
for Python2.
or
$ pip-3.2 uninstall package
for Python3.
To install pip for Python2 on Raspberry Pi:
$ sudo apt-get install python-pip
To install pip for Python3 (or Python3.2) on Raspberry Pi:
$ sudo apt-get install python3-pip
To install any package:
$ pip install package
for Python2.
or
$ pip-3.2 install package
for Python3.
To uninstall any package:
$ pip uninstall package
for Python2.
or
$ pip-3.2 uninstall package
for Python3.
Wednesday, January 7, 2015
Raspberry Pi + Arduino i2c communication, Wire.write() multi-byte from Arduino requestEvent
Last exercise show Raspberry Pi master + Arduino slave i2c communication, write block of data from Pi to Arduino Uno, and read a single byte from Arduino Uno. In this post show how to echo multi-byte from Arduino in requestEvent, by calling Wire.write().
In Raspberry Pi, i2c master, it send block of data to Arduino Uno, i2c slave, by calling bus.write_i2c_block_data(), to trigger receiveEvent in Arduino.
then call number of bus.read_byte() to trigger requestEvent in Arduino. The first byte echo from Arduino is the number of byte to sent, then echo the data in reversed sequency.
i2c_uno.py run on Raspberry Pi
i2c_slave_12x6LCD.ino, run on Arduino Uno
In Raspberry Pi, i2c master, it send block of data to Arduino Uno, i2c slave, by calling bus.write_i2c_block_data(), to trigger receiveEvent in Arduino.
then call number of bus.read_byte() to trigger requestEvent in Arduino. The first byte echo from Arduino is the number of byte to sent, then echo the data in reversed sequency.
i2c_uno.py run on Raspberry Pi
#have to run 'sudo apt-get install python-smbus'
#in Terminal to install smbus
import smbus
import time
import os
# display system info
print os.uname()
bus = smbus.SMBus(1)
# I2C address of Arduino Slave
i2c_address = 0x07
i2c_cmd_write = 0x01
i2c_cmd_read = 0x02
def ConvertStringToBytes(src):
converted = []
for b in src:
converted.append(ord(b))
return converted
# send welcome message at start-up
bytesToSend = ConvertStringToBytes("Hello Uno")
bus.write_i2c_block_data(i2c_address, i2c_cmd_write, bytesToSend)
# loop to send message
exit = False
while not exit:
r = raw_input('Enter something, "q" to quit"')
print(r)
bytesToSend = ConvertStringToBytes(r)
bus.write_i2c_block_data(i2c_address, i2c_cmd_write, bytesToSend)
# delay 0.1 second
# with delay will cause error of:
# IOError: [Error 5] Input/output error
time.sleep(0.1)
data = ""
numOfByte = bus.read_byte(i2c_address)
print numOfByte
for i in range(0, numOfByte):
data += chr(bus.read_byte(i2c_address));
print data
if r=='q':
exit=True
i2c_slave_12x6LCD.ino, run on Arduino Uno
/*
LCD part reference to:
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
#include <LiquidCrystal.h>
#include <Wire.h>
#define LED_PIN 13
boolean ledon = HIGH;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte slave_address = 7;
int echonum = 0;
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print startup message to the LCD.
lcd.print("Arduino Uno");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
Wire.begin(slave_address);
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent);
}
void loop() {
}
char echo[32];
int index = 0;
void requestEvent(){
toggleLED();
if(index==0){
Wire.write(echonum);
}else{
Wire.write(echo[echonum-1-(index-1)]);
}
index++;
}
void receiveEvent(int howMany) {
lcd.clear();
int numOfBytes = Wire.available();
//display number of bytes and cmd received, as bytes
lcd.setCursor(0, 0);
lcd.print("len:");
lcd.print(numOfBytes);
lcd.print(" ");
byte b = Wire.read(); //cmd
lcd.print("cmd:");
lcd.print(b);
lcd.print(" ");
index = 0;
//display message received, as char
lcd.setCursor(0, 1);
for(int i=0; i<numOfBytes-1; i++){
char data = Wire.read();
lcd.print(data);
echo[i] = data;
}
echonum = numOfBytes-1;
}
void toggleLED(){
ledon = !ledon;
if(ledon){
digitalWrite(LED_PIN, HIGH);
}else{
digitalWrite(LED_PIN, LOW);
}
}
Subscribe to:
Posts (Atom)
