ラズベリーパイピコをmicropythonにて動作テスト中、
メモリ不足を表すエラー「OSError: [Errno 12] ENOMEM」が発生します
そこで質問ですが、
・メモリ不足エラーを解消する方法はないでしょうか?
ラズベリーパイピコのメモリは256KB程度であり、
メッセージを送った程度ではいっぱいになるはずがないと思います
プログラムの書き方の問題でしょうか?
なにかしらの方法でメモリを増強するしかないのでしょうか?
エラーメッセージは以下の通りになります
message=red right message=red right remind message=red right remind message=red right remind message=red right remind message=red right remind Traceback (most recent call last): File "<stdin>", line 39, in <module> File "urequests.py", line 184, in post File "urequests.py", line 83, in request OSError: [Errno 12] ENOMEM
・ソースコードは以下の通りになります
import machine,utime,time,network, urequests from utime import sleep #「ssid」ファイルにてSSIDとパスワードを読み込む from ssid import SSID, PASS #ラズベリーパイピコがcds光センサーから光を受け取る cds = machine.ADC(0) wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASS) line_header = { 'Content-Type' : 'application/x-www-form-urlencoded', 'Authorization': 'Bearer' + ' ' + '(LINE API)' } #赤ライト リマインド3秒おきに5回 # パトライトの明かりが30000以上になったらライトが点灯しているとみなす while True: if cds.read_u16() > 30000: line_message = 'message=' + 'red right' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) time.sleep(3.0) for i in range(5,0,-1): #リマインド中に明かりが30000を下回ったら作業者がライト消したとみなして、再度ループ if cds.read_u16() < 30000: line_message = 'message=' + 'right off' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) break line_message = 'message=' + 'red right remind' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) time.sleep(3.0) line_message = 'message=' + 'remind end' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) while True: # リマインド完了後、明かりが消えるまで待機 # 明かりが消えたら、改めてプログラムを最初から if cds.read_u16() < 30000: line_message = 'message=' + 'restart' print(line_message) urequests.post('https://notify-api.line.me/api/notify', headers = line_header, data = line_message) machine.reset() else: time.sleep(5.0) else: time.sleep(5.0)
0 コメント