So-net無料ブログ作成

海底には知性を持った巨大な生物がいるのか!? [ちょっと気になるトンデモ学説!]

先日、仕事で疲れて帰ってテレビをつけたら、モーガンフリーマンの「時空を超えて」がやっていました。私が大好きな番組のひとつです。だいたい知っているような内容ばかりなので”ながら見”する程度なのですが、先日の番組はちょっと変わった視点でびっくりしました。


morganfreeman.jpg
http://www4.nhk.or.jp/P3452/


題名は「海は思考するのか?」。きっと生物の起源は海とかそういう内容だろうと思ったのですが、まったく違いました。まさに題名通り!海は知的生命体か?ということを検証しようという内容でした。ちょっとぶったまげました。


deepsea.jpg


内容も眉唾なものではありません。はっきり言うと大半はどうでもいい内容だったのですが、私が興味を持ったのは海底の嫌気性の水棲細菌のふるまいです。

哺乳類をはじめとした酸素を呼吸する生物の多くはミトコンドリアが生成するエネルギーで生命を維持しています。ミトコンドリアは糖を分解して余った電子を酸素に預けて水にして放出します。つまり呼吸するとは、ミトコンドリアが電子を酸素に預けて放出する過程のことに他なりません。


mitocondoria.gif
http://www.seibutsushi.net/blog/2008/12/643.html


一方、嫌気性の水棲細菌は激しい化学反応をする酸素を嫌います。かわりに水溶金属を酸素替わりにエネルギー代謝に使っています。

そこで、ある科学者が金属がまったく溶けていない水の中で水棲細菌がどうなるか試してみました。当然、死滅すると思われたのですが…。


cell.jpg


なんと、水棲細菌どうしが細かい毛のようなものを縦横無尽に張り巡らしつながり、しぶとく生き残っていたのです。どうもお互い電子の受容体を融通することで代謝を実現していたようです。この構造に非常に似たものがありますよね。そうです、私たちの脳です。


neuron.jpg


酸素が十分に届かない海底には嫌気性の水棲細菌がうようよしています。しかも穏やかな海底の泥の中は十分に金属が循環しない可能性が大きいです。二酸化炭素が濃いところにいるようなものですよね。

そのようなところの水棲細菌はお互いがつながり巨大なネットワークを作っている可能性が高いです。それは、何かしらの知性のようなものをもっていてもおかしくありません。

いやー、まったく新しい視点ですね。海底には知性をもつ巨大な怪物が潜んでいる。ちょっと怖いですけど、ロマンがありますね!
(^^)/~





ミトコンドリア・ミステリー―驚くべき細胞小器官の働き (ブルーバックス)

ミトコンドリア・ミステリー―驚くべき細胞小器官の働き (ブルーバックス)

  • 作者: 林 純一
  • 出版社/メーカー: 講談社
  • 発売日: 2002/11/20
  • メディア: 新書



代謝ナビゲーション ミトコンドリアを中心とする代謝ネットワーク

代謝ナビゲーション ミトコンドリアを中心とする代謝ネットワーク

  • 作者:
  • 出版社/メーカー: メディカルサイエンスインターナショナル
  • 発売日: 2017/10/10
  • メディア: 単行本



海のトワイライトゾーン-知られざる中深層生態系 (ベルソーブックス 34)

海のトワイライトゾーン-知られざる中深層生態系 (ベルソーブックス 34)

  • 作者: 齊藤 宏明
  • 出版社/メーカー: 成山堂書店
  • 発売日: 2010/03/28
  • メディア: 単行本




nice!(29)  コメント(2) 
共通テーマ:趣味・カルチャー

ESP32 でサーボモーターを動かしてみた [徒然日記]

ESP32 の PWM の機能を確認するためにサーボモーターを試してみました。サーボモーターには SG90 を使っています。Arduino や Raspberry Pi の工作では定番ですね。


sSG90.png


サーボモーターは PWM 信号によって角度を制御することができます。PWM の Duty比に応じて回転角度を設定することができます。


sSG90-2.png


ESP32 と接続してみました。このサーボモーターは3.3V でも駆動するので便利ですよね。


DSC04870.JPG


スケッチを書くにあたり、こちらのサイトを参考にさせてもらいました。

【ESP32】PWMでモーターを制御する方法
http://rikoubou.hatenablog.com/entry/2017/06/05/172953


スケッチはこちらです。とっても簡単ですね。

#include "esp_system.h"

void setup() { 
  Serial.begin(115200);
  ledcSetup(0, 50, 10);  // 0ch 50 Hz 10bit resolution
  ledcAttachPin(15, 0); // 15pin, 0ch
}

int min = 26;  // (26/1024)*20ms ≒ 0.5 ms  (-90°)
int max = 123; // (123/1024)*20ms ≒ 2.4 ms (+90°)
int n = min;
void loop() {
  ledcWrite(0, n);
  n+=5;
  if (n > max) n = min;
  delay(500);
}



実際に動いている様子がこちらです。今回もちょっと凝ってみました。^^



Raspberry Pi に比べると Arduino はやっぱり楽ですね。できればPWMでカメラも駆動できると嬉しいので、MHz クラスの PWM ができるか確認してみたいと思います。
(^^)/~






waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: おもちゃ&ホビー



MicroPython for ESP32 Development Workshop (English Edition)

MicroPython for ESP32 Development Workshop (English Edition)

  • 出版社/メーカー:
  • 発売日: 2017/08/19
  • メディア: Kindle版




nice!(30)  コメント(2) 
共通テーマ:趣味・カルチャー

ESP32 の BLEデバイス化にチャレンジ!(4)ついに完結! [Arduino]

ずっと苦労していた ESP32 のBLEデバイス化ですが、ようやくうまく行きました!(涙)
。・゚・(ノД`)・゚・。


DSC04856.JPG


まずは成功した証。スマホアプリ LAPIS Semconductor さん謹製の BLE TOOL の画面を披露します。


ESP32_Heart_Rate.png



ばっちり心拍データを受信しています。実際に心拍を測定しているわけでなく、ランダムデータなんですけどね。^^; いろんな試行錯誤をした後、完成したスケッチがこちらです。

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "esp_system.h"
#include "bt.h"
#include "bta_api.h"

#include "esp_gap_ble_api.h"
#include "esp_gatts_api.h"
#include "esp_bt_defs.h"
#include "esp_bt_main.h"

#define HRPS_HT_MEAS_MAX_LEN  13

///Attributes State Machine
enum {
    HRS_IDX_SVC,

    HRS_IDX_HR_MEAS_CHAR,
    HRS_IDX_HR_MEAS_VAL,
    HRS_IDX_HR_MEAS_NTF_CFG,
    
    HRS_IDX_NB,
};

#define ESP_HEART_RATE_APP_ID           0x55
#define SAMPLE_DEVICE_NAME              "ESP_HEART_RATE"
#define SAMPLE_MANUFACTURER_DATA_LEN    17
#define HEART_RATE_SVC_INST_ID          0

static uint8_t heart_rate_service_uuid[16] = {
    /* LSB <--------------------------------------------------------------------------------> MSB */
    // first uuid, 16bit, [12],[13] is the value
    0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x18, 0x0D, 0x00, 0x00,
};

static esp_ble_adv_data_t heart_rate_adv_config = {
    .set_scan_rsp = false,
    .include_name = true,
    .include_txpower = true,
    .min_interval = 0x20,
    .max_interval = 0x40,
    .appearance = 0x00,
    .manufacturer_len = 0, //TEST_MANUFACTURER_DATA_LEN,
    .p_manufacturer_data =  NULL, //&test_manufacturer[0],
    .service_data_len = 0,
    .p_service_data = NULL,
    .service_uuid_len = sizeof(heart_rate_service_uuid),
    .p_service_uuid = heart_rate_service_uuid,
    .flag = (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT),
};

static esp_ble_adv_params_t heart_rate_adv_params; 

struct gatts_profile_inst {
    esp_gatts_cb_t gatts_cb;
    uint16_t gatts_if;
    uint16_t app_id;
    uint16_t conn_id;
    uint16_t service_handle;
    esp_gatt_srvc_id_t service_id;
    uint16_t char_handle;
    esp_bt_uuid_t char_uuid;
    esp_gatt_perm_t perm;
    esp_gatt_char_prop_t property;
    uint16_t descr_handle;
    esp_bt_uuid_t descr_uuid;
};


static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param);

/* One gatt-based profile one app_id and one gatts_if, this array will store the gatts_if returned by ESP_GATTS_REG_EVT */
static struct gatts_profile_inst heart_rate_profile = {
    .gatts_cb = gatts_profile_event_handler,
    .gatts_if = ESP_GATT_IF_NONE, 
};

/// Heart Rate Sensor Service
static const uint16_t heart_rate_svc = ESP_GATT_UUID_HEART_RATE_SVC;

#define CHAR_DECLARATION_SIZE   (sizeof(uint8_t))
static const uint16_t primary_service_uuid = ESP_GATT_UUID_PRI_SERVICE;
static const uint16_t character_declaration_uuid = ESP_GATT_UUID_CHAR_DECLARE;
static const uint16_t character_client_config_uuid = ESP_GATT_UUID_CHAR_CLIENT_CONFIG;
static const uint8_t char_prop_notify = ESP_GATT_CHAR_PROP_BIT_NOTIFY;
static const uint8_t char_prop_read = ESP_GATT_CHAR_PROP_BIT_READ;
static const uint8_t char_prop_read_write = ESP_GATT_CHAR_PROP_BIT_WRITE|ESP_GATT_CHAR_PROP_BIT_READ;

/// Heart Rate Sensor Service - Heart Rate Measurement Characteristic, notify
static const uint16_t heart_rate_meas_uuid = ESP_GATT_HEART_RATE_MEAS;
static const uint8_t heart_measurement_ccc[2] ={ 0x00, 0x00};

/// Full HRS Database Description - Used to add attributes into the database
static const esp_gatts_attr_db_t heart_rate_gatt_db[HRS_IDX_NB] =
{
    // Heart Rate Service Declaration
    [HRS_IDX_SVC]                       =  
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ,
      sizeof(uint16_t), sizeof(heart_rate_svc), (uint8_t *)&heart_rate_svc}},

    // Heart Rate Measurement Characteristic Declaration
    [HRS_IDX_HR_MEAS_CHAR]            = 
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
      CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_notify}},
      
    // Heart Rate Measurement Characteristic Value
    [HRS_IDX_HR_MEAS_VAL]               =   
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&heart_rate_meas_uuid, ESP_GATT_PERM_READ,
      HRPS_HT_MEAS_MAX_LEN, 0, NULL}},

    // Heart Rate Measurement Characteristic - Client Characteristic Configuration Descriptor
    [HRS_IDX_HR_MEAS_NTF_CFG]       =    
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ|ESP_GATT_PERM_WRITE,
      sizeof(uint16_t),sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},
};


static uint16_t heart_rate_handle_table[HRS_IDX_NB];


//////////////////////////////////////////////////////
static void ble_indicate() {
    if (heart_rate_profile.gatts_if == ESP_GATT_IF_NONE) {
        Serial.println("cannot indicate: gatts_if_for_indicate is NONE");
        return;
    }
    uint8_t hrm_value = random(30, 220);
    uint8_t hrm_value_arr[] = {0x00, hrm_value};
    Serial.println(hrm_value);
    esp_ble_gatts_send_indicate(heart_rate_profile.gatts_if, 
        heart_rate_profile.conn_id, heart_rate_handle_table[HRS_IDX_HR_MEAS_VAL], 
        sizeof(hrm_value_arr), hrm_value_arr, false);
}
//////////////////////////////////////////////////////


static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param)
{
    switch (event) {
    case ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT:
        Serial.println("gap start advertising....");
        esp_ble_gap_start_advertising(&heart_rate_adv_params);
        break;
    case ESP_GAP_BLE_ADV_START_COMPLETE_EVT:
        //advertising start complete event to indicate advertising start successfully or failed
        if (param->adv_start_cmpl.status != ESP_BT_STATUS_SUCCESS) {
            Serial.println("gap advertising failed");
        }
        Serial.println("gap advertising success");
        break;
    default:
        break;
    }
}

static bool bConnected = false;

static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param) 
{
    switch (event) {
    case ESP_GATTS_REG_EVT:
        Serial.println("gatt server register event");
        esp_ble_gap_set_device_name(SAMPLE_DEVICE_NAME);
        esp_ble_gap_config_adv_data(&heart_rate_adv_config);
        esp_ble_gatts_create_attr_tab(heart_rate_gatt_db, gatts_if, HRS_IDX_NB, HEART_RATE_SVC_INST_ID);
        break;
    case ESP_GATTS_READ_EVT: 
        Serial.println("gatt server read event");
        break;
    case ESP_GATTS_WRITE_EVT: 
        Serial.println("gatt server write event");       
        break;
    case ESP_GATTS_EXEC_WRITE_EVT:
        Serial.println("gatt server exec write event");       
        break;
    case ESP_GATTS_MTU_EVT:
        Serial.println("gatt server mtu event?");       
         break;
   case ESP_GATTS_CONF_EVT:
        Serial.println("gatt server configuration event");       
        heart_rate_profile.gatts_if = gatts_if;
        heart_rate_profile.conn_id = param->connect.conn_id;
        break;
   case ESP_GATTS_UNREG_EVT:
        Serial.println("gatt server unregister event");       
        break;
   case ESP_GATTS_DELETE_EVT:
        Serial.println("gatt server delete event");       
        break;
   case ESP_GATTS_START_EVT:
        Serial.println("gatt server start event");       
        break; 
   case ESP_GATTS_STOP_EVT:
        Serial.println("gatt server stop event");       
        break;
   case ESP_GATTS_CONNECT_EVT:
        Serial.println("gatt server connect event");       
        heart_rate_profile.gatts_if = gatts_if;
        heart_rate_profile.conn_id = param->connect.conn_id;
        bConnected = true;
        break;
   case ESP_GATTS_CREATE_EVT:
        Serial.println("gatt server create event");  
        break;
   case ESP_GATTS_ADD_CHAR_EVT:
        Serial.println("gatt server add char event");  
        break;
   case ESP_GATTS_ADD_CHAR_DESCR_EVT:
        Serial.println("gatt server add char descriptor event");  
        break;
   case ESP_GATTS_DISCONNECT_EVT:
        Serial.println("gatt server disconnect event");     
        esp_ble_gap_start_advertising(&heart_rate_adv_params);
        bConnected = false;
        break;
   case ESP_GATTS_OPEN_EVT:
        Serial.println("gatt server open event");     
        break;
   case ESP_GATTS_CANCEL_OPEN_EVT:
        Serial.println("gatt server cancel open event");     
        break;
   case ESP_GATTS_CLOSE_EVT:
        Serial.println("gatt server close event");     
        break;
   case ESP_GATTS_LISTEN_EVT:
        Serial.println("gatt server listen event");     
        break;
   case ESP_GATTS_CONGEST_EVT:
        Serial.println("gatt server congest event?");     
        break;
   case ESP_GATTS_CREAT_ATTR_TAB_EVT:
        {
            if (param->add_attr_tab.status != ESP_GATT_OK){
                Serial.println("create attribute table failed");
            } else if (param->add_attr_tab.num_handle != HRS_IDX_NB){
                Serial.println("create attribute table abnormally");
            } else {
                memcpy(heart_rate_handle_table, param->add_attr_tab.handles, sizeof(heart_rate_handle_table));
                esp_ble_gatts_start_service(heart_rate_handle_table[HRS_IDX_SVC]);
                Serial.println("gatt server create attribute tab successfully");     
            }
        }
        break;
   default:
        break;
   }
}

static void gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if,  esp_ble_gatts_cb_param_t *param)
{
    /* If event is register event, store the gatts_if for each profile */
    if (event == ESP_GATTS_REG_EVT) {
        if (param->reg.status == ESP_GATT_OK) {
            Serial.println("gatt server register accepted");
            heart_rate_profile.gatts_if = gatts_if;
        } else {
            Serial.println("gatt server register app failed");
            return;
        }
    }
  
    do {
        int idx;
        if (gatts_if == ESP_GATT_IF_NONE || gatts_if == heart_rate_profile.gatts_if) {
            if (heart_rate_profile.gatts_cb) {
                heart_rate_profile.gatts_cb(event, gatts_if, param);
            }
        }
    } while (0);
}

void setup() {

    Serial.begin(115200);

    /* initialize advertising info */
    heart_rate_adv_params.adv_int_min = 0x20;
    heart_rate_adv_params.adv_int_max = 0x40;
    heart_rate_adv_params.adv_type = ADV_TYPE_IND;
    heart_rate_adv_params.own_addr_type = BLE_ADDR_TYPE_PUBLIC;
    heart_rate_adv_params.channel_map = ADV_CHNL_ALL;
    heart_rate_adv_params.adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY;

    btStart();

    esp_err_t ret;

    Serial.println("Init bluetooth");
    ret = esp_bluedroid_init();
    if (ret) {
        Serial.println("esp_bluedroid_init failed");
        return;
    }
    ret = esp_bluedroid_enable();
    if (ret) {
        Serial.println("esp_bluedroid_enable failed");
        return;
    }

    esp_ble_gatts_register_callback(gatts_event_handler);
    esp_ble_gap_register_callback(gap_event_handler);
    esp_ble_gatts_app_register(ESP_HEART_RATE_APP_ID);
}

void loop() {
  if (bConnected) {
      ble_indicate();
  } 
  delay(1000);
}



ポイントは二つ。ひとつは esp_ble_gatts_send_indicate の handle を CREATE_ATTR_TAB で取得したものを使ったのと、もう一つは、心拍データを16bit で送る必要があったことの2点です。この心拍データが 16bit 必要というのが気が付かずに、かなり時間をかけてしまいました。

全般的に、ESP32 SDK の BLE は mbed の Nordic のものよりも分かり難いですねぇ。でも、使い方のコツは分かったので、これから ESP32 を BLEデバイスとして活用できそうです!
(^_^)/~





waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: おもちゃ&ホビー



MicroPython for ESP32 Development Workshop (English Edition)

MicroPython for ESP32 Development Workshop (English Edition)

  • 出版社/メーカー:
  • 発売日: 2017/08/19
  • メディア: Kindle版



タグ:Arduino BLE ESP32
nice!(32)  コメント(2) 
共通テーマ:趣味・カルチャー

インターステラー天体 A/2017 U1 の形状が明らかに!これは!? [ちょっと気になるトンデモ学説!]

最近、気になってしょうがないインターステラー天体ですが、またもや驚きのニュースが入ってきました。いやー、興味つきない天体です。

少し前から、この天体すごい細長いんじゃないの?という噂が出ていましたが、ついにあのNASAがその解析結果を公表しました。


interstellar_asteroid_faq_0.jpg
https://www.nasa.gov/planetarydefense/faq/interstellar


なんと、これはどう見ても葉巻型UFO。でもUFOと違うのは回転しながら進んでいるということ。こんな感じのようです。




でも、これって昔の宇宙船や宇宙ステーションを彷彿とさせませんか?葉巻型UFOよりもリアルな探査機を彷彿とさせます。これは1960年代にNASAが考えた宇宙ステーションの姿です。


Artificial_Gravity_Space_Station_-_GPN-2003-00104.jpg


ほとんどのニュースがこの天体を岩石で構成されていると言っているようですが、NASAは実はそんなこと言っていないのですよね。こちら抜粋です。


Regarding its composition, observations suggest this object is similar to many asteroids found in our solar system – dense, possibly rocky or even metallic.The object’s surface is somewhat reddish due to effects of irradiation from cosmic rays over millions of years. 



岩石もしくは金属!と言っています。表面は赤っぽいようですね。NASAによると長い間宇宙線にさらされたせいだろうと言っていますが、、、

これがもしロス128からの探査機だとしたら?ロス128は赤色矮性です。つまり赤い世界の文明で作られた構造物だと考えると全体が赤色というのは彼らにとっては自然なのかも知れません。

しばらく、このミステリアスなインターステラー天体から目が離せません。
(@ _ @ )





インターステラー [Blu-ray]

インターステラー [Blu-ray]

  • 出版社/メーカー: ワーナー・ブラザース・ホームエンターテイメント
  • メディア: Blu-ray



コンタクト [Blu-ray]

コンタクト [Blu-ray]

  • 出版社/メーカー: ワーナー・ホーム・ビデオ
  • メディア: Blu-ray



UFOと地球外文明の謎 (ほんとうにあった!?世界の超ミステリー)

UFOと地球外文明の謎 (ほんとうにあった!?世界の超ミステリー)

  • 作者:
  • 出版社/メーカー: ポプラ社
  • 発売日: 2014/02/14
  • メディア: 単行本




nice!(26)  コメント(2) 
共通テーマ:趣味・カルチャー

インターステラー天体 A/2017 U1 は ロス128b からの探査機か!? [ちょっと気になるトンデモ学説!]

太陽系外から来た探査機ではないかと世間を騒がせたインターステラー天体 A/2017 U1。現在、火星と木星の間を順調に航行中です。そんななか、僅か11光年先にある赤色矮性ロス128に地球型天体があることが判明しました。ロス128bという惑星です。


ET.jpg
地球サイズの惑星が新たに発見される。高まってきた生命体発見。
http://karapaia.com/archives/52249401.html


しかも、この赤色矮性 「ロス128」 は、今年に入ってアレシボ天文台が不思議なシグナルが検出したと話題になった恒星系です。昨年も95光年先の恒星から怪しげな電波を受信するなど、観測技術が進むにつれて次第に宇宙が騒がしくなってきました。


やつらじゃなかった...おとめ座の赤色矮星「ロス128」から発せられた謎の電波シグナルの正体が明らかに!?
http://karapaia.com/archives/52243033.html


この信号については例によって静止衛星の信号じゃねえの?ということで落ち着いたのですが、ちょっと待ってほしい。

ひょっとしたら、これはロス128bからインターステラー探査機へ観測開始を指示するための制御シグナルだったのかも知れません。そうだとすると、地球に向かって信号が発せられたということに辻褄があいます。

今もインターステラー探査機からロス128bに観測データが送られているかも知れません。しかし、我々には地球からロス128b向けの電波は知るすべもありません。そう遠くない未来にロス128からの信号が再び検出されたら、、、いよいよ未知との遭遇への期待が高まりますね。
(^^)/~





宇宙人に、いつ、どこで会えるか? ―地球外生命との遭遇

宇宙人に、いつ、どこで会えるか? ―地球外生命との遭遇

  • 作者: 二間瀬 敏史
  • 出版社/メーカー: さくら舎
  • 発売日: 2017/07/06
  • メディア: 単行本(ソフトカバー)



五〇億年の孤独:宇宙に生命を探す天文学者たち

五〇億年の孤独:宇宙に生命を探す天文学者たち

  • 作者: リー・ ビリングズ
  • 出版社/メーカー: 早川書房
  • 発売日: 2016/03/24
  • メディア: 単行本(ソフトカバー)



コンタクト [Blu-ray]

コンタクト [Blu-ray]

  • 出版社/メーカー: ワーナー・ホーム・ビデオ
  • メディア: Blu-ray




nice!(30)  コメント(0) 
共通テーマ:趣味・カルチャー