HOME | Raspberry Pi | 時事 | ビジネス書籍紹介 | 2022-12-01 (Thu) Today's Access : 109 Total : 559784. 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.03.27 M5Stackキーボードを利用する
2020.04.10 電卓を制御して数字を表示する
2020.05.06 箱庭回路 蓄電&昇圧回路
2020.06.29 液晶キャラクターディスプレイLCD1602A
2020.08.03 Seeeduino XIAO
2020.08.09 LGT8F328P - Arduino clone
2020.09.18 電流計測モジュール INA219
2020.09.04 箱庭回路 センサーライト
2020.09.29 シガーライターIC s090c
2020.10.13 自動給水装置 LM393+NE555
2020.12.05 FM放送受信 TEA5767
2021.01.30 DVD Player LED
2021.02.16 癒しの電子回路
2021.03.06 疑似コンソール
2021.04.13 GPIO拡張
2021.08.08 電子ペーパー
2021.09.04 AVRマイコン・ATTiny85
2021.09.25 pH測定
2021.10.23 低周波発振回路
2021.11.06 増幅回路
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 (回路でアート)


Interface 2022年12月号
◎実用レベルのデータ・サーバを個人で作れる時代 ☆特集 [AWS/ブロックチェーン/Docker]IoTデータ・サーバ入門
◎モニタリングはもちろん異常検知や画像認識,外部装置駆動まで!


日経Linux 2022年11月号
【特集1】「Ubuntu 22.04 LTS」リリースの今こそ! Windowsを捨てない!Linuxへの引っ越し術
【特集2】話題のChromeOS Flexなど8種を厳選! 軽量Linux TPO別 選択&活用術
【特集3】 Linuxで旧型PCを復活! ファンレスの静音・小型PC「Ubuntu Server 22.04 LTS」でオンラインストレージサーバー化
【特集4】 個人なら無料で使える! Red Hat Enterprise Linux 9を触ってみよう


トランジスタ技術 2022年11月号
★特集◎科学の魅力をとことん追求!計測,パワー応用技術 ☆実験サイエンス!超音波×エレキの世界


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

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

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

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

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

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

Arduino Nano 33 IoT


サンハヤト モジュール MM-TXS01


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

DIPスイッチで動作電圧を3.3Vと5Vに切り替えられるUNO互換ボード
KEYESTUDIO Plus Board for Arduino UNO R3 with Type-C USB Cable, 3.3V 5V 1.5A Output Current, More Powerful Controller Board USB-シリアルチップ:CP2102 / 動作電圧:5Vまたは3.3V(DIPスイッチ制御)/ 外部電源:DC 6-15V(9V推奨)/ デジタルI / Oピン:14(D0〜D13)/ PWMチャネル:6(D3 D5 D6 D9 D10 D11)/ アナログ入力チャネル(ADC):8(A0-A7)/ DC出力機能の各I / Oポート:20 mA / 3.3Vポートの出力能力:50 mA / フラッシュメモリ:32 KB(うち0.5 KBはブートローダーによって使用されます)/ SRAM:2 KB(ATMEGA328P-AU)/ EEPROM:1 KB(ATMEGA328P-AU)/ クロック速度:16MHz / オンボードLEDピン:D13

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

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


サンハヤト TTW-203 テストワイヤ
ブレッドボードとスルーホール間の接続に便利なワイヤですブレッドボード用のオスピンと基板のスルーホール用のバネ性のある端子を組み合わせたテストワイヤです

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


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


熱収縮チューブφ1.5
印字無しで綺麗☆ シュリンクチューブ 絶縁チューブ 防水 高難燃性 収縮チューブ (2m, ブラック(黒))


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


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


【Amazon.co.jp限定】エーモン 電工ペンチ 全長約255mm (1452)


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


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