北原達正氏インタビュー
http://hr-conference.jp/201305/interview-WS1.html
しまった 一年古かった。
でもせっかくだから紹介しておこう。
2014年1月5日日曜日
プチロボS2
プチロボS2 ¥2,992
http://eleshop.jp/shop/g/g402233/
【只今予約受付中!2014年1月8日(水)より順次出荷】スマートフォン/タブレットのイヤホンジャックに繋ぐだけで2軸サーボモータを簡単制御!「手軽にロボットを作ってみたい」「すぐにサーボモータを動かしたい」に応える超入門セット登場!
面白そうだし、欲しいけど。
どこがロボットなのかわからないよ。
http://eleshop.jp/shop/g/g402233/
【只今予約受付中!2014年1月8日(水)より順次出荷】スマートフォン/タブレットのイヤホンジャックに繋ぐだけで2軸サーボモータを簡単制御!「手軽にロボットを作ってみたい」「すぐにサーボモータを動かしたい」に応える超入門セット登場!
面白そうだし、欲しいけど。
どこがロボットなのかわからないよ。
でむさんのHMC5883L方位取得関数を追試中
実物で確認していませんので、eepromの読み書きが正しく行われているかどうか自信がありません。ごめんなさい。なので。
C-Style for e-GadgetのEEPROM関係を紹介しておきます。
CStyleEG_V130702のフォルダの中にある
D_Eio.c
D_Eio.h
D_Eio.o
が、そうです。
EGシリーズ用の関数のようです。
eDES CORE用のC-Styleにも微妙に違うものがあります。
中身はつぎのとおりですので修正して使ってみてください。
e-GadgetやTj3Bを買わなくてもC-Styleはダウンロードさせていただけますので
たいへん、ありがたいてすね。
三つのファイルをBuild_V130515のフォルダにコピーして
#include "D_Eio.h"を書き加えてくたさい。関数名もeep_getcとeep_putcに書き換えます。
//------------------------------------------------------------------------------
// EEPROM関係
// PIC18F2520 Internal:8.00MHz with PLL, Flash:16K,SRAM:768, EEPROM:256
// 2009.11.13 murata@daisendenshi.com
//------------------------------------------------------------------------------
#define D_EIO
#include "D_Main.h"
#include "D_Tio.h"
#include "D_Sio.h"
#include "D_I2c.h"
#include "D_Eio.h"
//------------------------------------------------------------------------------
// EEPROMから1バイト読込み
BYTE eep_getc(BYTE adrs)
{
BYTE data;
EEADR = adrs;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.RD = 1;
data = EEDATA;
return(data);
}
//------------------------------------------------------------------------------
// EEPROMへ1バイト書込む (1byte Write Cycle : 3msec)
void eep_putc(BYTE adrs, BYTE data)
{
EEADR = adrs;
EEDATA = data;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
INTCONbits.GIE = 0;
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1;
while (EECON1bits.WR){
;
}
INTCONbits.GIE = 1;
EECON1bits.WREN = 0;
}
//------------------------------------------------------------------------------
パーツ付き組み立てマガジン週刊『ロビ』
ロボットを組み立ててロボットと暮らそう
http://deagostini.jp/rbi/
http://deagostini.jp/site/rbi/pretop/index.html
通常価格:本体1,895円+税
本シリーズは全70号で完結します。
現在45号のようです。全部で14万ぐらいか。すごいな。
まだ、ロボットのボディを配布しているようで、電子部品はデジタルサーボモーター
ぐらいしか附録にありません。
あっ 近くバッテリーとACアダプターが出ますね。
レイトロン社製音声認識ボード採用
ヴイストン社製マイコンボード採用
マイコンボードや音声認識ボードなどが付く号は特別価格¥4990(税込)として、
隔週での発売になる予定です。
狙い目はこれあたりでしょう。
でもプログラミングは出来ないようですね。
http://deagostini.jp/rbi/
http://deagostini.jp/site/rbi/pretop/index.html
通常価格:本体1,895円+税
本シリーズは全70号で完結します。
現在45号のようです。全部で14万ぐらいか。すごいな。
まだ、ロボットのボディを配布しているようで、電子部品はデジタルサーボモーター
ぐらいしか附録にありません。
あっ 近くバッテリーとACアダプターが出ますね。
レイトロン社製音声認識ボード採用
ヴイストン社製マイコンボード採用
マイコンボードや音声認識ボードなどが付く号は特別価格¥4990(税込)として、
隔週での発売になる予定です。
狙い目はこれあたりでしょう。
でもプログラミングは出来ないようですね。
2014年1月1日水曜日
ロボカップジュニア日本大会2014の開催について発表がありました。
http://www.robocupjunior.jp/
【重要】ロボカップジュニア日本大会2014の開催について
全国各ブロックの皆さまには大変ご不便をお掛けしております。
諸般の事情により、ロボカップジュニア日本大会2014は、当初の尼崎市での開催を取り止め、 2014年3月に埼玉大学での開催に変更することとなりました。
開催要項等、詳細情報ついては現在検討中ですが、2014年1月中旬にはHPでお知らせする予定です。
何卒、ご理解くださいますよう、お願い申し上げます。
2013年12月29日(日)
[2013.12.29]
ロボカップジュニア日本大会2014は、2014年3月に埼玉大学での開催となりました。
[2013.12.21]
大会要項については、今後、随時更新されますので予めご了承ください。
やっと発表がありました。
よかった。
関係者の皆様の努力に敬意を表します。
【重要】ロボカップジュニア日本大会2014の開催について
全国各ブロックの皆さまには大変ご不便をお掛けしております。
諸般の事情により、ロボカップジュニア日本大会2014は、当初の尼崎市での開催を取り止め、 2014年3月に埼玉大学での開催に変更することとなりました。
開催要項等、詳細情報ついては現在検討中ですが、2014年1月中旬にはHPでお知らせする予定です。
何卒、ご理解くださいますよう、お願い申し上げます。
2013年12月29日(日)
[2013.12.29]
ロボカップジュニア日本大会2014は、2014年3月に埼玉大学での開催となりました。
[2013.12.21]
大会要項については、今後、随時更新されますので予めご了承ください。
やっと発表がありました。
よかった。
関係者の皆様の努力に敬意を表します。
eDESがすごい展開になっている
galileo7 ショップブログ
http://blog.galileo-7.com/?eid=411735
eDES mbed CORE
http://mbed.org/users/okini3939/notebook/daisen-edes/
ロボット関連キット
http://www.sugakoubou.com/store/index.php?main_page=index&cPath=10
次は、これあたりでコントロール出来るようになるとうれしいな。
VS-C3 (ロボット専用無線コントローラ「V-コントローラ」)
http://www.vstone.co.jp/robotshop/index.php?main_page=product_info&products_id=3721
http://blog.galileo-7.com/?eid=411735
eDES mbed CORE
http://mbed.org/users/okini3939/notebook/daisen-edes/
ロボット関連キット
http://www.sugakoubou.com/store/index.php?main_page=index&cPath=10
次は、これあたりでコントロール出来るようになるとうれしいな。
VS-C3 (ロボット専用無線コントローラ「V-コントローラ」)
http://www.vstone.co.jp/robotshop/index.php?main_page=product_info&products_id=3721
2013年12月31日火曜日
でむさんのHMC5883L方位取得関数を追試TJ3B
C-Style Ver.20130611でビルドしています。
オリジナルよりコメントを一部変更させていたたきました。
まだ、HMC5883Lの製品を購入していません。どなたかお試しくださいませんか?
オプション Setupボタンの表示 AdvancedModeチェック Dir.Sensorチェック
適当にプログラムをビルドしてください。動かなかったらごめんなさい。ここまでしか
力がありません。センサーモニターでも動作を確認できるようです。
書き換えるのは、D_I2C.cだけてす。バックアップを忘れずに自己責任でどうぞ。
もちろんキャリプレーションしてからじゃないと意味ありませんよ。
でむさん、ありがとうごさいます。
D_I2C.cの中の
#include "D_Main.h"
#include "D_I2C.h"
の次の行に
#include "C:\Daisen\mcc18_v337\h\math.h"
の一行を追加する。人によってファイルのある場所が違うかもしれないので
そのときはmath.hのある場所を自分で探して直してください。
D_I2C.cの中の
#ifdef ADV_SETUP
の前の行に次のプログラムを挿入してください。
//マニアの為の園芸教室様やsnafさん様のPIC18F2550ブログのプログラム等を参考
//にさせて頂きました。karabisaa
//------------------------------------------------------------------------------
char read_EE(unsigned char addr)
{
EEADR = addr;
EECON1bits.EEPGD = 0; // EEPROMポイント
EECON1bits.CFGS = 0; // EEPROMアクセス
EECON1bits.RD = 1; // EEPROMを読み込む
return EEDATA; // 読み込んだデータを返す
}
void write_EE(unsigned char addr, char data)
{
EEADR = addr;
EEDATA = data;
EECON1bits.EEPGD = 0; // EEPROMポイント
EECON1bits.CFGS = 0; // EEPROMアクセス
EECON1bits.WREN = 1; // EEPROMへの書き込みを許可する
INTCONbits.GIE = 0; // 割り込みを禁止する
EECON2 = 0x55; //
EECON2 = 0xaa; //
EECON1bits.WR = 1; // EEPROMへ書き込む
INTCONbits.GIE = 1; // 割り込みを許可する
EECON1bits.WREN = 0; // EEPROMへの書き込みを禁止する
}
//------------------------------------------------------------------------------
D_I2C.cの中の
// dno:0(dir), 1(pitch), 2(roll)
UINT get_dir(BYTE dno)
{
U_UINT d;
BYTE adrs = DIR_ADRS;
BYTE n = 0;
d.W = 999;
gI2C_Buf[n++] = 0x20 + dno * 2;
if (i2c_send(adrs, n) == false) return(d.W);
if (i2c_recv(adrs, 2) == false) return(d.W);
n = 0;
d.H = gI2C_Buf[n++];
d.L = gI2C_Buf[n++];
if (0 < dno){
d.W += 90;
}
return(d.W);
}
を次のプログラムに書き換えて上書きして保存してください。
// ハネウェル社の3軸デジタルコンパスモジュール HMC5883L用の方位取得関数
// コンパスモジュールのy軸がロボットの進行方向とし、地面と水平に取り付ける。
// dnoが0(dir)のときだけ方位を計算、ロール、ピッチは計算しないで999を返す。
// 作成者:でむ
#define PI 3.14159
UINT get_dir(BYTE dno) // get_dit_HMC5883L
{
int dir; // 方位
U_UINT d, dx,dy,dz; // 地磁気センサ x, y, z軸の値を記憶する変数
// 地磁気センサをz軸を中心に360°回転させたときx, y軸は軌跡は楕円となる。
// offset_x, offset_yは楕円の中心
U_UINT offset_x, offset_y;
BYTE adrs_write = 0x3C; // HMC5883L I2C address 8bit write
BYTE adrs_read = 0x3D; // HMC5993L I2C address 8bit read
static float counter = 0; // この関数の呼び出される回数を数える変数
offset_x.W = 999, offset_y.W = 999; // 初期値 999はエラー
if ((dno == 1) || (dno == 2)) return 999; // ロール、ピッチは計算しません
// EEPROMから保存していたオフセット値を読み込む
if (counter == 0) {
offset_x.H = read_EE(0x00); // x軸の値
offset_x.L = read_EE(0x01); // x軸の値
offset_y.H = read_EE(0x02); // y軸の値
offset_y.L = read_EE(0x03); // y軸の値
}
// 初期化。連続計測モードに設定。他は標準設定。
if (counter++ < 5) {
gI2C_Buf[0] = 0x02; // モードレジスタ
gI2C_Buf[1] = 0x00; // 連続計測モード
if (i2c_send(adrs_write, 2) == false) return 999;
Delay100TCYx(480); // 6ms待ち
}
if (i2c_recv(adrs_read, 6) == false) return 999; // I2Cからデータ6バイトの読み込み
dx.H = gI2C_Buf[0]; // BYTE型、実はunsigned char. D_main.hで定義
dx.L = gI2C_Buf[1]; // x軸の値
dz.H = gI2C_Buf[2]; // z軸の値 上位バイト
dz.L = gI2C_Buf[3]; // z軸の値 下位バイト
dy.H = gI2C_Buf[4]; // y軸の値 上位バイト
dy.L = gI2C_Buf[5]; // y軸の値 下位バイト
// 方位計算
if ((offset_x.W == 999) || (offset_y.W == 999))
dir = (int) (atan2((int)dy.W, (int)dx.W) * (180.0/PI));
else
dir = (int) (atan2((int)dy.W - (int) offset_y.W,
(int)dx.W - (int) offset_x.W) * (180.0/PI));
if (dir < 0) dir += 360; // 角度を0°~359°にするための処理
if (dir > 360) dir -= 360; // 角度を0°~359°にするための処理
gI2C_Buf[0] = 0x03; // 最初のデータが格納されているデータレジスタ03へ指す
if (i2c_send(adrs_write, 1) == false) return 999; // 999はエラー
Delay1KTCYx(536); // 67ms待つ。HMC5883Lは標準で毎秒15回データ取得
return (UINT) dir;
}
オリジナルよりコメントを一部変更させていたたきました。
まだ、HMC5883Lの製品を購入していません。どなたかお試しくださいませんか?
オプション Setupボタンの表示 AdvancedModeチェック Dir.Sensorチェック
適当にプログラムをビルドしてください。動かなかったらごめんなさい。ここまでしか
力がありません。センサーモニターでも動作を確認できるようです。
書き換えるのは、D_I2C.cだけてす。バックアップを忘れずに自己責任でどうぞ。
もちろんキャリプレーションしてからじゃないと意味ありませんよ。
でむさん、ありがとうごさいます。
D_I2C.cの中の
#include "D_Main.h"
#include "D_I2C.h"
の次の行に
#include "C:\Daisen\mcc18_v337\h\math.h"
の一行を追加する。人によってファイルのある場所が違うかもしれないので
そのときはmath.hのある場所を自分で探して直してください。
D_I2C.cの中の
#ifdef ADV_SETUP
の前の行に次のプログラムを挿入してください。
//にさせて頂きました。karabisaa
//------------------------------------------------------------------------------
char read_EE(unsigned char addr)
{
EEADR = addr;
EECON1bits.EEPGD = 0; // EEPROMポイント
EECON1bits.CFGS = 0; // EEPROMアクセス
EECON1bits.RD = 1; // EEPROMを読み込む
return EEDATA; // 読み込んだデータを返す
}
void write_EE(unsigned char addr, char data)
{
EEADR = addr;
EEDATA = data;
EECON1bits.EEPGD = 0; // EEPROMポイント
EECON1bits.CFGS = 0; // EEPROMアクセス
EECON1bits.WREN = 1; // EEPROMへの書き込みを許可する
INTCONbits.GIE = 0; // 割り込みを禁止する
EECON2 = 0x55; //
EECON2 = 0xaa; //
EECON1bits.WR = 1; // EEPROMへ書き込む
INTCONbits.GIE = 1; // 割り込みを許可する
EECON1bits.WREN = 0; // EEPROMへの書き込みを禁止する
}
//------------------------------------------------------------------------------
D_I2C.cの中の
// dno:0(dir), 1(pitch), 2(roll)
UINT get_dir(BYTE dno)
{
U_UINT d;
BYTE adrs = DIR_ADRS;
BYTE n = 0;
d.W = 999;
gI2C_Buf[n++] = 0x20 + dno * 2;
if (i2c_send(adrs, n) == false) return(d.W);
if (i2c_recv(adrs, 2) == false) return(d.W);
n = 0;
d.H = gI2C_Buf[n++];
d.L = gI2C_Buf[n++];
if (0 < dno){
d.W += 90;
}
return(d.W);
}
を次のプログラムに書き換えて上書きして保存してください。
// ハネウェル社の3軸デジタルコンパスモジュール HMC5883L用の方位取得関数
// コンパスモジュールのy軸がロボットの進行方向とし、地面と水平に取り付ける。
// dnoが0(dir)のときだけ方位を計算、ロール、ピッチは計算しないで999を返す。
// 作成者:でむ
#define PI 3.14159
UINT get_dir(BYTE dno) // get_dit_HMC5883L
{
int dir; // 方位
U_UINT d, dx,dy,dz; // 地磁気センサ x, y, z軸の値を記憶する変数
// 地磁気センサをz軸を中心に360°回転させたときx, y軸は軌跡は楕円となる。
// offset_x, offset_yは楕円の中心
U_UINT offset_x, offset_y;
BYTE adrs_write = 0x3C; // HMC5883L I2C address 8bit write
BYTE adrs_read = 0x3D; // HMC5993L I2C address 8bit read
static float counter = 0; // この関数の呼び出される回数を数える変数
offset_x.W = 999, offset_y.W = 999; // 初期値 999はエラー
if ((dno == 1) || (dno == 2)) return 999; // ロール、ピッチは計算しません
// EEPROMから保存していたオフセット値を読み込む
if (counter == 0) {
offset_x.H = read_EE(0x00); // x軸の値
offset_x.L = read_EE(0x01); // x軸の値
offset_y.H = read_EE(0x02); // y軸の値
offset_y.L = read_EE(0x03); // y軸の値
}
// 初期化。連続計測モードに設定。他は標準設定。
if (counter++ < 5) {
gI2C_Buf[0] = 0x02; // モードレジスタ
gI2C_Buf[1] = 0x00; // 連続計測モード
if (i2c_send(adrs_write, 2) == false) return 999;
Delay100TCYx(480); // 6ms待ち
}
if (i2c_recv(adrs_read, 6) == false) return 999; // I2Cからデータ6バイトの読み込み
dx.H = gI2C_Buf[0]; // BYTE型、実はunsigned char. D_main.hで定義
dx.L = gI2C_Buf[1]; // x軸の値
dz.H = gI2C_Buf[2]; // z軸の値 上位バイト
dz.L = gI2C_Buf[3]; // z軸の値 下位バイト
dy.H = gI2C_Buf[4]; // y軸の値 上位バイト
dy.L = gI2C_Buf[5]; // y軸の値 下位バイト
// 方位計算
if ((offset_x.W == 999) || (offset_y.W == 999))
dir = (int) (atan2((int)dy.W, (int)dx.W) * (180.0/PI));
else
dir = (int) (atan2((int)dy.W - (int) offset_y.W,
(int)dx.W - (int) offset_x.W) * (180.0/PI));
if (dir < 0) dir += 360; // 角度を0°~359°にするための処理
if (dir > 360) dir -= 360; // 角度を0°~359°にするための処理
gI2C_Buf[0] = 0x03; // 最初のデータが格納されているデータレジスタ03へ指す
if (i2c_send(adrs_write, 1) == false) return 999; // 999はエラー
Delay1KTCYx(536); // 67ms待つ。HMC5883Lは標準で毎秒15回データ取得
return (UINT) dir;
}