10/28/2017

Raspberry-Pi3 Model B 구조 및 기본정보

1. Raspberry-Pi3 Model B기본구조 및 정보 

Raspberry Pi3를 구입을 할지 말지를 몇번이나 망설였지만 최종적으로 구입하기로 드디어 결정보았다 이유는 단 하나 많은 무료 프로젝트들과 기능들
모델은 아래 구성으로 구입을 하기로 결정했으며, 추가로 카메라와 기타 액서서리를 구입하기로 했다.

문제는 집에 남아있는 골치 아픈 이 EVM들이며, 특히 ODROID의 경우는 좀 심각하다. 왜냐하면 이 비싼 eMMC부터 모든것을 다 구입을 해서 많이 가지고 놀았지만,
거의 NAS와 셋탑박스처럼 사용을 하다가, 그놈의 채굴기능 사용해보겠다고 백업도 하지를 않아,  이제 정리하고 버려야 할 것 같다. 


  • 기본구성 
  1. Model: Raspberry Pi 3 Model B V 1.2
  2. 2.5A MicroUSB-B Cable Adapter 
  3. Heatsink
  • 추가구성 
  1. Camera: NoIR Camera V2 


아래와 같이 Element14.com 에서 쉽게 제공을 해주고 있다.


  https://www.element14.com/community/docs/DOC-81294/l/raspberry-pi-3-model-b-with-1gb-of-ram-with-wifi-and-bluetooth-low-energy


1.1 추가 구매사항 

  • RS232 관련사항 
기본구성을 위와 같이 알았으면, 이제 중요한 Serial Interface 찾아보자.
나는 내부에 기본으로 USB-To Serial 포함이 되어있을 거라고 생각을 했는데, 아쉽게도 포함되어 있지 않았다.
그래서 찾아보지, USB2Serial을 별도로 구매하여, 연결을 해줘야 한다.
이를 연결하기 위해서 또, 케이블도 같이 구매를 해야하니 참고하기 바란다.
그리고, 이것을 연결해서 사용한다고 하면, 블루투스 기능을 사용하지 못한다고 한다.
추후 회로도 검토
  1. USBToSerial Device 
  2. 관련 Cable 

  • 보드 Case or 받침대 
라즈베리파이를 구매 해보니, Board Case는 꼭 필요할 것 같다. 젠장 그냥 대충 쓰려고 했더니, 쇼트가 날 우려도 있거니와,
가급적 GPIO 핀이 뚤려진 것으로 사야겠다.

  • HDMI Cable / SD Disk 
집에 있는 걸로 찾아 쓰고 있으며, 구지 구입하고 있지 않다.



1.2 Raspberry-Pi3 HW(schematic 정보) 

아래의 회로도는 보면 알겠지만, 자세한 정보의 HW 존재하지 않는다.


  • USB의 경우 
microUSB Port가 OTG를 지원을 하는 줄 알았지만, 회로도를 보면 단순히 전원공급에만 사용이 되어진다.
다른 USB의 회로도는 확인 불가능하지만, 아래의 BCM2835문서를 확인을 해보면 OTG가 지원가능한 것 같다.
외부의 별도의 USB Phy를 두어 동작이 되며 Register를 보면 Charge와 Drive VBUS가 있는 걸로 보아 지원은 되지만 Raspberry PI에서는 지원되지 않는 것 같다.
(본래의 계획은 USB To Serial 을 사용할 생각을 염두해두고 있었는데 실망이 크다)

  • 관련회로도 
  https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/Raspberry-Pi-3B-V1.2-Schematics.pdf
  https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md

  • BCM2835 문서
  https://www.raspberrypi.org/app/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

  • USB OTG 기능 불가능 확인 
  https://www.raspberrypi.org/forums/viewtopic.php?t=152321


2. Raspberry-Pi3  OS 선택 

아래의 사이트에 가면, 다양한 Raspberry-Pi3의 OS를 제공하는데 우선 나는 Ubuntu로 정했기때문에 이를 먼저하기로 했다.

  • SW 관련 정보  
이사이트의 Download 가면 다양한 OS가 제공해주고 있다.
  https://www.raspberrypi.org/products/raspberry-pi-3-model-b/


2.1 RASPBIAN OS 설치 

사용설명서
  https://wikidocs.net/book/483

본인이 원하는 OS를 Download 받자
  https://www.raspberrypi.org/downloads/


2.2 Ubuntu Mate 16.04.2 설치

일단 Raspberry-PI를 구입을 했으니, 기본이 되는 Ubuntu를 SD Disk에 설치를 해보자.
아래의 사이트에서  Ubuntu를 Image를 down받고 아래의 Win32DiskImager를 이용하여
Image 구워 기본 TEST를 진행해보자.

  • Download
   https://ubuntu-mate.org/blog/ubuntu-mate-for-raspberry-pi-3/
   https://ubuntu-mate.org/raspberry-pi/

  ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img


3. How to write Raspberry OS Image


  • SD Card Writer (Win32DiskImager) 이용 


  2016/05/sd-card-writer-window.html

상위 이미지가 제대로 Write가 되었고, SD Card를 다시 뺏다가 꽂으면, 아래와 같이 Raspberry-PI SD DISK 완성



상위처럼 Download 하여 Image Write 한 후 SD Card와 HDMI를 연결하면 기본동작이 된다.
더불어 필요한 것이 키보드와 마우스이지만 이는 나의 무선용으로 대채
처음부팅 후 언어설정/키보드설정/네트워크 설정 필수

Ubuntu Mate 16은 깔끔한 GUI와 윈도우와 거의 비슷하게 변경이 되어 사용하기가 쉬워졌다.


  • Raspberry 설정 파일 설치 

기본으로 설치되어 있는질 알았는데, 아래와 같이 설치해야한다.

$ sudo apt-get install raspi-config
$ sudo raspi-config    // Camera Interface Enable 변경 


3.1 WIFI/ Ethernet TEST 

이상하게 WIFI 암호를 실수해서 넣으면, 잘동작이 안되며, 다시 넣으면, Reboot가 필요하다.
이부분은 좀 이상하며, Ethernet은 잘동작 확인했다.잘안되면, Reboot 한 후 확인하자


3.2 Bluetooth TEST 

이 부분은 아직 미확인 이며, 상위 Serial을 사용하면 사용을 못한다고 하니 설정을 확인해야겠다.


3.3 Camera Module TEST 

기본으로 들어있는 cheese 라는 Camera 관련 Program 이 있는데, 이는 USB용 UVC 만 지원이 가능한 것 같다.
그리고, 이를 UV4L이라고 하는 것 같은데, 이 부분은 추후에 좀 더 자세히 알아보자.


import picamera
cam = picamera.PiCamera()
cam.capture('test.jpg')
cam.close()

  http://www.knight-of-pi.org/installing-the-camera-module-for-ubuntu/
  http://webnautes.tistory.com/929


  • Ubuntu Mate Upgrade 
이상하게 이것을 하면, Firefox가 제대로 동작이 되지 않기때문에 아래 방법은 현재 고려중

$ sudo apt-get update
$ sudo apt-get upgrade


  • OpenCV 3.0
  https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/


  • Raspberry 관련 Docker 
Raspberry PI 기반에서 Docker 사용 
  https://blog.hypriot.com/getting-started-with-docker-on-your-arm-device/
  https://blog.hypriot.com/getting-started-with-docker-and-linux-on-the-raspberry-pi/


4. NVR 및 Google Driver에 전송자료


  • Raspberry PI를 이용한 NVR/DVR 
  http://www.techrapid.co.uk/raspberry-pi/turn-raspberry-pi-nvr-motion/


  • Python을 이용하여 AVI  Gdrive upload
  http://jeremyblythe.blogspot.kr/2012/06/motion-google-drive-uploader-and.html


  • How To install OPEN CV
  https://blog.cedric.ws/install-opencv-on-raspberry-pi

  • Open CV의 활용
  https://blog.cedric.ws/raspberry-pi-opencv-create-a-security-system-web-interface

  • Motion detection
  https://blog.cedric.ws/opencv-simple-motion-detection
  https://blog.cedric.ws/opencv-simple-motion-detection-concave-hull-optimization

 

10/26/2017

Linux Kernel 관련 Manual

Linux Kernel 관련자료

  • Linux Device Drivers, Third Edition 
2.6.10 kernel 이라 오래되었지만, 책이 없을 때 참고.

  1. Chapter 1: An Introduction to Device Drivers
  2. Chapter 2: Building and Running Modules
  3. Chapter 3: Char Drivers
  4. Chapter 4: Debugging Techniques
  5. Chapter 5: Concurrency and Race Conditions
  6. Chapter 6: Advanced Char Driver Operations
  7. Chapter 7: Time, Delays, and Deferred Work
  8. Chapter 8: Allocating Memory
  9. Chapter 9: Communicating with Hardware
  10. Chapter 10: Interrupt Handling
  11. Chapter 11: Data Types in the Kernel
  12. Chapter 12: PCI Drivers
  13. Chapter 13: USB Drivers
  14. Chapter 14: The Linux Device Model
  15. Chapter 15: Memory Mapping and DMA
  16. Chapter 16: Block Drivers
  17. Chapter 17: Network Drivers
  18. Chapter 18: TTY Drivers

  https://lwn.net/Kernel/LDD3/


  • Kernel 분석의 한글자료 
  http://jake.dothome.co.kr/
  https://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/



  • Linux Kernel에 관련된 자료들 
  https://lwn.net/Kernel/
  https://lwn.net/Search/


  • Linux 배포관련 리스트 
  https://lwn.net/Distributions/




  • Migrating/Porting Device Drivers 
  1. Considerations for Porting Device Drivers
  2. Reading and Writing Data from or to User Space
  3. About Handling Access to Shared Resources
  4. About the Bus Model
  5. About Character Device Drivers
  6. About Block Device Drivers
  7. About Network Device Drivers
  8. About USB Device Drivers
  9. About the Sysfs File System
  10. Loading Device Drivers as Kernel Modules

  https://docs.oracle.com/cd/E37670_01/E52461/html/ol_migdd.html



  • Linux Kernel API

  https://www.kernel.org/doc/html/v4.9/driver-api/index.html#


  • Video4Linux Doc

  https://www.kernel.org/doc/html/v4.9/media/v4l-drivers/index.html#
  https://www.kernel.org/doc/html/v4.9/media/media_kapi.html


  • Network 802.11 Driver API

  https://www.kernel.org/doc/html/v4.9/80211/index.html


  • Network drivers 관련자료 
  https://lwn.net/Articles/30107/
  https://docs.oracle.com/cd/E37670_01/E52461/html/ch06s07.html
  https://kldp.org/node/91044

  • Linux Kernel Source 
  https://elixir.bootlin.com/linux/latest/source
  https://www.kernel.org/

10/12/2017

RS485 Interface 기본정리

1. RS485 Interface

RS485를 직접 다루어본 기억은 너무 오래전이라서 아래의 링크로만 간단히 정리하겠다. 
나의 경우는 DVR 제품양산 , 즉 공장의 QC 관련프로그램을 작성할 때 와 Camera 제어 목적으로 사용했던 걸로 기억하고 있다. 
이외에 거의 사용한 경우는 드문 것 같다. 대부분이 간단한 제어와 데이터 전송 목적으로 사용했다. 

각자 회사마다 독자적인 RS485의 Protocol 만들어서 구현했던 걸로 기억하는데, 왜냐하면, 타 회사와 호환이 되면 안되기 때문이다. 
사실 기억이 너무 가물가물하다. 

  • RS232/RS422/RS485 관련 Serial 통신개념
RS232/ RS422/ RS485 통신들의 비교 한글로 설명이 너무 잘되어있어 링크연결. 
  https://m.blog.naver.com/PostView.nhn?blogId=jmsin30&logNo=220264593087&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F 

  • RS485 관련기본정리
RS485의 장점은 우선 Bus구조가 가능하며, Differential 을 이용하여 원거리 데이타 전송가능
그래서 Voltage Level 이 상당히 높다 


  • RS485 2선 및 4선 전송 관련내용
RS485의 2가지로 지원하며, 위에서 언급 했듯이 Differnetial로 전송하기 때문에 2Pin or 4Pin 구조이다. 
  1. Full Duplex(4선) : 4 Pin  TX RX 분리 
  2. Half Duplex(2선): 2 Pin  TX/RX 공용