HOME | Raspberry Pi | ビジネス書籍紹介 | 2024-04-24 (Wed) Today's Access : 3 Total : 917781. Since 10 Sep. 2019

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モジュールの背面にはんだ付けすることが可能ですが、 そうすると、ユニバーサル基板に固定できないので、分離して使用しました。
受信モジュールにはヘッダーピンをハンダ付けして、ユニバーサル基板のスルーホールに通しています。 受信モジュールとはメスピン・ワイヤーでつなげているだけなので、モジュールは取り外せます。

■ラズベリーパイとの接続

ラズベリーパイとの接続は下記の通りです。
GYSFDMAXBRaspberry 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プロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2019.12.13 モバイルバッテリーによる瞬間停電対策
2020.01.01 1280x800 HDMI MONITOR
2020.01.12 micro:bitをコマンドラインで使う
2020.02.04 サーマルプリンタを使う
2020.04.10 電卓を制御して数字を表示する
2020.08.03 Seeeduino XIAO
2020.08.09 LGT8F328P - Arduino clone
2020.09.18 電流計測モジュール INA219
2021.02.16 癒しの電子回路
2021.03.06 疑似コンソール
2021.08.08 電子ペーパー
2021.09.04 AVRマイコン・ATTiny85
2021.09.25 pH測定
2021.11.13 NTP時刻取得と活用
2021.11.27 GPS情報取得
2021.12.11 GR-KURUMI
2021.12.25 ATMEGA328P 3.3V/8MHz
2022.01.11 AS-289R2 プリンタシールド
2022.01.25 TM1637 & ATtiny85
2022.02.22 Raspberry Pi Zero 小道具
2022.03.01 ATTinyCore
2022.03.18 Adafruit QT Py + XIAO Expansion board
2022.07.31 サーマルプリンター番外編:通信筒
2022.09.03 l' art en circuit (回路でアート)
2023.01.01 FTP Server & SPI Flash SD
2023.02.01 LPC810(ARM Cortex-M0+)
2023.02.15 IchigoJam互換機
2023.03.01 Telnet
2023.04.26 USBメモリをUART接続で利用する
2023.05.14 焦電型赤外線モーションセンサー
2023.07.01 文字化けしないキーボード
2023.08.01 Bluetoothサーマルプリンター
2023.08.12 LattePanda 2G/32GB
2023.09.04 SI-3012KS
2023.12.01 疑似コンソール(C言語編)
2023.12.16 昭和レトロ・温度湿度時刻計
2023.12.25 二酸化炭素濃度監視
2024.01.23 なんちゃってmicro:bit
2024.02.07 オリジナル micro:bit
2024.02.23 ESP32 OTA
2024.03.08 TELNETサーマルプリンター


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®.