기본적으로는 아래 블로그 참조

http://usn-pioneer.tistory.com/79


1. keil arm 설치

아래 주소에서 MDK-ARM 설치

https://www.keil.com/download/product/


2. sdk설치

sdk는 아래 주소에서

https://www.nordicsemi.com/eng/nordic/Products/nRF51-SDK/nRF518-SDK/46230

sdk는 아래 폴더에 설치됨(예제파일도 여기서 볼 수 있음)

C:\Keil_v5\ARM\Device\Nordic

 

3. nRFgo Studio 설치

이걸 설치하면 jlink 디버거도 다운 가능

https://www.nordicsemi.com/eng/Products/Bluetooth-R-low-energy/nRF51822


4. j link 디버거 구매 주소 - jlink와 호환 가능한 싼 모듈

http://www.devicemart.co.kr/33262

J Link 는 정품을 구매해야함

http://www.eleparts.co.kr/EPXBPBNC


5. 예제 실행 방법은 아래 주소

http://usn-pioneer.tistory.com/81

nRFgo Studio 를 이용하여 soft device를 설치해야 하는 것 같음



신고

'Embedded > BLE/Beacon' 카테고리의 다른 글

[Nordic] NRF51822 개발환경 설정  (0) 2015.12.15
Posted by 공놀이나하여보세

본인은 Windows PC와 Ubuntu PC 2대를 사용 중으로, Windows에서 RDP 접속으로 Ubuntu를 개발용 PC로 활용하고 있다.

그런데 Ubuntu 14.04에서는 xrdp가 기본적으로는 동작하지 않는 문제가 있다. Windows에서 원격 접속하면 회색 화면에 마우스 커서만 표시될 뿐 그 다음 화면으로 넘어가지 않는다.

xrdp가 14.04에서 기본으로 설치되는 Desktop 환경을 지원하지 않기 때문이다. 

해결 방법은 여러가지 있겠지만, 가장 간단한 방법은 xrdp가 지원하는 Desktop 환경인 xfce4을 설치하는 것이다.

아래 순서대로 정리해 보았다. 

1. sudo apt-get install xrdp

  (여기까지만 수행하고 원격 접속해 보면 회색 화면만 보게 된다.)

2. sudo apt-get install xfce4

3. sudo nano /etc/xrdp/startwm.sh

. /etc/X11/Xsession를 삭제 또는 주석 처리(맨앞에 #추가)하고 아래와 같이 수정한다.

Ubuntu14.04에 Xsession이 없어서 생기는 문제라고 한다.

#!/bin/sh

if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

#. /etc/X11/Xsession
. /usr/bin/startxfce4

 

4. sudo /etc/init.d/xrdp restart



출처 : http://abydos.tistory.com/3

신고

'Embedded > NVIDIA Jetson' 카테고리의 다른 글

xrdp 원격 접속 설정 (회색 화면 나올 때)  (0) 2015.11.28
nvidia jetson tk1 초기 설정법  (0) 2015.11.28
Posted by 공놀이나하여보세

nvidia jetson 초기 설정법


1. 로그인 아이디 / 비밀번호 : ubuntu/ubuntu

2. NVIDIA Installer 설치

- cd NVIDIA-INSTALLER

- sudo ./installer.sh

3. sudo reboot

4. 완료~!!




출처 동영상 

https://www.youtube.com/watch?v=ghqM8pzJZxg



신고

'Embedded > NVIDIA Jetson' 카테고리의 다른 글

xrdp 원격 접속 설정 (회색 화면 나올 때)  (0) 2015.11.28
nvidia jetson tk1 초기 설정법  (0) 2015.11.28
Posted by 공놀이나하여보세

아래에 자세한 코드가 있음

출처 : http://stackoverflow.com/questions/25351488/intermittent-python-thread-error-main-thread-is-not-in-main-loop


from Tkinter import *
import tkFont
import os
import glob
import time
import threading
import Image 
import Queue


def update_temp(queue):
    """ Read the temp data. This runs in a background thread. """
    while True:
        #   28-000005c6ba08
        i = "28-000005c6ba08"
        base_dir = '/sys/bus/w1/devices/'
        device_folder = glob.glob(base_dir + i)[0]
        device_file = device_folder + '/w1_slave'

        tempread=round(read_temp(),1)

        # Pass the temp back to the main thread.
        queue.put(tempread)
        time.sleep(5)

class Gui(object):
    def __init__(self, queue):
        self.queue = queue

        #Make the window
        self.root = Tk() 
        self.root.wm_title("Home Management System")
        self.root.minsize(1440,1000)

        self.equipTemp = StringVar()   
        self.equipTemp1 = StringVar()
        self.equipTemp2 = StringVar()       

        self.customFont = tkFont.Font(family="Helvetica", size=16)

        #   1st floor Image
        img = Image.open("HOUSE-PLANS-01.png") 
        photo = ImageTk.PhotoImage(img)

        Label1=Label(self.root, image=photo)
        Label1.place(x=100, y=100)

        #   2nd floor
        img2 = Image.open("HOUSE-PLANS-02.png")
        photo2 = ImageTk.PhotoImage(img2)

        Label1=Label(self.root, image=photo2)
        Label1.place(x=600, y=100)

        #   Basement image
        img3 = Image.open("HOUSE-PLANS-03.png")
        photo3 = ImageTk.PhotoImage(img3)

        Label1=Label(self.root, image=photo3)
        Label1.place(x=100, y=500)

        #   Attic Image
        img4 = Image.open("HOUSE-PLANS-04.png")
        photo4 = ImageTk.PhotoImage(img4)

        Label1=Label(self.root, image=photo4)
        Label1.place(x=600, y=500)

        #   House Isometric Image
        img5 = Image.open("house-iso.png")
        photo5 = ImageTk.PhotoImage(img5)

        Label1=Label(self.root, image=photo5)
        Label1.place(x=1080, y=130)

        #Garage Temp Label
        Label2=Label(self.root, textvariable=self.equipTemp, width=6, justify=RIGHT, font=self.customFont)
        Label2.place(x=315, y=265)

        print "start monitoring and updating the GUI"

        # Schedule read_queue to run in the main thread in one second.
        self.root.after(1000, self.read_queue)

    def read_queue(self):
        """ Check for updated temp data"""
        try:
            temp = self.queue.get_nowait()
            self.equipTemp.set(temp)
        except Queue.Empty:
            # It's ok if there's no data to read.
            # We'll just check again later.
            pass
        # Schedule read_queue again in one second.
        self.root.after(1000, self.read_queue)

if __name__ == "__main__":
    queue = Queue.Queue()
    # Start background thread to get temp data
    t = threading.Thread(target=update_temp, args=(queue,))
    t.start()
    print "starting app"
    # Build GUI object
    gui = Gui(queue)
    # Start mainloop
    gui.root.mainloop()


신고
Posted by 공놀이나하여보세

제이펍의 '라즈베리파이 시작하기' 라는 책에 라즈베리파이로 아두이노 구동을 위한 내용이 잘 정리 되어 있습니다.


책의 내용을 다 옮기긴 어렵겠지만 기본적인 것에 대해 말씀드려볼까 합니다.

저는 처음에 둘을 연결하려면 뭔가 선을 따줘야 할거라고 생각했습니다.

물론 제대로 된 통신을 하려면 SPI통신을 이용해야할 거라고 생각합니다.(아직 해보진 않았습니다만..)

하지만, 책을 보니 그냥 시리얼 통신을 이용했더군요.

게다가 시리얼 통신을 위해서 점퍼선을 연결할 필요도 없습니다.

그냥 USB케이블 하나를 연결하면 됩니다.



저는 귀찮아서 샤오미 배터리를 전원으로 쓰고 usb wifi동글로 무선 연결을 해두고 맥북에서 원격 접속으로 작업을 합니다.

여튼 이렇게 선 하나만 연결합니다.



sudo apt-get install arduino 

arduino IDE를 다운 받습니다.

마지막으로 IDE에 uart 출력을 c로 코딩합니다.

-> 버튼을 누르면 알아서 컴파일이 되고 아두이노로 다운로드하고 실행이 됩니다.


라즈베리파이에서 serial 입력을 받아 print하는 코드를 python으로 짭니다.

그리고 실행하면 위의 사진 처럼 아두이노가 보내는 데이터를 출력해줍니다.


간단하네요 ㅋㅋ


자세한 내용은 책을 참조하시거나 인터넷을 뒤져 보시길..


신고
Posted by 공놀이나하여보세

출처 : http://www.rasplay.org/?p=5996

아래 파일을 수정하면 끝

sudo nano /etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0

iface wlan0 inet dhcp
wpa-ssid “ssid”
wpa-psk “password”

신고
Posted by 공놀이나하여보세

출처 : http://hilpisch.com/rpi/02_data_analytics.html


sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy --upgrade
sudo pip install pandas
sudo easy_install -U distribute
sudo apt-get install libpng-dev libjpeg8-dev libfreetype6-dev
sudo pip install matplotlib
sudo pip install numexpr
sudo pip install cython
sudo apt-get install libhdf5-serial-dev
sudo pip install tables


신고
Posted by 공놀이나하여보세

7.GUI

(1) hello world

from Tkinter import *

root = Tk()

Label(root, text='Hello World').pack()

root.mainloop()


Tkinter인데 tkinter로 했다가 고생함


(2) 온도 변환기


신고
Posted by 공놀이나하여보세

아래 블로그 참고

http://blog.bitify.co.uk/2013/11/interfacing-raspberry-pi-and-mpu-6050.html


1. sudo raspi-config 를 통해 i2c enable 설정



2. sudo vi /etc/modules 

아래 두 줄 추가 후 재부팅

i2c-bcm2708
i2c-dev



3. 하드웨어 선 연결

라즈베리파이의 pin1, 3, 5, 6을 센서의 VCC, SDA, SCL, GND에 아래와 같이 연결

  • Pin 1 - 3.3V connect to VCC
  • Pin 3 - SDA connect to SDA
  • Pin 5 - SCL connect to SCL
  • Pin 6 - Ground connect to GND

4. 테스트를 위한 파일 다운 및 테스트
sudo apt-get install i2c-tools

- 테스트

sudo i2cdetect -y 0 (라즈베리파이1버전) or
sudo i2cdetect -y 1 (라즈베리파이2)
- 아래와 같이 나오는 것 확인
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


5. 파이썬으로 i2c접근을 위해 아래 파일 다운로드

sudo apt-get install python-smbus 


6. 소스 코드

mpu6050.py로 아래 파일 저장


#!/usr/bin/python

import smbus

import math


# Power management registers


power_mgmt_1 = 0x6b


power_mgmt_2 = 0x6c

def read_byte(adr):

    return bus.read_byte_data(address, adr)

def read_word(adr):

    high = bus.read_byte_data(address, adr)

    low = bus.read_byte_data(address, adr+1)

    val = (high << 8) + low

    return val


def read_word_2c(adr):

    val = read_word(adr)

    if (val >= 0x8000):

        return -((65535 - val) + 1)

    else:

        return val


def dist(a,b):

    return math.sqrt((a*a)+(b*b))


def get_y_rotation(x,y,z):

    radians = math.atan2(x, dist(y,z))

    return -math.degrees(radians)


def get_x_rotation(x,y,z):

    radians = math.atan2(y, dist(x,z))

    return math.degrees(radians)


bus = smbus.SMBus(0) # or bus = smbus.SMBus(1) for Revision 2 boards

address = 0x68       # This is the address value read via the i2cdetect command


# Now wake the 6050 up as it starts in sleep mode

bus.write_byte_data(address, power_mgmt_1, 0)

print "gyro data"

print "---------"

gyro_xout = read_word_2c(0x43)

gyro_yout = read_word_2c(0x45)

gyro_zout = read_word_2c(0x47)

print "gyro_xout: ", gyro_xout, " scaled: ", (gyro_xout / 131)

print "gyro_yout: ", gyro_yout, " scaled: ", (gyro_yout / 131)

print "gyro_zout: ", gyro_zout, " scaled: ", (gyro_zout / 131)

 

print

print "accelerometer data"

print "------------------"

 

accel_xout = read_word_2c(0x3b)

accel_yout = read_word_2c(0x3d)

accel_zout = read_word_2c(0x3f)


accel_xout_scaled = accel_xout / 16384.0

accel_yout_scaled = accel_yout / 16384.0


accel_zout_scaled = accel_zout / 16384.0

print "accel_xout: ", accel_xout, " scaled: ", accel_xout_scaled

print "accel_yout: ", accel_yout, " scaled: ", accel_yout_scaled

print "accel_zout: ", accel_zout, " scaled: ", accel_zout_scaled

print "x rotation: " , get_x_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)

print "y rotation: " , get_y_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)


7. 테스트
python mpu6050.py



신고
Posted by 공놀이나하여보세

아래 사이트 7page


http://www.slideshare.net/MoamBae/raspberry-pi-35150708

신고
Posted by 공놀이나하여보세


티스토리 툴바