Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

python

Boto3でAWSにアクセスする その2:S3にアップロードする

ではおまちかね、ファイルをぶっこんでいきます。 実際のところ 本当にぶん投げるだけなら、そのまんまメソッドよむだけ。便利。 import boto3 s3 = boto3.resource('s3') bucket = s3.Bucket('YOUR_BUCKET') bucket.upload_file('./image000.jpg', 'image00…

Boto3でAWSにアクセスする その1:接続情報の設定とS3の接続

AWSのPython用SDKとしてBoto3というのがあります。 こいつを使って、RasPiのファイルをS3にあげる動きを実装してみます。 実際のところ AWSのIAMアカウントを生成 AWSマネジメントコンソールから、IAM IAMコンソールのダッシュボード ユーザー 「既存のポリ…

PowerShellのPython3で文字列をおくりたいけど文字コードがcp932になっていて面倒なとき

最近は客先のWindowsで作業する事がおおくなりました。 PowerShellがソコソコ使えるので何とかなってますが、時折妙なクセがあったりしますね。 今回はそんな変なクセの一つ、Pythonの標準文字コードがなぜかSJISになってることと、その対処について。 実際…

RasPi 3B+ とOpenCVによる色範囲の抽出 その1:HSV色空間のフィルタツールをやってみる

Raspberry Pi 3B+ とWaveshare社OV5648USBカメラをつかって、 MaixBit + MaixPyでやっていた事を再現するという目標。 shuzo-kino.hateblo.jp 実際のところ 公式の閾値サンプルをもとに、一枚の画像の閾値を弄るサンプルとして改編。 import cv2 as cv max_v…

【地獄のバッドノウハウ】シリアル通信でコマンド送るタイプの装置が急制動するような場合、「tail -f」で監視し続けると動くことがある

shuzo-kino.hateblo.jp でやった事ですが、今日周辺で似たことがあったので。シリアル通信でコマンド送るタイプの装置……たとえばシリアルサーボなんかがあります。 それまでArduino IDEやminicomではちゃんと動いてくれたのに、 echoで単発のコマンド叩いた…

Python組み込みのprint関数には末尾の指定オプションがある

nt関数には末尾の指定オプションがあります。 実際のところ print関数の引数"end"に空文字を指定すると b="\x01\x02" print(b, end="") $ python3 sample.py | xxd -ps 0102 このendにはhex値を渡すこともok。 例えば、パケットの先頭としてよく使われる"0x7…

高機能なGPSモジュールZED F9Pをつかう その3:RasPiでつかうときはボーレートを自力で変更する

RaspberryPiで使用する場合、i2cのボーレートを上げないといけません qwiic.QwiicUbloxGps().address ============================================================================ NOTE: For and of the ublox gps units to work on the Raspberry Pi, I…

高機能なGPSモジュールZED F9Pをつかう その2:NMEAフォーマットを扱う

以前の記事でも紹介した通り、GPS信号はNMEAフォーマットというのできます。 これが最高に使いづらく、一々使い捨てパーサーを書くのもなんか負けた気がします。環境がPythonの場合は、パーサーライブラリがあります。 ユーザーが多い環境は便利だなぁ(白目…

高機能なGPSモジュールZED F9Pをつかう その1:Qwiicコネクタ

ZED F9Pはublock社の出している高機能なGPSモジュールです。 いわゆるフィールドロボティクスでも活用されてる github.com 参考もと www.sparkfun.com learn.sparkfun.com Qwiic HAT for Raspberry Pi Hookup Guide - learn.sparkfun.com www.sparkfun.com

【読書メモ】実践GAN ~敵対的生成ネットワークによる深層学習~

実践GAN ~敵対的生成ネットワークによる深層学習~ (Compass Booksシリーズ)作者:Jakub Langr,Vladimir Bok発売日: 2020/02/28メディア: 単行本(ソフトカバー)機械学習はまるで分野外だったのですが、勉強会でめっちゃ凄い本が紹介されたので衝動買い。お堅…

Sipeed Maix Bitで遊ぶ その4:特定の色を検知したときにフラグ

前回はカラーピッカーをやりました。 では、特定の色を検知した場合、何らかのフラグを立てるには……? 実際のところ import sensor, image, lcd, time lcd.init() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) se…

Sipeed Maix Bitで遊ぶ その3:カラーピッカー

実際のところ import sensor, image, lcd, time sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(30) sensor.set_auto_gain(False) # must be turned off for color tracking sens…

Sipeed Maix Bitで遊ぶ その2:最初のアプリ(長方形の検出)

shuzo-kino.hateblo.jpの続きです。最初はWindowsでやろうかとも思いましたが……結局VirtualBox上のUbuntu18系に構築しました。 実際のところ 長方形を検出するアプリ さて、本題です。 大本のスクリプトではM1をベースにしてることもあって、SDカードをつか…

Sipeed Maix Bitで遊ぶ その1:導入

Sipeed Maix Bitは今を時めくRISC-VアーキテクチャK210を採用したマイコンボードです。 micro pythonの方言MaiPyが動くため……付属カメラをつかった画処理でC言語で血反吐を吐かずとも、結構な速度で特徴点や色判定くらいのサンプルなら動いてしまいます。 …

python3標準ライブラリのみで自分のIPアドレスをみたいなら、"8.8.8.8"に繋いで返り値を見る手がある

まさにその発想はなかった……という感じなのですが ベトナムや中国でネットを使ったことがある人にはお馴染みの"8.8.8.8"に接続し、 そこで返ってきたソケット名をもって自分のIPをしる方法があります。 import socket s = socket.socket(socket.AF_INET, soc…

Linux系ボードでi2cで通信しないならi2cdetectでアドレスを調べなおすのも手

それまで使っていたRasPi用I2CPythonスクリプトを違うデバイスで転用したところ IOError: [Errno 121] Remote I/O error などと怒られたのですが、全く検討がつかず。入れ替えこそしたものの、中の石も周辺回路もほぼ同じなのに一体なぜ……?あれこれ調べてい…

別のIPアドレス間でUDPパケットのやりとりを行う

実際のところ 受け手側ファイヤウォール まず、受信側のファイヤウォール設定を。 普段SSH用に22番しか開けてませんが、今回は1111をUDP用に開けてみます。 $ sudo ufw allow 1111 $ sudo ufw status Status: active To Action From -- ------ ---- 22 LIMIT…

unpackメソッドの結果を複数の変数にわけて格納する

pythonでは返り値を複数の変数に分離できます。 これはunpackにも適用されるので、バイト文字列を作ってそれぞれの変数に再度格納なんて愉快なこともできます。 実際のところ import struct valA,valB=struct.unpack('HH',b'\xad\xde\xef\xbe') print(valA) …

ctypeライブラリでC言語めいたメモリ領域の確保を行う

実際のところ from ctypes import * p = create_string_buffer(b"Hi", 10) # 10文字分確保し先頭にHiをいれる print( repr(p.raw) ) #>>> b'Hi\x00\x00\x00\x00\x00\x00\x00\x00' 参考もと docs.python.org

pack_into / unpack_fromメソッドをつかってC言語風にデータを格納する

structのpack_into/unpack_fromメソッドをつかうと、C言語のような感じでメモリ領域を確保、読み出しが可能です。 何らかの事情で保存領域の使用がタイトだったりとか、C言語で実装されたプロジェクトをPythonで書き換えたりするときに使えますね。 実際のと…

structライブラリでバイト列をつくる

前回の記事でバイトリテラルを分解するunpackメソッドと対になるpackメソッドを使うと バイトリテラルを結合したり、バイト埋めができたりします。 …………これ、散々苦労したPythonでのバイト列生成では決定版かも……。 実際のところ import struct struct.pack…

バイトリテラル列の分解

実際のところ 標準ライブラリstructのunpackメソッドを使います。 import struct struct.unpack('8B', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0] #>> 255 struct.unpack('8B', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[1] #>> 248 参考もと python - What does…

Pythonでバイトリテラルやるなら、やっぱり一バイトごとにやらんといけない

組み込み機器で使うデータ列を生成するとき、pythonで適当に書き捨てたられたら便利ですね。 これ、format構文を使えば楽です。 実際のところ 単純にバイトリテラルな値を操作したい場合 '\x12' + '\x01' #>> '\x12\x01' 文字列と同じ扱いでできるので '\x12…

PythonでAWS IoT をつかう その3:AWS lambdaと連携する

今書いてまs 参考もと https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-lambda-rule.html

PythonでAWS IoT をつかう その2:DynamoDBにアップロードする

前回の続き。 AWS IoTだけでは機能しないので、AWSサービスの一つであるDynamoDBにアップロードを試みてみます。 記述増強中... 実際のところ 「新しいリソース」を選択すると、DynamoDBのページに飛びます。 ソートキーは任意っぽい感じで書かれてますが、 …

PythonでAWS IoT をつかう その1:環境構築

実際の設定をはじめる うごかす $ cd connect_device_package $ chmod +x start.sh $ sudo ./start.sh放置するとこんな感じに pythonは? 先ほどのstart.shの最後の方にこんな行が。 めちゃくちゃオプションが多いように見えますが、ほとんどは自動生成で導…

python用TKインターフェイスtkinter その3:いろいろなウィジェット

GUI系のご多聞に漏れず、 tkinterにも色々ウィジェットが付いています 実際のところ 今書いてまs

昨日まで動いていたSSH越しTKアプリが動かないなら、一度クライアントを接続し直すと治るかも

SSH越しにアプリをつくっていた時のこと。 クライアントを接続したまま半日放置し、帰宅後に同じコマンドを叩いたら以下のようなエラーが。 $ python3 tkintertest.py Traceback (most recent call last): File "tkintertest.py", line 24, in <module> root = tk.Tk</module>…

python用TKインターフェイスtkinter その2:画面サイズとタイトル

タイトルだとか画面のサイズといった全体に関わることはtkのrootで設定します。 実際のところ import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() self.create_widgets() def creat…

python用TKインターフェイスtkinter その1:最初のアプリ

tk(Tool Kitの略)は軽量で色んなプラットフォームへの移植実績があります。 Pythonも標準ライブラリの中にtkinterというのがあります。 昨今のPythonブームもあってか、ネットをみるとArduinoと連携したサンプルが結構みつかります。 www.youtube.com今回は…