GPS情報取得
2021.11.27
YouTube でも紹介しています。画像をクリックすると再生できます。
GPSモジュールを使って、複数の測位衛星から収集、分析された測位情報を取得します。
■GPS受信機キット 1PPS出力付き「みちびき」3機受信対応
NMEA0183に準拠した緯度・経度・高度・時刻などの各種ナビゲーション情報をシリアル信号で出力します。GPS衛星追尾中(三次元測位中)は正確な1PPS(1秒)信号を出力します。NMEAセンテンス更新回数を毎秒10回(最大)にすることができます。日本の準天頂衛星システム(QZSS)「みちびき」3機受信(衛星番号193、194、195)に対応しています。
・GPSモジュール:GYSFDMAXB(太陽誘電)
・搭載GPS受信チップ:MT3339(MediaTek)
・受信周波数:1575.42MHz(L1,C/Aコード)
・受信チャネル数:66(アクイジション)、22(トラッキング)
・対応測位衛星システム:GPS(米国)、QZSS(日本)
・受信(トラッキング)感度:-164dBm(typ.)
・測位確度:2m(typ.緯経度の水平位置)@-135dBm
・出力データ形式:NMEA0183V3.01準拠
・測地系:WGS1984(デフォルト)
・電源電圧:DC5V(3.8V~12V)/・電源電流:40mA
・入出力信号レベル:C-MOSロジック(3.3V)レベル、非同期シリアル信号
・UART通信速度:9600bps(デフォルト)、4800~115200bps
・出力データ更新レート:毎秒1回(デフォルト)、毎秒1~10回出力可
・1PPS出力:C-MOSロジック(3.3V)レベル、パルス幅:100mS(アクティブLow)
・インジケータ:赤色LEDによる通電表示、衛星追尾中(1PPS)表示
株式会社秋月電子通商
■システム構成
ノートパソコンから、TeraTermによりラズベリーパイにSSH接続して操作します。
ラズベリーパイとGPSモジュールはUART接続しています。
■GPSモジュールの組み立て
GPS受信機キットには、GPSモジュール本体、CR2032電池、電池ホルダー、ヘッダーピンが付属します。
このGPSモジュールは、入出力信号レベル3.3V、電源電圧はDC5Vです。
3.3V駆動のESP32では、5V出力端子を持たないものもあるので、昇圧回路を組んで、GPSモジュールの5V電源端子に接続するようにしました。
GPSモジュールに添付されていたバッテリーバックアップ用の電池ホルダーは、GPSモジュールの背面にはんだ付けすることが可能ですが、
そうすると、ユニバーサル基板に固定できないので、分離して使用しました。
受信モジュールにはヘッダーピンをハンダ付けして、ユニバーサル基板のスルーホールに通しています。
受信モジュールとはメスピン・ワイヤーでつなげているだけなので、モジュールは取り外せます。
■ラズベリーパイとの接続
ラズベリーパイとの接続は下記の通りです。
GYSFDMAXB | | Raspberry Pi |
5V | <-(昇圧)- | 1:3V3 |
GND | --------- | 6:GND |
RXD | <-------- | 8:TXD0(GPIO14) |
TXD | --------> | 10:RXD(GPIO15) |
Sparkfun ESP32 Thing Plus と 色々カスタマイズしていますが、Raspberry Pi 3 model B です。
ラズベリーパイのOSは、Raspbian GNU/Linux 10 (buster) です。
■シリアル通信(UART)の確認
まずは、UARTにより、GPSモジュールからのデータを受信してみます。
$ vi serialtest.c
#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>
void main(){
int fd = serialOpen("/dev/ttyAMA0",9600);
if (fd!=-1) {
while(1){
while(serialDataAvail(fd)){
putchar(serialGetchar(fd));
}
}
}
}
プログラムをビルドして実行すると、GPSモジュールからの情報を取得できます。
$ gcc -o serialtest serialtest.c -lwiringPi
$ ./serialtest
$GPVTG,126.59,T,,M,0.22,N,0.42,K,A*32
$GPZDA,135558.000,09,11,2021,,*51
$GPGGA,135559.000,3540.5648,N,13944.6910,E,1,7,1.42,59.3,M,38.8,M,,*61
$GPGLL,3540.5648,N,13944.6910,E,135559.000,A,A*58
$GPGSA,A,3,08,26,27,10,21,194,195,,,,,,1.70,1.42,0.93*03
$GPGSV,3,1,12,194,88,165,29,195,76,186,23,27,65,017,37,08,63,289,32*74
$GPGSV,3,2,12,21,34,195,24,26,26,109,17,10,12,093,22,23,09,062,18*77
$GPGSV,3,3,12,01,08,201,,04,07,228,20,40,02,261,,193,,,*71
$GPRMC,135559.000,A,3540.5648,N,13944.6910,E,0.23,126.59,091121,,,A*6D
$GPVTG,126.59,T,,M,0.23,N,0.43,K,A*32
$GPZDA,135559.000,09,11,2021,,*50
$GPGGA,135600.000,3540.5648,N,13944.6910,E,1,7,1.42,59.3,M,38.8,M,,*6E
$GPGLL,3540.5648,N,13944.6910,E,135600.000,A,A*57
$GPGSA,A,3,08,26,27,10,21,194,195,,,,,,1.70,1.42,0.93*03
$GPGSV,3,1,12,194,88,165,29,195,76,186,24,27,65,017,38,08,63,290,32*74
$GPGSV,3,2,12,21,34,195,25,26,26,109,17,10,12,093,22,23,09,062,19*77
$GPGSV,3,3,12,01,08,201,,04,07,228,21,40,02,261,,193,,,*70
$GPRMC,135600.000,A,3540.5648,N,13944.6910,E,0.22,126.59,091121,,,A*63
■NMEA 0183 センテンス解説
NMEA 0183 規格では、1行ごとのメッセージをセンテンスと呼びます。
1つのセンテンスは、「$」で始まり、「改行CR(0x0D,\r)LF(0x0A,\n)」で終わります。
センテンスは、「,」で区切られた単語の集まりです。
センテンスの最初の単語は、データタイプを表します。
それに続く複数の単語の意味は、データタイプによって異なります。
センテンスの最後の単語の「*」以降がチェックサム値を表します。
「$」と「*」までの間のチェックサム(XOR)値を2バイト文字で表現します。
Ref.NMEA 0183 Standard Version 4.11 測位技術振興会
Ref.GPSのNMEAフォーマット
今回使用したGPSモジュールの初期設定では上記色分けした一連のセンテンスが繰り返し出力されています。
それでは各センテンスを順にみていきます。
(1) $GPVTG Course over Ground and Ground Speed Response Message(Max46Byte)
進路と速度、船の航行などに使用される情報のようです。
$GPVTG,126.59,T,,M,0.22,N,0.42,K,A*32
単語例 |
説明 |
意味 |
126.59 |
地表における移動の真方位。000.0~359.9度 |
126.59度 |
T |
[True course] |
True course |
|
地表における移動の磁方位。000.0~359.9度 |
|
M |
[Magnetic course] |
Magnetic course |
0.22 |
地表における移動の速度。000.0~999.9[knot] |
0.22[knot] |
N |
[knot] |
knot |
0.42 |
0 地表における移動の速度。0000.0~1800.0[km/h] |
0.42[km/h] |
K |
[km/h] |
km/h |
A |
モード N=データなし A=Autonomous(自律方式) D=Differential(干渉測位方式) E=Estimated(推定) |
データなし |
32 |
チェックサム |
32 |
(2) $GPZDA Time and Date Response Message(Max36Byte)
時刻(UTC時刻)と日付
$GPZDA,135558.000,09,11,2021,,*51
単語例 |
説明 |
意味 |
135558.000 |
協定世界時(UTC)。 hhmmss.sss |
UTC時刻:13:55:58 |
09 |
日 |
9日 |
11 |
月 |
11月 |
2021 |
西暦 |
2021年 |
|
ローカル時刻との差(時間)
|
|
|
ローカル時刻との差(分) |
|
51 |
チェックサム |
51 |
(3) $GPGGA Position Response Message(Max82byte)
位置情報(緯度、経度)、GPS測位状態、測位衛星数
$GPGGA,135559.000,3540.5648,N,13944.6910,E,1,7,1.42,59.3,M,38.8,M,,*61
単語例 |
説明 |
意味 |
135559.000 |
協定世界時(UTC)。 hhmmss.sss |
UTC時刻:13:55:59 |
3540.5648 |
緯度。dddmm.mmmm |
緯度:35.67608 |
N |
N=北緯、S=南緯 |
北緯 |
13944.6910 |
経度。dddmm.mmmm |
経度:139.74485 |
E |
E=東経、W=西経 |
東経 |
1 |
位置特定品質 0=位置特定できない 1=SPS(標準測位) 2=DGPS(干渉測位方式) |
標準測位 |
7 |
使用衛星数 |
7個 |
1.42 |
水平精度低下率 |
1.42 |
59.3 |
アンテナの海抜高さ |
59.3[m] |
M |
[m] |
メートル |
38.8 |
ジオイド高さ |
38.8[m] |
M |
[m] |
メートル |
|
DGPSデータの最後の有効なRTCM通信からの時間 |
DGPS不使用 |
|
差動基準地点ID |
|
61 |
チェックサム |
61 |
(4) $GPGLL Geograpic Position-Lattude/Lonitude (Max47byte)
位置情報(緯度、経度)
$GPGLL,3540.5648,N,13944.6910,E,135559.000,A,A*58
単語例 |
説明 |
意味 |
3540.5648 |
緯度。dddmm.mmmm |
35.67608 |
N |
N=北緯、S=南緯 |
北緯 |
13944.6910 |
経度。dddmm.mmmm |
139.74485 |
E |
E=東経、W=西経 |
東経 |
135559.000 |
測位時刻(UTC:時:分:秒) |
13:55:59 |
A |
測位状態 A;単独測位またはDGPS測位中 V:未測位 |
単独orDGPS測位 |
A |
測位mode N:未測位 A:単独測位 D:DGPS測位 |
単独測位 |
A |
DOP値 2次元測位中はHDOP 3次元測位中はPDOP(00.00:中断) |
|
|
チェックサム |
58 |
(5) $GPGSA: Satellite Used Response Message(Max69byte)
GPS衛星の使用衛星番号、各種DOP、動作モード
$GPGSA,A,3,08,26,27,10,21,194,195,,,,,,1.70,1.42,0.93*03
単語例 |
説明 |
意味 |
A |
動作Mode M:2次元測位固定 A:2次元測位/3次元測位自動切り替えmode |
2次元測位/3次元測位自動切り替え |
3 |
測位状態 1:未測位 2:2次元測位中 3:3次元測位中 |
3次元測位中 |
08,26,27,10,21,194,195,,,,,, |
使用衛星番号(12衛星分) |
08,26,27,10,21,194,195 |
1.70 |
PDOP値(位置の精度劣化) 00.00:3次元測位していない |
1.70 |
1.42 |
HDOP値(水平精度劣化) 00.00:未測位である |
1.42 |
0.93 |
VDOP値(垂直精度劣化) 00.00:3次元測位していない |
0.93 |
03 |
チェックサム |
03 |
このGPSモジュールで補足された測位衛星は下記の通りです。
測位衛星情報
PRN |
SVN |
衛星名 |
打上日(UTC) |
軌道 |
測位信号 |
時計 |
8 |
72 |
GPS 2F-10 |
2015/7/15 |
MEO |
L1C/A, L2C, L5 |
CS |
10 |
73 |
GPS 2F-11 |
2015/10/31 |
MEO |
L1C/A, L2C, L5 |
RB |
21 |
45 |
GPS 2R-9 |
2003/3/31 |
MEO |
L1C/A |
RB |
26 |
71 |
GPS 2F-9 |
2015/3/25 |
MEO |
L1C/A, L2C, L5 |
RB |
27 |
66 |
GPS 2F-4 |
2013/5/15 |
MEO |
L1C/A, L2C, L5 |
RB |
194 |
002 |
みちびき2号機(QZS02) |
2017/6/1 |
QZO |
L1C/A, L1C, L2C, L5 |
RB |
195 |
004 |
みちびき4号機(QZS04) |
2017/10/9 |
QZO |
L1C/A, L1C, L2C, L5 |
RB |
Ref.みちびき(内閣府)
(6) $GPGSV Satellites-in-View Response Message(Max70Byte)
GPS衛星の生成情報
$GPGSV,3,1,12,194,88,165,29,195,76,186,23,27,65,017,37,08,63,289,32*74
$GPGSV,3,2,12,21,34,195,24,26,26,109,17,10,12,093,22,23,09,062,18*77
$GPGSV,3,3,12,01,08,201,,04,07,228,20,40,02,261,,193,,,*71
この場合、GPGSVには3つのセンテンスが存在します。最初の1つについて解説します。
単語例 |
説明 |
意味 |
3 |
総GSVセンテンス数 |
3個 |
1 |
このセンテンスの番号 |
3個中の1個目のセンテンス |
12 |
ビュー内の総衛星数 |
12個 |
194 |
衛星番号 |
194 |
88 |
衛星仰角。00~90度 |
88度 |
165 |
衛星方位角。000~359度 |
165度 |
29 |
C/No(キャリア/ノイズ比)。00~99dB |
29dB |
195 |
衛星番号 |
195 |
76 |
衛星仰角。00~90度 |
76度 |
186 |
衛星方位角。000~359度 |
186度 |
23 |
C/No(キャリア/ノイズ比)。00~99dB |
23dB |
27 |
衛星番号 |
27 |
65 |
衛星仰角。00~90度 |
65度 |
017 |
衛星方位角。000~359度 |
17度 |
37 |
C/No(キャリア/ノイズ比)。00~99dB |
37dB |
08 |
衛星番号 |
8 |
63 |
衛星仰角。00~90度 |
63度 |
289 |
衛星方位角。000~359度 |
289度 |
32 |
C/No(キャリア/ノイズ比)。00~99dB |
32dB |
74 |
チェックサム |
74 |
(7) $GPRMC: Recommended Minimum Course Response Message(Max77Byte)
位置情報と時刻(UTC時刻)、速度と方位
$GPRMC,135559.000,A,3540.5648,N,13944.6910,E,0.23,126.59,091121,,,A*6D
単語例 |
説明 |
意味 |
135559.000 |
測位時刻(UTC時分秒) |
13時55分59秒 |
A |
測位状態 A:単独測位中またはDGPS測位中 V:未測位 |
単独測位中/DGPS測位中 |
3540.5648 |
緯度。dddmm.mmmm |
35.67608 |
N |
N:北緯、S:南緯 |
北緯 |
13944.6910 |
経度。dddmm.mmmm |
139.74485 |
E |
E:東経、W:西経 |
東経 |
0.23 |
速度(000.0~270.0、単位:ノット) |
0.23Knot |
126.59 |
真方位による進行方向(000.0~359.9、単位:度) |
126.59度 |
091121 |
ddmmyy 日付(日、月、年) |
2021年11月9日 |
|
磁気偏差(000.0~180.0、単位:度) |
0(なし) |
|
磁気偏差 E:磁気偏差が東より W:磁気偏差が西より |
なし |
A |
測位mode N:未測位 A:単独測位 D:DGPS測位 |
A:単独測位 |
*6D |
チェックサム |
6D |
■位置情報と時刻情報取得
GPZDAセンテンスとGPGGAセンテンスから時刻情報と位置情報を取得します。
※1つの測位衛星の情報のみでは、現在位置を知ることはできません。複数の測位衛星の位置と信号到達時間により現在位置が算出されます。
GPSモジュールでは複数の測位衛星から情報を収集、計算してNMEA規格の形式に整形して出力しています。
$ vi gps.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#define false 0
#define true 1
#define bool unsigned int
#define BUF_SIZE 256
#define TOKEN_MAX 32
#define null '\0'
#define CR 0x0d
#define LF 0x0a
typedef struct {
char date[64];
char latitude[12];
char longitude[12];
char altitude[6];
} GPS_INFO;
GPS_INFO gps;
float nmea2dd(char *fstr) {
float fval = atof(fstr);
int d = fval / 100;
return ((fval - (d * 100)) / 60) + d;
}
bool check(int checkval, char *checksum) {
char high, low;
int ival;
ival = checkval>>4;
if (ival<=9) {
high = (char)(ival + 0x30);
} else {
high = (char)(ival + 0x37);
}
ival = checkval&0x0f;
if (ival<=9) {
low = (char)(ival + 0x30);
} else {
low = (char)(ival + 0x37);
}
if ((high==checksum[0])&&(low==checksum[1])) {
return true;
} else {
return false;
}
}
bool edit(char *sentence) {
char *pt, *cpt;
int cnt = 0;
unsigned char checksum = 0;
char timestr[15];
time_t t;
struct tm tm;
char *token[TOKEN_MAX];
static int gpgga=0;
static int gpzda=0;
pt = sentence + 1;
token[cnt] = pt;
for (;*pt!=LF;++pt) {
switch(*pt) {
case ',':
token[++cnt] = pt + 1;
break;
case '*':
for (cpt=sentence+1;*cpt!='*';++cpt) checksum ^= *cpt;
*pt = null;
token[++cnt] = pt + 1;
break;
case 0x0d:
*pt = null;
break;
default:
break;
}
}
for (pt=sentence;*pt!=LF;++pt) if (*pt==',') *pt = null;
if (strcmp(token[0],"GPGGA")==0) {
if (check(checksum, token[15])) {
sprintf(gps.latitude, "%9.5f%s", nmea2dd(token[2]), token[3]);
sprintf(gps.longitude,"%9.5f%s", nmea2dd(token[4]), token[5]);
sprintf(gps.altitude, "%s", token[9]);
gpgga = true;
}
}
if (strcmp(token[0],"GPZDA")==0) {
if (check(checksum, token[7])) {
memset(&tm, 0, sizeof(struct tm));
*(token[4]+6) = null;
sprintf(timestr,"%6s%s%s%s", token[4],token[3],token[2],token[1]);
strptime(timestr,"%Y%m%d%H%M%S", &tm);
t = mktime(&tm) + (9 * 60 * 60);
strftime(gps.date, sizeof(gps.date), "%Y/%m/%d %a %H:%M:%S", localtime(&t));
gpzda = true;
}
}
if (gpgga && gpzda) {
gpgga=false;
gpzda=false;
return true;
}
return false;
}
bool encode(char c) {
static char sentence[BUF_SIZE];
static bool flag;
static int pos;
if (c=='$') {
flag = true;
pos = 0;
}
if (flag) {
sentence[pos] = c;
pos++;
}
if (c==LF) {
flag = false;
sentence[pos] = null;
pos = 0;
return edit(sentence);
}
return false;
}
int main(int argc, char** argv) {
int fd = serialOpen("/dev/ttyAMA0",9600);
if(fd!=-1){
while(1){
while(serialDataAvail(fd)){
if (encode(serialGetchar(fd))) {
printf("LOCALTIME %s\n",gps.date);
printf("LATITUDE(DD) %s\n",gps.latitude);
printf("LONGITUDE(DD) %s\n",gps.longitude);
printf("ALTITUDE %sM\n",gps.altitude);
}
}
}
}
}
プログラムの概要
int main(int argc, char** argv) {
int fd = serialOpen("/dev/ttyAMA0",9600);
if(fd!=-1){
while(1){
while(serialDataAvail(fd)){
if (encode(serialGetchar(fd))) {
printf("LOCALTIME %s\n",gps.date);
printf("LATITUDE(DD) %s\n",gps.latitude);
printf("LONGITUDE(DD) %s\n",gps.longitude);
printf("ALTITUDE %sM\n",gps.altitude);
}
}
}
}
}
GPSモジュールからのデータを1文字ずつ読込み、情報が整ったところで、結果を表示します。
bool encode(char c) {
・・・・・・
if (c==LF) {
flag = false;
sentence[pos] = null;
pos = 0;
return edit(sentence);
}
return false;
}
1センテンス分を読み込んだところで、編集処理 edit() を呼び出しています。
bool edit(char *sentence) {
・・・・・・
switch(*pt) {
case ',':
token[++cnt] = pt + 1;
break;
case '*':
for (cpt=sentence+1;*cpt!='*';++cpt) checksum ^= *cpt;
GYSFDMAXBの仕様書では、チェックサムの算出には、センテンスの「$」と「*」に挟まれた文字列を、XOR(排他的論理和)で積み上げます。
算出されたチェックサムの上位4ビット、下位4ビットの16進数値を文字に変換して、センテンスの最後に付加されているチェックサムと比較します。
for (pt=sentence;*pt!=LF;++pt) if (*pt==',') *pt = null;
センテンスを単語に分割しています。
if (strcmp(token[0],"GPGGA")==0) {
if (check(checksum, token[15])) {
sprintf(gps.latitude, "%9.5f%s", nmea2dd(token[2]), token[3]);
sprintf(gps.longitude,"%9.5f%s", nmea2dd(token[4]), token[5]);
sprintf(gps.altitude, "%s", token[9]);
gpgga = true;
}
}
緯度と経度は、dddmm.mmmm形式から、Google MAPで使われている DD形式に変換しています。
if (strcmp(token[0],"GPZDA")==0) {
if (check(checksum, token[7])) {
memset(&tm, 0, sizeof(struct tm));
*(token[4]+6) = null;
sprintf(timestr,"%6s%s%s%s", token[4],token[3],token[2],token[1]);
strptime(timestr,"%Y%m%d%H%M%S", &tm);
t = mktime(&tm) + (9 * 60 * 60);
strftime(gps.date, sizeof(gps.date), "%Y/%m/%d %a %H:%M:%S", localtime(&t));
gpzda = true;
}
}
日本の時刻は、UTC(Universal time coordinated/協定世界時)より9時間進んでいるので補正しています。
ビルドして実行します。
$ gcc -Wall -o gps gps.c -lwiringPi
$ ./gps
LOCALTIME 2021/11/09 Tue 22:55:58
LATITUDE(DD) 35.67608N
LONGITUDE(DD) 139.74485E
ALTITUDE 59.3M
LOCALTIME 2021/11/09 Tue 22:55:59
LATITUDE(DD) 35.67608N
LONGITUDE(DD) 139.74485E
ALTITUDE 59.3M
・・・・・
緯度の後に付いている「N」は北緯、経度の後の「E」は東経を表しています。
【補足:GPSのしくみ】
・GPSによる位置検出の基本原理を体験しよう
・測位計算プログラム入門
・緯度経度から2地点間の距離を計算する!
【参考文献】
・ArduinoとGPSモジュールで時刻を取得してLCDに表示する
・第60回 ArduinoでGPS情報を取得 〜Arduinoでパーツやセンサーを使ってみよう
・みちびき対応のGPS受信機(GYSFDMAXB)の使い方 [Arduino]
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
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錠
|