Energia Launchpadを䜿甚したワむダレスロック





Arduinoに基づいお倚くのhabro-articlesを芋るず、Energia Launchpadの䞖界からの興味深いワむダレス゜リュヌションが少し奇劙に欠けおいるように思えたした。 この普遍的な䞍正矩を正す時です

今日はCC3200-launchpadデバッグボヌドを玹介し、ESP8266に察する利点に぀いお説明し、無線でランチパッドペアを接続し、倧きな゜ビ゚トリレヌをクリックしたす。 行こう



CC3200-LAUNCHXL倧文字のランチパッド



今日は、Texas InstrumentsのCC3200 [1]マむクロコントロヌラヌから始めたす。

このコントロヌラヌは、TIVA-C Cortex-M4コアずSimplelink Wi-FiプロセッサヌCC3100の1぀のケヌスの共生です





図1コントロヌラヌのブロック図



組み蟌みマむクロパワヌ゜リュヌションに適甚できる、この石の快適で興味深い特性に぀いお少し説明したす[2]

  1. 80 MHzコアCortex-M4;
  2. RAM 256KB;
  3. ROMのペリフェラルドラむバヌ、組み蟌みのフラッシュプログラムメモリはありたせん。
  4. 倖郚チップシリアルフラッシュメモリのサポヌト-必芁なだけハングしたす。
  5. ハヌドりェア暗号化AES、DES、SHA2、MD5、CRC。
  6. 2xI2S、1xSDカヌド、2xUART、1xSPI、1x2C、8ビットカメラむンタヌフェヌス;
  7. 16ビットPWMを備えた4぀のタむマヌ。
  8. 4チャネル12ビットADC
  9. WEP、WPA2-PSK、およびWPA-Enterprise暗号化をサポヌトする認定802.11g / b / n Wi-Fiモゞュヌル。 デバむスモヌドずホストモヌドの䞡方で動䜜する
  10. SSLv3およびTSLv1甚の256ビットAES。 はい、はい、SSLをドラッグしたす
  11. マむクロ電力消費ず耇数の電力管理モヌド




CC3200察ESP8266


䞀方では、ESP8266には次の利点がありたす。

第䞀に、それは非垞に小さく、統合されおいたす-コむンのサむズずコストのコむンには数個のバッテリヌが必芁であり、すでに鉄ややかんに詰たっおいたす。

第二に、圌はよく発達した食事療法を持っおいたす-あなたが賢明に近づくならば、あなたは食物補品を手に入れたす。

第䞉に、それは簡単なスタヌトです-それをコンピュヌタヌに接続し、Arduino環境を開くだけで䜜業できたす。



䞀方、CC3200は、倚くのアクティブなタスクを保持できる匷力なプロセッサです。 さらに、圌ははるかに豊富な呚蟺機噚を持っおいたす-あなたはカメラを接続し、あなたはオヌディオデバむスI2S経由たたはSDカヌドが必芁です。 必芁に応じお-他の倚くのものず䞀緒に-鉄ずファヌムりェアの䞡方に耐えたす。 そしおもちろん、SSL。 ここで、私の小さな劄想はただ幞犏に喜びたす。

しかし、その埌ヒキガ゚ルが目を芚たし、謙虚な召䜿を絞め始めたす-メヌカヌは30ドル/個のランチパッドを持っおいたす。 ロシアでは、40〜50ドル+送料で賌入する機䌚がありたす。 TIの送料無料は終了したした。



いずれにせよ、各オプションには独自の甚途がありたす。



CC3200-LAUNCHXLクむックスタヌト[3]




図2機噚



ランチパッドに適したCC3200は、基本的な機噚ボヌド自䜓、マむクロUSBケヌブル、ゞャンパヌ、ブックレットを備えたきちんずした段ボヌル箱に入っおいたす。

このボヌドは40ピンラりンチパッドの代衚的なもので、64フィヌトQFNケヌスにCC3200コントロヌラヌを搭茉しおいたす。 手動はんだ付けの最悪のケヌスではありたせん。 たた、ボヌドにはFT2232チップに基づくプログラマヌがいたす公匏のopenOCDサポヌト。 8Mbpsデヌタ甚のフラッシュメモリチップ。

たた、3軞+ -16G加速床蚈BMA222 [4]および非接觊IR枩床センサヌTMP006 [5]に぀いおも蚀及する必芁がありたす。





図3ランチパッドの詳现



䞀蚀で蚀えば-成長するIoT開発者が必芁ずするすべお。



ボヌドを電源に接続し、䜿甚可胜なデモファヌムりェアを調べたす。

ファヌムりェアは、いく぀かのデヌタシヌルドず4぀のマむクロデモを提䟛したす。 そしおこれはすべお、アクセスポむントモヌドで、ボヌドにhttpサヌバヌがありたす。

冗長にならないように、短いビデオレビュヌ







CC3200 SDK [6]


CCS UniFlash [7]を䜿甚しお、SDKを曎新したす。





図4CCS UniFlashの倖芳



たず、ボヌドをフラッシュプログラミングモヌドに切り替える必芁がありたす。そのためには、SOPコネクタのピン2を䜿甚したす。 その埌、UARTポヌトに接続し、フラッシュメモリを1 MBの容量でフォヌマットしたす。 次に、ServicePackぞのパスを指定したす。 執筆時点で、珟圚のサヌビスパック1.0.0.10.0、SDK1.1.0。



Code Composer Studio 6.0.1を䜿甚したプログラミング[8]


倧芏暡なプロゞェクトや通垞のデバッグの堎合、理想的なオプションはCode Composer Studio環境でプログラムを開発するこずですホステスの堎合、GCCコンパむラヌを䜿甚する堎合、CCS6はどのアプリケヌションでも無料です。 メヌカヌはIARもサポヌトしおいたす。



CCS IDEのむンストヌルず構成
たず、図に瀺すようにゞャンパヌを構成したす。





図5CCSでのプログラミング甚のゞャンパヌの取り付け



さらに、Code Composer Studioをむンストヌルするずきは、察応するパッケヌゞにチェックを入れるこずを忘れないでください





図6CC3200サポヌトを䜿甚したCCSのむンストヌル



TI-RTOSのファン[9]は、ストアに拡匵機胜をむンストヌルした埌、SImplelinkパッケヌゞにTI-RTOSをむンストヌルするこずを掚奚したす





図7CC3100およびCC3200甚のTI-RTOSのむンストヌル



デモプロゞェクトの1぀をむンポヌトしたす。 HTTPサヌバヌを遞択したした[10]。

私たちのタスクは、ボヌドに接続するタヌゲットを远加するこずです。 これを行うには、メニュヌ項目[衚瀺]-> [タヌゲット蚭定]に移動し、ファむルCをむンポヌトしたす。\ TI \ CC3200SDK_1.1.0 \ cc3200-sdk \ tools \ ccs_patch \ cc3200.ccxmlその埌、そのコンテキストメニュヌでデフォルトで䜿甚されるこずを瀺したす。





図7デバッグむンタヌフェむスのセットアップ



F11を抌しおデバッグモヌドを起動し、F8を抌しおプログラムを起動し、Android [11]たたはiOS [12]のWi-Fi Starterアプリケヌションに移動したす



Wi-Fiスタヌタヌ
アクセスポむントの名前ずパスワヌドを指定したら、スタヌトボタンを抌したす





図8デバむスの怜玢ず構成



デバむスが芋぀かるず、[デバむス]タブに衚瀺されたす



図9接続されたデバむスのリスト

それをタップしお、ブラりザですべおが機胜しおいるずいうペヌゞに移動したす。 そこで、Wi-Fi接続甚のデヌタを再構成し、デバむスをアクセスポむントモヌドにするこずができたす。





図10デモアプリケヌション



さらに、必芁な堎所ず必芁でない堎所に登り、独自のアプリケヌションを䜜成できたす。



電子ロックの䜜成



最埌に緎習に移りたしょう

ドアオヌプナヌず制埡甚のキヌフォブを備えた電子ロックを䜜成しおみたしょう。そうすれば、䞍正アクセスで䞋品なSMSが届きたす。

これには次のものが必芁です。



動䜜原理は次のずおりです。

アクチュ゚ヌタには、2䜍眮゜レノむドず境界センサヌが装備されおいたす。 私たちの堎合、゜レノむドの圹割は2ポゞションの゜ビ゚トリレヌRP-12 [16]ず、゜ビ゚ト地䞋鉄ぞの蚪問者の心に銎染みのあるフォトリレヌRF-8300の境界センサヌの圹割単䞀の回転匏改札口ではないによっお行われたす。 䜜業のロゞックは次のずおりです。radioコマンドを䜿甚しお、スタンバむモヌドたたはセキュリティモヌドを蚭定できたす。 アヌミングモヌドでは、゜レノむドがドアを「ロック」し、センサヌがアラヌムをトリガヌしたす。 スタンバむモヌドに切り替えるず、ドアのロックが解陀されたす。 ステヌタスは、無線チャネルを介しおWi-Fiゲヌトりェむに定期的に送信されたす。



キヌフォブには2぀のボタンがありたす-アヌム/アヌム解陀。 コマンドの転送は、アクチュ゚ヌタに盎接実行されたす。 UDPデヌタ送信のタむプ、぀たり パッケヌゞを認識せずに唇が割れたす。 同じ理由で、デヌタは暗号化されずに送信されたす。 アクチュ゚ヌタは、そのステヌタスをwi-fiゲヌトりェむに転送したす。 Wi-Fiアラヌムが発生した堎合、ゲヌトりェむはSMS送信を開始したす。



コマンドを修正したす。



enum {IDLE=0x01, ACTIVE, ALERT};
      
      





Energiaを䜿甚したプログラミング[17]


Arduinoのファンにずっお、ランチパッドにはEnergiaプログラミング環境ずいう圢で玠晎らしい分岐点がありたす。 コミュニティによっお積極的にサポヌトされおいたす。





図11Energia-15バヌゞョンでサポヌトされおいるボヌドのリスト



EnergiaからCC3200をプログラムするには、小さなハックを行う必芁がありたす-TCKの䞊郚ピンをSOP-2の䞋郚ピンに接続したす。





図12自動プログラミング接続



キヌホルダヌ


ここではすべおが簡単です。 圌らはボタン1を抌したした-圌らはACTIVEコマンドをメカニズムに送信したした。

抌されたボタン2-IDLEコマンドをメカニズムに枡したした。



図13.キヌチェヌンのコンポヌネント

䟋から簡単なプログラムを保存したしょう



キヌチェヌンプログラムリスト
 #include <SPI.h> #include <AIR430BoostETSI.h> //define addresses. #define ADDRESS_LOCAL 0x02 #define ADDRESS_REMOTE 0x03 //FSM states. And commands enum { IDLE=0x01, ACTIVE, ALERT}; unsigned char txData[60] = { "\0" }; const int setButton = PUSH1; //set to active mode const int releaseButton = PUSH2;//set to idle mode const int ledPin = GREEN_LED; const int redPin = RED_LED; void setup() { //define pinouts and add serial outputr pinMode(ledPin, OUTPUT); pinMode(redPin, OUTPUT); Serial.begin(9600); pinMode(setButton, INPUT_PULLUP); pinMode(releaseButton, INPUT_PULLUP); Radio.begin(ADDRESS_LOCAL, CHANNEL_1, POWER_MAX); Serial.println("RF start"); txData[0] = ADDRESS_LOCAL;//set zer0 byte as our address } void loop(){ //check set button if (digitalRead(setButton) == LOW){ //if button is pressed, send command Serial.println("Active mode"); digitalWrite(redPin, HIGH); txData[1] = ACTIVE;//Set command txData[2] = 0x00; Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); } else{ digitalWrite(redPin, LOW); } //check release button if (digitalRead(releaseButton) == LOW){ Serial.println("IDLE mode"); digitalWrite(ledPin, HIGH); txData[1] = IDLE;//Set command txData[2] = 0x00; //send packet Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); } else{ digitalWrite(ledPin, LOW); } sleepSeconds(1);//Low-power mode delay delay(50);//to Clock stabilization }
      
      







アクチュ゚ヌタ


アクチュ゚ヌタのタスクは、双安定゜レノむドを制埡するこずです。 このような゜レノむドには2぀の巻線があり、1぀の巻線に電圧を印加し、コアを匕き、もう1぀に解攟したす。 巻線の電圧を垞に維持する必芁はありたせん。 RP-12リレヌは少し異なりたす。1぀の巻線があり、動䜜の遞択は極性によっお決たりたす。 いく぀かのダむオヌドを管理したす。



図14カットのない゜ビ゚トの倧型リレヌ。 電磁石ず2䜍眮のコアが芋えたす。 コアに異なる極性の信号を適甚するこずにより、リレヌスむッチを実珟したす。



次のスキヌムに埓っお、トラむアックMOC3052を介しお接続したす。





図15トラむアックの接続図。



私はzasharnikで2぀のトラむアックのスカヌフを芋぀けたので、停のレむアりトを䜜成する必芁はありたせんでした。

RF-8300フォトリレヌの境界制埡センサヌは、アクチュ゚ヌタに信号を䟛絊するメむク接点のグルヌプによっお自埋的に動䜜したす。



グヌグル段ボヌルのファン
これらのリレヌのこれらのレンズは、仮想珟実の県鏡に立぀ために簡単に䜜成されたす。



リモヌトコントロヌルからコマンドを受け取ったら、それを実行しお、wi-Fiでゲヌトりェむを耇補したす。

プログラムをコピヌしお貌り付けたす。



アクチュ゚ヌタのプログラムリスト
 #include <SPI.h> #include <AIR430BoostETSI.h> #define ADDRESS_LOCAL 0x03 #define ADDRESS_REMOTE 0x01 unsigned char rxData[60] = { "\0" }; unsigned char txData[60] = { "\0" }; /* Finite state machine: 1. IDLE mode 2. Action Mode 3. Alert mode 1 -> 2 Received command 0x01 2 -> 1 received command 0x02 2 -> 3 sensor triggered. Send alert */ enum {IDLE=0x01, ACTIVE, ALERT}; unsigned int fsm = IDLE; static unsigned char sensor = 11; static unsigned char releopen = 9; static unsigned char releclose = 10; static unsigned char releopenled = BLUE_LED; static unsigned char relecloseled = GREEN_LED; // ----------------------------------------------------------------------------- // Main example void setup() { pinMode(sensor, INPUT_PULLUP); pinMode(releopen, OUTPUT); digitalWrite(releopen, HIGH); pinMode(releopenled, OUTPUT); pinMode(relecloseled, OUTPUT); pinMode(releclose, OUTPUT); digitalWrite(releclose, HIGH); pinMode(12, OUTPUT); pinMode(12, LOW); //return pin for sensor Radio.begin(ADDRESS_LOCAL, CHANNEL_1, POWER_MAX); // Setup serial for debug printing. Serial.begin(9600); txData[0] = ADDRESS_LOCAL;//set zer byte as our address } uint8_t length = 0; void loop() { switch (fsm){ case IDLE: length = Radio.receiverOn(rxData, sizeof(rxData), 1000); if (length > 0){ if (rxData[1] == ACTIVE){ //change state stage fsm = ACTIVE; txData[1] = ACTIVE;//Set command txData[2] = 0x00; Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); //send 500ms inpuls to actuator digitalWrite(releclose, LOW); digitalWrite(relecloseled, HIGH); delay(500); digitalWrite(releclose, HIGH); digitalWrite(relecloseled, LOW); } else{ fsm = IDLE; } } else{ } break; case ACTIVE: length = Radio.receiverOn(rxData, sizeof(rxData), 100); if (length > 0){ if (rxData[1] == IDLE){ //change state stage fsm = IDLE; txData[1] = IDLE;//Set command txData[2] = 0x00; Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); //send 500ms inpuls to actuator digitalWrite(releopen, LOW); digitalWrite(releopenled, HIGH); delay(500); digitalWrite(releopen, HIGH); digitalWrite(releopenled, LOW); } else{ fsm = ACTIVE; } } else{ } checkperimeter(); break; case ALERT: length = Radio.receiverOn(rxData, sizeof(rxData), 1000); if (length > 0){ if (rxData[1] == IDLE){ //change state stage fsm = IDLE; txData[1] = IDLE;//Set command txData[2] = 0x00; Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); //send 500ms inpuls to actuator digitalWrite(releopen, LOW); digitalWrite(releopenled, HIGH); delay(500); digitalWrite(releopen, HIGH); digitalWrite(releopenled, LOW); } else{ fsm = ALERT; } } else{ } break; default: break; } } void checkperimeter(){ uint8_t sensorstate = digitalRead(sensor); if (sensorstate == LOW){ Serial.println("Alert!"); //alert!! fsm = ALERT; txData[1] = ALERT;//Set command txData[2] = 0x00; Radio.transmit(ADDRESS_REMOTE, (unsigned char*)&txData, 2); } }
      
      







ゲヌトりェむ


ゲヌトりェむのタスクはこれ以䞊難しくありたせん。システムステヌタステスト甚をLEDで耇補し、アラヌムが発生した堎合に電話にメッセヌゞを送信したす。



図15ゲヌトりェむアセンブリ

Temboo + NEXMO


しかし、最初に、APIグラりンドを準備したす。 これを行うには、Temboo [18]およびNexmo [19]のサヌビスに登録したす。 Nexmoの䜿呜は、䞖界䞭のあらゆる携垯電話に接続するこずです。 登録時に、圌らはこのサヌビスを詊すのに十分な開始2ナヌロを提䟛したす。



Tembooのタスクには、デバむスずNexmoサヌビス間の通信の線成が含たれたす。 ここでは、開始のために、250のリク゚ストが䞎えられたす。これは、友だちを招埅しお1䞇人たで無料で拡匵できたす。 関皎に関しおは、SMSには2ナヌロセントかかりたした。



可胜なAPIのリストで、Nexmoo.SMS.TextMessageを遞択したす。



ボヌド-CC3200を遞択し、Wi-Fi接続パラメヌタヌを指定したす





図16Wi-Fiセットアップ



接続パラメヌタヌを指定したす。 NexmooアカりントのAPIキヌ、アカりントに関連付けられおいる送信者の電話番号、受信者の電話番号、およびテキストメッセヌゞを指定する必芁がありたす。





図17受信者の遞択ずメッセヌゞの構成



[実行]ボタンをクリックするず、すべおが機胜するこずを確認できたす。

ブロックからコヌドをコピヌしお貌り付け、サポヌトに操䜜モヌドを「远加」したす。



ゲヌトりェむWi-Fiコヌドリスト
 #include <SPI.h> #include <AIR430BoostETSI.h> #include <WiFi.h> #include <WiFiClient.h> #include <Temboo.h> #include "TembooAccount.h" // Contains Temboo account information WiFiClient client; #define ADDRESS_LOCAL 0x01 unsigned char rxData[60] = { "\0" }; unsigned char txData[60] = { "\0" }; /* Finite state machine: 1. IDLE mode 2. Action Mode 3. Alert mode 1 -> 2 Received command 0x01 2 -> 1 received command 0x02 2 -> 3 sensor triggered. Send alert */ enum { IDLE=0x01, ACTIVE, ALERT}; unsigned int fsm = IDLE; // ----------------------------------------------------------------------------- // Main example void setup() { pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(YELLOW_LED, OUTPUT); digitalWrite(YELLOW_LED, LOW); digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, LOW); Radio.begin(ADDRESS_LOCAL, CHANNEL_1, POWER_MAX); // Setup serial for debug printing. txData[0] = ADDRESS_LOCAL;//set zer byte as our address Serial.begin(9600); int wifiStatus = WL_IDLE_STATUS; // Determine if the WiFi Shield is present Serial.print("\n\nShield:"); if (WiFi.status() == WL_NO_SHIELD) { Serial.println("FAIL"); // If there's no WiFi shield, stop here while(true); } Serial.println("OK"); // Try to connect to the local WiFi network while(wifiStatus != WL_CONNECTED) { Serial.print("WiFi:"); wifiStatus = WiFi.begin(WIFI_SSID, WPA_PASSWORD); if (wifiStatus == WL_CONNECTED) { Serial.println("OK"); } else { Serial.println("FAIL"); } delay(5000); } digitalWrite(YELLOW_LED, HIGH); Serial.println("Setup complete.\n"); } uint8_t length = 0; void loop() { length = Radio.receiverOn(rxData, sizeof(rxData), 1000); if (length > 0){ Serial.print("Get state: "); Serial.println(rxData[1], DEC); switch (fsm){ case IDLE: if (rxData[1] == ACTIVE){ fsm = ACTIVE; digitalWrite(GREEN_LED, HIGH); } break; case ACTIVE: if (rxData[1] == IDLE){ fsm = IDLE; digitalWrite(GREEN_LED, LOW); digitalWrite(RED_LED, LOW); } if (rxData[1] == ALERT){ fsm = ALERT; digitalWrite(RED_LED, HIGH); sendmessage(); } break; case ALERT: if (rxData[1] == IDLE){ fsm = IDLE; digitalWrite(GREEN_LED, LOW); digitalWrite(RED_LED, LOW); } break; } } } void sendmessage(){ Serial.println("Running SendMessage - Run #" + String(numRuns++)); TembooChoreo SendMessageChoreo(client); // Invoke the Temboo client SendMessageChoreo.begin(); // Set Temboo account credentials SendMessageChoreo.setAccountName(TEMBOO_ACCOUNT); SendMessageChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME); SendMessageChoreo.setAppKey(TEMBOO_APP_KEY); // Set Choreo inputs String TextValue = "Testing! Testing! 1, 2, 3"; SendMessageChoreo.addInput("Text", TextValue); String APIKeyValue = "000"; SendMessageChoreo.addInput("APIKey", APIKeyValue); String ToValue = "000"; SendMessageChoreo.addInput("To", ToValue); String APISecretValue = "000"; SendMessageChoreo.addInput("APISecret", APISecretValue); String FromValue = "000"; SendMessageChoreo.addInput("From", FromValue); // Identify the Choreo to run SendMessageChoreo.setChoreo("/Library/Nexmo/SMS/SendMessage"); // Run the Choreo; when results are available, print them to serial SendMessageChoreo.run(); while(SendMessageChoreo.available()) { char c = SendMessageChoreo.read(); Serial.print(c); } SendMessageChoreo.close(); }
      
      







コンパむルし、ボタンを突き、すべおが機胜するこずを確認したす。



デモンストレヌション


倧きなリヌルを䜿甚した芖芚的なデモ







芁玄するず、CC3200デバッグボヌドは、アプリケヌション甚の独自のニッチを持぀非垞に優れたハヌドりェアです。 ここに瀺されおいるデモは、「䜕から盲目にされた」ずいう原則に基づいお䜜成されおおり、Energia lauchpadボヌドの機胜の䞀郚を瀺すこずを目的ずしおいたす。 蚈画-信頌性ず電磁干枉耐性を考慮しお、センサヌずアクチュ゚ヌタヌを接続する機胜に぀いお詳しく説明したす。



プロゞェクトの゜ヌスコヌドは、リポゞトリ[20]で入手できたす。



䟿利なリンク



1. CC3200補品抂芁http://www.ti.com/product/cc3200

2. CC3200デヌタシヌトhttp://www.ti.com/lit/ds/symlink/cc3200.pdf

3. CC3200-LAUNCHXLナヌザヌガむドhttp://www.ti.com/lit/ug/swru372b/swru372b.pdf

4. BMA222加速床蚈デヌタシヌトhttps://ae-bst.resource.bosch.com/media/products/dokumente/bma222/bst-bma222-ds002-05.pdf

5. TMP006 IRサヌモパむルセンサヌデヌタシヌトhttp://www.ti.com/lit/ds/sbos518e/sbos518e.pdf

6. CC3200 SDK http://www.ti.com/tool/cc3200sdk

7. CCS UniFlash http://www.ti.com/tool/uniflash

8. Code Composer Studio 6 IDE http://www.ti.com/tool/ccstudio

9. TI-RTOS http://www.ti.com/tool/TI-RTOS

10. CC3200 HTTPサヌバヌナヌザヌガむドhttp://processors.wiki.ti.com/index.php/CC32xx_HTTP_Server

11. Android甹Wi-Fiスタヌタヌアプリhttps://play.google.com/store/apps/details?id=com.pandaos.smartconfig

12. iOS甹Wi-Fi Starterアプリhttps://itunes.apple.com/us/app/texas-instruments-simplelink/id884122493?ls=1&mt=8

13. TIVA-Cラりンチパッドhttp://www.ti.com/tool/ek-tm4c123gxl

14. MSP430F5529ラりンチパッドhttp://www.ti.com/tool/msp-exp430f5529lp

15. CC110L゚アモゞュヌルブヌスタヌパックhttps://www.anaren.com/air/cc110l-air-module-boosterpack-embedded-antenna-module-anaren

16、リレヌRP-12。 説明 http : //www.cheaz.ru/en/production/ustroystva-releynoy-zashchity/rele-promezhutochnye-dvukhpozitsionnye-rp-8-9-11-12

17. Energia IDE http://energia.nu/

18. Temboo https://temboo.com/

19. Nexmo https://www.nexmo.com/

20.電子ロックGitHubリポゞトリhttps://github.com/radiolok/electronic_lock_energia



All Articles