:::: MENU ::::

WioLink 사용하기

WioLink

2016년에 킥스타터를 통해서 구매한 WioLink. 당시에 동작을 확인하고 사용을 하지 않고 있다가, 최근에 다시 사용을 하려고 보니 잘 동작을 하지 않는다. WiFi 설정은 되고, 서버에도 접속이 되는데 앱에서 디바이스를 구성을 하고 View API 버튼을 누르면 앱이 멈춰버린다.

펌웨어 업데이트

그래서 일단 펌웨어를 다시 업데이트를 해본다.
펌웨어 다운로드
Firmware: user1.bin user2.bin
Bootloader binary and other binaries: Esp8266sdk1.4.1.zip
Esp8266sdk1.4.1.zip을 압축을 풀고, boot***.bin 파일은 bootloader.bin으로 이름을 바꾼다.

esptool 설치

$ pip install esptool

다음과 같이 명령어 입력

esptool.py -p /dev/tty.SLAB_USBtoUART -b 230400 write_flash –flash_size 4MB-c1 0x0000 bootloader.bin 0x1000 user1.bin 0x101000 user2.bin 0x3fc000 esp_init_data_default.bin 0x3fe000 blank.bin

그래도 마찬가지이다. ㅠㅠ

wio cli를 설치해서 확인

https://github.com/Seeed-Studio/wio-cli 이 페이지의 내용을 보고 wio cli를 설치후 터미널에서 확인해 보니 디바이스를 제어가 가능하다.

$ wio list

이 명령어를 통해 사용이 가능한 명령어 리스트를 볼 수 있다.


wio cli의 명령어의 형태는 다음과 같고 버튼의 상태는 다음과 같이 얻을 수 있다.

$ wio call <token> <method> <endpoint>

$ wio call {tocken} GET /v1/node/GroveButtonD0/pressed

하지만 터미널에서 토큰을 복붙하고 명령어를 치기는 번거롭다.

아두이노에서 사용하기

연결되는 디바이스를 GPIO 15를 통해 MOSFET으로 제어를 한다. 따라서 다음의 코드를 스케치에 넣어야 한다. 

pinMode(15, OUTPUT);
digitalWrite(15, 1);

참고

https://github.com/Seeed-Studio/Wio_Link/wiki/Advanced-User-Guide
https://github.com/Seeed-Studio/wio-cli


Azure IoThub에서 수신된 데이터 확인하기

Azure IoThub에 디바이스를 연결하고 MQTT 프로토콜을 이용해서 데이터를 보내면 이 내용을 Monitoring > Metric 에서 설정하는 대로 그래프로 표시된다. 하지만 메시지 포멧과 데이터의 값을 보려면 콘솔을 열고 다음과 같은 명령을 입력해야 한다.

az iot hub monitor-events –hub-name {IotHub Name} –output table

여기서 IotHub Name는 생성한 IoTHub의 이름이다.

위 내용은 작년(2018)에 테스트를 하던 건데 오늘(2019.5.2) 다시 테스트를 하려고 보니 안된다. 구글링 해보니 CLI 명령어가 바뀜. 이 링크 를 확인.

az iot hub monitor-events -n {iothub_name}


무게센서와 HX711 사용하기

무게센서

일반적으로 무게센서는 스트레인게이지(Strain Gauge) 기반의 로드셀(Lode Cell)를 사용한다. 스트레인 게이지는 저항으로 이루어진 센서로서 피 측정물에 부착되어 피 측정물의 물리적인 변형률(Strain)을 휘스톤 브릿지 방식으로 전기적인 신호로 바꾸어 측정물의 변형량을 측정하는 저항 센서이다.

  • Excitation+ (E+) or VCC is red
  • Excitation- (E-) or ground is black.
  • Output+ (O+), Signal+ (S+)+ or Amplifier+ (A+) is white
  • O-, S-, or A- is green or blue

HX711

참고


아두이노에서 WebUSB 사용하기

구글 크롬 65버전 이상일 경우 WebUSB를 지원한다.

Micro:Bit

Micro:bit의 경우 웹에서 MakeCode같은 프로그램으로 코딩을 하고 hex 파일을 다운로드 후 외장 디스크로 연결된 디바이스에 drag & drop를 해서 프로그래밍을 했는데, 이제는 웹브라우저에서 바로 USB를 통해 프로그래밍이 가능하다.

Arduino

아두이노의 경우 다음과 같이 작업을 한다.

  • 아두이노는 1.6.11 이상 버전 사용
  • Contents/Java/hardware/arduino/avr/cores/arduino/USBCore.h 파일의 #define USB_VERSION 0x200를 0x210 로 수정
  • https://github.com/webusb/arduino 이 repo의 WebUSB폴더를 아두이노 라이브러리에 copy
  • 예제 프로그램으로 동작 확인
  • 현재 지원되는 보드
    • Arduino Leonardo
    • Arduino/Genuino Micro
    • Arduino/Genuino Zero
    • Arduino MKR1000
    • Arduino MKRZero
    • Arduino MKRFox1200
    • Adafruit Feather 32u4

참고

https://www.hackster.io/FreeGroup/arduino-webusb-circuit-simulator-fun-9c841a

 


OpenSDA 인터페이스

OpenSDA는 open-standard 시리얼 디버거 어댑터로 MSD Bootloader 및 USB CDC기능을 가진다.

NXP, Freescale사의 보드의 경우 P&E micro사의 솔루션이 들어가 있는데 보드에 오래된 bootloader가 들어가 있으면 업데이트를 해야하며 다음과 같은 순서로 업데이트를 한다. 어떤 OS에서는 캐쉬기능 때문에 파일을 넣어도 write가 안된 경우도 있고, Windows8, Windows 10에서 문제가 있다고 하기도 함.

  1. Unplug the USB cable (if attached).
  2. Press and hold the Reset button.
  3. Plug in a USB cable from a USB Host to the OpenSDA USB port.
  4. Release the RESET/Bootloader button.
  5. A removable drive will be visible in the host file system with a volume label of BOOTLOADER.

보드의  LED는 다음과 상태값을 가진다.

참고

https://mcuoneclipse.com/2014/11/01/illustrated-step-by-step-instructions-updating-the-freescale-freedom-board-firmware/
https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/


SmartConfig – WiFi provisioning

유선 네트워크인 이더넷은 랜선을 연결하면 DHCP로 자동으로 IP가 부여된다. 하지만 WiFi에서는 AP의 이름 및 패스워드를 알고 AP에 접속을 해야지 IP를 얻을 수 있다. 이 과정이 WiFi provisoning인데, 스마트폰이나 PC와 달리 IoT 디바이스는 UI가 없는 경우가 많아서 AP의 이름이나 패스워드를 다른 방법으로 입력을 해야한다. 이때 주로 스마트폰을 사용을 하는데, 쉽게 말하면 스마트 폰을 이용해서 이 정보를 전달을 한다. 보통 디바이스를 softAP 모드로 놓고 이 디바이스에 스마트폰이 연결를 한후 UDP, TCP로 이 정보를 전달을 하는데, 이 방법외에 다음과 같은 방법이 있다.

SamrtConfig

ESP8266, ESP32에서 사용하는 WiFi 설정프로그램은 TI사의 CC3000에서 사용했던 SmartConfig를 사용한다. 단말은 SmartConfig 모드(packet sniffing mode)에 있고 스마트 폰에서 SSID, PW를 암호화해서 UDP broadcasting한다. 단말은 이 패킷을 받아서 SSID에 접속을 하고 IP를 부여 받는다.

WPS (WiFi Protected Setup)

WPS 버튼을 눌러서 기기를 세팅하는 방법. SSID, PW를 모르고 있어도 설정이 가능.

Local AP

서두에 설명한대로 softAP로 동작을 하고 웹 또는 TCP, UDP로 SSID, PW를 전달하는 방식.

참고


Resin.io 사용법

Resin.io의 홈페이지에는 다음과 같이 자신들의 서비스를 설명을 한다.

Resin.io brings the benefits of Linux containers to the IoT. Develop iteratively, deploy safely, and manage at scale.

Linux containers to the IoT… 리눅스 기반의 IoT 디바이스를 위한 도커같은 서비스 일 것 같다.

Resin.io 사용법

Account setup

resin.io 에 계정을 생성후 SSH 키 설정하여 resin에 저장을 하는데,  깃헙계정으로 로그인 할 경우 깃헙계정에 저장된 SSH 키 중 하나를 선택한다.

SSH 키 확인

ls -al ~/.ssh

SSH 키 생성

ssh-keygen -t rsa -b 4096 -C “[email protected]

SSH 키를 ssh-agent애 넣기

eval “$(ssh-agent -s)”

~/.ssh/config 파일을 다음과 같이 만든다.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa

ssh-add -K ~/.ssh/id_rsa

다음과 같이 SSH 키를 클립보드에 복사후 github 계정에 설정한다.

pbcopy < ~/.ssh/id_rsa.pub

Create Application & Add your first device

디바이스 타입에서 – 라즈베리파이 같은 보드를 선택
Add device를 클릭하고 위에서 선택한 라즈베리파이에 맞는 이미지를 다운로드 한다.

Provision your device

다운로드한 이미지를 Etcher로 SD로 굽는다.
라즈베리파이가 부팅이 끝나면 dashboard에서 확인이 가능하다.

Deploy code

코드를 하나 클론한다.

$ git clone https://github.com/resin-io-projects/simple-server-node.git

다음과 같이 remote endpoint를 추가한다. 주의) 여기서 USERNAME은 resin의 USERNAME이고, APPNAME은 위에서 생성한 Application 이름으로 대쉬보드에서 보인다.

$ cd simple-server-node
$ git remote add resin <USERNAME>@git.resin.io:<USERNAME>/<APPNAME>.git

다음과 같이 push를 하면 resin 서버에 코드가 업로드되고 기기에 코드가 적용이 된다.

$ git push resin master

대시보드의 모습

참고 – https://docs.resin.io/learn/getting-started/raspberrypi3/nodejs/


키보드, 모니터 없이 라즈베리파이 개발 환경 설정

라즈베리파리(RPI) 핀맵

1. 라즈베리파이 기본 설정

– RPI 이미지 다운로드: https://www.raspberrypi.org/downloads/
Etcher 같은 image writing 툴로 다운로드 받은 이미지를 SD에 writing
– RPI에 SD를 넣고, 시리얼 포트를 연결하고 맥의 터미널에서 115200으로 연결한다.

screen /dev/tty.SLAB_USBtoUART 115200

– pi/raspberry로 로그인 한다.
sudo raspi-config로 wifi 설정 및 SSH 설정후 재부팅
– 다시 로그인하면 ifconfig로 할당 받은 ip 확인
– 맥의 터미널에서 ssh [email protected]로 접속

2. GPIO 프로그래밍

Package들의 최신버전 체크 및 설치

sudo apt-get install update
sudo apt-ge tinstall upgrade

Git설치

sudo apt-get install git-core

wiringPi설치

git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

gpio readall하면 다음과 같이 RPI의 핀맵을 알 수 있다.


Physical : PCB상의 물리적인 GPIO pin number
wPi : wiringPi 라이브러리 GPIO number
BCM : python에서의 GPIO number (브로드컴 칩에 의해 정의된 번호체계)

3. 파이썬3 설치

sudo apt-get install python3
sudo apt-get update
sudo apt-get upgrade python3
python3 -V

4. VIM 설치

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim

5. VIM 설정

vi ~/.vimrc하여 다음과 같이 설정한다.

set hlsearch ” 검색어 하이라이팅
set nu ” 줄번호
set autoindent ” 자동 들여쓰기
set scrolloff=2
set wildmode=longest,list
set ts=4 “tag select
set sts=4 “st select
set sw=1 ” 스크롤바 너비
set autowrite ” 다른 파일로 넘어갈 때 자동 저장
set autoread ” 작업 중인 파일 외부에서 변경됬을 경우 자동으로 불러옴
set cindent ” C언어 자동 들여쓰기
set bs=eol,start,indent
set history=256
set laststatus=2 ” 상태바 표시 항상
“set paste ” 붙여넣기 계단현상 없애기
set shiftwidth=4 ” 자동 들여쓰기 너비 설정
set showmatch ” 일치하는 괄호 하이라이팅
set smartcase ” 검색시 대소문자 구별
set smarttab
set smartindent
set softtabstop=4
set tabstop=4
set ruler ” 현재 커서 위치 표시
set incsearch
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\
” 구문 강조 사용
if has(“syntax”)
syntax on
endif



Iotivity에서 gerrit 설정

Iotivity에서 gerrit설정 및 git을 이용해 코드를 가져오는 방법

Step 1: linuxfoundation.org 에서 회원가입

Step 2: Create SSH keys

$ ssh-keygen -t rsa -C "Your name <your_email_address>"

~/.ssh의 위치에 id_rsa와 id_rsa.pub가 생성이 된다. 참고로 맥에서 숨김 파일을 보려면 SHIFT + CMD + .

Step 3: Setting up SSH

~/.ssh/config 파일을 다음과 같이 생성한다.

Host gerrit.iotivity.org
    Hostname "gerrit.iotivity.org"
    IdentityFile ~/.ssh/id_rsa
    User <Linux Foundation ID>
    Port 29418

Step 3: Upload SSH public key to Gerrit and Register personal info

IoTivity Gerrit에 로그인을 한후 Settings 메뉴에서 id_rsa.pub 파일의 내용 copy & paste 한다.

Step 4: Verify your SSH connection

$ ssh gerrit.iotivity.org

터미널에서 다음과 같은 메시지가 나오면 성공

****    Welcome to Gerrit Code Review    ****

Step 5: Clone code

$ git clone https://gerrit.iotivity.org/gerrit/iotivity
$ cd iotIvity
$ git clone https://github.com/intel/tinycbor.git extlibs/tinycbor/tinycbor -b v0.5.1
$ git clone https://github.com/ARMmbed/mbedtls.git extlibs/mbedtls/mbedtls -b mbedtls-2.4.2
$ sudo apt-get install autoconf libtool doxygen valgrind wget unzip libboost-dev libboost-program-options-dev libboost-thread-dev uuid-dev libexpat1-dev libglib2.0-dev libsqlite3-dev libcurl4-gnutls-dev

$ sudo apt-get install scons

참고 https://wiki.iotivity.org/how_to_use_gerrit


Pages:1234567...52