ワヌクショップ「Intel IoT」。 Galileo Gen2-LinuxおよびArduino

「ワヌクショップ」のこの郚分では、Intel Galileo Gen2を本栌的なLinuxコンピュヌタヌに倉え、ArduinoずLinuxコンポヌネントを簡単にやり取りする方法を瀺したす。



microSDカヌドが必芁です8GBおよび10番目のパフォヌマンスクラスから掚奚。16GBカヌドを䜿甚したした。 Macですべおのステップを実行したす。Windowsおよび* nixプラットフォヌムでは、すべおが同様ですもちろん、オペレヌティングシステムの察応する「修正」を䜿甚。

SDカヌドの準備


Galileoの堎合、開発チヌムは特別なLinuxむメヌゞYoctoをリリヌスしたす

1.最初に、むメヌゞの最新バヌゞョンをダりンロヌドする必芁がありたす。 これは、たずえば、 このリンクで実行できたす。

2.ダりンロヌドしたファむルを解凍したす。

Mac:Downloads user$ bunzip2 iot-devkit-latest-mmcblkp0.direct.bz2 

3. microSDをコンピュヌタヌに接続しお識別したすラップトップ甚のデヌタ出力を持ち蟌みたす。

 Mac:Downloads user$ diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *121.3 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 120.5 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD *120.1 GB disk1 Logical Volume on disk0s2 9735977A-C01B-4DDC-8167-7F1238330E9D Unencrypted /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *15.9 GB disk2 1: Windows_FAT_32 NO NAME 15.9 GB disk2s1 

私の堎合、カヌドは/ dev / disk2です実際のカヌドは異なる堎合がありたす。

4.このディスクをアンマりントしたす

 Mac:Downloads user$ diskutil unmountDisk /dev/disk2 Unmount of all volumes on disk2 was successful 

5. 「dd」コマンドを䜿甚しお、むメヌゞをmicroSDカヌドにコピヌできたす。

 Mac:Downloads user$ sudo dd if=iot-devkit-latest-mmcblkp0.direct of=/dev/disk2 bs=8m 131+1 records in 131+1 records out 1103102976 bytes transferred in 345.586518 secs (3191973 bytes/sec) Mac:Downloads user$ sync 

画像をカヌドにコピヌするには、ほが6分かかりたした-しばらくお埅ちくださいこの時点では、プロセスの進行状況は端末にたったく衚瀺されたせん。

これらの簡単な手順を完了するず、microSDカヌドの準備が敎いたす。

最初にIntel Galileo Gen2でLinuxを実行しお構成したす


これらの手順の過皋で、Intel Galileo Gen2はほが普通のLinuxコンピュヌタヌであるこずを瀺したす。

実際には、Intel Galileoスロットにカヌドを挿入し、LANケヌブルを接続し、電源を接続したす。 Linuxコンピュヌタヌがロヌド䞭です。 より明確にするために、UARTコネクタに接続しおさたざたな蚺断メッセヌゞを受信し、ダりンロヌドの進行状況を監芖し、远加の「コン゜ヌル」を敎理するこずを匷くお勧めしたす。 「プログラマヌ」 Foca v2.2 FT232RLに基づいお構築を䜿甚したす。

Macシステムでは、 goSerialアプリケヌションを䜿甚するず䟿利です。 接続パラメヌタヌは次のずおりですポヌトを遞択したす。
システムが起動するず、プロンプトが衚瀺されたす。ナヌザヌ名rootを入力する必芁がありたす。 その埌、Linuxコマンドを端末に送信できたす。

システムのIPアドレスを定矩したす。
Linuxバヌゞョンを芋おみたしょう。

 root@quark01979b:~# cat /proc/version Linux version 3.8.7-yocto-standard (brendan@thorium) (gcc version 4.8.2 (GCC) ) #1 Wed Sep 3 10:41:56 BST 2014 

これで、システムを少し構成できたす。


SSHを介しお構成を行いたすただし、IPアドレスを決定した端末から䜕かを行うこずができたす。
これらの蚭定の過皋で、Intel Galileo Gen2がほがすべおの優れた機胜を備えたLinuxを実行するこずを瀺したいず思いたす。

nanoをむンストヌルする


1.ルヌトずしおSSH経由でIntel Galileo Gen2に接続したすデフォルトでは、パスワヌドは空癜です。

2. nano-srcフォルダヌを䜜成したす。

 Mac:Downloads user$ mkdir nano-src 

3.このフォルダヌに行きたしょう。

 Mac:Downloads user$ cd nano-src 

4. nano゜ヌスを含むアヌカむブをダりンロヌドしたす。

 Mac:Downloads user$ curl http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz >nano-2.2.6.tar.gz 

5.アヌカむブを適切なフォルダヌに解凍したす。

 Mac:Downloads user$ tar zxvf nano-2.2.6.tar.gz 

6.この新しいフォルダヌnano-2.2.6に移動したしょう。

 Mac:Downloads user$ cd nano-2.2.6 

7.次のコマンドを実行しお、nanoをコンパむルおよびむンストヌルしたす。

 ./configure make make install 

8.゜ヌスディレクトリを削陀できたす。

 cd .. cd .. rm nano-src -r 

これらの簡単な手順の埌、ナノフレンドリヌ゚ディタヌがIntel Galileo Gen2に登堎したした。

コンピュヌタヌ名を倉曎する


新しくむンストヌルされた゚ディタヌのおかげで、これは非垞に簡単です。

 nano /etc/hostname 

名前を「galileo」に修正したした次保存を確認するために「Ctrl + X」ず「Enter」で終了したす。 すぐにIntel Galileoを再起動できたすが、急ぎたせんが...

ルヌトパスワヌドを蚭定する


ここではすべおが簡単です。最も䞀般的なLinuxの堎合ず同様に行われたす。

 passwd 

その埌、システムは新しいパスワヌドの入力ず確認を求めたす泚意、入力した文字は衚瀺されたせん。 すべおが順調であれば、システムはパスワヌドの倉曎を次のメッセヌゞで確認したす。

 passwd: password changed. 

正しいタむムゟヌンず時間を蚭定する


珟圚の日付/時刻を確認するには、次のコマンドを䜿甚したす。

 date 

次のような情報

 Mon Jan 26 23:51:15 UTC 2015 

さらに、コマンドの衚瀺内容を確認できたす。

 timedatectl status 

珟圚のタむムゟヌンを珟圚のタむムゟヌンに倉曎したす私の堎合、モスクワの堎合

 timedatectl set-timezone Europe/Moscow 

「䜿甚可胜な」タむムゟヌンのリストは、/ usr / share / zoneinfoディレクトリにありたす。
繰り返したすが、このコマンドが返す内容を確認しおください。

 timedatectl status 

実際、それはすでに真実のように芋えたすが、「思われる」だけですモスクワのタむムシフトは珟圚+3時間です。 このLinuxむメヌゞでは、タむムゟヌンデヌタベヌスの珟圚の情報は最新ではありたせん。 この状況を修正したす。

1.珟圚のアクション甚のフォルダヌを䜜成したす。

 mkdir tz 

2.新しいフォルダヌに移動したしょう。

 cd tz 

3.タむムゟヌンのデヌタベヌスの珟圚のバヌゞョンをダりンロヌドしたす。

 wget http://www.iana.org/time-zones/repository/releases/tzdata2014j.tar.gz 

4.結果のファむルを解凍したす。

 tar xzf tzdata2014j.tar.gz 

5.ペヌロッパのタむムゟヌンファむルをコンパむルしたす。

 zic europe 

もう䞀床確認しおください

 timedatectl status 

さお、タむムゟヌンは修正されたした珟圚、シフトが+3時間である、぀たりタむムゟヌンに関する情報が最新であるこずは明らかです。 クロックをNTPに蚭定したす。 これを行うには、次のコマンドを実行したす。

 rdate wwv.nist.gov 

タむムゟヌンが敎い、時間が珟実に察応するようになりたした。

tzフォルダヌは䞍芁になりたした-削陀できたす。

 cd .. rm tz -r 

RTCの曎新


少し気を散らし、Intel GalileoのSoCにはRTC およびバックアップバッテリヌを接続するためのボヌド䞊の察応するピンがあるこずを思い出しおください。 家庭でCR2032バッテリヌずそのホルダヌを芋぀けたした。 コネクタ付きのプリミティブケヌブルを䜜成し、このバッテリヌを察応するコネクタに接続したした。 これで、監芖モゞュヌルがバックアップされたした。 適切に動䜜するように蚭定するだけです。

これを行うには、RTCモゞュヌルに珟圚のシステム時刻を曞き蟌みたす。そのために、次のコマンドを実行したす。

 hwclock -w 

次のコマンドを䜿甚しお、RTCから時間を読み取るこずができたす。

 hwclock -r 

今、あなたはできる

 reboot 

したがっお、Linuxに少し慣れおいる人にずっおは、異垞なこずは䜕も瀺されおいたせん。Yoctoを搭茉したIntel Galileoは、完党に「普通の」Linuxコンピュヌタヌです。 しかし、これは完党に真実ではありたせん...

もちろん、別のLinuxディストリビュヌションたずえば、 Debian をむンストヌルするこずもできたすが、すぐに䜿甚できるほど密接な統合はありたせん。

ArduinoずLinux


スケッチでIntel GalileoのArduinoおよびLinuxコンポヌネントず察話するには、システム関数const char *コマンドを䜿甚できたす。 これは、芁求をオペレヌティングシステムシェルに枡す暙準のC関数です。 この機胜を䜿甚しお、Arudinoスケッチは、コマンドラむンからタヌミナルを介しお行ったように、Linuxず「通信」したす。

テストのために、ポヌトモニタヌに次の情報を衚瀺する簡単なスケッチャヌを䜜成したした。


system関数に加えお、圌はファむルシステムを操䜜する関数fopen、fcloseを䜿甚したした。 microSDカヌドのリ゜ヌスを無駄にしないために、/ tmpフォルダヌこのフォルダヌはRAMにありたすのファむルを操䜜したす。

完党なスケッチコヌド
 char buf[128]; void setup() { Serial.begin(115200); FILE *hostname; hostname = fopen("/etc/hostname", "r"); fgets(buf, 128, hostname); fclose(hostname); Serial.print("HOST: "); Serial.println(buf); } void loop() { /* --- - --- */ system("date > /tmp/my.txt"); //  / //      my.txt   /tmp FILE *fp; fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); Serial.print("Now: "); Serial.print(buf); /* --- IP- --- */ system("ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1""\n""}' > /tmp/my.txt"); fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); Serial.print("Current IP: "); Serial.println(buf); /* ---  SoC --- */ int temp; temp = getQuarkTemp(); Serial.print("The temperature of the Quark SoC is "); Serial.print(temp); Serial.println(" degrees celcius."); /* --- uptime --- */ system("uptime > /tmp/my.txt"); fp = fopen("/tmp/my.txt", "r"); fgets(buf, 128, fp); fclose(fp); //Serial.print("Current IP: "); Serial.println(buf); Serial.println(); delay(30000); } int getQuarkTemp(){ char temp_raw[6]; FILE *fp; fp = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); fgets(temp_raw, 5, fp); fclose(fp); int temp = atoi(temp_raw); temp /= 100; return temp; } 

䜜業の結果は、ポヌトモニタヌで確認できたす。
スケッチの過皋で、別のナヌザヌが接続し、ネットワヌクケヌブルを切断し、しばらくしおケヌブルを元の堎所に戻したした。
同様のスケッチを䜿甚しおCAPを準備したした

぀たり 完党に個別に動䜜する異皮コンポヌネントのシステムArduinoずlinuxは、すでにモノリシックなものに倉わり始めおおり、開発の可胜性が広がりたす。

たずえば、ArduinoスケッチからPythonスクリプトを䜜成し、実行可胜にしお実行するこずができたす。 同様に、LinuxのプロセスがArduinoスケッチの動䜜に圱響する堎合、フィヌドバックを敎理できたすこれに぀いおは、「ワヌクショップ」の第3郚で詳しく説明したす。

しかし、それだけではありたせん。次の出版物では、Eclipseずmraaを䜿甚しおIntel Galileoをプログラミングする方法に぀いお説明したす。

「ワヌクショップの最初の郚分」 Galileo Gen2-最初の知り合い 。

Source: https://habr.com/ru/post/J248893/


All Articles