만들기2015. 8. 30. 22:57

제품 : http://www.lkembedded.co.kr/shop/goods/goods_view.php?goodsno=250&category=022001004




Arduino_SSD1306_OLED-master를 한번 실행해야 OzOLED 샘플이 동작한다??

전원을 처음 넣은 상태로 OzOLED 샘플로는 표시가 안 나타남.

OzOLED init()함수에 몇가지 추가해서 동작시킨 수정 OzOLED 라이브러리

OzOLED(init_modified).zip


아두이노 라이브러리


간단하게 문자 출력 가능, 예제 풍부함

http://blog.oscarliang.net/arduino-oled-display-library/


라이브러리 다운로드

OzOLED.zip

라이브러리 폴더 밑에 예제파일 잘되어 있음




UNO TWI 통신 핀

Vcc (3.3V) - 5V도 동작은 하던데...?

SDA(A4)

SCL(A5)


Cactus Micro = LilyPad

SDA(D2?D3)

SCL(D3?)


String 으로 글자 표시하기

float float_val =123.2;
String str="test hello";

str = String(float_val,2); //소수점 2자리 표시
const char * c = str.c_str();  //String을 const char 로 변환
OzOled.printString(c);  //Print the String


strTmp = String(dist, DEC);

OzOled.printBigNumber((const char*)strTmp.c_str(), 0, 0);  //화면 상단
OzOled.printBigNumber((const char*)strTmp.c_str(), 0, 4);  //화면 하단



void LCD_Message(byte X, byte Y, String msg)
{
  OzOled.setCursorXY(X, Y);
  OzOled.printString((const char*)msg.c_str());
}

String strTmp = String(/*"dist:" + */String(dist, DEC) + "m");
LCD_Message(0, 1, strTmp);


비트맵 그림 그리기

그림판으로 128*64 사이즈, 단색 비트맵으로 저장한다음 아래 변환기로 HEX 데이터 생성

bitmap 변환기 : http://en.radzio.dxp.pl/bitmap_converter/


LCDAssistant.zip


const PROGMEM unsigned char Logo[] PROGMEM={ }

위와 같은 문법으로 중괄호에 HEX 데이터 복사


OzOled.drawBitmap(OscarLogo, 0, 0, 16, 8);


OLED 표시를 위함 LCD Assistant 설정값





* 아래는 기본 원리 참고용

SPI통신으로 그림 그리기

http://robotcantalk.blogspot.kr/2015/03/interfacing-arduino-with-ssd1306-driven.html


Wire(TWI) 라이브러리로 직접 커맨드 보내서 제어하는 방식..이것보다 위에 OzOLED 라이브러리가 편리

예제파일

Arduino_SSD1306_OLED-master.zip


라이브러리

Adafruit_SSD1306-master.zip


LilyPad USB 보드에서 TWI (Two wire interface) 통신포트

TWI: 2 (SDA) and 3 (SCL). Support a simple TWI communication using the Wire library.

출처:https://www.arduino.cc/en/Main/ArduinoBoardLilyPadUSB

CactusMicro_GLCD_SSD1306.ino







Posted by orasman
만들기2015. 8. 30. 12:14

아두이노 스텝 모터 라이브러리


아두이노 기본 내장 라이브러리 : #include <Stepper.h>

https://www.arduino.cc/en/Reference/Stepperㅁ


가감속 로직을 추가한 라이브러리 : #include <AccelStepper.h>

http://www.airspayce.com/mikem/arduino/AccelStepper/index.html


동작 원리 동영상

https://youtu.be/B86nqDRskVU


2-Wheel 주행 플랫폼 제작

http://42bots.com/tutorials/28byj-48-stepper-motor-with-uln2003-driver-and-arduino-uno/





Posted by orasman
만들기2015. 6. 20. 18:17

This article related to Cactus Micro's Arduino Mini + ESP8266 combined module.

http://wiki.aprbrother.com/wiki/Cactus_Micro



Open Arduino IDE and choose board "LilyPad USB" to start


arduino base board and ESP8266 was connected via SoftwareSerial.


Arduino

 ESP8266

 11 (rx)

 tx

 12 (tx)

 rx

 13

(Digtal Out)

 CH_PD


to make ESP8266 activate, CH_PD should be HIGH (LOW is Firmware Upgrade mode)


Using Hardware Serial to Software Serial bypass code, PC serial monitor program access the ESP8266 directly.

<SerialBypss.ino file attached here>


SerialBypass.ino


Don't missed make Pin #13 to be HIGH to make ESP8266 working normal mode.


recommend "CoolTerm" program (most robust program ever I used)

Don't missed add "CR"+"LF" at the end of each command.

ESP8266 can understand (parsing) command when received "CR","LF" byte.


[if check this option, whenever you key-in "enter"key, it automatically trasmit "CR,"LF"]


my ESP8266 factory setting as 9600baud speed. firmware version 0.21.0.0


ESP8266 AT COMMAND guide


 Reset

 AT+RST

 

 version check

 AT+GMR

 

 operation mode

 AT+CWMODE=1

1:station(client)

2:AP(server)

3:Both

 AP(Access Point) Search

 AT+CWLAP

 

 Connect(Join) to AP

 AT+CWJAP="SSID_NAME","PASSWORD"

 


There is a problem occured!!

when I try to connect AP, there is response like below

+resp:4

FAIL


There is no error message explain manual!!

I found +resp:2 means "wrong password"


SOLUTION for "+resp:4"

change your AP's access mode to "WPA-PSK" "AES" then it works!!


not working for : "WPA2-PSK"+"AES" or "WPA2-PSK"+"TKIP" or "WPA-PSK"+"TKIP"


If I upgrad my ESP8266 modle, then may it can be fixed. BUT to upgrad module, hardware rework needed!

How to change the serial port for Cactus Micro

[above link is manual : its software serial port (arduino 11,12) to Hardware Serial (arduino 0,1)]












Posted by orasman
만들기2015. 6. 19. 23:27

MCP2515 CAN Driver IC를 적용한 CAN 통신 모듈 사용법



아두이노와 MCP2515 배선 연결

설명
아두이노 핀 번호
MCP2515 CAN 모듈
전원5VVCC
그라운드
GNDGND
클럭
13
SCK
MISO
12SO
MOSI
11
SI
ChipSelect
10CS
Receive Interrupt
2
INT

구글 검색어 : mcp2515 can arduino library
아두이노 라이브러리 다운로드 : https://github.com/coryjfowler/MCP_CAN_lib

상기 라이브러리도 16Mhz Xtal을 기준으로 작성되어 있음
구입한 CAN 모듈은 8Mhz Xtal이 장착되어 있어서 mcp_can_dfs.h 를 수정해야함
<수정한 라이브러리를 본 게시물에 첨부 했음>

DHT-sensor-library-master(modified for 8MHz Xtal).zip


/*
#define MCP_16MHz_500kBPS_CFG1 (0x00)
#define MCP_16MHz_500kBPS_CFG2 (0xF0)
#define MCP_16MHz_500kBPS_CFG3 (0x86)
*/

#define MCP_16MHz_500kBPS_CFG1 (0x00) //8Mhz Xtal 500Kbps CAN speed
#define MCP_16MHz_500kBPS_CFG2 (0x90) //8Mhz Xtal 500Kbps CAN speed
#define MCP_16MHz_500kBPS_CFG3 (0x02) //8Mhz Xtal 500Kbps CAN speed

첨부된 라이브러리를 "내문서/Arduino/Libraries/" 위치에 복사합니다.

아두이노를 실행하고 메뉴에서 "파일"->"예제"->"MCP_CAN_Lib-master"->"send"클릭



송수신 예제 모두 실행하면 잘 동작합니다.


[사진 설명 : 5031개 CAN 메세지를 보냈는데(좌) 모두 정상 수신함(우)]


MCP2515가 수신하는 예제의 경우 (receive.ino)
데이터 전송이 빠를 경우 데이터를 놓칠 수 있음
이경우 시리얼 모니터를 통해 표시하는 데이터를 줄이면 놓치지 않고 받을 수 있음

[사진 설명 : 10286개 CAN 메세지를 보냈는데(좌) 메시지를 놓쳐서 2677개만 수신함(우)]


[사진 설명 : 10257개 CAN 메세지를 보냈는데(좌) 시리얼로 표시되는 내용을 줄이자 모두 정상 수신함(우)]


ODB 통신방법 정리 : http://uglytree.tistory.com/category/CAN/OBD-II


UDS 소개 : http://hoyoung2.blogspot.kr/2013/11/can-protocols.html


ODB PID wikipidia : https://en.wikipedia.org/wiki/OBD-II_PIDs


CAN Shield D-SUB 9핀

CAN_L : 6(x) --> 5

CAN_H : 4(x) --> 3







Posted by orasman
만들기2015. 6. 17. 23:50

제품사양 : http://wiki.aprbrother.com/wiki/Cactus_Micro


구입:http://dadimall.co.kr/product/detail.html?product_no=1524&cate_no=259&display_group=1



기본사용법

https://www.tindie.com/products/AprilBrother/cactus-micro-arduino-compatible-plus-wifi-esp8266/



보드 종류는 LilyPad USB 로 선택

아두이노 보드 11(Rx), 12(Tx) 에 ESP8266에 연결되어 있음 : SoftwareSerial 사용

ESP8266 CH_PD 는 13번 핀에 연결되어 있어서 HIGH 를 출력하면 ESP8266 동작함

SerialBypass.ino 이용해서 9600baud 로 접속하면 AT 명령 접속 가능


펌웨어 버전 확인

AT+GMR

version:0.21.0.0
SDK version:0.9.5


동작모드 설정  AT+CWMODE=1

무선 공유기 검색 AT+CWLAP

무선 공유기 접속  AT+CWJAP="SSID_NAME","PASSWORD"


AP 접속이 안됨. AP에 접속하는 <AT+CWJAP="SSID_NAME","PASSWORD"> 명령에 FAIL 응답.

FAIL 응답 메세지는 "+CWJAP:4"


AP 접속 비밀번호가 10자리가 아니면 접속 안되는 버그가 있다는 얘기가 있어서 10자리로 바꿨는데도 안됨

http://www.esp8266.com/viewtopic.php?f=6&t=1332


+CWJAP:4 라는 응답이 오는데 "4"번 FAIL에 대한 의미를 찾을 수 없다!

FAIL code에 대해서 검색했으나 매뉴얼이 없음!

기존에 AP에 접속된 상태에서 AT+CWJAP 명령을 내리면 "4"번 에러가 난다


패스워드를 틀리게 입력했더니 "+CWJAP:2" 라고 응답이 나옴

AP이름을 틀리게 넣으면 "+CWJAP:3"라고 응답이 옴

그래서!! 혹시나 싶어서!! 무선 공유기 설정을 "WPA-PSK" "AES"로 바꿨더니 접속 됨!!

시험 결과 무선 공유기 접속 암호 글자수는 상관이 없음




접속할 수 없는 무선 공유기 설정 : "WPA2-PSK"+"AES","WPA2-PSK"+"TKIP","WPA-PSK"+"TKIP"


무선공유기에 접속했는지 확인하는 명령 AT+CWJAP?

할당받은 IP주소 확인 명령 AT+CIFSR

ThingSpeak.com에 가입하고 채널을 만들고 API를 할당받으면 데이터를 올릴 수 있다.


혹시나 싶어서 멀티채널 모드를 끈다 AT+CIPMUX=0
ThingSpeak.com 접속 주소 AT+CIPSTART="TCP","184.106.153.149",80
보내려는 문자의 개수 AT+CIPSEND=43
할당받은 API로 데이터 전송 GET /update?key=[THINGSPEAK_KEY]&field1=0


아래 라이브러리가 동작함

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

유투브 댓글에 라이브러리 링크 있음

댓글에 링크 : http://www.thaieasyelec.com/downloads/EWLM107/TEE_ESP_WIFI.7z


ESP8266 AT Command

https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/


ESP-11

http://www.esp8266.com/viewtopic.php?f=5&t=585






보드 뒷면에 CH_PD 를 VDD로 pull 연결함



'만들기' 카테고리의 다른 글

Arduino ESP8266 AP join error troubleshoot for Cactus Micro  (2) 2015.06.20
CAN 통신 모듈 (품명 MCP2515)  (1) 2015.06.19
P채널 N채널 MOSFET 사용법  (0) 2010.12.31
IOT (internet of things)  (0) 2010.12.05
AVR CAN  (0) 2010.12.02
Posted by orasman
꿀팁2015. 6. 11. 23:58

[락동아리] 주문한 부품 도착


아두이노 예제 프로그램 나온 링크

www.instructables.com/file/FVWW6ZLHJ1XP591


상기 링크에 나온 회로를 따라서 구성함


잘 동작함



google keyword : max7219 dotmatrix arduino


MaxMatrix.zip


www.instructables.com/file/FVWW6ZLHJ1XP591

Posted by orasman
꿀팁2015. 6. 11. 23:30

(공동구매) MP3 플레이어 모듈 동작 시험 (모델명:wtv020sd16p)


[락동아리] 주문한 MP3 플레이어와 micro SD 메모리 카드 도착




동작시키는 라이브러리, 예제코드는 아래 링크 참고

http://www.buildcircuit.com/example-1-using-wtv020sd-16p-music-module-with-arduino/


상기 링크에 나온 예제를 따라서 회로를 구성



예제 링크에 있는 AD4 음악 파일을 마이크로SD 카드에 복사함

(mp3 파일을 AD4 파일로 변환해야 한다고 함. 추후 mp3도 직접 재생 되는지 확인 예정)


본 게시물에 첨부된 라이브러리를 아두이노 라이브러리 폴더에 설치하고 example을 실행하면 음악이 나옴



----------------------------------------------------------------------------------------



wiring & source code (arduino, library)

http://www.buildcircuit.com/example-1-using-wtv020sd-16p-music-module-with-arduino/



Wtv020sd16p_orasman.zip


DO NOT USE 5V POWER SUPPLY FOR THE MODULE. 5V will burn both your MicroSD card and WTV020SD module. Please use only 3.3V power, either from Arduino or use 3.3V regulator chip.


download files from above link

1) AD4 files (converted mp3 files) copy to micro-sd memory card.

2) wtv020 library

3) arduino code (you can find download link at the end of code window)


build circuit(wiring)

click : "e. Basic circuit (trig and select) example 2."





wtv020 pinmap

let's see datasheet

http://letsmakerobots.com/files/WTV020_manual_V1.3.pdf

Posted by orasman
꿀팁2015. 6. 10. 23:42

노하우 : 시리얼 통신을 먼저 연결하고 카메라에 전원을 넣어줘야 정상 동작함

예를 들어 시리얼통신과 전원이 같이 있는 커넥터 전체를 한번에 꼽는다면

전원과 시리얼통신이 동시에 연결되기 때문에 잘 동작하지 않기도 한다.


제품을 보니 MAX232 칩이 붙어 있음

MAX232는 TTL 전압(5V)를 RS232 전압(14V)로 승압해주는 역할



그래서 아두이노에 직접 연결할 수 없음 (아두이노 시리얼 통신은 Tx,Rx 전압 5V - TTL Level)


※ MAX232 칩은 Tx 전압이 14V 로 나옴. 아두이노에 직접 연결하면 아두이노 파괴됨!!! (직접 해보진 않았음..)


그래서 일단 RS232(14V)->USB 통신 변환 장치를 이용해 PC에서 동작 시험하기로 함

시험에 사용한 RS232->USB 통신 변환 장치 : https://www.eleparts.co.kr/EPX6TR39




카메라 모듈 커넥터 핀 배열



카메라 모듈

 USB2.0 to Serial 변환기 9핀 D-SUB 핀번호

 Tx

 D-SUB 2번

 Rx

 D-SUB 3번

 GND

 D-SUB 5번



"RS232->USB 변환 장비"를 이용해 PC에 연결한 모습


구글검색어 : vc0706 comm tool  <== PC에서 시리얼 포트로 영상을 읽거나 카메라 설정을 변경하는 프로그램

http://www.ladyada.net/wiki/tutorials/products/camera/index.html

상기 페이지 맨 아래 링크에서 VC0706CommTool.exe 프로그램을 다운 받아서 설치

VC0706 Comm Tool - Windows control software


프로그램을 실행하고 COM포트 번호를 지정하면 시리얼 통신을 통해 캡처된 이미지를 볼 수 있다.


#2 아두이노에 연결해서 사진 찍고 SD 메모리 저장

아두이노 보드와 통신하려면 RS232 전압 레벨(14V)을 TTL 레벨(5V)로 바꿔야 함

카메라 모듈 설명서에 따르면 MAX232칩을 제거하고 R15,R16을 연결하면 커넥터로 TTL레벨 Tx,Rx가 출력 된다고 함

MAX232칩 다리를 닛퍼로 자르던가 열풍기로 녹여서 한번에 깔끔하게 떼어 내는게 좋음


MAX232칩을 제거한 모습


R15, R16 를 쇼트시키고 커넥터에서 Rx,Tx 전압을 측정해 보면 3.3V가 나옴

아두이노 UNO의 Tx 출력 전압은 5V 이므로 저항을 이용해 전압분배 회로를 만들어 3.3V로 낮춰야 함


아두이노 UNO Rx 핀 (2번핀) <-----------------------  카메라 Tx 핀

아두이노 UNO Tx 핀 (3번핀) ----> 저항(전압분배) ----> 카메라 Rx 핀

아두이노 UNO GND 핀         <-------------------------->  카메라 GND 핀


카메라에서 읽은 JPG 이미지를 SD 메모리 카드에 저장하기 위해 SD카드 리더기 연결

아두이노UNO 13번핀 -- SD카드_SCK (SPI통신 클럭)

아두이노UNO 12번핀 -- SD카드_DO (SPI통신 Data-Out)

아두이노UNO 11번핀 -- SD카드_DI (SPI통신 Data-In)

아두이노UNO 10번핀 -- SD카드_SS (SPI통신 Chip-Select)


[사진 하단에 붉은색 보드는 TFT LCD인데 붙어있는 SD 카드 리더기만 사용하느라 점프선으로 연결함]



http://www.ladyada.net/wiki/tutorials/products/camera/index.html

상기 링크 맨 아래에 있는 VC0706 Library 를 GitHub에서 다운 받은뒤 안에 포함된 example을 실행

Adafruit VC0706 Arduino library Github repository


Snapshot.ino : SD카드를 정상적으로 인식했다면 캡처된 이미지가 SD카드에 저장됨

MotionDetect.ino : 카메라가 찍는 화면에서 뭔가 변화가 생기면 그때 마다 한장씩 저장함


동작 확인 끝.



------------------------------------------------------------------------------------------------

참고 문서들


카메라 설명 : 시리얼 포트로 영상읽고 카메라 설정 변경,소스코드는 아두이노용 아님

http://wiki.iteadstudio.com/VC0706_UART_Camera_%EF%BC%88Supports_JPEG%EF%BC%89

PC기반 카메라 제어 프로그램 : vc0706 comm tool

https://learn.adafruit.com/ttl-serial-camera/downloads


150719

cv0709 comm tool이 설치파일형태로 바꼈다. Program Files 밑에 설치된 파일을 사용할것

기존 설치 없이 압축파일 풀어서 쓰는 버전은 Invalid Command 라고 에러 뜨면서 통신 잘 안된다.


PC용 USB2Serial 핀맵


vc0706 comm tool 사용법 & 아두이노 코드 : adafruit 공식인듯

pc 용 프로그램부터 adafruit 공식라이브러리 까지 다있음

http://www.ladyada.net/wiki/tutorials/products/camera/index.html

==> 아두이노를 USB2Serial hijacker로 쓸수 있다!

PC가 보내는 신호는 아두이노 0핀에서 측정됨.

PC가 받는 신호는 아두이노 1핀에서 측정됨.



사용법 pdf 링크 :PC용 프로그램 사용법만 있음

http://www.fut-electronics.com/wp-content/plugins/fe_downloads/Uploads/TTL_camera_toturial_and_testing.pdf


카메라핀맵 제품 판매 링크

http://www.aliexpress.com/snapshot/6707756002.html?orderId=67554548227055


아두이노 연동 사용법, 코드 : 다 동일한 코드, adafruit와는 코드 내용이 다름..실행은 안해봄

http://www.elecfreaks.com/projects/how-to-use-ov7670-camera-module-with-arduino/


http://www.instructables.com/id/How-to-use-OV7670-Camera-Module-with-Arduino/


http://www.element14.com/community/docs/DOC-76210/l/trying-to-use-a-camera-module-to-show-footage-to-a-lcd-tft-screen


Posted by orasman
꿀팁2015. 6. 7. 19:22

TFT LCD 동작 시험


이렇게 생긴 2.4inch 터치 TFT LCD


아두이노UNO 보드에 결합하기 전에 LCD 실드 바닥면 절연 처리 필요




다양한 라이브러리를 테스트 해봤는데, 동작 안함


우여곡절 끝에 동작하는 예제를 찾음

http://www.moleandroid.com/arduino-tutorial-2-how-to-setup-mcufriend-2-4-lcd-tft-libraries-and-avoid-white-screen/


예제 코드에서 수정한 부분 (수정된 최종본은 본 게시물 첨부로 올림)

1) 프로그램 시작할때 LCD ID를 읽는 부분이 본 LCD에서 동작을 안해서 강제로 LCD ID를 할당함

2) Micro SD 메모리 카드에 있는 bmp 이미지를 표시하는 예제에서 사용하는 PushColor() 함수에 '}' 하나 빠진거 수정


수정된 example 이 포함된 library

TFTLCD_Rack_Dongari_tftpaint_fixed.zip


별도 회로 구성은 필요 없고 바로 아두이노 UNO 보드에 꼽기만 하면됨

micro SD 메모리 카드에 첨부파일 폴더에 있는 bmp 파일을 복사해서 LCD 모듈에 꼽아야 함


example 폴더에 있는 예제 프로그램 설명


graphicstest.ino : 각종 그래픽, 문자를 표시하는 데모



tftbmp_modified.ino : SD메모리 카드에 있는 bmp 파일을 읽어서 표시하는 데모



tftpaint.ino : 터치 입력을 받아서 그림을 그리는 데모

※ 주의 : 첨부된 example 에서 코드 한군데를 고쳐야 동작함

소스코드에서 92번 행 : uint16_t identifier = 0x9327;//tft.readID();

터치 좌표는 LCD 제품마다 달라서 코드에서 상하,좌우를 바꿔야 함 ㅠㅠ





---------------------------------------------------------------------------------------------------------------


예전에 작성한 내용 (아래 첨부는 라이브러리와 graphictest.ino 만 수정됨. bmp 읽는 예제는 수정 안됨)


buy at : http://www.aliexpress.com/item/Free-Shipping-2-4-inch-TFT-touch-LCD-Module-LCD-Screen-Module-For-Arduino-UNO-R3/1619321648.html


I tried 4~5 kinds of TFT Libraries, but not work! (I spend almost two days)


working source : http://www.moleandroid.com/arduino-tutorial-2-how-to-setup-mcufriend-2-4-lcd-tft-libraries-and-avoid-white-screen/


one little modification needed.
at the start of program, it try to read and run init code along with its ID value.
But there is NO answer from TFT module. (return value = 0)
So I tried to assign ID by force.


modified code and library are attached this article.

unzip into arduino library folder. and run the example code in there.




<reversed text and coordinate flipping issues>

http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/

TFTLCD.zip has reverse coordinate code.

BUT whole functions are different from adafruit_TFTLCD.cpp : its not easy to integrate work source sample.


flipping using map function.

http://softsolder.com/2015/02/03/adafruit-touch-screen-tft-lcd-rotation/


tftpaint.ino

    // scale from 0->1023 to tft.width
    p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);

    p.x = map(p.x, 0, 240, 240, 0);  //add this line to flipping X position


adafruit_TFTLCD.cpp

void Adafruit_TFTLCD::drawPixel(int16_t x, int16_t y, uint16_t color) {
    x = map(x, 0, 240, 240, 0);    //add this line to flipping X position


HOW to fix font flipping??

=> just setRotatin(3)..then it shows correctly


<bmp not display problem>

cause : in TFTLCD.cpp, pushColors() method has error

solution : put one more '}'

 


just for reference : ILI9325 device photo

http://tronixstuff.com/2013/04/26/tutorial-arduino-and-ili9325-colour-tft-lcd-modules/


forum site

https://forum.arduino.cc/index.php?topic=223769.60


'꿀팁' 카테고리의 다른 글

비보탭 터치 먹통  (0) 2015.10.21
16x8 LED Matrix MAX7219  (0) 2015.06.11
wtv020 mp3 player module  (1) 2015.06.11
vc0706 jpeg serial camera  (0) 2015.06.10
ESP8266 AT 명령어와 thingspeak 로 온습도 데이터 업로드  (2) 2015.05.07
Posted by orasman
꿀팁2015. 5. 7. 22:41

필요시 ESP8266 펌웨어 업데이트 (펌웨어 별로 ESP8266 시리얼 통신 속도 다르다)

http://www.hardcopyworld.com/ngine/aduino/index.php/archives/1257


여러개 써본 결과 아래 펌웨어가 안정적이고 통신속도도 115200으로 변경 가능

AI-v0.9.5.0 AT Firmware(9600).bin


보레이트 바꾸는 명령어
Set the baud rate
AT+CIOBAUD?
AT+CIOBAUD=9600
AT+CIOBAUD=115200
AT+CIOBAUD=230400
AT+CIOBAUD=460800
AT+CIOBAUD=921600

https://hackaday.io/project/3250-cypress-psoc-4-esp8266-ws2812-rgb-xmas- lights/log/10830-updating-the-firmware-of-the-esp8266


ESP8266_flasher_and_BIN.zip

CoolTermWin.zip

CoolTermWin.z01


CH_PD = GND 상태에서는 펌웨어 업그레이드 모드 (업그레이드 모드에서는 57600baud, 80mA 정도 소모)

CH_PD 핀을 HIGH(3.3V)로 하면 일반 WiFi 모듈 동작 모드 (300mA 이상 소모)


ESP8266은 전원이 3.3V라서 Rx도 3.3V 로 받아야 함!! 5V를 Rx핀에 넣으면 안됨!

NT_USBto232 모듈은 Rx,Tx 핀이 3.3V 라서 전압 변환 불필요


ThingSpeak 사물인터넷 데이터를 받아서 저장하고 표시해 주는 서비스

https://thingspeak.com/docs/tutorials/


thingspeak 가입방법, ESP8266 AT명령으로 데이터 업로드 설명

http://mcuoneclipse.com/2014/12/14/tutorial-iot-datalogger-with-esp8266-wifi-module-and-frdm-kl25z/


ESP8266을 아두이노에 연결해서 데이터 업로드 하는 방법과 샘플 코드

http://electronut.in/an-iot-project-with-esp8266/


1) PC에서 시리얼 통신으로 ESP8266을 이용해 ThingSpeak 접속하고 테스트 하는 명령어 순서

('>>' 는 응답 결과)


AT

>>OK


펌웨어 버전 확인

AT+GMR

>>00170901 :115200baud ESP_8266_BIN0.92.bin

>>0018000902 :9600baud v0.9.2.2 AT Firmware.bin
>>0018000902-AI03 : 9600baud :Version:0.9.2.4

동작 모드 확인 (1:Station, 2:AP, 3:Both)
AT+CWMODE?
>>+CWMODE:3

2라면 AP(Access Point,공유기)모드라서 다른 AP 접속이 안된다. 1번 또는 3번 모드로 변경해야 함
AT+CWMODE=3

혹시라도 이미 접속된 AP가 있다면 확인해 보자
AT+CWJAP?
>>+CWJAP:"U+Net36C3"

기존에 AP접속되어 있다면 접속을 해제해야 새로운 AP에 접속이 가능하다
AT+CWQAP
>>OK

AP 목록 검색
AT+CWLAP
>>+CWLAP:(0,"",0,d8:57:ff:3f:00:00,0)
+CWLAP:(3,"U+Net****",-81,00:08:**:**:**:c1,2)
+CWLAP:(0,"U+zone",-79,00:08:5b:??:??:??,2)

AP에 접속함, AP이름, 비밀번호를 반드시 따옴표에 넣어서 입력
AT+CWJAP="U+Zone","NOTTELLINGMYPASSWD"
>>OK

AP에서 할당 받은 IP주소를 확인
AT+CIFSR
>>192.168.219.172

한번 AP(AccessPoint, 무선공유기)에 접속하면 ESP8266 전원을 껏다 켜도 자동으로 재접속 함

멀티채널 접속을 Disable
AT+CIPMUX=0

AT+CIPSTART="TCP","184.106.153.149",80
AT+CIPSEND=43
GET /update?key=QMRY6Q????GN????&field1=0

멀티채널을 이용해서 접속하는 방법

allow multiple connections
AT+CIPMUX=1
>>OK
AT+CIPMUX?

4번 채널을 이용해 Thingspeak 주소에 TCP/IP 80포트로 접속함
AT+CIPSTART=4,"TCP","184.106.153.149",80
>>OK Linked

4번 채널에 44바이트를 전송함 (문자수 +2 해야함. 명령 끝에 엔터치면 \r\n 두개문자가 더 보내지기 때문)
AT+CIPSEND=4,43
>> >

GET /update?key=[THINGSPEAK_KEY]&field1=0
GET /update?key=QMRY6Q????GN????&field1=0  <이건 내가 가입해서 만든 API KEY>
>>SEND OK
>>+IPD,4,1:8       
>>OK
+IPD는 ESP8266이 메세지를 수신했다는 뜻, '4'는 4byte 받았다는 뜻,
'1:8'는 ThingSpeak가 보낸 메세지, 일반적으로 entity(데이터 개수)가 표시되고, '0'일 경우 저장 실패를 의미
ThingSpeak에 데이터를 업데이트 할 수 있는 주기를 15초로 제한하고 있다.

주의: 업로드 값이 두자리 숫자면 총 문자 개수는 '45'로 해야함 (보내려는 문자의 갯수를 알려주는게 포인트)
AT+CIPSEND=4,44
GET /update?key=QMRY6Q????GN????&field1=22

ThingSpeak 싸이트에서 업로드한 데이터가 잘 표시되는지 확인한다



TCP 포트로 접속해서 업로드 하는 방법 외에 URL 주소에서 직접 데이터를 입력해 볼 수 있다.
2) Thingspeak 가입해서 Channel, api_key 만들고 웹브라우저에서 URL 주소 방식을 이용해서 데이터 업로드 테스트
http://api.thingspeak.com/update?key=[THINGSPEAK_KEY]&field1=0
http://api.thingspeak.com/update?key=QMRY6Q????GN????&field1=88
>>응답으로 화면에 업로드된 데이터 개수(entity)가 표시된다.
>>15초 보다 자주 업로드 하면 에러가 나면서, 0이 표시된다

참조:http://www.instructables.com/id/ESP8266-Wifi-Temperature-Logger/step4/ThingSpeak-setup/

esp8266_test.ino




<온습도 센서를 읽어서 주기적으로 ThingSpeak에 업로드 하는 예제>


DHT22 사용 방법.. 라이브러리, DHT11 모델과는 접근 방식이 다름

https://github.com/adafruit/DHT-sensor-library

하드웨어 연결
ESP8266 Rx 3.3V를 맞춰 줄때 3.3V보다 높으면 잘 안된다
1K옴 저항 3개 연결해서 분압하면 잘 맞는다.

저항을 이용한 전압분배 연결 회로도
아두이노 Tx 출력(5V)  ----> 1K옴   ---- <ESP8266 Rx 3.3V 연결> ----- 1K옴 ---- 1K옴 -----> GND

최종코드


<온습도센서 사용하기 별도>

DHT11 DHT22 는 읽어들이는 방식이 다르다
이걸 다 통합한 라이브러리가 나왔다.

https://www.adafruit.com/products/385
중간쯤에 Arduino library and example code
https://learn.adafruit.com/dht
GitHub에서 다운 받는 링크 : https://github.com/adafruit/DHT-sensor-library
"다운로드"링크 눌러서 다운 받고, 문서->arduino->library에 설치한다. 폴더이름은 *.cpp 파일명과 동일해야 함

온습도 읽는 샘플 코드

DHT22_test.ino


ESP8266 AT 명령 주고 받는 시리얼 바이패스 


SerialBypass.ino



ESP8266 소비전류가 크긴 한데 아두이노 UNO 보드에서 출력하는 3.3V로 구동이 가능했음

(아두이노 정품 UNO 보드, 호환보드 모두 확인함. 아래 사진은 호환보드)






아두이노 회로 그리는 프로그램이 있어서.. 그걸로 회로도를 그려봄 : Fritzing

http://kaizen8501.tistory.com/2


ESP8266 동작을 위한 최소한의 배선은 5핀 (3.3V, GND, Tx, Rx, CH_PD)

전원, Tx, Rx 핀 외에 "CH_PD" 핀만 3.3V로 연결하면 동작함. 다른 포트는 연결 안해도 동작함.













'꿀팁' 카테고리의 다른 글

비보탭 터치 먹통  (0) 2015.10.21
16x8 LED Matrix MAX7219  (0) 2015.06.11
wtv020 mp3 player module  (1) 2015.06.11
vc0706 jpeg serial camera  (0) 2015.06.10
cheapest 2.4inch touch TFT LCD for Arduino UNO brand name"mcufriend"  (3) 2015.06.07
Posted by orasman