HOME | Raspberry Pi | ビジネス書籍紹介 | 2024-11-22 (Fri) Today's Access : 78 Total : 1098158. Since 10 Sep. 2019

Arduiono開発環境 PlatformIO
2019.12.26 / 2023.10.14更新

YouTube 動画でポイントを説明しています。
上記画像をクリックすると再生できます。

今回は、PlatformIOを用いて、Arduiono の開発環境を構築します。 PlatformIOは、ESP32やArduinoなど、様々な組込みデバイスを対象とした統合開発環境です.

構成図では、Raspberry Pi Zero W に Raspbian Stretch Lite をインストールしてあります。 Zero は Wifi経由で、SSH接続によりパソコンから制御しています。

ちょっとしたシールドのテストであれば、Arduino Nano をブレッドボードに挿して、Raspberry Pi Zero WとUSB接続して、 シリアル通信すれば足りてしまいます。


■pythonのインストール
まずは、python3-pip をインストールします。pip は、Pythonパッケージのインストールなどを行うユーティリティです。
$ sudo apt install python3-pip
$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
■platformioをインストール
$ sudo pip3 install -U platformio
※platformioインストール時に短縮コマンドとしてpioも設定されます。

$ platformio --version
This system supports the C.UTF-8 locale which is recommended.
You might be able to resolve your issue by exporting the
following environment variables:

    export LC_ALL=C.UTF-8
    export LANG=C.UTF-8
上記のようなエラーが発生した場合には、現在のロケール確認します
$ locale
LANG=
LANGUAGE=
.........
対応しているロケール一覧を表示します
$ locale -a
C
C.UTF-8
POSIX
en_GB.utf8
$ sudo raspi-config
4.Locatisation Options
  → I1 Change Locale
  → ja_JP.UTF-8 UTF-8
  → ja_JP.UTF-8
  

Generating locales (this might take a while)...
  en_GB.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.
再度、ロケール一覧を表示します
$ locale -a
C
C.UTF-8
POSIX
en_GB.utf8
ja_JP.utf8
設定を反映させます
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

確認します
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja
ログインし直します
$ locale (あるいは $ localectl status)
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja
....
$ platformio --version
PlatformIO, version 4.1.0
■platformioのPATH の確認

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/local/games:/usr/games

$ which platformio
/usr/local/bin/platformio

PATHが通っていない場合は
$ echo 'export PATH=${PATH}:/usr/local/bin' >> ~/.bashrc

■udevの設定 (Ubuntuのみ)

dialoutグループに自分を追加します。
$ cat /etc/group | grep dialout
dialout:x:20:pi

$ sudo usermod -a -G dialout ${USER}
※Raspbianの場合、ユーザ pi は既に含まれているので、実際には必要ありません

■udev rulesの設定

platformioが、動的にデバイスを管理するために、ルールファイルを追加します。

$ cd /etc/udev/rules.d
$ ls
99-com.rules

$ sudo wget https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules

$ ls
99-com.rules 99-platformio-udev.rules

$ sudo udevadm control --reload-rules

■利用できるボードの確認

$ platformio boards

$ platformio boards "arduino uno" ← 絞り込みたい場合
Platform: atmelavr
---------------------------------------------------------------------
ID                 MCU          Frequency  Flash   RAM    Name
---------------------------------------------------------------------
uno                ATMEGA328P   16MHz     31.50KB 2KB    Arduino Uno
$ platformio boards "arduino nano"
Platform: atmelavr
----------------------------------------------------------------------
ID                 MCU        Freq.  Flash RAM  Name
----------------------------------------------------------------------
nanoatmega168      ATMEGA168  16MHz  14KB  1KB  Arduino Nano ATmega168
nanoatmega328      ATMEGA328P 16MHz  30KB  2KB  Arduino Nano ATmega328
nanoatmega328new   ATMEGA328P 16MHz  30KB  2KB  Arduino Nano ATmega328
                                                  (New Bootloader)
$ platformio boards "Leonard"
Platform: atmelavr
---------------------------------------------------------------------
ID               MCU        Freq.  Flash  RAM    Name
---------------------------------------------------------------------
leonardo         ATMEGA32U4 16MHz  28KB   2.50KB Arduino Leonardo
leonardoeth      ATMEGA32U4 16MHz  28KB   2.50KB Arduino Leonardo ETH

Arduino Nano と Raspberry Pi Zero W をUSB接続します。

■シリアルデバイスの確認
$ platformio device list
/dev/ttyUSB0
------------
Hardware ID: USB VID:PID=1A86:7523 LOCATION=1-1
Description: USB2.0-Serial

/dev/ttyAMA0
------------
Hardware ID: 20201000.serial
Description: ttyAMA0
Arduino Nano が /dev/ttyUSB0 として認識されているのがわかります。

■プロジェクトの作成
$ mkdir -p /home/pi/Arduino/sample
$ cd /home/pi/Arduino/sample

$ platformio init

/home/pi/Arduino/sample
                   ├── .gitignore
                   ├── .travis.yml
                   ├── include/
                   ├── lib/
                   ├── platformio.ini
                   ├── src/
                   └── test/

$ cat platformio.ini

;PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
オプションを付けずに init コマンドを実行すると platformio.ini には実際の設定は追加されません。
Arduino Nano を指定して実行してみます。
$ platformio init -b nanoatmega328

$ cat platformio.ini

;PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:nanoatmega328]
framework = arduino
board = nanoatmega328
platform = atmelavr
Arduino Uno を指定して実行してみます。
$ platformio init -b uno

$ cat platformio.ini

;PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:nanoatmega328]
framework = arduino
board = nanoatmega328
platform = atmelavr

[env:uno]
platform = atmelavr
framework = arduino
board = uno
■L チカ・プログラム
$ vi src/led.ino
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}
ino ファイル名は、プロジェクトディレクトリ名と一致する必要はありません。
ただし、複数のinoファイルをsrcディレクトリに配置した際、void setup()関数が複数存在すると、ビルド時にエラーになります。
/home/pi/Arduino/sample/src/SerialMonitor.ino: In function 'void setup()':
/home/pi/Arduino/sample/src/SerialMonitor.ino:2:6: error: redefinition of 'void setup()'

$ platformio run
Processing nanoatmega328 (framework: arduino; board: nanoatmega328; platform: atmelavr)
.....
Processing uno (platform: atmelavr; framework: arduino; board: uno)
.....
Environment Status Duration
------------- -------- ------------
nanoatmega328 SUCCESS 00:00:38.913
uno SUCCESS 00:00:35.662

Nano と Uno に対して、それぞれビルドが実行されます。 特定の環境だけビルドしたい場合は -e オプションで指定します。

$ platformio run -e nanoatmega328
Processing nanoatmega328 (framework: arduino; board: nanoatmega328; platform: atmelavr)
.....
Environment Status Duration
------------- -------- ------------
nanoatmega328 SUCCESS 00:00:20.188
uno IGNORED

環境を指定しないで run コマンドを実行した時のデフォルトの環境を platfromio.ini で指定できます。

$ vi platformio.ini
[platformio]
default_envs=nanoatmega328

■アップロード

$ platformio run -e nanoatmega328 -t upload

複数の環境定義を列記してある場合に、環境指定を行わないで、アップロードしようとすると、 該当する環境(ここではnanoatmega328)はアップロードされますが、接続されていない Uno に関してはエラーとなります。

$ platformio run -t upload

Processing nanoatmega328 (framework: arduino; board: nanoatmega328; platform: atmelavr)
.....
avrdude done. Thank you.
========== [SUCCESS] Took 38.59 seconds ==========

Processing uno (platform: atmelavr; framework: arduino; board: uno)
....
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
.......


LEDが光ります(写真向かって一番左のLED)。

備考:Arduinoボード インジケーター
L:「DIGITAL 13番PIN」から電圧が出力されているときに点灯
TX:トランミッション、つまりデータを送信しているときに光る
RX:レセプション、つまりデータを受信しているときに光る

■ライブラリーを利用する


温湿度センサーDHT11を使用して「温度、湿度、体感温度」を取得します。

$ mkdir -p /home/pi/Arduino/dht11
$ cd /home/pi/Arduino/dht11

$ platformio init -b nanoatmega328
$ vi src/dht11.ino

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHT11 test!"));

  dht.begin();
}

void loop() {
  delay(2000);

  float humidity    = dht.readHumidity();
  float temperature = dht.readTemperature();
  float heatIndex   = dht.computeHeatIndex(temperature, humidity, false);
  if (isnan(humidity) || isnan(temperature) || isnan(heatIndex)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.print("Humidity:");
  Serial.print(humidity);
  Serial.print("%  Temperature:");
  Serial.print(temperature);
  Serial.print("°C Heat index:");
  Serial.print(heatIndex);
  Serial.println("°C");
}
DHT系の専用ライブラリを使用しています
https://github.com/adafruit/DHT-sensor-library

$ platformio run
/home/pi/Arduino/dht11/src/dht11.ino:1:17: fatal error: DHT.h: No such file or directory

*************************************************************
* Looking for DHT.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:DHT.h"
* Web > https://platformio.org/lib/search?query=header:DHT.h
*
*************************************************************

DHT.h がないので、エラーとなりますが、親切にライブラリの探し方を教えてくれてます。

■ライブラリのインストール

$ platformio lib search "header:DHT.h"
Found 16 libraries:

DHT sensor library
==================
#ID: 19
Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors

Keywords: sensors
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, GigaDevice GD32V, Infineon XMC, Intel ARC32, Kendryte K210, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, ST STM8, Teensy, TI MSP430
Authors: Adafruit
......

16個のライブラリーが登録されていて、一番最初に見つかりました。
表示されているIDを用いて、さらに詳しい情報を確認してみます。
$ platformio lib show 19
.....
ライブラリーをインストールします。
$ platformio lib install 19
Library Storage: /home/pi/Arduino/dht11/.pio/libdeps/nanoatmega328
LibraryManager: Installing id=19
DHT sensor library @ 1.3.8 has been successfully installed!
ライブラリーのホルダーが生成されています。
$ ls /home/pi/Arduino/dht11/.pio/libdeps/nanoatmega328
DHT sensor library_ID19

フォルダーの中を見てみます。
$ ls -al "/home/pi/Arduino/dht11/.pio/libdeps/nanoatmega328/DHT sensor library_ID19"
drwx------ 4 pi pi 4096 12月 20 20:39 .
drwxr-xr-x 3 pi pi 4096 12月 20 20:39 ..
drwxrwxr-x 2 pi pi 4096 12月 20 20:39 .github
-rw-rw-r-- 1 pi pi 67 11月 3 15:00 .gitignore
-rw-rw-r-- 1 pi pi 1144 11月 3 15:00 .library.json
-rw-rw-r-- 1 pi pi 679 11月 3 15:00 .travis.yml
-rw-rw-r-- 1 pi pi 1288 11月 3 15:00 CONTRIBUTING.md
-rw-rw-r-- 1 pi pi 11765 11月 3 15:00 DHT.cpp
-rw-rw-r-- 1 pi pi 2519 11月 3 15:00 DHT.h
-rw-rw-r-- 1 pi pi 6733 11月 3 15:00 DHT_U.cpp
-rw-rw-r-- 1 pi pi 3078 11月 3 15:00 DHT_U.h
-rw-rw-r-- 1 pi pi 4705 11月 3 15:00 README.md
drwxrwxr-x 4 pi pi 4096 12月 20 20:39 examples
-rw-rw-r-- 1 pi pi 529 11月 3 15:00 keywords.txt
-rw-rw-r-- 1 pi pi 353 11月 3 15:00 library.properties

環境設定ファイルにライブラリーを指定します。
$ vi platformio.ini
[env:nanoatmega328]
platform = atmelavr
framework = arduino
board = nanoatmega328
lib_deps =
  19
$ platformio run

.pio/libdeps/nanoatmega328/DHT sensor library_ID19/DHT_U.h:36:29: fatal error: Adafruit_Sensor.h: No such file or directory

*************************************************************
* Looking for Adafruit_Sensor.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:Adafruit_Sensor.h"
* Web > https://platformio.org/lib/search?query=header:Adafruit_Sensor.h
*
*************************************************************

再度、ビルドを実行してみると、今度はDHTライブラリーが参照しているヘッダーファイルがないためにエラーになります。
同様にライブラリーを検索して、インストール、環境設定ファイルにライブラリーを追記します。

$ platformio lib search "header:Adafruit_Sensor.h"

Found 12 libraries:

Adafruit Unified Sensor
=======================
#ID: 31
Required for all Adafruit Unified Sensor based libraries.

Keywords: sensors
Compatible frameworks: Arduino
Compatible platforms: Atmel AVR, Atmel SAM, Espressif 32, Espressif 8266, Intel ARC32, Microchip PIC32, Nordic nRF51, Nordic nRF52, ST STM32, ST STM8, Teensy, TI MSP430
Authors: Adafruit
......
$ platformio lib install 31

Library Storage: /home/pi/Arduino/dht11/.pio/libdeps/nanoatmega328
LibraryManager: Installing id=31
Downloading  [####################################]  100%
Adafruit Unified Sensor @ 1.0.3 has been successfully installed!

$ vi platformio.ini
[env:nanoatmega328]
platform = atmelavr
framework = arduino
board = nanoatmega328
lib_deps =
  19
  31

複数のライブラリを指定する場合はライブラリごとに改行して記述します
$ platformio run -e nanoatmega328 -t upload

■platformio シリアルモニター
$ platformio device monitor -p /dev/ttyUSB0 -b 9600
--- Miniterm on /dev/ttyUSB0  9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
DHT11 test!
Humidity:40.00%  Temperature:21.60°C Heat index:16.73°C
Humidity:40.00%  Temperature:21.60°C Heat index:16.73°C
使用しているポートが1つの場合は、ポート指定をしなくても動くようですが、
$ platformio device monitor -b 9600
接続しているシリアルボートを確認して
$ platformio device list
明示的にポート指定したほうがよいと思います。
$ platformio device monitor -p /dev/ttyUSB0 -b 9600

■ライブラリーを削除する
$ platformio lib uninstall 19
Uninstalling DHT sensor library @ 1.3.8:        [OK]
■ビルドオプションを指定する
ESP8266はTCP/IPスタックとマイクロコントローラを備えたWi-Fiモジュールです。

https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
ESP8266.h

たとえば ESP8266 というライブラリはソフトウェアシリアルを利用できますが、利用するにはマクロで ESP8266_USE_SOFTWARE_SERIAL という値が定義されていなければなりません。
#ifdef ESP8266_USE_SOFTWARE_SERIAL
    ESP8266(SoftwareSerial &uart, uint32_t baud = 9600);
#else /* HardwareSerial */
    ESP8266(HardwareSerial &uart, uint32_t baud = 9600);
#endif
このようなばあいには build_flags を使ってコンパイラにオプションを渡すことができます。
$ vi platformio.ini

[env:uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps =
  ESP8266
build_flags = -D ESP8266_USE_SOFTWARE_SERIAL
これで ESP8266 に SoftwareSerial を渡すことができるようになります。

■共通変数の設定

任意の共通セクション名を用意して、各セクションが参照するようにします。
$ vi platformio.ini

[common]
lib_deps =
  19
  31
build_flags = -D ESP8266_USE_SOFTWARE_SERIAL

[env:nanoatmega328]
platform    = atmelavr
board       = nanoatmega328
framework   = arduino
build_flags = ${common.build_flags}
lib_deps    = ${common.lib_deps}

[env:uno]
platform    = atmelavr
board       = uno
framework   = arduino
build_flags = ${common.build_flags}
lib_deps    = ${common.lib_deps}
■基本コマンド
platformio update                  パッケージのアップロード
platformio upgrade                 パッケージのアップグレード
platformio boards                  ボード一覧表示
platformio init --board=<ボード名> プロジェクト作成
platformio run                     ビルド
platformio run --target=upload     ビルドとアップロード
platformio run --target=clean      クリーン
platformio device list            	シリアルポート一覧表示
platformio device monitor -p <デバイス> -b <ボーレート>	シリアルモニタ
 Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2019.12.19 ファイル共有 dokany + Win-sshfs
2019.12.26 Arduino開発環境構築 PlatformIO
2022.02.08 Zero 2 W と Bullseye
2022.07.15 NAS導入とApache2パス設定
2023.04.01 秋月・amazon・PIMORONI・tindie
2023.07.16 ログ表示
2023.10.16 漢字フォントの表示と拡張
2024.04.23 NASリプレース
2024.10.24 Bookworm & PlatformIO


Arduinoで学ぶ組込みシステム入門(第2版)
●Arduinoを使って組込みシステム開発を理解する
・ハードウェアやソフトウェアなどの基礎知識/ ・設計から実装までを系統的に説明するモデルベース開発/ ・Arduinoを用いた実際の開発例

最新 使える! MATLAB 第3版
◆◆すぐに「使える!」 全ページフルカラー!◆◆
・MATLAB R2022bに対応し、解説もより詳しく!/ ・コマンド・スクリプトの例が豊富で、動かして学べる!/ ・超基本から解説。これから使いはじめる人にぴったり!/ ・全編フルカラー、スクリーンショットも豊富!

Amazon Web Services基礎からのネットワーク&サーバー構築改訂4版
1.システム構築をインフラから始めるには/ 2.ネットワークを構築する/ 3.サーバーを構築する/ 4.Webサーバーソフトをインストールする/ 5.HTTPの動きを確認する/ 6.プライベートサブネットを構築する/ 7.NATを構築する/ 8.DBを用いたブログシステムの構築/ 9.TCP/IPによる通信の仕組みを理解する

C言語は第二の母国語: 独学学生時代から企業内IT職人時代に培った、独立のための技術とノウハウ 平田豊著
学生時代から独学でプログラミングをはじめ、企業内でデバイスドライバを開発し、そして独立後もたくさんのアプリケーション開発や技術書制作に携わってきた著者。その筆者が大事に使い続ける「C言語」の“昔と今”について、気づいたことや役立つ知識、使ってきたツールなどについて、これまで記してきたことを整理してまとめました。 本書では、現役プログラマーだけでなく、これからプログラミングを学ぶ学生などにも有益な情報やノウハウを、筆者の経験を元に紹介しています。

1冊ですべて身につくJavaScript入門講座
・最初の一歩が踏み出せる! 初心者に寄り添うやさしい解説 ・最新の技術が身につく! 今のJavaScriptの書き方・使い方 ・絶対に知っておきたい! アニメーションとイベントの知識 ・プログラミングの基本から実装方法まですべて学べる

図解! Git & GitHubのツボとコツがゼッタイにわかる本
ソフトウェア開発では欠かすことのできないGit、GitHub。 これからGit、GitHubを使いたいという入門者の方でも、実際に手を動かしながら使い方を学べます。

C自作の鉄則!2023 (日経BPパソコンベストムック)
メーカー製のパソコンはスペックが中途半端で、自分が本当に欲しい機種がない――。そう思っている人には、ぜひ自作パソコンをお薦めします。自作パソコンのパーツは進化が速く、しかも驚くほど種類が豊富。価格も性能も、幅広く用意されているため、満足度100%の“自分だけの1台”を手に入れることができます。

Interface 2023年6月号
特集:第1部 フィルタ設計 基礎の基礎/ 第2部 係数アプリや波形観測アプリで合点!FIR&IIRフィルタ作り/ 第3部 配布プリント基板で体験!マイコンで動くフィルタ作り

日経Linux 2023年5月号
【特集 1】 AI時代の最強フリーソフト ~ 25のやりたいを実現! 【特集 2】 AWS、Azureのうまみを無料で体感!面倒なことはクラウドに任せよう 【特集 3】 新しいRaspberry Pi Cameraで遊んでみよう 【特集 4】 Linuxで旧型PCを復活! 1kg切るモバイルPCを「ChromeOS Flex」でChromebook化

ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。

地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる! 地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開

Raspberry Piのはじめ方2022
本書は、ラズパイやPicoの買い方やインストール、初期設定といった基本から、サーバー、電子工作、IoT、AIといったラズパイならではの活用方法まで、1冊でお届けします。 ラズパイをこれから始める方向けに、全36ページの入門マンガ「女子高生とラズベリーパイ」も巻末に掲載。これを読むだけでラズパイがどんなものなのか、すぐに分かって触れるようになります。

ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。 Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。 専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。 本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。

攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc. 世界のトップはなぜプログラマーなのか?

ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場! 高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。 DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。 作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。

Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。 この本では,ベイズ統計学のきほんをやさしく紹介していきます。

白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81


無水エタノールP 500mlx2個パック(掃除)


ケイバ(KEIBA) マイクロニッパー MN-A04


サンハヤト SAD-101 ニューブレッドボード


白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02


[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠


Copyright © 2011-2024 Sarako Tsukiyono All rights reserved®.