"생각의 웹"입니다.


지난 Do IoT Yourself 강연 시 가장 널리 알려진 MySQL를 이용해서 data logging를 했으나 

프로그래밍에 문외한인 분들에게 교육하기 어려운 점과 

MySQL과 같은 RDMS (관계형 데이터 베이스 시스템)과 JavaScript의 궁합이 썩 맞지 않는 면들이 있었습니다.

불편한 점들을 나열하면 다음과 같습니다.


- MySQL 설치가 까다롭다.

- database를 설정하고 schema를 만드는 과정에서 실수하기 쉽다. (error-prone)

- JavaScript 객체 (JSON)의 속성들을 일일히 DB 스키마에 맞춰 저장한 뒤 읽어 들일 때 JSON 객체로 만들어 주는 과정이 필요하다.

- JavaScript Date 객체와 DB의 Date 객체는 호환되지 않는다.

 


따라서, NoSQL 중 하나인 mongoDB를 대안으로 사용하기로 결정했습니다. 그 이유는 다음과 같습니다.


- database를 설정하고 schema를 만드는 과정이 필요 없다.

- JSON 객체로 저장하고 읽어 들인다.


제 개발환경인 windows 8.1에서는 msi 형태의 설치 파일을 통해 별도의 설정 없이 손쉽게 설치가 가능했으나 

실행 환경인 raspberry PI는 조금 복잡하고 오랜 과정이 필요했습니다.


다음은 설치 과정을 정리한 포스팅입니다.


http://c-mobberley.com/wordpress/2013/10/14/raspberry-pi-mongodb-installation-the-working-guide/


영어의 압박이 있어 보이지만 순서대로 따라하면 큰 무리 없이 설치가 가능합니다.

다만, 어디서나 mongo 콘솔을 사용할 수 있도록 설정하는 부분이 빠진 것 같아 다음과 같이 추가합니다.


sudo ln -s /opt/mongo/bin/mongo /usr/bin/mongo


설치된 mongoDB 버전이 2.1.1 에 불과하다는 포스팅도 있으나 사용하고자 하는 기능에는 크게 무리가 없을 듯 합니다.


이번 포스팅은 여기까지 입니다.

감사합니다.



안녕하세요, "생각의 웹"입니다.


앞서 라즈베리 파이에 WiFi USB dongle 설치한 포스팅을 공유한 바 있습니다.

라즈베리 포럼을 뒤지다 당시 라즈베리안 커널 버전에 맞는 드라이버를 컴파일해서 dropbox로 제공해준 MrEngMan 덕분에 일단 사용할 수 있게 되었지요.


그러나, 문제는 커널이 업그레이드 될 때마다 해당 커널 버전으로 빌드한 드라이버를 구해서 수작업 설치를 해야 한다는 문제가 있었습니다.

무심코 아래와 같이 라즈베리파이의 커널 업그레이드 후 재부팅을 하니 더 이상 와이파이 동글이 사용할 수 없는 상태가 되어 버렸습니다. ㅠ.ㅠ.


sudo apt-get update
sudo apt-get upgrade
sudo reboot -t NOW


문제의 원인을 찾기 위해 로깅 메세지를 보니 MrEngMan이 제공한 드라이버가 커널과 호환되지 않았습니다.

당시엔 (지금도) 드라이버를 빌드하기 위해 필요한 절차를 이해하지 못하고 있었기 때문에 제가 할 수 있는 최선은 라즈베리파이 포럼에 해당 버전에 맞춰 드라이버를 컴파일해 달라는 읍소형 댓글을 다는 것 뿐이였습니다.


그런데 안타깝게도 몇 달이 지나도록 댓글이 달리지 않더군요.


결국 어쩔 수 없이 Ethernet으로 연결하여 사용하던 중 다시 와이파이가 필요한 상황이 되어 다시 한번 (용기를 내어) 구글링하기 시작했습니다.


그 결과, 다행히 N150UA에 사용된 WiFi 칩셋인 MediaTek-MT7601의 드라이버를 라즈베리파이에서 빌드하는 법을 정리한 포스팅을 발견해 기쁜 마음에 링크를 공유합니다.


http://groenholdt.net/Computers/RaspberryPi/MediaTek-MT7601-USB-WIFI-on-the-Raspberry-Pi/MediaTek-MT7601-USB-WIFI-on-the-Raspberry-Pi.html


상기 포스팅 내용을 한글로 재 정리하면 다음과 같습니다.

// root 계정으로 변경
sudo -s

// 최신 version download
apt-get update
apt-get upgrade
rpi-update

// 리눅스 커널 소스 코드 다운로드
cd /usr/src
git clone https://github.com/raspberrypi/linux.git
sudo ln -s /usr/src/linux /lib/modules/`uname -r`/build
cd linux

// 현재 수행 중인 시스템 커널 설정으로 지정
make mrproper
zcat /proc/config.gz > .config
cp .config .config.org
make modules_prepare


// 커널 모듈 심볼 다운로드 (커널 재 컴파일을 막기 위함)
wget https://raw.github.com/raspberrypi/firmware/master/extra/Module.symvers

// MT7601 USB 드라이버를 압축해제
cd ~ 
tar -xvjpf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 
cd DPO*


드라이버에서 엄청난 양의 로그를 뱉기 때문에 이를 막기 위해서 os/linux/rt_linux.c 파일에서 다음 문장을 수정합니다.

ULONG RTDebugLevel = RT_DEBUG_TRACE; 
ULONG RTDebugLevel = 0; // RT_DEBUG_TRACE; 

마지막으로 드라이버를 빌드하고 인스톨 합니다.

make
make install


혹시 이전 제 포스팅에서 설명한 방식대로 driver를 설치하신 분은 최종 설치 과정 (make install) 전에 이전 드라이버를 삭제해 주셔야 합니다.

제거 명령은 다음과 같습니다.


sudo rm -rf /etc/Wireless/RT2870STA

감사합니다.

안녕하세요. 늘 묵혔다가 포스팅하는 '생각의 웹'입니다.


라즈베리 파이는 다른 포스팅에서도 간단히 소개드린 바 있지만 아이들 교육 용 뿐만 아니라 DIY (스스로 만들어 보기) 운동에 매우 큰 영향을 미쳤습니다.


라즈베리 파이 미트업은 서울 디지털 포럼 (SDF) 참석 차 방한한 라즈베리 파이의 공동 설립자이자 켐브리지 대학 컴퓨터 공학 교수님인 엘런을 주 강사로 라즈베리 파이의 탄생 배경과 속사정 그리고 협력자들이 만든 응용에 대한 데모와 곧 공개될 DIY Forum에 대한 내용이 발표되었습니다.


상세한 내용이 궁금하시면 아래 슬라이드를 보시기 바랍니다.


이 포스팅에서 드리고 싶은 인사이트는

"공개 소프트웨어와 하드웨어를 통해 자신이 상상한 것들을 구현해 보는 창의 사회가 성큼 다가 왔다는 사실"입니다.


머리 속 서랍에 숨겨 놓은 좋은 아이디어가 있는 데 도난 당할까봐 전전 긍긍하시면서 때를 놓치는 우를 범하지 마시고 오늘 당장 직접 만들어 보세요.



개발 경험이 전무하시다거나 S/W 혹은 H/W 만 알고 있어서 힘들다고 생각하시는 분은 한국형 창고 연구실 (garage lab.)인 아빠의 공작소를 추천합니다. (전 이곳에서 무료로 장비와 H/W 기본 지식을 전수 받았습니다. 두려워 말고 두드려 보세요. ^^)


http://cafe.naver.com/daddyslab


모든 아빠들 (저를 포함해서요)의 꿈을, 우리 청년들의 환상을, 아이들의 예언을 성취하기를 축복합니다. 


감사합니다.

안녕하세요,


라즈베리 파이를 아두이노 개발환경으로 사용하기 위해 관련 도구를 설치하는 방법을 다음과 같이 정리합니다.


wget http://arduino.googlecode.com/files/arduino-1.0.5-linux64.tgz
tar zxvf arduino-1.0.5-linux64.tgz
sudo apt-get install avr-libc
sudo apt-get install libftdi1
sudo apt-get install avrdude
sudo apt-get install openjdk-6-jre
sudo apt-get install librxtx-java
cd arduino-1.0.5
for i in $(find . -name "librxtxSerial.so") ; do cp /usr/lib/jni/librxtxSerial.so $i ; done
for i in $(find . -name "RXTXcomm.jar") ; do cp /usr/share/java/RXTXcomm.jar $i ; done
cp /usr/bin/avrdude /home/pi/arduino-1.0.5/hardware/tools/avrdude
cp /etc/avrdude.conf /home/pi/arduino-1.0.5/hardware/tools/avrdude.conf

이후 startx 를 실행하여 x window 상에서 ~/arduino-1.0.5/arduino를 실행하면 arduino IDE를 띄울 수 있습니다.




출처 : http://raspberrypi.homelabs.org.uk/raspberrypi-the-arduino-development-tool/

안녕하세요,

라즈베리 파이에 무선랜을 연결하여 사용할 때 AP가 바뀔 때마다 유선랜을 연결하여 ssid/password를 /etc/networks/interfaces에 작성해주어야 하는 번거로움이 있어 찾던 중 괜찮은 도구가 있어 다음과 같이 소개합니다.

먼저 shell에서 다음과 같이 wicd-curses 도구를 설치합니다.

sudo apt-get install wicd-curses

설치가 완료되면 다음과 같이 도구를 실행합니다.

sudo wicd-curses


상기 화면과 같이 주변의 AP 리스트가 나타나게 되는데 혹시 나타나지 않는 경우는 P 키 (Shift-p)를 눌러 wireless interface의 이름을 지정해줍니다. 대부분 wlan0이라는 이름을 쓰는데 제 LAN card의 경우, ra0 라는 이름를 사용합니다. 화면 아래 관련된 명령어가 있으니 참고하시기 바랍니다.


접속하고자 하는 AP를 커서 키로 선택 후 오른쪽 방향키를 누르면 접속 설정을 할 수 있습니다.



커서 키를 이용해 Key 항목에 AP의 암호 키를 입력하고 Automatically connect to this network에 체크 후 F10을 누르면 저장됩니다.


이와 동일한 방식으로 필요한 AP 마다 암호를 저장하면 AP 변경 시에도 유선 랜 연결 없이 손 쉽게 raspberry Pi를 사용하실 수 있습니다.


감사합니다.


출처 : http://raspberrypi.stackexchange.com/questions/11631/wifi-setup-for-multiple-networks



안녕하세요, 


IoT 구현을 위해 라즈베리 파이에 WiFi USB Adapter를 설치하려던 중, 제대로 동작하지 않아 많은 시행착오를 거쳐 완료한 과정을 아래와 같이 공유합니다.


  1. 개발 환경:
    • Single board: Raspberry PI Type B
    • USB Wireless LAN Card: ipTIME N150UA
    • Rasbian Version: NOOBS 1.3.7 버전으로 설치, terminal에서 아래 확인 
      pi@raspberrypi ~ $ uname -a
      Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux
  2. 장치 연결 확인
    • terminal에서 아래 명령 확인
      pi@raspberrypi ~ $ lsusb
      Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
      Bus 001 Device 004: ID 148f:7601 Ralink Technology, Corp.
    • 장치의 USB ID를 업데이트
      pi@raspberrypi ~ sudo update-usbids
      pi@raspberrypi ~ $ lsusb
      Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. SMC9512/9514 USB Hub
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
      Bus 001 Device 004: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
    • Ralink 관련 driver 코드를 다운로드
      pi@raspberrypi ~ $ sudo apt-get install firmware-ralink
  3. 드라이버 문제 해결
    • apt-get에서 제공하는 드라이버는 정상동작하지 않는 문제가 있어 아래와 같은 방식으로 해결
      1. wget https://dl.dropboxusercontent.com/u/80256631/MT7601U-3-6-11-538.tar.gz
      2. tar -xzvf MT7601U-3-6-11-538.tar.gz
      3. sudo install -m 644 -c mtutil7601Usta.ko/lib/modules/3.6.11+/kernel/drivers/net/wireless/
      4. sudo depmod -a 3.6.11+
      5. sudo rm -rf /etc/Wireless/RT2870STA
      6. sudo mkdir /etc/Wireless/RT2870STA
      7. sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/.
      8. sudo install -m 644 -c mt7601Usta.ko /lib/modules/3.6.11+/kernel/drivers/net/wireless/
      9. sudo depmod -a 3.6.11+
      10. sudo install -m 644 -c mtnet7601Usta.ko /lib/modules/3.6.11+/kernel/drivers/net/wireless/
      11. sudo depmod -a 3.6.11+
      12. sudo reboot
  4. 드라이버 정상 동작 확인
    • pi@pi ~ $ lsmod
      ..........
      mtnet7601Usta          34503  1 
      mt7601Usta           1031548  1 mtnet7601Usta
      mtutil7601Usta         70168  2 mt7601Usta,mtnet7601Usta
    • pi@pi ~ $ ifconfig
      ra0       Link encap:Ethernet  HWaddr 7c:dd:90:3f:02:e6  
                inet addr:192.168.1.84  Bcast:192.168.1.255  Mask:255.255.255.0
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:133478 errors:0 dropped:0 overruns:0 frame:0
                TX packets:454 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000 
                RX bytes:29364556 (28.0 MiB)  TX bytes:29523 (28.8 KiB)
  5. 네트워크 환경 설정
    • /etc/network/interfaces 파일에 다음과 같이 작성, 이때 wpa-ssid와 wpa-psk 내용은 AP 에 맞춰 작성
      auto lo

      iface lo inet loopback
      iface eth0 inet dhcp

      allow-hotplug wlan0
      iface wlan0 inet manual
      wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
      iface default inet dhcp

      auto ra0
      allow-hotplug ra0
      iface ra0 inet dhcp
      wpa-ssid "AP 이름"
      wpa-psk "AP 접속 비밀번호"
  • 재구동하여 드라이버 및 정상 동작 확인 (랜카드에 파란불이 껌벅이면 정상 동작하는 것임)
마지막으로 사족으로 견해를 첨언하면, 
  • 라즈베리 파이는 나름 최적화된 싱글 보드로 IoT 개발에 필요한 컴퓨팅 파워를 제공하고
  • 사용자 가이드와 개발자 커뮤니티가 잘 갖춰진 반면,
  • 리눅스 기반 프로젝트 특유의 H/W 호환성 확보 및 커널 버전 업에 따른 device driver 충돌 문제는 일반 사용자가 접근하는 데 장벽이 됨.

이 모든 정보를 제공한 아래 라즈베리 파이 커뮤니티에 감사!


+ Recent posts