顯示具有 arduino 標籤的文章。 顯示所有文章
顯示具有 arduino 標籤的文章。 顯示所有文章

2021年8月19日

picoboard變uno

 記錄一下,免得又忘了。

motoduino的picoboard 是用ATmega328晶片去做的。用志文老師的方法,可以把picoboard改韌體,變成一片uno。


 

找一塊uno,燒錄範例arduinoisp,把燒錄器改成arduino as ISP,再選擇工具/bootloader。燒錄bootloader前要把腳位接好,可以參考之前的文章。

https://wdpsestea.blogspot.com/2019/11/picoboarduno.html

燒好後,各感應器的腳位為:

1.J4-A1(D15),

2J3-A2(D16),

3J2-A4(D18),

4按鈕D2,

5.J1-A5(D19),

6光敏A6(D20),

7.聲音micA3(D17),

8滑桿(A0)]

但我使用digitalRead(2)一直讀不出按鈕的值。看了好多文章,都無解。

最後終於查到這個D2要額外啟動才行

在void setup()要加上

    DDRD  &= ~( 1 << PD2 );     // Clear the PD2 pin and set PD2 (PCINT0 pin) now as input
    PORTD |= (1 << PD2);        // Set PIN PD2 as INPUT with pull-up enabled

    EICRA |= (1 << ISC00);      // set INT0 to trigger on ANY logic change
    EIMSK |= (1 << INT0);       // Turns on INT0

按鈕未按時,D2的值是1,按下去D2的值是0

 


2021年8月7日

web serial api記事

不錯的文章 

https://wicg.github.io/serial/

https://github.com/svendahlstrand/web-serial-api

https://github.com/rafaelaroca/web-serial-terminal

 https://ithelp.ithome.com.tw/articles/10161189

 連線

port = await navigator.serial.requestPort({});
await port.open({ baudRate: 9600 });

寫入資料

const encoder = new TextEncoder();
const writer = port.writable.getWriter();
await writer.write(encoder.encode(value));
writer.releaseLock();

讀出資料

reader = port.readable.getReader();
let value = await reader.read();
let uint8array = new TextEncoder().encode("¢");
let string = new TextDecoder().decode(value.value);
string = string.split('\r\n');
analog_inputs[pin] = string[0];
//console.log('analog_inputs[pin]=',analog_inputs[pin]);
reader.releaseLock();

 

scratch-gui無法用async 需要npm  install  babel-polyfill

//async await estea
require('babel-polyfill');


arduino code

void setup() {
  Serial.begin(115200);
  pinMode(13, OUTPUT);
}
void loop() {
  int cmd = Serial.parseInt();
  if(cmd == 1){
    digitalWrite(13, HIGH);   
  }else if (cmd == -1){
    digitalWrite(13, LOW);   
  }
  Serial.println(analogRead(A0));
}

2019年11月17日

python arduino 記事

https://pypi.org/project/pyFirmata/
韌體要燒入範例檔standfirmata

install pyfirmata

git clone https://github.com/tino/pyFirmata
cd pyFirmata
sudo python3 setup.py install
 
sudo pip3 install pyfirmata


python3
//載入
from pyfirmata import Arduino, util

board = Arduino('/dev/ttyUSB0')
//讀取類比信號A0
it = util.Iterator(board)
it.start()
board.analog[0].enable_reporting()
board.analog[0].read()
 
//寫入數位信號D13
board.digital[13].write(1)
 
 

2018年10月12日

bpi-bit led function

要讓led亮燈程式碼
#include <NeoPixelBus.h>
const uint16_t PixelCount = 25;
const uint8_t PixelPin = 4;
NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin);


#define colorSaturation 128
#define ledPower 2

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200); //Serial Port Config 115200-8-N-1
  strip.Begin();
  strip.Show();
  pinMode(ledPower,OUTPUT);
  digitalWrite(ledPower, HIGH); //It's very important for the v1.2, if you use the v1.4 ,you can delete it

}

void loop() {
  // put your main code here, to run repeatedly:
  strip.SetPixelColor(20, RgbColor (0, 255, 0));
  strip.Show();
  delay(100);
  strip.SetPixelColor(20, RgbColor (0, 0, 0));
  strip.Show();
  delay(100);

}


把led燈滅用副程式來做:在void setup(){}前加入
 void led_black(){
  int i =0 ;
  for ( i =0;i <25;i++){
    strip.SetPixelColor(i, RgbColor (0, 0, 0));
    }
    strip.Show();
}
再把
  strip.SetPixelColor(20, RgbColor (0, 0, 0));
  strip.Show();
兩行改成呼叫副程式一行,以後只要一個副程式即可以把led燈熄滅。
   led_black();




2016年12月2日

arduino與電流急急棒

一.電流急急棒探究
頗為流行的電流急急棒,使用原理是?你可曾探究呢?
想一下家中電鈴的構造:有一個開關,一按下去,電流通過鳥鳴器,電鈴響了,放開開關,鳥鳴器停止響。
 

 那電流急急棒是不是也相同呢?開關是誰?有答案了嗎?

所以我們使用arduino設計電流急急棒時,首先你要會讓蜂鳴器響。

 我們使用D9來驅動蜂鳴器,把它設定成pwm,如果pwm出力是0,蜂鳴器不會響,其他則會有警報聲。

開關如何設計呢?
我們使用D4來做開關,如果D4是通的(值是1),警報器會響,否則警報器不響。


 那如何設計D4是通的呢?使用鉛線?鐵絲?銅線?

如何把D4 的地線G和資料線S設計成電流急急棒?

還能做什麼變化呢?聰明的你想一下,把它做出來


2016年9月17日

arduino觸控

arduino觸控製作筆記(類比+數位)
使用類比信號A0-A5
範例:使用A0來偵測是否有觸控

我們發現當沒有用手接觸時是數值亂跳,如果把手接觸A0的導線時,A0的值是0或是1023。

使用數位針腳當偵測腳位


這樣做,當手離電阻一段距離時,D4值顯示是0,但是手靠近時或接觸時,D4的值是0或1,亂跳,經由這樣的特性我們可以設計成觸控開關。筆者是用一個清單(陣列)記錄D4的值,當5次裡有一次是1表示有手靠近,則顯示出有觸控。

2016年4月5日

文德國小創意仿生獸-仿生獸創客

看了一些仿生獸做法,自己想了想,修改了一下。
使用3D印表機做
1.主板:在機板上加了後腳的支柱,上面做了電池盒。
https://www.tinkercad.com/things/1sEnYxm8IQt-

2.四隻腿:使用7公分的圓角長方形,開了軸洞,這一部分用雷切或許會快些。
https://www.tinkercad.com/things/0HDwKOREDwn-

3.腳:幫它裝上腳比較好看,也練習3D繪圖。
https://www.tinkercad.com/things/aTFw2GM2X7I-

4.軸:使用3mm圓柱,加上烙鐵或是熱融槍的熱固定
https://www.tinkercad.com/things/c6YvqyF7cbo-

5.T軸:改成已經有的減速馬達形狀和大小
https://www.tinkercad.com/things/gw1dfXhBhNS-t

 這樣全程不必使用到鏍絲。

又想到加上arduino可以讓它前進又後退。
使用可變電阻來當馬達的出力大小
使用麥克風值600來改變正反轉
arduino ide檔案 

https://drive.google.com/file/d/0Bz6-J_NwALFBQjNJSjU4c21EV0E/view?usp=sharing&resourcekey=0-DIG-OzFsdnlmMJgRL8sh7g

ardublock檔案


2016年1月23日

改良的設備(motoduino car)

使用了arduino設備,自己覺得有些小心地方要改,要廠商做需要長久時間,剛好3D印表機到位,自己畫了圖,改了以下地方。
1.底板座:arduino底座無保護措施,常容易造成短路或是數字亂跑(用紙板也可以)。
https://tinkercad.com/things/3ELU4gShXg4


2.外接電池座盒:外接電池如何固定在車架上?用魔鬼粘,還是會脫落,做個盒子來放吧。
https://tinkercad.com/things/0x9dtIGP8u3
3.車子後輸:在控制車子時常有人反應,馬力不好控制,容易偏,看了一下有可能是後輸是萬向輸,有一定的啟動偏移力。改成滾珠輪子會好些,到五金行買了按摩用的設備,平均一個珠子不到十元,弄個底座來用。
https://tinkercad.com/things/h0Dqz0fgjfd


https://www.tinkercad.com/things/gWHnFGXyTPK-tires

4.步進馬達轉盤:老師想把原來轉盤的孔數改成6個或是8個。
https://tinkercad.com/things/bKBnaKLf0qH



2015年12月30日

心跳偵測器

曾經想過用麥克風來收心跳,但雜音太多,沒有成功。看到有人賣手指心跳偵測器,買一個來試試。
它的原理是利用紅外線反射原理, 感測手指脈搏次數,試了很久,因為到底是用類比還是數位針腳呢?在scratch2下,個人測試要用類比來做會比較好。
個人的scratch積木:
sb2檔案

2015年12月13日

壓力偵測FSR402心得

近日使用壓力偵測感應器,記錄一下。
它是一個電阻式的設備,在不同作用力進入時它的電阻值會改變。
重要的是雖然它只有2個接線,接入arduino時記得要放一個10K的電阻在5V和data腳位中,不然值會亂跳。
它可偵測範圍100克至10公斤
值0-1023

進一步資料可以參考:http://thats-worth.blogspot.tw/2014/07/fsr-force-sensing-resistor.html

其他是maker部分,如何歸零,如何讓殘存壓力除去....細部問題。需要去細細處理。

使用壓力計啟動繼電器範例:
http://opensource.ntpc.edu.tw/moodle/pluginfile.php/45095/mod_folder/content/0/%E5%A3%93%E5%8A%9B%E8%81%96%E8%AA%9501.abp?forcedownload=1

2015年12月1日

水溫感測器arduino

它要用兩個函數需下載到/usr/share/arduino/libraries/
OneWire.h的下載點:
http://playground.arduino.cc/Learning/OneWire
http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip

DallasTemperature.h的下載點
https://github.com/milesburton/Arduino-Temperature-Control-Library

下載後解壓縮至 /usr/share/arduino/libraries 資料夾中
我修改
http://www.motoduino.com/products-english/?layout=edit&id=53
網站做法,使用數位腳位3,加上了如果溫度高於28度,會作動作(蜂鳴器響),每隔1秒偵測一次
開啟arduino ide
貼上下列內容

#include <OneWire.h>
#include <DallasTemperature.h>
 // Data wire is plugged into port 2 on the Arduino

#define ONE_WIRE_BUS 3

 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);

void setup(void)

{
   // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  pinMode( 11 , OUTPUT);
  // Start up the library
  sensors.begin();
}

void loop(void)

{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");

  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));

   if (( ( (sensors.getTempCByIndex(0)) ) > ( 28 ) )) 
 {    //digitalWrite( 11 , HIGH );      

 tone(9, 250);

 }else{       

noTone(9) ;//    digitalWrite( 11 , LOW ); 

 }
  delay(1000);
}

2015年10月26日

繼電器-互動家電

使用光敏感應A1和按鈕D2來控制繼電器D4、D12,分別啟動兩種家電。
s2a程式碼:
 繼電器接法:
插頭接法:把一條電源線截斷,兩端鎖在插座的兩個端點。
youtube影片


2015年2月9日

變更藍芽設定arduino

  • 上arduino課時需要改藍芽不然一堆藍芽名稱一樣密碼一樣
  •  
  • AT:測試,回應「OK」
  • AT+VERSION:回應靭體的版本。
  • AT+NAMExyz:將裝置名稱改為「xyz」。                                 
  • AT+PIN1234:將連線密碼換為「1234」。
  • AT+BAUD4:將 baud rate 換為 9600。
  • AT+BAUD5:將 baud rate 換為 19200
  • AT+BAUD6:將 baud rate 換為 38400
  • AT+BAUD7:將 baud rate 換為 57600

2014年10月12日

ntpc U&M安裝s2a

記錄一下在新北市教育作業系統安裝s2a實(scratch2先升級到最新版)
參考文章:http://www.computacaonaescola.ufsc.br/?page_id=503&lang=en
1.安裝python-pip
sudo -s
apt-get update 
apt-get install python-pip
 
2.顯示 pre-installed Python 套件:
pip freeze
 
3.如果沒有出現任何像pyserial==2.5 or pyserial==2.7 在清單中請建立使用 pip, 並安裝 PySerial:
 pip install PySerial
 
4.安裝 PyMata 為了串行通訊在Python 用 Firmata 在 Arduino (PySerial 需要事先安裝 ):
pip install PyMata   
  
5.下載s2a到家目錄
https://github.com/MrYsLab/s2a_fm
 
6.解壓縮,並複製s2a_fm_base_zh_tw.sb2到文件資料夾中

 unzip s2a_fm-master.zip
chmod -R 777  s2a_fm-master
 cp s2a_fm-master/ScratchFiles/ScratchProjects/s2a_fm_base_zh_tw.sb2 ~/Documents/
 chmod 777 ~/Documents/s2a_fm_base_zh_tw.sb2
 
7.開啟終端機
sudo -s

cd ~/cd s2a_fm-master
 python s2a_fm.py /dev/ttyACM0
 
為了避免學生輸入一堆英文字,可以把這一段做成一個sh內容如下
#!/bin/bash 
cd ~/
cd s2a_fm-master
 python s2a_fm.py /dev/ttyUSB0 
 
並做成一個.desktop來執行 

8.看到
s2a_fm version 1.5   Copyright(C) 2013-14 Alan Yorinks    All Rights Reserved 
PyMata version 1.58  Copyright(C) 2013-14 Alan Yorinks    All rights reserved.

Opening Arduino Serial port /dev/ttyACM0 
Please wait while Arduino is being detected. This can take up to 30 seconds ...
Board initialized in 0 seconds
Total Number of Pins Detected = 20
Total Number of Analog Pins Detected = 6
Please wait for Total Arduino Pin Discovery to complete. This can take up to 30 additional seconds.
Arduino Total Pin Discovery completed in 0 seconds
Starting HTTP Server!
Use <Ctrl-C> to exit the extension

Please start Scratch or Snap!
表示連線成功
9.啟動scratch2,並開啟文件資料夾中的s2a_fm_base_zh_tw.sb2
看到 下圖表示連線成功可以運作了。

2014年3月9日

motoduino創意花燈

把它記一下以免忘記。
1.線路圖(小畫家畫),我不想畫電路圖是因為我也不太會,國小學生不需要懂電路圖,學生在玩的過程中大概已有概念,黑色是負極,紅色是正極。
2.材料:
二條LED燈條一條約50元-55元
12V電池座約30元一個
藕合繼電器一個約100元
motoduino+S4A版本,約1000元。會用motoduino是因為它本身有馬達模組,可以少接一塊板子。
自走車約一千元(不太記得)

3.這個接法可以省掉一個外接電源,源本motoduino或是arduino要外接電源,而LED燈條也要外接電源,現在把它用同一個外接電源。

4.學生用保特瓶做花燈-美勞課融入

5.LED燈條用熱融膠固定

6.學生先畫出花燈節奏。






7.老師把繼電器和花燈線路接好(繼電器來控制花燈節奏),小學生要在短時間內懂如何接,難度高,也無法操作細部連線。

8.學生使用新北市自由軟體作業系統+arduino+ArduBlock寫入花燈節奏程式,學生可以聽懂看懂ArduBlock積木,五組學生都獨立完成自己的花燈程式,有一組還寫得超長,令我驚奇。程式上傳E學園保存。


9.接上電池,試運轉,如何讓自走車不會超過場地範圍?想很久,有想過臉盆(全)、旗竿座(珍)、最後決定用2000CC飲料檔柱子,綁上網路線,讓它繞圈。


10.學生在飲料瓶上設計美工,把作者主題....畫在瓶子上。



11.有一組學生程式沒弄好,結果會自己繞圈,因為左右馬達出力不同,原來這是美麗的錯誤。原來的想法被學生推翻了。


12.在學校川堂展期二週(每天早上7:40-8:10),每一組派一人到場維護並練習解說。



13.結束後學生獎勵:飲料、LED燈條、花燈、電池座,每一組學生都做得很好。繼電器和motoduino和自走車回收,上課還要使用。

約三年前自己花近四千元讓女兒到國高學機器人設計,回來問女兒,程式呢?她說只有那邊有那個軟體可以讀出來,機器人呢?很貴無法帶回和買,研習的錢還是小事,還需一個大人陪搭車到新竹接送。如今我的學生可以不花到錢體驗幾乎相同的課程,自由開放的魅力,值得推動。

光輝老師的作品,和尋跡機器人幾乎一樣,而且花燈超級好看。
學生自己看說明書花二節課組裝自走車,從做中學,不過要多花很多時間,到底是教學問重要還是實際經驗重要?過程中,學生開始鎖一顆鏍絲都要很久,接線也是一樣,雖是簡單動作,沒做過是不會了解其中技巧的,給學生時間和機會,他會把成果秀給你看。



2014年1月23日

安裝 ArduBlock 到 Arduino IDE

看到可以用積木來産生arduino的程式碼,可以讓arduino不必接電腦而運作,這個要記錄下來。
在ubuntu下如何安裝呢?
1.安裝arduino:只要在套件中心輸入arduino,就可以看到arduino ide的程式,把它打勾,安裝起來就好了。

安裝好後,usb設備會無法啟用,必需用sudo 後才能啟用,必需做下列調整
sudo -s
cd /etc/udev/rules.d
vim 99-arduino.rules
貼入下列內容
如果是 UNO板子
SUBSYSTEMS=="usb", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", SYMLINK+="ttyACM%n"
其他的arduino板子
SUBSYSTEMS=="usb", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", SYMLINK+="ttyUSB%n"
至於YYYY和XXX要用lsusb來查出來,以個人為例找出來的設備是
Bus 003 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
YYYY=0403
XXXX=6001
做好後重新開機,這樣就不用使用最高權限來開arduino也可以啟用arduino板子了。

2.安裝 ArduBlock:
要把檔案ardublock-all.jar放到arduino的tools資料夾中建立ArduBlockTool/tool/兩個資料夾。
下載ardublock-all.jar:http://cloud.github.com/downloads/taweili/ardublock/ardublock-all.jar
網站失連可以用下網址
https://drive.google.com/file/d/0Bz6-J_NwALFBUnNPZ2hRU0pNbVE/edit?usp=sharing

sudo -s
cd /usr/share/arduino/tools
mkdir ArduBlockTool
cd ArduBlockTool
mkdir tool
cd tool
wget http://cloud.github.com/downloads/taweili/ardublock/ardublock-all.jar

安裝好後執行arduino