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

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

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

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

期間: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.
  入門には最適の格安マイクロコントローラボードの #アルディーノ互換ボード が各種そろっています。



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

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


夏休 プリント基板CAD入門講座

夏休 電子回路CAD入門講座

電子回路基板を設計するCAD "DesignSpark PCB" を使い、自分だけの電子回路基盤を作りませんか?

期日:2018年8月2日、8月18日 2回開催
時間:9時~15時
定員:各回3名(合計6名)
対象:電子回路設計ができる方(小学生の場合は保護者同伴)
費用:5,000円

概要:
・”DesignSparkPCB”のPCBデザインの基本操作
・PCBパターン設計実習
・PCB発注実習
・CNCルータを使ったPCB作成実習

詳しくは、涵養塾にお問い合わせください。

夏休 電子回路CAD入門講座

夏休 電子回路CAD入門講座

電子回路基板を設計するときに使う電子回路CAD "DesignSpark PCB" を使った、電子回路設計にチャレンジしてみませんか?

期日:2018年7月31日、8月17日 2回開催
時間:9時~15時
定員:各回3名(合計6名)
対象:基本的なパソコン操作(Windows)ができる方(小学生の場合は保護者同伴)
費用:5,000円

概要:
・電子回路 とは
・”DesignSparkPCB”の基本操作
・電子回路設計実習

詳しくは、涵養塾にお問い合わせください。

夏休 3DプリンターCAD入門講座

夏休 3DプリンターCAD入門講座

3Dプリンターでの物づくりには最適な 3D CAD ”Fusion360” の入門講座です。
基本操作を学習し、実際に3Dプリンターを使って素敵なものを作ってみます。

期日:2018年7月24日、7月27日、8月10日 3回開催
時間:9時~15時
定員:各回5名(合計15名)
対象:基本的なパソコン操作(Windows)ができる方(小学生の場合は保護者同伴)
費用:5,000円3Dプリンター出力費用含む

概要:
・3D CAD ”Fusion360” とは
・”Fusion360”の基本操作
・3D CAD デザイン実習
・3Dプリンターとは
・3Dプリンター出力自習

詳しくは、涵養塾にお問い合わせください。

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

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

涵養塾の観葉植物の植木鉢の上で、いろんなセンサーを使った環境観測を開始しました。
あなたも、夏休みの研究にチャレンジしませんか?
並んでいるセンサーは、次の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
6月30日の昼頃、落雷の影響でしょうか、突然フリーズしてしまいました。7月1日の昼頃に再開しました。

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);
}

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

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

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

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

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

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

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

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

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