FlashAir W-04의 I2C 기능으로 DRV8830을 구동시켜 보았다
FlashAir W-04가 발매에!
2017년 6월에 마침내 4세대째의 FlashAir W-04가 발매되었습니다. 새롭게 추가되거나 향상된 기능은 다음 사이트를 참조하십시오.
4세대 FlashAir W-04
FlashAir 개발자를 위한 비공식 위키 - W-04 특설 페이지
Lua 스크립트에 I2C 기능이 추가!
W-04에서는, Lua 스크립트의 기능 강화, 기능 추가가 행해지고 있습니다. 그 중 이번에는 I2C 기능에 주목해 보았습니다.
Lua 함수 참조
이번에는, 새로운 함수의 하나인 fa.i2c 함수를 사용해, FlashAir로부터 I2C 접속한 모터 드라이버 DRV8830을 제어해 보겠습니다.
구성
필요한 것은 다음과 같습니다.
W-04에서는, Lua 스크립트의 기능 강화, 기능 추가가 행해지고 있습니다. 그 중 이번에는 I2C 기능에 주목해 보았습니다.
Lua 함수 참조
이번에는, 새로운 함수의 하나인 fa.i2c 함수를 사용해, FlashAir로부터 I2C 접속한 모터 드라이버 DRV8830을 제어해 보겠습니다.
구성
필요한 것은 다음과 같습니다.
이번에, DRV8830은 어드레스 설정 핀 A0, A1을 모두 아무것도 접속하지 않는 open 상태로서, 0xC8로 설정하고 있습니다.
"FlashAir와 DRV8830은 아래 표와 같이 연결됩니다.
FlashAir에서는 2번 핀(CMD)이 SCL, 7번 핀(DAT0)이 SDA로 되어 있으므로 DRV8830의 각각 10번 핀과 9번 핀에 연결합니다.
이번, 「SD 카드 슬롯 DIP화 모듈」을 사용하고 있으므로, SCL과 SDA는 모두 10KΩ 저항으로 풀업되고 있습니다.
CONFIG 파일 설정
FlashAir의 SD_WLAN 폴더에 있는 CONFIG 파일에 다음 옵션을 추가합니다. IFMODE는 FlashAir의 GPIO 모드를 켭니다. LUA_RUN_SCRIPT는 FlashAir의 전원을 켠 직후 지정된 Lua 스크립트를 시작하는 설정입니다.IFMODE=1
LUA_RUN_SCRIPT=/drv8830sample.lua
※SD_WLAN 폴더와 CONFIG 파일은 불가시 속성 파일이므로 주의해 주세요.
Lua 스크립트 파일
"FlashAir의 루트 폴더에 다음 코드를 포함하는 텍스트 파일 (drv8830sample.lua)을 복사하십시오.
이 코드에서는 최고속도(0x3F)로 5초간 정회전(0x01)시킨 후, 최고속도(0x3F)로 5초간 역회전(0x02)시켜 정지합니다.
FlashAir의 I2C는 Master로 작동하고 연결된 DRV8830은 Slave로 작동합니다. I2C 기능에서 Slave의 주소를 지정하려면 7bit 표기로 지정합니다. DRV8830 데이터시트 에 기재되어 있는 주소는 8bit 표기이므로, 1bit 오른쪽으로 시프트시킨 수치가 됩니다.
이번에는 DRV8830의 에러 처리는 생략하고 있습니다.
drv8830sample.lua-- FlashAir + DRV8830
local md_addr = 0x64 --アドレス0xC8を7bit表現で指定
function write_i2c_command(addr, data1, data2)
res = fa.i2c{ mode="start", address=addr, direction="write" }
res = fa.i2c{ mode="write", data=data1 }
res = fa.i2c{ mode="write", data=data2 }
res = fa.i2c{ mode="stop" }
end
function sendMotorDrive(addr, reg, vset, data)
local vdata = bit32.bor(bit32.lshift(vset, 2), data)
write_i2c_command(addr, reg, vdata)
end
res = fa.i2c{ mode="init", freq="100" }
sendMotorDrive(md_addr, 0x00, 0x00, 0x00)
sleep(1000)
sendMotorDrive(md_addr, 0x00, 0x3F, 0x01)
sleep(5000)
sendMotorDrive(md_addr, 0x00, 0x3F, 0x02)
sleep(5000)
sendMotorDrive(md_addr, 0x00, 0x00, 0x00)
동작 확인
위 루아 스크립트가 동작하고 모터 드라이버 DRV8830의 OUT1, OUT2에 약 -5V ~ 5V의 출력이 이루어집니다. 선로에 접속하면 철도 모형의 차량이 앞뒤로 움직입니다.
이번에 사용한 DRV8830은 동작 전원 전압 범위가 2.75V~6.8V이며, 이번에는 5V를 입력으로 하고 있기 때문에 일반적으로 최대 12V 대응의 N게이지 차량에서는 저속 운전이 됩니다. 차량의 모터 상태에 따라 전압 부족으로 움직이지 않을 수도 있습니다.
요약
이상으로 FlashAir의 I2C 기능을 사용하여 모터 드라이버 DRV8830을 제어할 수 있었습니다. 지금까지 SPI-I2C 변환 IC의 신세를 지고 있던 곳을, 다이렉트에 접속할 수 있게 된 것은 대단하네요. 더욱 간편하게 I2C 디바이스를 이용할 수 있게 되었습니다.
참고 자료
FlashAir W-04에 대해서
4세대 FlashAir W-04
FlashAir 개발자를 위한 비공식 위키 - W-04 특설 페이지
Lua 함수 참조
Lua 함수 참조 - I2C
모터 드라이버 DRV8830에 대해서
DRV8830 데이터시트
Reference
이 문제에 관하여(FlashAir W-04의 I2C 기능으로 DRV8830을 구동시켜 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ayasehiro/items/d44a975feb79c94747cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
LUA_RUN_SCRIPT=/drv8830sample.lua
"FlashAir의 루트 폴더에 다음 코드를 포함하는 텍스트 파일 (drv8830sample.lua)을 복사하십시오.
이 코드에서는 최고속도(0x3F)로 5초간 정회전(0x01)시킨 후, 최고속도(0x3F)로 5초간 역회전(0x02)시켜 정지합니다.
FlashAir의 I2C는 Master로 작동하고 연결된 DRV8830은 Slave로 작동합니다. I2C 기능에서 Slave의 주소를 지정하려면 7bit 표기로 지정합니다. DRV8830 데이터시트 에 기재되어 있는 주소는 8bit 표기이므로, 1bit 오른쪽으로 시프트시킨 수치가 됩니다.
이번에는 DRV8830의 에러 처리는 생략하고 있습니다.
drv8830sample.lua
-- FlashAir + DRV8830
local md_addr = 0x64 --アドレス0xC8を7bit表現で指定
function write_i2c_command(addr, data1, data2)
res = fa.i2c{ mode="start", address=addr, direction="write" }
res = fa.i2c{ mode="write", data=data1 }
res = fa.i2c{ mode="write", data=data2 }
res = fa.i2c{ mode="stop" }
end
function sendMotorDrive(addr, reg, vset, data)
local vdata = bit32.bor(bit32.lshift(vset, 2), data)
write_i2c_command(addr, reg, vdata)
end
res = fa.i2c{ mode="init", freq="100" }
sendMotorDrive(md_addr, 0x00, 0x00, 0x00)
sleep(1000)
sendMotorDrive(md_addr, 0x00, 0x3F, 0x01)
sleep(5000)
sendMotorDrive(md_addr, 0x00, 0x3F, 0x02)
sleep(5000)
sendMotorDrive(md_addr, 0x00, 0x00, 0x00)
동작 확인
위 루아 스크립트가 동작하고 모터 드라이버 DRV8830의 OUT1, OUT2에 약 -5V ~ 5V의 출력이 이루어집니다. 선로에 접속하면 철도 모형의 차량이 앞뒤로 움직입니다.
이번에 사용한 DRV8830은 동작 전원 전압 범위가 2.75V~6.8V이며, 이번에는 5V를 입력으로 하고 있기 때문에 일반적으로 최대 12V 대응의 N게이지 차량에서는 저속 운전이 됩니다. 차량의 모터 상태에 따라 전압 부족으로 움직이지 않을 수도 있습니다.
요약
이상으로 FlashAir의 I2C 기능을 사용하여 모터 드라이버 DRV8830을 제어할 수 있었습니다. 지금까지 SPI-I2C 변환 IC의 신세를 지고 있던 곳을, 다이렉트에 접속할 수 있게 된 것은 대단하네요. 더욱 간편하게 I2C 디바이스를 이용할 수 있게 되었습니다.
참고 자료
FlashAir W-04에 대해서
4세대 FlashAir W-04
FlashAir 개발자를 위한 비공식 위키 - W-04 특설 페이지
Lua 함수 참조
Lua 함수 참조 - I2C
모터 드라이버 DRV8830에 대해서
DRV8830 데이터시트
Reference
이 문제에 관하여(FlashAir W-04의 I2C 기능으로 DRV8830을 구동시켜 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ayasehiro/items/d44a975feb79c94747cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이상으로 FlashAir의 I2C 기능을 사용하여 모터 드라이버 DRV8830을 제어할 수 있었습니다. 지금까지 SPI-I2C 변환 IC의 신세를 지고 있던 곳을, 다이렉트에 접속할 수 있게 된 것은 대단하네요. 더욱 간편하게 I2C 디바이스를 이용할 수 있게 되었습니다.
참고 자료
FlashAir W-04에 대해서
4세대 FlashAir W-04
FlashAir 개발자를 위한 비공식 위키 - W-04 특설 페이지
Lua 함수 참조
Lua 함수 참조 - I2C
모터 드라이버 DRV8830에 대해서
DRV8830 데이터시트
Reference
이 문제에 관하여(FlashAir W-04의 I2C 기능으로 DRV8830을 구동시켜 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ayasehiro/items/d44a975feb79c94747cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(FlashAir W-04의 I2C 기능으로 DRV8830을 구동시켜 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ayasehiro/items/d44a975feb79c94747cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)