ESP32と飛行機 1
材料
ESP-WROOM-32(8g)
TA7291P (3g)
モーター (種類により)
バッテリー (種類により)
発泡スチロール (形状次第g)
道具
ニクロム線と電池をつなげたカッター
機体
初号機
発泡スチロールを切っていきます。
初号機はこんな感じ。ハイパーダッシュモータを使用しましたがビクとも動きません。。。重すぎるようです。電池で50g。ハイパーダッシュモーターで17g。重い。
さらに、ESP32とブレットボードを乗せると140g。重い。。。これでは飛びそうもないです。(飛行機の形は子供の作です)
何事も先達はあらまほしきものかな。2号機
輪ゴムの動力で飛ぶ飛行機模型の重量はいかほど?飛ぶ飛行機の羽のかたちは?
製品版を買って勉強しましょう。
組み立てた後計量しました。20g!軽い。飛ばしてみたところ軽やかに飛ぶんです。軽さですね。
,モーターと部品、電池(リチュウム)の合計26g。2号機の機体と合わせて50g弱。
ブレットボードは意外と重いのでESP32は機体にじかづけするとして、部品を機体にとりつけて計測したところ。この状態で(まだ動力は輪ゴムです)飛ばしてみると、ヨロヨロしていますが一応飛びます。
モーターの出力を上げて、羽を工夫すれば飛びそうな予感がします。
2号機を研究して、自作の3号機を作ろう。
ESP-WROOM-32
こちらはblue toothを搭載しているようなのでスマホと通信させてモーターの出力を制御します。
電波が届かないところまで飛んで行ったら行ったっきりになりそうです。まずはテイクオフを目標にします。
電子工作 勉強会の準備
風邪でしばらくダウンしていました。
明日の勉強会の準備をします。
Arduino leonard みたいなもの。これが15個あります。
開封します。
ピンをハンダ付けしました。今日は3つ。残りは勉強会で各自つけてもらいます。
Domaを見る
さて、DomaでDBの内容に基づいて
classを自動生成しましたので内容をみます。
dao下にクラス(インタフェース)が出来ています。
でも、.aptのところが空っぽです。
ここにインタフェースの実体が出来る予定だったのですが
なにかが足りないようです。
たぶんgradleファイルなので見直して更新します。
(2016-11-12)
なにごとも先達はあらまほしきものかな
こちら
http://masatoshitada.hatenadiary.jp/entry/2014/12/03/214712
のサイトなどを参考にさせていただいて、
build.gradleを以下の形式にするとインタフェースの実態も作成されます。
Groovyの勉強をしたら以下のbuild.gradleを見直したいと思います。
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
sourceCompatibility = 1.8
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
configurations {
domaGenRuntime
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
test {
systemProperties 'property': 'value'
}
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}
eclipse {
wtp {
component {
contextPath = '/Sample'
}
}
}
dependencies {
domaGenRuntime 'org.seasar.doma:doma-gen:2.0.1'
domaGenRuntime 'org.postgresql:postgresql:9.4-1206-jdbc41'
compile 'org.seasar.doma:doma:2.0.1'
compile 'org.seasar.doma:doma-gen:2.0.1'
compile 'org.postgresql:postgresql:9.4-1206-jdbc41'
}
task gen << {
ant.taskdef(resource: 'domagentask.properties',
classpath: configurations.domaGenRuntime.asPath)
ant.gen(url: 'jdbc:postgresql://localhost/smpl', user: 'postgres', password: 'password') {
entityConfig(packageName: 'jp.co.smpl.entity')
daoConfig(packageName: 'jp.co.smpl.dao', configClassName: 'jp.co.smpl.AppConfig')
sqlConfig()
}
}
ext { aptDir='.apt_generated' }
eclipse {
jdt.file.withProperties { it['org.eclipse.jdt.core.compiler.processAnnotations'] = 'enabled' }
classpath {
containers = ['org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8']
}
}
eclipseJdt {
def clos = []
def fp = file('.factorypath')
outputs.file fp
clos += {
fp.withWriter {
def domaJar = configurations.compile.find {
it.name.startsWith('doma-2')
}
new groovy.xml.MarkupBuilder(it).factorypath() {
factorypathentry(kind:'EXTJAR', id:domaJar, enabled:true, runInBatchMode:false)
}
}
}
def prefs = { name, contents ->
def f = file(".settings/$name")
clos += {
f.text = contents.stripMargin()
}
outputs.file f
}
prefs 'org.eclipse.jdt.apt.core.prefs', """\
|eclipse.preferences.version=1
|org.eclipse.jdt.apt.aptEnabled=true
|org.eclipse.jdt.apt.genSrcDir=${aptDir}
|org.eclipse.jdt.apt.reconcileEnabled=true
|"""
doLast { clos*.run() }
}
Gradleプロジェクトの作成
今日はEclipseにGradleプロジェクトを作成します。
Gradleプロジェクトの作成
Eclipseを起動し[ファイル]-[新規]-[プロジェクト]と選択 し、
Gradle(STS)-Gradle(STS)プロジェクトを選択し次へ(N)>
プロジェクト名を「smplworkflow_j」に
サンプルプロジェクトを「Java Quickstart」に指定し[完了]
プロジェクトが作成された状態。
プロジェクトの設定変更
プロジェクトを右クリックして[プロパティー]→[Javaコンパイラー]の[コンパイラー準拠レベル]を[1.8]に変更してください。
再ビルドを促されるので[OK]してください。
サーバーの追加
[smplworkflow_j]を右クリック-[新規]-[その他]-[サー バー]-[サーバー]を選択
[Tomcat v8.0サーバー]を選択し[完了]
動的Webプロジェクトへの変換
src/main直下に、webappフォルダを作成します。
[smplworkflow_j]-[新規]-[ソースフォルダ]を選択
フォルダ名に「src/main/webapp」を指定し[完了]
作成した[src/mian/webapp]を右クリック[新規]-[フォルダ]を選択し
フォルダ名に「WEB-INF」を指定し[完了]
以下のようになればOKです。
ファセットの追加
[smplworkflow_j]を右クリック-[プロパティ]-[プロジェクトファセット]を選択
より詳しい設定をクリック
[コンテンツディレクトリ]にsrc/main/webappを設定し
web.xmlデプロイメント記述子の生成にチェックを入れて[OK]
ランタイムを3.1にして[OK]
build.gradleの編集
build.gradleを開いて以下を貼り付け。
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
sourceCompatibility = 1.8
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
}
}
eclipse {
// Dynamic Web Project
wtp {
component {
// eclipse wtp context_path
contextPath = '/smplworkflow_j'
}
facet {
facet name: 'java', version: '1.8'
facet name: 'jst.web', version: '3.1'
}
}
}
configurations {
domaGenRuntime
}
repositories {
mavenCentral()
}
dependencies {
domaGenRuntime 'org.seasar.doma:doma-gen:2.0.1'
domaGenRuntime 'org.postgresql:postgresql:9.4-1206-jdbc41'
compile 'org.seasar.doma:doma:2.0.1'
compile 'org.seasar.doma:doma-gen:2.0.1'
compile 'org.postgresql:postgresql:9.4-1206-jdbc41'
}
test {
systemProperties 'property': 'value'
}
task gen << {
ant.taskdef(resource: 'domagentask.properties',
classpath: configurations.domaGenRuntime.asPath)
ant.gen(url: 'jdbc:postgresql://localhost/smpl', user: 'postgres', password: 'password') {
entityConfig(packageName: 'jp.co.smpl.entity')
daoConfig(packageName: 'jp.co.smpl.dao', configClassName: 'jp.co.smpl.AppConfig')
sqlConfig()
}
}
AppConfig.javaの作成
[smplworkflow_j]を右クリック-[新規]-[クラス]を選択
パッケージに「jp.co.smpl」
名前に「AppConfig」を設定し[完了]
AppConfig.javaを開き以下を貼り付け。
package jp.co.smpl;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.seasar.doma.SingletonConfig;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.dialect.Dialect;
import org.seasar.doma.jdbc.dialect.PostgresDialect;
import org.seasar.doma.jdbc.tx.LocalTransactionDataSource;
import org.seasar.doma.jdbc.tx.LocalTransactionManager;
import org.seasar.doma.jdbc.tx.TransactionManager;
@SingletonConfig
public class AppConfig implements Config {
private static final AppConfig CONFIG = new AppConfig();
private final Dialect dialect;
private final LocalTransactionDataSource localTransactionDataSource;
private final TransactionManager transactionManager;
private AppConfig() {
try {
dialect = new PostgresDialect();
DataSource dataSource = (DataSource) InitialContext.doLookup("java:comp/env/jdbc/postgresql");
localTransactionDataSource = new LocalTransactionDataSource(dataSource);
transactionManager = new LocalTransactionManager(
localTransactionDataSource.getLocalTransaction(getJdbcLogger()));
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
@Override
public Dialect getDialect() {
return dialect;
}
@Override
public DataSource getDataSource() {
return localTransactionDataSource;
}
@Override
public TransactionManager getTransactionManager() {
return transactionManager;
}
public static AppConfig singleton() {
return CONFIG;
}
}
web.xmlとServer.xmlの編集
web.xml
最下部に以下を挿入する
<resource-ref>
<res-ref-name>idbc/postgresql</res-ref-name>
<res-type>java.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Gradleタスクの実行
[smplworkflow_j]を右クリック-[Gradle(STS)]-[タスククイックランチャー]を選択
タスク: gen
を指定し'Enter'を押す
DB操作をするclassとsqlが自動生成されます。
これでgradleプロジェクトの作成は完了でございます。
電子工作 Arduino Leonardoみたいなものの動作確認
休日は電子工作に取り組みます。
今日は来週の勉強会で使うために中国から買ったArduino Loenardoみたいなものの動作確認をします。勉強会に参加される方ように15個も買いました。みなさんのパソコンはMac、 Ubuntu、Windowsと様々ですので一通り試しておきます。
今日作るもの
Mac、Ubuntu、WindowsそれぞれでArduinoにスケッチ(プログラム)を書き込みLEDをチカチカさせること。
材料
出来上がりイメージ
Windows、Mac、UbuntuそれぞれでLEDをチカチカできること。
Windows編
パソコンとArduinoをUSBケーブルで接続します。
[ツール] > [ボード] > [Arduino Leonard] を選択します。
[ツール] > [シリアルポート] > Arduinoと接続しているUSBケーブルを抜き差しして反応するCOMポートを選択します。
スケッチの書き込み
[ファイル] > [スケッチの例] > [01.Basics] > [Blink] を選択します。
プログラム中の
24行目:pinMode(2, OUTPUT); と編集します。
29行目:digitalWrite(2, HIGH); と編集します。
31行目:digitalWrite(2, LOW); と編集します。
下図の丸囲みのボタンをクリックしてスケッチ(プログラム)をArduinoへ書き込みます。
動作確認
2番ピンを使います。
LEDが点灯している様子が見えにくいですが、点灯しています。
windowsでの動作確認はOKでございます。
Mac編
パソコンとArduinoをUSBケーブルで接続します。
[ツール] > [ボード] > [Arduino Leonard] を選択します。
[ツール] > [シリアルポート] > Arduinoと接続しているUSBケーブルを抜き差しして反応するポートを選択します。
スケッチの書き込み
[ファイル] > [スケッチの例] > [01.Basics] > [Blink] を選択します。
プログラム中の
24行目:pinMode(3, OUTPUT); と編集します。
29行目:digitalWrite(3, HIGH); と編集します。
31行目:digitalWrite(3, LOW); と編集します。
下図の白丸囲みのボタンをクリックしてスケッチ(プログラム)をArduinoへ書き込みます。
動作確認
3番ピンを使います。
LEDが点灯している様子が見えにくいですが、点灯しています。
Macでの動作確認はOKでございます。
Ubuntu編
パソコンとArduinoをUSBケーブルで接続します。
[ツール] > [ボード] > [Arduino Leonard] を選択します。
[ツール] > [シリアルポート] > Arduinoと接続しているUSBケーブルを抜き差しして反応するポートを選択します。
スケッチの書き込み
[ファイル] > [スケッチの例] > [01.Basics] > [Blink] を選択します。
プログラム中の
24行目:pinMode(4, OUTPUT); と編集します。
29行目:digitalWrite(4, HIGH); と編集します。
31行目:digitalWrite(4, LOW); と編集します。
スケッチ(プログラム)をArduinoへ書き込みます。
動作確認
4番ピンを使います。
LEDが点灯している様子が見えにくいですが、点灯しています。
Ubuntuでの動作確認はOKでございます。
Postgresにデータ投入 COPYコマンド
PostgreSQLにサンプルデータを登録します。
PostgreSQLにデータをロードするにはCOPYコマンドを使用します。
こちらにサンプルデータ.tsvとCOPYコマンドを記した.sqlを置きました。
https://github.com/sasakiyo/smplworkflow_doc.git
こちらのdataフォルダの.batを実行すると先日作成したテーブルにデータがローディングされます。
.batをダブルクリックするだけでございます。