夏休み ロボット工作教室 ー自分のロボットを作ろうー


夏休みロボット工作教室



二本足で歩くロボット Ottoロボットを 自分で作って、プログラミングや改造にもチャレンジ

自分で組み立て ードライバー1本で簡単組み立て。

自分でプログラミング ーScratchと同じブロックプログラミング

自分のボディーに ー3DCADでオリジナルデザインも

説明会:定員10名

プログラミング勉強会:各定員5名
  • O会場:7月13日 13時~15時 無料
  • K会場:7月20日 10時~12時、24日 13時~15時 500円

CAD勉強記:定員5名
  • K会場:7月20日 13時~15時 500円

組み立て、制作:材料費(4000円)各定員5名
  • K会場:8月3日、10時~12時
  • O会場:8月17日、10時~12時

各会場の定員は、各5名です。 継続申込者を優先しますが、定員に空きがあれば、単独の参加も可能です。

対象:小学校3年生以上、年齢の上限は制限なしです。
どの回も事前にお申し込みください




今回製作する Ottoロボット の特徴

プログラミングは、mBlockと言うScratch2の改造版を使用、パソコンとロボットの中のArduinoのプログラムの両方ができます。 また、上級者は、スマホでロボットをコントロールするプログラムも作れます

ボディーにカラー印刷した用紙を使って、着せ替えもできます。

3DCADは、小学生でも使えるTINKERCADで、自分用にボディーを改造することができ、3Dプリンターで自分専用ボディーが作れます。

★いろんなセンサーや、LEDなどを付け加えて、高性能に改造できます。


夏休みプログラミングチャレンジ

夏休みプログラミングチャレンジ

涵養塾では、夏休みに合わせ、様々な #プログラミング の体験、勉強ができる、「夏休みプログラミングチャレンジ」を実施します。

自分のレベルに合わせて、いろんなプログラミングにチャレンジしてみましょう

期間:7月20日 から 9月1日まで(事前予約制)

「夏休みプログラミングチャレンジ」でできること

1. #初めてのプログラミング
  まったく初めてのプログラミングチャレンジをスクラッチを使って体験します。

対象:6歳 ~ 99歳 好奇心のある人 (ひらがながよめること)
費用:1回500円

2. #電子工作 とプログラミング
  電子工作ではんだ付けなどを体験しながら、電子おもちゃ(アクセサリー等)作りと、プログラミングにチャレンジします。

対象:9歳 ~ 99歳 自分で何かを作る(DIY)のが好きな人 (一人で、糸を結んだり、カッターで紙を切ったりできること)
費用:1回500円+材料費(¥500~¥3,000)

3. #IoT とプログラミング
  いろんなセンサーを使って観察をしたり、遠くのスイッチを操作したりするIoTプログラミングにチャレンジします。

対象:9歳 ~ 99歳 IoTに興味のある人 (簡単なプログラミングのできる人)
費用:1回500円+材料費(¥1500~¥6,000)

4. RaspberryPiで画像処理にチャレンジ
  RaspberryPiで、画像処理をPythonプログラミングでチャレンジします。

対象:小学4年生 ~ 大学生 (簡単なプログラミングのできる人)
費用:1回500円+材料費(¥10,000)

5. プログラミングで夏休み自由研究(工作)
  プログラミングで夏休みの自由研究(工作)にチャレンジします。

対象:小学4年生 ~ 中学3年生 (自分で自由研究(工作)の題材を決められる人)
費用:1回500円+材料費

6. 先生のプログラミングチャレンジ
  プログラミングで学習教材つくりにチャレンジ

対象:学校の先生 
費用:1回500円+材料費

7. おとなのプログラミングチャレンジ
  夏休みの自己研鑽でプログラミングにチャレンジします。

対象:高校性 ~ 99歳 とにかくやってみたい人
費用:1回500円+材料費

「夏休みプログラミングチャレンジ」で利用可能な
プログラミング環境


1. #Scratch #スクラッチ
  小学校で一番人気 ゲームやアニメーションの作成、ロボットの制御まで、入門からIoTまで何でもできちゃう。

2. #Arduino IDE
  電子工作に最適な #アルディーノ #Arduino の #C ・ #C++ のプログラミング開発環境

3. #Python #MicroPython
  #RaspberryPi や ESP-WROOM-32 などのマイクロコントローラで動作可能なプログラミング環境で、 #Scratch とのコラボレーションも得意です。




「夏休みプログラミングチャレンジ」で利用可能な
マイクロコントローラボード

1. #ESP-Toy( #ESP8266 ), #ESP-WROOM-32 NodeMCUボード
  涵養塾オリジナルで、フルカラ-LEDとモータードライバーが搭載された、WiFi搭載マイクロコントローラボード ESP-Toy さらに #BlueToothも搭載した #ESP-WROOM-32 #NodeMCU ボード

2. #RaspberryPi
  巷で人気の #Linux のマイクロコントローラボードで、単独で、スクラッチによるロボット制御も可能、 #IoT 入門にも最適 #RaspberryPi 各種ボードがそろっています。

3. #ArduinoUNO , #ArdhuniMEGA , etc.
  入門には最適の格安マイクロコントローラボードの #アルディーノ互換ボード が各種そろっています。



その他にも、各社のいろんな部品ががそろっています。

上記の「対象者」は、目安です。 どの内容も、どなたでも参加していただけます。


夏休みプログラミングチャレンジ サンプル いろんなセンサーで環境計測

夏休みプログラミングチャレンジ サンプル いろんなセンサーで環境計測

涵養塾の観葉植物の植木鉢の上で、いろんなセンサーを使った環境観測を開始しました。
あなたも、夏休みの研究にチャレンジしませんか?
並んでいるセンサーは、次の4種類
1.土壌湿度センサー(Analog)
  植木鉢の土の乾き具合を観察します
2.BME280 温湿度 気圧 センサー(I2C)
  お天気の基本的な情報、を調べて天気予報もできるかも
3.APDS9660 カラー(光)センサー(I2C)
  空の色も調べられます、「あさやけ」と「ゆうやけ」の色は同じか?
4.CCS811 空気品質センサー(I2C)
  だれかがオナラをしてもわかっちゃいます

これらのセンサーをブレッドボードの上で、ESP-WROOM-32に接続し、ArduinoIDEでプログラミングし、ネット経由でAmbientのIoTデーターの可視化サービスを利用して、データをグラフ化してみました。

グラフはここをご覧ください。
https://ambidata.io/ch/channel.html?id=4285

Arduinoのソースコードは、こんな感じです。

/***************ここから
 * ESP_WROOM_32とBME280,apds9660,ccs-811をI2C接続し、温度、湿度、気圧,光、空気を測定しプリントアプトする
#1:tempreture
#2:humidity
#3:pressure
#4:soil moisture(ad14)
#5:R
#6:G
#7:B
#8:TVOC
 */
#define PERIOD 300 //sec

#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;
#define SoilMoist_pin A0  //analogRead(SoilMoist_pin);
#include "Ambient.h"
#include
#include "BME280.h"
BME280 bme280;

#include
SparkFun_APDS9960 apds = SparkFun_APDS9960();

uint8_t proximity_data = 0;
uint16_t ambient_light = 0;
uint16_t red_light = 0;
uint16_t green_light = 0;
uint16_t blue_light = 0;

#include

//************** wifi config ************************************************
//* Set these to your desired credentials. */
const char* ssid = "**************";
const char* password = "--------------";
WiFiClient client;

//************** Ambient config ************************************************
unsigned int channelId = xxxxx; //channel ID
const char* writeKey = "???????????????"; //ライトキー
Ambient ambient;

void setup(){
  WiFi.mode(WIFI_OFF);

  Wire.begin(); // I2Cの初期化
  Serial.begin(115200);
  //*************** wifi connecting
  Serial.print("Wifi Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  // Wait for connection
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  Serial.println("Connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  delay(1000);

  // チャネルIDとライトキーを指定してAmbientの初期化
  ambient.begin(channelId, writeKey, &client);
  Serial.println("Ambient start.");

  bme280.begin(); // BME280の初期化
  Serial.println("BME280 start");
   
  //***************** APDS-9960 proximity
  // Initialize APDS-9960 (configure I2C and initial values)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }

  // Adjust the Proximity sensor gain
  if ( !apds.setProximityGain(PGAIN_2X) ) {
    Serial.println(F("Something went wrong trying to set PGAIN"));
  }

  // Start running the APDS-9960 proximity sensor (no interrupts)
  if ( apds.enableProximitySensor(false) ) {
    Serial.println(F("Proximity sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during sensor init!"));
  }

  // Start running the APDS-9960 light sensor (no interrupts)
  if ( apds.enableLightSensor(false) ) {
    Serial.println(F("Light sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during light sensor init!"));
  }

  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }

  //calibrate temperature sensor
  while(!ccs.available());
  float temp = ccs.calculateTemperature();
  ccs.setTempOffset(temp - 25.0);

}

void loop() {
/*
#1:tempreture
#2:humidity
#3:pressure
#4:soil moisture
#5:R
#6:G
#7:B
#8:TVOC
 */
    float temp, humid, pressure;

    // BME280で温度、湿度、気圧を測定する
    temp = (float)bme280.readTemperature();
    humid = (float)bme280.readHumidity();
    pressure = (float)bme280.readPressure();
    ambient.set(1, temp);
    ambient.set(2, humid);
    ambient.set(3, pressure);
    Serial.print("temp: ");
    Serial.print(temp);
    Serial.print(", humid: ");
    Serial.print(humid);
    Serial.print(", pressure: ");
    Serial.print(pressure);

//    humid = analogRead(SoilMoist_pin);
    humid = analogRead(SoilMoist_pin);
    ambient.set(4, humid);
    Serial.print(", Soil Moisture ADC: ");
    Serial.println(humid);

  // Read the proximity value
  if ( !apds.readProximity(proximity_data) ) {
    Serial.println("Error reading proximity value");
  } else {
    Serial.print("Proximity: ");
    Serial.println(proximity_data);
  }
  // Read the light levels (ambient, red, green, blue)
  if (  !apds.readAmbientLight(ambient_light) ||
        !apds.readRedLight(red_light) ||
        !apds.readGreenLight(green_light) ||
        !apds.readBlueLight(blue_light) ) {
    Serial.println("Error reading light values");
  } else {
    ambient.set(5, red_light);
    ambient.set(6, green_light);
    ambient.set(7, blue_light);   
    Serial.print("Ambient: ");
    Serial.print(ambient_light);
    Serial.print(" Red: ");
    Serial.print(red_light);
    Serial.print(" Green: ");
    Serial.print(green_light);
    Serial.print(" Blue: ");
    Serial.println(blue_light);
  }

  if(ccs.available()){
    float temp = ccs.calculateTemperature();
    int CO2 = ccs.geteCO2();
    int TVOC = ccs.getTVOC();
    ambient.set(8, TVOC);
    if(!ccs.readData()){
      Serial.print("CO2: ");
      Serial.print(CO2);
      Serial.print("ppm, TVOC: ");
      Serial.print(TVOC);
      Serial.print("ppb   Temp:");
      Serial.println(temp);
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }
    Serial.print("Ambient send =");
    Serial.println(ambient.send());
   
    delay(PERIOD * 1000);
}

夏休みのアイデア BBC micro:bit + scratch でプログラミングチャレンジ

話題のBBC micro:bitを scratch でプログラミング にチャレンジ
BBC micro:bit は、ブロック、JavaScript(ジャバスクリプト) 、Python(パイソン)を使ってプログラムできるんですが、スクラッチ(Scratch)でもコントロールできるんです。

得意のスクラッチを使って、micro:bit をいじってみよう。

最新のScratch(Scratch3)では、拡張機能にmicro:bitが組み込まれています。
説明に従って、プログラムをダウンロードして、始めましょう。




昨年までのScratch2では、
S2Bot4Scratchと言うchromeのアプリを使います。

涵養塾では、このS2Bot4Scratch を使うと、micro:bit 以外にも、BB-8 もScratchからコントロールできます。


Scratchのパソコンは、WindowsかChromeOSのパソコンに、BlueToothの"BLED112"USBドングルを接続して準備します、
micro:bitは、LEDやスイッチ、ブザー、3軸加速度センサー、温度センサー等が利用できます。
ボタンを押したら、LEDに文字を表示し、ブザーが鳴るという簡単なデモを作ってみました。


簡単手順書
はじめに
1.S2Bot4ScratchをChromeにインストールします。

2."BLED112"USBドングル のドライバ BLED112 Windows ドライバ をインストールし、BLED112USBドングルを接続します。

3.chrome で S2BOT を起動し、右上のメニューから "Prigram micro:bit" を選び、"microbit-s2bot.hex" Fileをダウンロードします。

4.micro:bit をUSBケーブルでPCに接続し、"microbit-s2bot.hex" Fileをmicro:bitにコピーします。終わったら、USBケーブルを外します。(バッテリーがない場合は、USBケーブルをPCではなくUSB充電器に接続します)

5.Scratch2.0 offline editor をインストールします。

6.S2Botを起動し”Scan for devices"タブをクリックし、micro:bit が見つかると表示されるので、BBC micr:bitをクリックし、”close”をくりっくします。micro:bitの電源が入っていないと見つかりませんので、電源を入れてください。 それでも見つからないときは、S2Botを一度閉じて再起動してみてください。
 接続がうまくいくと BBC micro:bit connected が表示され 右の丸が赤から緑に代わります。”Test"タブが表示されるので、テストしてみます。

7.S2Bot


夏休みプログラミングチャレンジ サンプル スクラッチでIoT

夏休みプログラミングチャレンジ サンプル として、スクラッチでIoTにチャレンジしてみました。

夏休みこんなものを作ってみませんか?

こんなものができました。(動画)

スクラッチでWiFi接続された自作ガジェットを制御しています。

*自作ガジェットは
涵養塾オリジナル ESP-WROOM-02 BrakeoutBoard に 温湿度センサー(DHT11)、フルカラーLED,ブザーを接続し、100円ショップで物色したテーブルランプ的なものに組み込みました。

スクラッチのプログラムはScratch1.4を使い、パソコンをガジェットのWiFiに接続し、”Host Mesh"に指定することで、接続されています。
この辺の詳細は、"Scratch Wiki Mesh" をご覧いただくか、涵養塾にお越しください。

スクラッチでは、温度と、湿度のグラフを表示しながら、画面の鍵盤をクリックすると、ブザーでドレミの音が鳴り、LEDがいろんな色に変化するものです。

ドレミの音は、音階(周波数)と、テンポ(一拍の長さ)と、音符(拍数)で指定しますので、岳ぐから、音楽を奏でることが可能です。




IoT でホームセキュリティーシステム

IoT のお勉強に、ホームセキュリティーシステムを構築してみました。

 窓やドアに取り付けたセンサーで、窓やドアの開閉を察知し、インターネット経由で、スマホに知らせるシステムです。

使った装置は
写真で説明すると、右上の黒いのが、5V AC-DC 電源、中央の緑の基盤は 5V to 3V DC-DCコンバータ、その左が、

ESP-Wroom-02 Breakout Board
https://chum.official.ec/items/8075423


そして、左端に、センサー接続用の端子です。
すべて、手持ちの在庫で、間に合わせ、購入したのは、ケースにした、¥100ショップのA4ケースです。

今回の実際の購入金額はケースの108円だけでしたが、すべて購入したとしても、センサーを除き3000円くらいだと思います。センサーは、1か所100円くらいですが配線は大変です。

スマホとESP-Wroom-02は、IFTTT と beebotte の無償サービスを使って、双方向の通信が可能になるように作りました。

動作としては、
1.スマホからESP-Wroom-02にコマンド送出
2.ESP-Wroom-02からスマホに状態報告
です。

ご興味のある方は、涵養塾までお問い合わせください。

IFTTT
https://ifttt.com/

beebotte
https://beebotte.com/

#WSPWroom02 #ESP8266 #IoT #IFTTT #beebotte #ArduinoIDE #HA #ホームセキュリティー #MQTT #HA

Blue Tooth Serial module HC-06 設定・確認マニュアル

Blue Tooth Serial module HC-06 設定・確認マニュアル

工場出荷状態
BAUD=9600
PIN=1234

Arduinoのシリアルモニターでは"CRおよびLF""9600bps"の設定で接続します。
HC-06の電源を入れると

+READY
+PAIRABLE

とレスポンスが帰ってきたらOKです。

"AT"をおくると"OK"とレスポンスが帰ってきます。

涵養塾仕様は

DeviceName と BAUDを変更します。

"AT+NAMECHUM**"を送信すると

+NAME=CHUM01
OK

とレスポンスが帰ってきます。

"AT+BAUD8"を送ると

+BAUD=8
OK

とレスポンスが帰ってきます。

AT+HELPのリスト

Command              Description
----------------------------------------------------------------
AT                   Check if the command terminal work normally
AT+RESET             Software reboot
AT+VERSION           Get firmware, bluetooth, HCI and LMP version
AT+HELP              List all the commands
AT+NAME              Get/Set local device name
AT+PIN               Get/Set pin code for pairing
AT+BAUD              Get/Set baud rate
AT+CLEAR             Remove the remembered remote address
AT+LADDR             Get local bluetooth address
AT+DEFAULT           Restore factory default
AT+COD               Get/Set local class of device
AT+IAC               Get/Set inquiry access code
AT+ROLE              Get/Set master or slave mode
AT+STATE             Get current state
AT+UARTMODE          Get/Set uart stop bits and parity
AT+ENABLEIND         Enable/Disable Indication print
AT+LSP               List Paired Device List
AT+RESETPDL          Reset Paired Device List
AT+REMOVEPDL         Remove one entry from Paired Device List
-----------------------------------------------------------------
Note: (M) = The command support master mode only, other commands
support both master and slave mode.
For more information, please visit http://www.bolutek.cn
Copyright@2012 www.bolutek.cn. All rights reserved.

BAUDのパラメータは以下の通り、
1---1200
2---2400
3---4800
4---9600
5---19200
6---38400
7---57600
8---115200
9---230400
A---460800
B---921600
C---1382400 
default:4---9600 

AT-Commandの説明
http://diwo.bq.com/wp-content/uploads/2014/11/BLK-MD-BC04-B_AT-COMMANDS.pdf
+NAME=CHUM07

Windows10でFT232RL FTDI アダプタを使ってテスト設定するときの手順

1.FT232RL FTDI アダプタをUSBに接続し、Aduinoのシリアルモニターを起動

2.HC-06をFT232RL FTDI アダプタに接続すると

+READY

+PAIRABLE

とレスポンス

3."AT"をおくると

OK

とレスポンス

4."AT+NAMECHUM**"を送信すると

+NAME=CHUM01
OK

とレスポンス

5."AT+BAUD8"を送ると

+BAUD=8
OK

とレスポンス

6.Windows10でHC-06とペアリングする(PINは1234)

7.ペアリングできたら、デバイスマネージャでCOMポート番号を確認し、「TERA Term」等ターミナルアプリで、HC-06の割り当てられた、COMポートに接続する

+CONNECTING<<**:**:**:**:**:**
CONNECTED

とレスポンス

7.HC-06のCOMポートとFT232RL FTDI アダプタのCOMポート間で通信を確認

8.ターミナル側アプリを終了すると

+DISC:SUCCESS
+READY
+PAIRABLE

とレスポンス


*注)
Windows10では、HC-06をペアリングするとCOMポートが2つ割り当てられる。どちらが使えるか確認する必要あり??