2023-07-02

Bingで「電子工作が趣味でプログラマーのおじさんのイラストを描いて」

 


新しいBingのチャットで画像が生成できるみたいなので、
「電子工作が趣味でプログラマーのおじさん」を描かせてみた。

ちょっと、違うなと思い同じ問いかけをしたら、

すみませんが、そのイラストはすでに描きました。もう一度同じイラストを描くことはできません。私はまだ学習中なので、ご理解とご協力をお願いします🙏

機能はあるけと融通はきかないな


2023-03-16

飛行日誌・入力簡易ツール iphone用に、今回のスクリプトを組み込んでみた。

 ASAKICHIさんがYouTubeで公開されている、飛行日誌・入力簡易ツールを見つけました。
これはiphone用でAndriodには使えません。

ただし、今まで調べていたGASのスクリプトを組み込めば使えるのではと思いやってみました。

飛行日誌・入力簡易ツールの概要欄でスプレッドシートをコピーします。

スクリプトに次のコードを貼り付けます。

function doGet() {
  var template = HtmlService.createTemplateFromFile('Page');
  template.action = "addData";
  return template.evaluate();
}

function addData(latitudelongitudetimestamp,drone) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  
  // 緯度、経度から住所を取得
  // 住所を漢字に変換
  var geocoder = Maps.newGeocoder();
  var response = geocoder.reverseGeocode(latitudelongitude); // 緯度、経度から情報を取得
  var formatted_address = response.results[0].formatted_address;
  // いろいろな情報が得られるので、そのうちのインデクス0 の formatted_address の情報を取得

  var data = [timestamp,formatted_address,drone];
  // データに住所を追加
  sheet.appendRow(data);

 }


続けてAppScriptの画面でファイルを追加(HTML)しPageという名前にします。

以下のコードを貼り付けます。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <base target="_top">
    <style>
      body {
        font-family: Arialsans-serif;
        margin: 0;
        padding: 0;
      }
      select {
        font-size: 16px;
        padding: 8px;
        width: 100%;
        margin-bottom: 16px;
      }
      button {
        font-size: 16px;
        padding: 8px;
        background-color: #4CAF50;
        color: white;
        border: none;
        border-radius: 4px;
        cursor: pointer;
      }
      button:hover {
        background-color: #3e8e41;
      }
    </style>
  </head>
  <body>
    
    <select id="mySelect">
      <option value="機体名称1">機体名称1</option>
      <option value="機体名称2">機体名称2</option>
      <option value="機体名称3">機体名称3</option>
    </select>
    
    <button onclick="getLocation()">位置情報を取得</button>
    
    <script>

      function getLocation() {
        if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(showPosition);
        } else {
          alert("Geolocation is not supported by this browser.");
        }
      }

      function showPosition(position) {
        var selectedOption = document.getElementById("mySelect").value;
        google.script.run.addData(position.coords.latitudeposition.coords.longitudenew Date().toLocaleString(), selectedOption);
      }
      
    </script>

  </body>
</html>

デプロイボタンを押してウェブアプリとしてデプロイ(公開)します。

簡単には以上のような流れですけど、デプロイが曲者でかなり苦労しました。

詳細は次回アップしたいと思っています。 

 

2023-03-05

スマホのブラウザーからボタンを押して、その時の位置情報と時間をスプレッドシートに追記するGoogle Apps Scriptsのコード

 



スプレッドシートの作成

WEB画面(ボタン)の作成


公開となっていますが、デプロイボタンを押して、WEBアプリのURLをスマホにメールで送って(共有)います。


実際のスマホの画面

運航日誌に必要な機能ができたので、上手く作り上げる必要があります。

農薬散布開始までに作らないといけませんね。(;^_^A

何回かChatGPTに聞き直して、やっと思っているコードができた。

 ドローンの運航日誌を自動作成するアプリをAIで作りたい。
から始まったマイプロジェクト!!

サクッとできると思ってたけどそんなに甘くはなかった。
何度もChetGPTに聞き直して、何とかサンプルになりそうなコードができました。

スマホのブラウザーからボタンを押して、その時の位置情報と時間をスプレッドシートに追記するGoogoleAppsScriptsのコードができました。

その過程は長くなったので履歴表示を次の動画にしました。

https://youtu.be/r8PADHtsgpQ


実際にどのようなコードを記述したか、次回更新します。

2023-02-23

ChatGPT 動きません!

 手順通りしたのですがトリガーを追加する所でエラーになります。

追加で聞いてみた。

今度はボタンの作り方が分かりません。

さらに追加で聞いてみた。



2023-02-16

ドローンの運航日誌を自動作成するアプリをAIでさせたい

 

ChatGPT
ドローンの運航日誌作成が必須になったので、スマホのブラウザーからボタンを押せば自動で運航日誌を作成するようにできないかと思いGAS(Google Apps Script)を勉強し始めたところです。
そんな時にChatGPTというAIが話題になってきたので、よしこれを使って作らせてみようと会話した結果がこれです。

かなり手直しが必要ですがボタンで位置情報をスプレットシートに保存することはできそうです。

次はボタンを2つ用意して開始と終了を保存できるようにしたいと思います。

2018-05-27

IoT Arduino と ThingSpeak

IoT Arduino(トランジスタ技術)でBME820の値を読みその値をThingSpeakにUPLOAD
ThingSpeakから値を取得し他のサービスと連携させる。
ThingSpeakのサイトで計測結果をグラフ化できます。
温度と気圧
 温度と湿度
 温度と明るさ(アナログ生値)

なぜか、温度と湿度が振動している。
明日も引き続き記録をして調べる予定です。
原因がわかりました、エアコンでした。「室温ウォッチ」という機能で室温が高温になると勝手に(いや設定をしていたのを忘れていただけなので勝手ではない)動作して電子機器を守ってくれてました。わかってて見ると納得のグラフですね。 


Wemos Lolin32ThingSpeakに記録された値を読みOLDに表示させる側で使用する予定です。

2018-05-16

IoT !

最近雑誌などでしきりにIoTの製作記事が掲載されるようになりました。
なので試しにAmazonで購入して試してみました。
IoTのボードはArduino互換のWEMOS Lolin です。
2000円ぐらいのボードですが、なかなか優れていて、
これだけでWiFiを使用してインターネットに接続できます。

ネットに接続できれば、時間の取得、お天気情報等簡単に取得し表示できてしまいます。
今回買ったボードにはOLEDもついているので単体で色んなことができてしまいます。

写真はネットから時刻とお天気情報を取得し、
温度、湿度をセンサーからI2Cを使って取得し表示させています。

現在、勉強中なので、これからいろんな情報を載せてゆきたいと思っています。




2017-01-29

CHIBIBIT 今時の電子工作!?


ネットで面白いものを見つけました。

商品説明を引用します。
chibi:bitというもので、BBC(英国放送協会)が主体となって作っている教育向けマイコンボードBBC micro:bitの互換機です。
仕様はmicro:bitと同じです。25個のLED、2個のボタンスイッチのほか、加速度センサーと磁力センサー、BLE機能を搭載したマイコンボードです。
chibi:bit専用の開発環境があります。
icro:bitの開発環境で書いたプログラムも書き込み可能です。

最初はmicrobitを海外サイトから購入しようと思っていましたが、互換機が出ていて、改良版が出るのを待って、改良版の発売と同時に購入しました。

開発環境がWEBで無料で使用可能!!
しかも、ブロックを組み立てる感覚でプログラムが組めるようになっている。
こんな感じです。
シミュレータもあるので実機がなくても、このサイトだけで楽しめます。
http://chibibit.io/ide/


最初はサイトの説明等にあるようにワニ口クリップで電源をつなげて遊んでましたが、端子の穴ってねじ穴サイズなので別の基板と金属のスペーサーでつなげるといいのでは!
と思い作ってみました。


 電池、スイッチ、圧電ブザーの構成です。
端子はpin出力出来るように端子を付けました。

これで、BlueToothを使ってスマホと連携できます。
ちょっとしたスマート端末になります。(楽しい!)

ちょっとしたプログラムを作成してみました。

起動後、Aボタンで機能選択、Bボタンで決定。

各機能の実行 AまたはBボタンで値を表示

A+Bボタンで機能選択に戻る。


で、機能は以下の4点

・照度計
・温度計
・方位磁石
・スマホの音楽再生(Aボタン)。停止(Bボタン)

さすがにこれだけのプログラムを作るとブロックも複雑に??
見えませんね。

ダウンロードできるようにしてみました。
http://bake-san.com/download/chibibit/chibibitSB.hex

開発環境でインポートしたら見れます。

このchibibitは直接スイッチサイエンスで購入しましたが、amazonでも購入可能なようです。

http://astore.amazon.co.jp/bakesan-22/detail/B01N6JMM7E

2016-03-22

Pebble Watch


スマートウォッチが欲しくなり、悩んだ末PebbleWatch(Classic)をAmazonで購入しました。

Pebble Classic(Amazon)



サイトを参考に日本語化して使用しています。

通知機能が便利ですね、
またCloud Pebbleで開発環境が提供されているので、すぐにアプリが作成できます。

試しに、WatchFaceを作成してみました。

アプリは公開中でAoFaceClock1st です。


SAMPLEソースがあるので、アナログ時計とデジタル時計を合体させ、デザインは独自に作成しました。

起動時にアニメーションするのがかわいいなと自己満足しています。

まだ、粗削りなので少しずつ改良して行きたいと思っています。

ソースは http://bake-san.com/download/pebble/watchface/aofaceclock1st.zip でDOWNLOADできるようにしています。
まだ、デバッグ中なので、コメントや処理がおかしいところがあると思います。
ご注意ください。整理でき次第、再アップします。

プログラムの作成方法は大体理解できたので、時計機能ではないツール的なものを作成したいと思ってさらに勉強中です。



2016-02-11

修理をした炊飯器で甘酒作り

1.おかゆを炊きます。


2.70℃以下まで冷まして、米麹を入れて混ぜます。


3.濡れふきんをかぶせて保温にします。


4.時々温度を確認して60℃から70℃をキープできていることを確認する。
ふたの開け具合で温度調整をすればいいみたい。
この状態で約8時間で出来上がり。
どうなったかはまた後日。

5.完成、ちょっと水っぽくなっています、いい感じです。
今回使用した炊飯器は「おやすみ保温」の機能があり少し低めに保温をしてくれます、これが丁度良く終始60℃から70℃をキープしていました。

7.容器に入れ替え熱を冷まして冷蔵庫で保管します。
8.試飲、めちゃくちゃ甘いので薄めて飲んだほうがいいぐらいです。
3度目の正直で上手くできました。

炊飯器の修理


やっぱりね、線が切れていました。この線をつないで修理完了!
前回もトライしたのですがカバーが外せず断念今日は冴えている5分で外せた。
修理が出来たら米麹の甘酒を作ります。

切れた線の両方を半田メッキ処理をします。

そのままつけると短くなるので別の線をつぎ足します。
固定しているピンセットはつかんだまま固定できる優れものです。

余分な線を切り取りあらかじめ差しておいた収縮チュープを熱で縮めて出来上がり

我ながら完璧!!


ブレッドボード?いや、ビスケットボード!

ブレッドボードをそろそろ追加購入しようかとネットを検索していたら、ビスケットボード というものを見つけた。

通常良くするのがブレッドボードで試作をして、その後ユニバーサル基板で目的のものを作成する。というパターンですが。(PICでオルゴールを作成した時もこのパターンで作成しました)
↓ ユニバーサル基板に作り替え ↓

ビスケットボードを使うと
ブレッドボードで試作をして、ビスケットボードで目的のものを作るというパターンになります。

ビスケットボードのポイントを簡単に

  1. ユニバーサル基板と同じ程度の厚みで作成できる。
  2. ブレッドボードのように半田付け無しで部品をつけれる。
  3. 一度部品を刺すと簡単には抜けない。ブレッドボードでは簡単に抜けて困ることがある。
  4. サイズがレゴブロックにジャストフィット、取り付け部品も付属している。
半田ゴテを使わず使用に耐えるものが作れるのがいい。

小さい子供たちに物づくりを体験させるにもいいかもしれない。
レゴブロックと組み合わせて夢が広がるいいものが出たなと思いました。

やり直しはできないことはないが難しいみたい、そういう意味ではもう少し安いと手が出しやすいと思います。
ブレッドボードのように普及をして来れば安くなると思うので、ちょっとここでも紹介してみました。

2016-02-08

100円ショップのLEDガーデンライト


ちょっと、休日に遊んでみました。
100円ショップ(ダイソー)に四角いガーデンライトがあったので、タイルと一緒に購入しました。
LEDは真っ白だと冷たい感じになるので、手持ちの電球色のLEDに交換しました。

明けてみると結構しっかりしていました。
単4の充電池、昇圧および明暗スイッチ回路のIC、太陽電池の構成で100円は驚きです。

LEDの色を変えてデコッていい感じになりました。
久々に妻にもほめられた。

2015-03-27

EEPROM 24FC256にpickit2で書き込み


もっとリアルな電子オルゴールを作りたいと思い外部のメモリからデータを読み取りPWMでWAVデータを再生する。
してみたい、という安易な希望から始めました。
なかなか簡単には行かなかった。

まず、EEPROMにデータを書き込まないと始まらないのですが苦労しました。
I2Cでpickit2から24FC256にデータを送って書き込むようなのですが、I2Cのエラーになって読み書きできません。
原因は単純で配線が長すぎたようです。
ブレッドボードを使って環境が良くないのに配線が10cm以上有った。
写真のように出来るだけ配線が短くなるようにやり直しをしてやっと書き込めました。

2015-03-22

PICで電子オルゴール No2

前回の続きで基板を見直しをしました。
部品の選定をしてレイアウトを整理しました。


基板の配線は以下の通り。
上から(部品側から)みた図になっています。

回路図は次の通りです。



2015-03-18

PICで電子オルゴール

久々に電子工作をしました。
母校の小学校がとうとう閉校になるので、何か記念になるものを残しておこうと思い校歌を電子オルゴールにしてみました。
PICマイコン12F629と圧電スピーカ、電池といった簡単な構成でできます。
写真にあるものは、CDSをつけて明るくなると鳴り出すように作ったので部品がCDSと抵抗2本が増えています。


開発はmikroBASICを使いました。
ライターはPICKit2。

MikroBasicのライブラリーにSOUNDがあり、音程と長さを指定して音を鳴らすことができます。
PIC12F629にはEEPROMがあります。このEEPROMに音程長さを記憶させておき順に読み込み音楽を演奏させています。
そのままでは音程と長さで4バイト必要になりますが、プログラム内部でドレミと音符の長さのテーブルを持ち、EEPROMにはその番号のみで上位4ビットで長さ、下位4ビットで音程の番号を表現させました。

EEPROMの内容は校歌なので載せてもと思い、ソースのみを公開します。
休符の扱いがわからずDelayで表現しています。
Delayはライブラリーで実装されておらず、パラメータに変数が使えないので4分休符のみのコーディングです。
調子に乗ってコーディングしていたら、プログラムエリアが足りなくなりました。
SOUNDとEEPROMのライブラリーで結構メモリーを食ってしまっているようです。



program MUSIC
'                             0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
'                             R   C   C#  D   D#  E   F   F#  G   G#  A   A#  B   C   C#  D
  const doremi as word[16]= (  0,262,277,294,311,330,349,370,392,415,440,466,494,523,554,587)
'                 tempo=120
'                              0    1    2    3    4    5    6    7    8  9
'                              1    2.   2    4.   4    8.   8   16.   16
  const onpu   as word[9]= (2000,1500,1000,0750,0500,0375,0250,0188,0125)

' Declarations section
sub procedure init_rtn
  GPIO = 0
  CMCON = 000111
  TRISIO = 000000
  'ANSEL = 000000

  Sound_Init(GPIO, 2)

end sub

main:

  dim eromdt as byte
  dim takapt as byte
  dim nagapt as byte
  dim takasa as word
  dim nagasa as word
  dim yasumi as word
  dim i as byte

  init_rtn

  while true
    i=0                         'EPROM READ POINTER
    while < 127                 'EPROM MAC ADDRESS 128
      eromdt = EEPROM_Read(i)   'DATA READ FROM EPROM
      if eromdt = $FF then      'DATA VALUE FF is END of DATA
        i =128                  'Exit Loop When set 128
      else
        takapt = eromdt and $0f 'DATA low4bit is SOUND Pitch
        nagapt = eromdt >> 4    'DATA High4bit is SOUND Length
        if takapt = 0 then
          'select case nagapt
          '  case 4
              Delay_ms(500)
          '  case 2
          '    delay_ms(1000)
          '  case 0
          '    delay_ms(2000)
          'end select
        else
          takasa = doremi[takapt]'Pitch Table
          nagasa = onpu[nagapt]
          Sound_Play(takasa,nagasa)
          Delay_ms(16)
        end if
      end if
      i=i+1
    wend
    
    'ENTRY SLEEP '
     GPIO =0
     OPTION_REG = 000000
     INTCON = %10001000'
     NOP
     NOP
     asm
       sleep
     end asm
     NOP
     NOP
    'RESUME SLEEP
     INTCON = 000000

  wend

end.



2013-01-13

vbausbio.dllのusbio2.0対応、windows7対応

vbausbio.dllのv100を暫定公開していましたが。
bugがあり正常に動作していませんでした。

開発に最新のVisualStudioを使って原因の切り分けが難しくなっていましたので、
この度、VC++6.0の環境を復活させて見直ししました。

いい感じになったので再度暫定公開をします。
開発環境が元に戻ったのでバージョンを戻しましたv070になります。
ダウンロードは以下の場所からできます。
http://bake-san.com/download/vbausbio/v070/vbausbio_v070.zip
動作確認をした環境は
○WindowsXP + Excel2003
○Windows7 32bit + Excel2013 32bit
○Windows8 32bit + Excel2013 32bit
×Windows8 64bit + Excel2013 64bit

※2013/01/15追記
vbausbio.dllは32bitのdllのため、64bitのアプリケーションからは使えないようです。
OSが64bitでもアプリもdllも32bitであればWOW64の機能で動作するみたいです。
64bitと32bitの混在は不可とのこと。
Windows8 64bitでも Excelが32bitであれば動作しそうです。

いままで上手く動作しなかった方は一度試してみていただければと思います。

開発環境は32ビットですが64bitでも上手く動作するかもしれません。
誰か人柱になっていただいてテストをお願いできればと思います。

問い合わせをいただいていた、
VisualStudioをインストールしないと動かない
uio2_outなどの命令が定義されていないなどのエラーがでる。
などの不具合に対応しています。

また、命令の表記が統一されていないものがありv100で統一していました。
そのため逆に今までのプログラムが動かなくなっていました。
今回のv070では今までの表記も残しています。
該当の命令は以下のとおりです。
 uio_getdevs
 uio_getDevs
 uio_seldev
 uio_selDev
 uio_getvid
 uio_getVid
 uio_getpid
 uio_getPid
 uio_selid
 uio_selId

定義がされていなかったのは以下の命令です。
途中でソースがデグレートしていたようです。
 uio_cmd
 uio2_out
 uio2_inp
 uio2_inOut
 uio2_outIn
 uio2_setSys
 uio2_getSys

2012-10-07

メモリー制限のないHI-TECH C で12F629を使う

いままでPICはmikroBASICを使っていましたが、ちょっと凝ったプログラムを組むと2kの壁にぶつかり思うようにできていませんでした。
そこで、無償のMAPLABで使える無償でメモリー制限の無いHI-TECH C とC18を使ってみるもとにしました。

CONFIGとか初期設定がPIC毎に重要になってくるので、覚書としてブログに投稿しています。

まずは手持ちのPICを 12F629を試してみることにしました。
Googleで検索して調べながらしましたが、どうもHI-TECH CのバージョンによりCONFIGビットの書き方が違うようでかなり悩みました。検索すると古いバージョンのサンプルが多いようです。

__CONFIG(UNPROTECT & MCLRDIS & BORDIS & PWRTEN & WDTDIS & INTIO) ;
このパターンは古いバージョンとなり、ソースの先頭に
#define _LEGACY_HEADERS
が必要になります、このおまじないをつければ、古いバージョンのソースが使えます。

ここでつかったサンプルソースは新しいバージョンのCONFIGです。
#define _LEGACY_HEADERSは必要ないのでコメントにしています。

ソースは以下の通りです。

 
// test001.c
//#define _LEGACY_HEADERS
 
#include "pic.h"
#include  // Required to interface with delay routines
 
#ifndef _XTAL_FREQ  
// Unless already defined assume 4MHz system frequency  
// This definition is required to calibrate __delay_us() and __delay_ms()  
#define _XTAL_FREQ 4000000
#endif


 
__CONFIG(CP_OFF & BOREN_OFF & MCLRE_OFF & PWRTE_OFF & WDTE_OFF & FOSC_INTRCIO); //Idoling current 0.06uA
 
void main(void){
  int i;
 
  GPIO=0;
  CMCON = 0b00000111;
  TRISIO = 0b00000000;
  //ANSEL = 0x00;  

  while(1){
    for (i=0;i<5 p="p">      GPIO=0b00111111;
      __delay_ms(30);
      GPIO=0b00000000;
      __delay_ms(70);
    }
     __delay_ms(50);
 
    for (i=0;i<2 nbsp="nbsp" p="p">      GPIO=0b00111111;
      __delay_ms(30);
      GPIO=0b00000000;
      __delay_ms(170);
    }
  __delay_ms(500);
 }

}


2011-12-19

ジュールシーフ

http://pc.watch.impress.co.jp/docs/column/musashino_proto/20091008_320118.html?mode=pc
ここのサイトで紹介されているジュールシーフをブレッドボードで試しているところです。
使い古した電池でつけっぱなしで3日目、0.5vまで電圧が下がっていますが、まだついています。
以前、ガーデニングライトの回路図を調べた時に間違って書いた回路、そのものです。