そうだ温度計を作ろう その3
ブログ執筆に着手してから思った以上に時間(1か月近く)がかかってしまいましたが、温度計最終回その3外観編。
さっくり行こうと思います。
外観
完成した温度計の外観はこんな感じになった。
液晶にマウントしたラズパイを、アクリル板に固定してみた。自分でアクリルの加工を行うと絶対仕上がりが汚くなると思ったので、3DCADで図面を描いてみて業者の方にお願いすることにした。使用したのはFusion360。3DCAD自体使ったことが無かったのでソフトはどれを選んでもよかったが、無料で使える3DCADとして有名らしいということで選択。実際これが無料で使えるなんて驚いた。DIYで何か作りたいことは全部これでやれちゃいそう。
加工を依頼したのはアクリルショップはざいや様
100mm×140mm×3mmのアクリル板2枚に、穴あけと磨き仕上げをお願いして、送料込みおよそ4500円。
依頼から納品まで2週間程度かかるが、この値段でとても綺麗に加工して貰えたので非常に満足。多少穴位置がずれたとしても仕方ないなと思っていたが、一切追加の加工や調整の必要が無く組み上げることができた。
その他は必要になったものを随時ホームセンターやAmazonで調達した。
改善点
まだまだ改善点や問題点はあるので、まとめて列挙する。
実は室温がズレる
割と致命的だが、ラズパイ本体の発熱が想像以上に強烈で、背面に配置している温度センサーが正しい室温を恐らく出していない。背面のアクリル板を触ると少し暖かいし、実際に家にあった別の温度計をそばに持ってきて比較してみると、大体1.5℃くらい高く温度が表示されていることが分かった。
温度センサーを本体から離すとなると、デザインを作り直すことになるためちょっと難しそうだが、今現在は温度センサーがラズパイ側を向いて接続されているため、ピンヘッダを取り付けなおして外向きにすれば、ある程度改善するのではないかと予想している。
動作させ続けると液晶に白い靄が生じる
2~3日温度計を起動し続けると、液晶の外枠付近に白い靄が生じる。一度電源を落とし、しばらく放置してから再度電源を入れると復旧したが、原因は不明。熱?
HTMLにアクセスした瞬間にエラーが出力される
見かけ上問題なく機能はしているが、ローカルサーバーを立てた後、温度計のHTMLにアクセスすると、エラーが出力される。
#温度計エラー全文 Traceback (most recent call last): File "/usr/lib/python3.7/wsgiref/handlers.py", line 138, in run self.finish_response() File "/usr/lib/python3.7/wsgiref/handlers.py", line 180, in finish_response self.write(data) File "/usr/lib/python3.7/wsgiref/handlers.py", line 279, in write self._write(data) File "/usr/lib/python3.7/wsgiref/handlers.py", line 453, in _write result = self.stdout.write(data) File "/usr/lib/python3.7/socketserver.py", line 799, in write self._sock.sendall(b) ConnectionResetError: [Errno 104] Connection reset by peer ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 38578) Traceback (most recent call last): File "/usr/lib/python3.7/wsgiref/handlers.py", line 138, in run self.finish_response() File "/usr/lib/python3.7/wsgiref/handlers.py", line 180, in finish_response self.write(data) File "/usr/lib/python3.7/wsgiref/handlers.py", line 279, in write self._write(data) File "/usr/lib/python3.7/wsgiref/handlers.py", line 453, in _write result = self.stdout.write(data) File "/usr/lib/python3.7/socketserver.py", line 799, in write self._sock.sendall(b) ConnectionResetError: [Errno 104] Connection reset by peer During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.7/wsgiref/handlers.py", line 141, in run self.handle_error() File "/usr/lib/python3.7/wsgiref/handlers.py", line 368, in handle_error self.finish_response() File "/usr/lib/python3.7/wsgiref/handlers.py", line 180, in finish_response self.write(data) File "/usr/lib/python3.7/wsgiref/handlers.py", line 274, in write self.send_headers() File "/usr/lib/python3.7/wsgiref/handlers.py", line 331, in send_headers if not self.origin_server or self.client_is_modern(): File "/usr/lib/python3.7/wsgiref/handlers.py", line 344, in client_is_modern return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9' TypeError: 'NoneType' object is not subscriptable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.7/socketserver.py", line 316, in _handle_request_noblock self.process_request(request, client_address) File "/usr/lib/python3.7/socketserver.py", line 347, in process_request self.finish_request(request, client_address) File "/usr/lib/python3.7/socketserver.py", line 360, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.7/socketserver.py", line 720, in __init__ self.handle() File "/usr/lib/python3.7/wsgiref/simple_server.py", line 133, in handle handler.run(self.server.get_app()) File "/usr/lib/python3.7/wsgiref/handlers.py", line 144, in run self.close() File "/usr/lib/python3.7/wsgiref/simple_server.py", line 35, in close self.status.split(' ',1)[0], self.bytes_sent AttributeError: 'NoneType' object has no attribute 'split' ----------------------------------------
調べても全く不明だったため、もし知っている方がいれば教えて頂けると幸いです。自力で分かったのは、どうも__pycache__フォルダが作成されていると出るっぽいということだけ。理由を理解できるかはわからないけど、「よくわからんエラーが出るけど動きます」は気持ち悪い。
終わりに
想像以上にお金と時間(3万円&4か月くらい)はかかってしまいましたが、ちゃんと最後まで形にすることができました。安堵。
次に何を作るかはまだ分かりませんが、唐突に作りたいと思ったものを作ろうと思います。いつも通り。
その前に転職活動しなきゃ(使命感)