Filed under:
未分類
Shunです。
遅ればせながら、2017TEPIAチャレンジ助成事業において、無事2年連続グランプリをいただきました。
今回は白線引きロボット「LINEMAKER」を作成いたしました。目標を完全に達成するにはいたりませんでしたが、PI制御が認められ、無事グランプリを獲得できました。
機体は東京に置いてきているのですが、来年の文化祭までにはもう一台作成し、さらにバージョンアップしたLINEMAKERが展示してあることでしょう。
ホームページはこちら
そして、オープンスクールも無事終わり、次は京都ノードです。
今年は初めてここ洛星高校で開催されます。
今年は中1はサッカービギナー数班と、レスキューメイズ1班、中2がサッカーオープンに1班、高1レスキューメイズ1班で出場します。
高2とOBが集まったサッカーオープン班も楽しみです。
中2は初めてのプリント基板設計をしています。
あと少ししかないですが、頑張りたいです。
Filed under:
ATxmega関連,
未分類 タグ:
uart通信,
xmega
どうもこんにちは。Shunです。
今回はxmegaのUART通信のソースを公開していきたいと思います。
UART通信って何?っていうひとはggrks Google大先生に聞いてください。
テスト環境はUSARTE1でATxmega128a1uの内部発振子32MHzでボーレート9600bpsです。
ではではコード説明に移りましょう。
void init_usart(void){
PORTE.DIRSET=PIN7_bm;//PORTE7をOUT設定
PORTE.DIRCLR=PIN6_bm;//PORTE6をIN設定
USARTE1_BAUDCTRLA =207 ;//USARTE1のボーレート設定
USARTE1_BAUDCTRLB =0x00 ;//USARTE1のボーレート設定
USARTE1.CTRLC = (USARTE1.CTRLC & ~USART_CHSIZE_gm) | USART_CHSIZE_8BIT_gc;//データbit数設定
USARTE1.CTRLB = (USART_RXEN_bm | USART_TXEN_bm);//TXD,RXD許可
}
以上がUSARTのイニシャライジングです。
特に何もいうところはありませんね。
ボーレート設定はデータシートを読んでください。
以下、データ送信です。
void usart_send(char c)
{
while( !(USARTE1_STATUS & USART_DREIF_bm) ); //Wait until DATA buffer is empty
USARTE1_DATA = c;
}
void usart_string(char *text)//文字データ送信
{
while(*text)
{
usart_send(*text++);
}
}
void usart_putdec(uint16_t data){//4桁数列送信
usart_send(data/1000 + ‘0’);
data %= 1000;
usart_send(data/100 + ‘0’);
data %= 100;
usart_send(data/10 + ‘0’);
data %= 10;
usart_send(data + ‘0’);
}
特にいうことなしですね。
まあ。こんな感じでしょう。
送信完了割り込み等はしておりません。
将来的にできるようになりたいなと。。。
今回は以上ですね。
今はI2CとSPIに苦戦中です。
最後にソースをまとめたものを。
void init_usart(void){
PORTE.DIRSET=PIN7_bm;//PORTE7をOUT設定
PORTE.DIRCLR=PIN6_bm;//PORTE6をIN設定
USARTE1_BAUDCTRLA =207 ;//USARTE1のボーレート設定
USARTE1_BAUDCTRLB =0x00 ;//USARTE1のボーレート設定
USARTE1.CTRLC = (USARTE1.CTRLC & ~USART_CHSIZE_gm) | USART_CHSIZE_8BIT_gc;//データbit数設定
USARTE1.CTRLB = (USART_RXEN_bm | USART_TXEN_bm);//TXD,RXD許可
}
void usart_send(char c)
{
while( !(USARTE1_STATUS & USART_DREIF_bm) ); //Wait until DATA buffer is empty
USARTE1_DATA = c;
}
void usart_string(char *text)//文字データ送信
{
while(*text)
{
usart_send(*text++);
}
}
void usart_putdec(uint16_t data){//4桁数列送信
usart_send(data/1000 + ‘0’);
data %= 1000;
usart_send(data/100 + ‘0’);
data %= 100;
usart_send(data/10 + ‘0’);
data %= 10;
usart_send(data + ‘0’);
}
Filed under:
TEPIA タグ:
LINE MAKER,
TEPIA
さてさて。前回のTEPIAチャレンジ助成事業が、グランプリに輝いて以来、高三の先輩方は受験勉強に本格的に移り始め、クラブ運営が我々高一に移ってきた今日この頃。
何となんと、新入生の新規入部者は、15人を超え、中二、中三、高一でそれぞれ1名づつ、入部しました。部室も賑やかになってきましたね。
本題に入りまして、我々は今回もTEPIAチャレンジ助成事業に応募しました。
今回のテーマは「学校生活で活躍するロボットを開発せよ!」とのことで、なんとか、企画書を、書き上げ応募した理由です。
面接の手応えは良好で、なんとなんと採択されました!
こちらにもある通り、今回は LINE MAKER つまり、校庭の白線引きロボットとしました。
しかし! 見たところ一校の工業高校と、アイデアが被っているようです・・・
どこで差を付けるかが腕の見せ所ですね。
二年連続グランプリ目指して頑張っていきます!!
Filed under:
ATxmega関連
さて。ブログ上では初めまして。
63期のプロジェクトAquila所属のShunです。
ちなみに、プロジェクトでは、回路設計、回路制作、組み込みプログラムを担当しております。
さて、Aquilaでは、ロボットのメインのCPUとして、Atmal社のATxmega128a1uを使用しております。
自分は英語が苦手なんですが、何とか英語文献を読んだり、高三生(受験生だよね!?)の力を借りつつ組み込みプログラムをパチパチしております。
自分がネットに日本語文献が数少ないため、苦戦したため、ここに、ソースコードを提供していきたいと思います。
記念すべき第1回は(笑 今日、動作確認をとりました、超音波センサのソースとなります。
ではでは説明に移りましょう。
まず、使用する超音波センサは、こちらのパララックス社製の超音波センサ。
まあ、回路は、VCC繋げて、GND繋げて、通信線繋げます。
通信線は、xmegaの3.3Vの信号で構いません。
ここまでは、猿でも出来ますねはい。
はい。ほんで、下記のコードを使って、プログラムを作成してください。
─────────────────────────────
#include<avr/io.h>
#include<util/delay.h>
#include<util/interrupt.h>
uint16_t ping (PORT_t *p_port,uint8_t p_pin){
//PD2 ping4で読みたいとき
//ping(&PORTD,PIN2_bm);
p_port->DIRSET=p_pin;//(*p_port).DIRSET
p_port->OUT=p_pin;
_delay_us(4);
p_port->OUTCLR=p_pin;
p_port->DIRCLR=p_pin;
while((p_port->IN&p_pin)==0);
TCC0.CNT=0;
cli();
TCC0.CTRLA=TC_CLKSEL_DIV256_gc;
while((p_port->IN&p_pin)!=0);
TCC0.CTRLA=0x00;
sei();
_delay_ms(7);
return (uint16_t)(TCC0.CNT);
}
─────────────────────────────
ちなみに、自分たちはシステムクロックは、32MHzで動かしています。32MHzの場合、1024分周で動かしてやると、大体cm単位で値を出します(※要検証
つまり、6行目のTC_CLKSEL_DIV256_gcをTC_CLKSEL_DIV1024_gcにしてやると、1024分周で動きます。
#include<util/interrupt.h>及び、cli、seiは、波形のcheck時つまり、カウンタ駆動時に、良きせぬ割り込み処理を防ぐためのものです。
[使い方]
もし、PORTDの、2PINに、センサの信号線が繋がっている場合
ping(&PORTD,PIN2_bm);
このように使ってもらうといいでしょう。
必ず、ポート名の前の&を忘れないようにしてください。
こんなもんですかね。拙い文章で申し訳ありません。お役に立てたら幸いです。
質問等ごさいましたら、コメントにて宜しくお願いします。
次回以降も、xmegaについてのソースコードを上げていきたいと思います。次回はuart通信のコードの予定です。
実験の様子↓

dav
Filed under:
お知らせ
2016年11月 に開催されたTEPIA ロボットグランプリ2016 にて最優秀に選ばれました。
(日刊工業新聞に掲載されていました)
採用がわかった6月から11月の期間は学校のイベントや考査もこなしつつの作業でかなりハードな感じになりましたが、結果的に賞を頂けて報われたかなと思っています。
コンテスト本番の話ですが、最初に行われた実演ではほぼ問題なく動作し(ちょっと横移動怪しかったかな?)、肝心のプレゼンでは気にしていた時間制限も問題なくこなすことができました。
ちなみに授賞式での話によると、最優秀は早めに決まったらしく、私達のロボットに満点をつけてくださった審査員の方も何人かいらっしゃるとのことで、大変光栄に思います。
大会後の懇親会では、他校や審査員の方々と様々なお話をさせていただき大変有意義な一日となりました。
私たちはこれからも自分たちの技術を磨いていく次第です。
それでは引き続きよろしくお願いします。
Filed under:
DD-Project,
文化祭
どうもEaterです。文化祭終わってるのに全く音沙汰なくってすみません。体育祭でな、高Ⅱが忙しかったんや……。
私は高Ⅲです。
さて、文化祭ですが、

最優秀賞に選ばれました!!!
ほんと嬉しいです。ありがとうございます。
ここ6年で初の最優秀賞でした。
とある部員がここ二年で音頭を取るようになってからググッと評価が上がってこういう結果になりました。
ずっと高校生やっといてくれないかな、彼。
次年度にむけてちゃんと今年使ったデータとか資料とか素材とか残してある(はず)ので次も乞うご期待。
私も客になる(はず)。
つづいてESTransのはなし。
文化祭で発表してたのが最終結果です。とりあえず壁に沿って走行できるようになって、人や壁が目の前にあると自動的に停車できるようになりました。夢見た到達点には若干届いてない感じですが、十分な成果だと思ってます。俺たち頑張った。
さらに開発を続けるかどうかは成績次第。とりあえずESTrans開発グループDDProjectは活動休止。多分。
以上Eaterからでした~。
P.S.
DDProjectの進捗等はTwitterでもやってます。よかったらフォローどうぞ。
Filed under:
小ネタ
おはこんばんにちは、Eaterです。この挨拶の元ネタがアラレちゃんなのは最近知りました。
さて、今回はRaspberry Pi 2 ModelB を先日動かした際に直面したいくらかの問題についての話です。ネットワークに関する話でたぶん普通の環境なら引っかからないけれども若干特殊な環境においては発生しうる問題です。
RaspberryPiを起動して最初に取り組むのはおそらくネットワークへの接続です。これをしないとリモートで操作することもソフトをインストールすることもできませんね。
IPアドレスが自動的に割り振られる環境であるならばネットワークへの接続は簡単です。有線LANをつなげばすぐにネットワークに接続され、そしてブラウザを起動すれば問題なくWebページにアクセスできるでしょう。
しかし、ネットワークが固定IPアドレスで管理されているような場合、IPアドレスの設定をしなくてはなりません。自分もまずここで躓きました。
このような場合、”/etc/network/interfaces”にアクセスし、
iface eth0 inet static (デフォルトではstaticではなくdhcpになっている)
address ***.***.***.***
gateway ***.***.***.***
netmask ***.***.***.*** (※***は適当なアドレス)
のように書き換えれば固定IPを割り振ることができました。
ですが、これネットワークにつながるようになっても「名前解決ができない」、のようなことを言われインターネットに接続できない場合があります。
この場合おそらくDNSが正しく設定されていないのが原因です。しかしそのやり方がわからず結構悩みました。
resolv.confでDNSを設定できると聞いたのですがそこを何度書き換えてもすぐに中身が初期化されてしまいました。
調べているとどうやらRaspberryPiではinterfaceの記述をresolv.confに自動的に反映しているらしく、interfaceでDNSを設定しなければならないとわかりました。結果、interfaceを下記の通りにすると無事インターネットに接続できました。
iface eth0 inet static
address ***.***.***.***
gateway ***.***.***.***
netmask ***.***.***.***
dns-nameservers ***.***.***.*** (※***は適当なアドレス)
普通ならわざわざこんなことまでしなくてもいいっぽいので多分うちのネットワークの設定が特殊なのが根本的な原因でしょう…(なぜルータのアドレスが192.168.1.1ではなく、加えて特定のIPアドレス以外接続を禁止されているのだ…)
以上、 RaspberryPiを動かしてみた、でした~。
Filed under:
クラブ全般,
小ネタ,
文化祭
夏だ!海だ!合宿だ!※学校周辺に海はありません
ってな訳で今年も合宿の季節がやってまいりました。
文化祭やロボカップに向けて、普段できない時間のかかる大規模作業を行います!(CNCくん頑張れ!)
そしてうちの合宿といえば、飯!
味は普段食べている食堂の味なんですが、問題はその量。
うちは運動部じゃないんです!
さて、普段から私たちは自作を中心としたロボット製作を行っていますが、これはただのポリシーで、自作にこだわらなければもっと時間が削減できるような気もします。(この合宿もいらないかも?)
じゃあなんで自作するかって?決まってるじゃないですか。
ここがロボ研だからです!
何言ってるかわからないって?私もわかりません。
要は意地ですね。意地で自作を貫いています。だってかっこいいんだもん!ロマンがあるもん!
ってな訳でウチの部は今年の文化祭も含め、自作ロボットを製作していく次第です。
どうか今後ともこの浪漫主義の部をよろしくお願いします。
Filed under:
60期レスキュー班(現the Reticle 旧Scorpion)
どうも高校生活最後のロボカップに向けて頑張ってる高ⅡのEaterです。
CAN通信で結構痛い目にあったので何かの役に立たないかとCAN通信が成功するまでの軌跡をまとめてみようと思った次第です。
CAN通信は車載ネットワークの一つで、いわゆるバス型の通信です。マルチマスターでIDを使って通信相手を特定するのが特徴でしょうか。I2Cと違いIDはデバイスに固有というわけではなくプログラムでIDを読んで受信するかどうかを判断する感じですね。詳しい仕様はインターネットで調べてください。
CAN通信は多数のマイコンで通信するのに大変便利な仕様なわけですがなにせ初めて使ったので通信に成功するまでかなり時間がかかりました。その過程での間違いポイントを下にまとめます。
・CANトランシーバーの電源電圧を間違えた
我々はmcp2551をCANトランシーバとして使用しています。これは電源電圧5V程度で動作します。使用していたマイコンはstm32f1シリーズで電源電圧は3.3V。しょうもない話ですが、両方の電源電圧を3.3Vに設定してしまいトランシーバが電圧不足で動きませんでしたorz。何事においてもですが動作電圧は必ず確認しましょう。
・終端抵抗を忘れた
CAN通信には終端抵抗というものが必要です。120Ω抵抗を両端にそれぞれつけなければならないのですがすっかりそれを失念。しょうもないですね。
・RS抵抗の抵抗値ミス(?)
mcp2551にはRSピンにRS抵抗というものをつけます。データシートに書かれていることがよく分からなくていまいち抵抗値の設定法がよく分からなかったのですが、とりあえずもともと10kΩだったのを2.2kΩに替えてみました。
ここまで修正を加えるととりあえず1対1の通信はできるようになりました。しかしそれでも二つのマイコンからデータを送信してもう一つのマイコンがその二つからのデータを受信しようとすると片方からのデータしか受信できませんでした。次からはそれに対する対策をまとめます。
・UARTのボーレートを上げる
この時のテストは受信割り込みが入ったら受け取ったIDとデータを配列に保存してUARTでFT232RLを経由してPCに送信、というプログラムで行っていたのですが、もしかするとUARTを送信する間に割り込みが入ってせっかく受信したデータが上書きされているのかもしれないと考え、UARTの通信速度を上げてみました。
・バッファをID別に複数用意する
上の対策をもってしても受信できませんでした。そこでいっそID別にバッファを用意してたとえ上書きされても別のIDからのデータと競合しないようにしました。
結果、主にバッファを増やしたことが功を奏して二つのマイコンからのデータを両方受信できました。ちなみにですが、一つだけF4マイコンでなんでか通信できないなぁと思っていたら通信速度の設定ミスというオチ。お粗末さまでした。
結論 : 実装するときは、仕様をちゃんと把握してまとめてから実装しましょう。
P.S.
デバッグのことは常に考えておきましょう。すべてのノードのマイコンにデバッグ用LEDをつけておくと後々幸せになれます。
通信が成功する前提でデバッグ用LEDを一つのマイコンにだけ実装するとか愚の骨頂です。
Filed under:
クラブ全般
どうも、Eaterです。受験とバレンタインの話がじわじわと広がっている中ロボット作ってます。
さて、この前の日曜日にロボカップ京都ノード大会がありました。場所は例年と違って洛陽工業高校。
61期(高1)サッカープロジェクトの「Perseus」は見事サッカーBオ-プンで優勝を果たしました。素晴らしいですね。去年も好成績だったんで絶好調です。ぜひとも京滋奈も突破していただきたいところ。副賞で洛陽工業高校オリジナルのクリアファイルもらってましたね。まぁべつに誰でももらえたんですけど。
63期(中2)はレスキューメイズに参加したんですけど、うーむ、芳しくなかったみたいです。中2ですしね。そんないきなり成績出るもんじゃないんで今後に乞うご期待。
え、私のチームはどうだったかって? ははは、何をおっしゃってるのでしょう。プレゼンシート見ます? すごいですよ、うちのデザイン担当は。プレゼンシート
結果? ええ、まぁ、3位だったとお伝えしておきましょう(出場チームは3チーム)。レゴの安定感ってすごいですよね。通信ができないだとか組み立てに時間がかかるだとか動作保障できてないだとかGUIがおかしいなんてことはないんでしょうね。
でもでも、過去一番他チームとの絡みが多かったんですよ! これは進歩です! たとえほとんどが自覚のない煽りだったとしても!
…小学生に「かっこいい!動くの~?」っ無邪気に聞かれると本当に心が折れそうになる。自業自得だが。絶対京滋奈ではそんなことを言わせない!!
というわけで京滋奈まであと2週間。全力を尽くしますので生暖かい目で見守っていただけたら幸いです。
« 新しい記事 —
古い記事 »