2022年12月13日 星期二

樹莓派-GPIO接脚

 VNC下載



這些接腳的相關特性如下:

  • 電源腳位有 5V (2支)、3.3V (2支)及 GND (8支)。
  • 當輸出腳位時,其電壓分為高電位 3.3V、低電位 0V。
  • 當輸入腳位時,其電壓 < 0.8V 時判斷為低電位、 > 1.3V 時判斷為高電位。
  • 除了GPIO 2、GPIO 3是固定內接上拉電阻,其他腳位可透過程式設定內接上拉或下拉電阻。
  • 單一腳位輸出電流 3mA,電流輸出總和不超過 50mA。

以上為電路特性,比較需要注意的點如下:

  1. 輸入腳位可忍受的電位為 3.3V,若會超過就需要用電源轉換模組或是採用電阻分壓方式,避免將樹莓派弄壞。
  2. 當程式規劃該腳位為輸出時,不可連接輸入特性的裝置接腳,避免造成樹莓派損毀。例如:樹莓派輸出腳位,接上按鈕開關的訊號腳位。

這邊主要介紹兩種接腳編號,用於後續積木程式使用:

  1. 電路板接腳編號(GPIO.BOARD),即上圖中間位置的編號
  2. BCM GPIO編號(GPIO.BCM),即上圖兩側延伸出來的名稱,以GPIO開頭為主。

除了設定腳位為輸入或輸出模式外,單一接腳附加功能或多接腳組合技如下列:

  • PWM (Pulse-Width Modulation)
    • 軟體模擬PWM(Software),適用所有控制腳位。缺點是無法確保輸出的脈寬穩定性。
    • 硬體PWM(Hardware),僅有兩組可用,第一組為GPIO 12、GPIO 18 (此兩接腳輸出一致),第二組為GPIO 13、GPIO 19。
  • UART (Universal Asynchronous Receiver-Transmitter) 通用非同步收發傳輸器
    • 使用接腳:TX(GPIO 14)、RX(GPIO 15)。
    • 於其他裝置連接時,將樹莓派的TX,連結接其他裝置的RX;樹莓派的RX,連接其他裝置的TX,便可以進行UART序列埠資料傳輸。
  • I2C (Inter-Integrated Circuit)
    • 使用接腳:資料線 SDA(GPIO 2)、時脈線 SCL(GPIO 3)。
    • 另一組為EEPROM使用接腳。
  • SPI (Serial Peripheral Interface)
    • SPI0使用接腳:MOSI(GPIO 10)、MISO(GPIO 9)、SCLK(GPIO 11)、CE0(GPIO 8)、CE1(GPIO 7)。
    • SPI1使用接腳:MOSI(GPIO 20)、MISO(GPIO 19)、SCLK(GPIO 21)、CE0(GPIO 18)、CE1(GPIO 17)、CE2(GPIO 16)。

2022年11月9日 星期三

設定樹莓派 WiFi 無線網卡固定 IP 的方法

設定固定 IP 程序如下 :


1. 顯示原來的網路介面設定 :

pi@raspberrypi:~ $ sudo cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d 


2. 編輯 interfaces 檔 :

預設只有一行 (設定目錄). 然後用 nano 編輯一個 interfaces 檔案如下, 此檔案會存在預設工作目錄 /home/pi 底下 :

pi@raspberrypi:~ $ nano interfaces 
pi@raspberrypi:~ $ cat interfaces 
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
address 192.168.2.192   
gateway 192.168.2.1
netmask 255.255.255.0
network 192.168.2.1
broadcast 192.168.2.255
wpa-ssid "EDIMAX-tony"
wpa-psk "blablabla"

檔案中第一行就是上面原始 /etc/network/interfaces 檔的內容, 其中 address 就是設定我們想要的區網固定 IP; gateway 與 network 同樣設為 WiFi 基地台的網址即可; 而 netmask 與 broadcast 用 ifconfig 就可查到.


3. 覆蓋預設之 /etc/network/interfaces 檔 :

將此檔案以管理員身分複製到 /etc/network/interfaces 覆蓋原來的檔案 :

pi@raspberrypi:~ $ sudo cp interfaces /etc/network/interfaces 

然後用下列指令重啟網路介面或重開機即可 :


4. 重啟網路介面或重開機 :

pi@raspberrypi:~ $ sudo /etc/init.d/networking restart 
用 ifconfig 查詢可知樹莓派區網 IP 已改為 192.168.2.192 了 :

pi@raspberrypi:~ $ ifconfig 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 11  bytes 602 (602.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 602 (602.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.192  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::a57:ff:fe16:880c  prefixlen 64  scopeid 0x20<link>
        ether 08:57:00:16:88:0c  txqueuelen 1000  (Ethernet)
        RX packets 63  bytes 11479 (11.2 KiB)
        RX errors 0  dropped 54  overruns 0  frame 0
        TX packets 80  bytes 14188 (13.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

這樣做的好處是以後用筆電透過 WiFi 網路連線樹莓派時只要固定連線 192.168.2.192 即可, 畢竟家中連線基地台的終端設備有手機平板等, 大家從 DHCP 獲得的 IP 是動態的, 樹莓派只要重開機所獲得的 IP 每次都不一樣的話就很麻煩.

樹莓派教學影片

樹莓派的安裝 -積木程式的設定

樹莓派到底是什麽?
5個入坑樹莓派前需知道的事!【明富其識】
樹苺派3B+ 安裝作業系統到記憶卡然後開機
[樹莓派3 RaspBerry Pi 3] NOOBS 作業系統安裝
如何安裝樹莓派4 3 2 1系統OS (2款安裝軟件)
樹莓派基礎課程(一) 首次使用的中文桌面環境設定
樹莓派3B+玩盡軟硬件遊戲 Raspberry Pi 3B+【中文字幕】(香港發音)
樹莓派GPIO - 新手入門講解【明富其識】
樹莓派4安裝Windows 10 2021最新教程
【Aiden】用樹莓派打造家庭娛樂中心

樹苺派的固定IP設定及網路設定說明

零基础玩树莓派: ep3 远程桌面
遠端控制樹梅派
raspberry pi 樹莓派VNC Viewer 跟 SSH 遠端連線

Raspberry Pi 安裝軟體

1.SD卡格式化工具

2.SD卡燒錄工具

3.樹莓派OS Image檔

2022年4月12日 星期二

Wordpress安裝

下載連結 

1.將下載好的wordpress檔解壓縮至c:\Appserv\www\下面

2.進入瀏覽器鍵入網站網址

127.0.0.1/wordpress/index.php 看到下面畫面


3.按下「開始安裝吧!」進入設定資料庫名稱、資料庫使用者名稱、資料庫密碼、資料庫主機位址、資料表前置詞,如下畫面


請先進入資料庫設定一個使用者名稱及密碼http://127.0.0.1/phpmyadmin/

建立一個wordpress的資料庫

因為我們現在是用單機設定,只要設定「使用者名稱」、「密碼」就可以了,請注意名稱及密碼一定要牢牢的記住,否則會很麻煩的。(也可以用最高管理者root及密碼)

2022年3月22日 星期二

1110323實作一

 利用PHP自動繪製表格表單實作

1.檔案1:將程式碼編輯完後存檔ex1.html,放在apache的根目錄中,執行127.0.0.1/ex1.html得到下方畫面(30%)

程式碼如下:





2.接收檔案:將程式碼編輯完後存檔ex1-run.php,放在apache的根目錄中,執行127.0.0.1/ex1.html輸入適當的值後,自動完成繪製表格(40%)


3.加分題:利用上述範例設計一個html檔(abc.html),提供學生輸入國文、英文、數學成績,在下一個php檔(檔名為abc-run.php)中完成計算總分、平均值。(30%)

1110323實作二

 繪製表格工具

1.利用html繪製下面的表格,存檔ex2.html放在apache的根目錄下,執行127.0.0.1/ex2.html得到下面表格(60%) 




2.加分題:利用html繪製下方表格,存檔ex2-1.html放在apache的根目錄下(40%)











1110323實作三

 數位健康聲明書製作

1.利用表單製作一健康聲明說填報系統,檔名為ex3.html,將程式碼放在apache的根目錄下,執行127.0.0.1/ex3.html得到下面的畫面:


    程式碼:



2.輸出接收表單(健康聲明書產生器):將下面程式碼存在apache的根目錄下,檔名為rec3.php,完成上一個檔案輸入後會產生名下畫面


    程式碼:








2022年3月8日 星期二

RGB

 int r1=3;

int y1=4;

int g1=5;

int r2=6;

int y2=7;

int g2=8;

void setup(){

  pinMode(r1,OUTPUT);

  pinMode(y1,OUTPUT);

  pinMode(g1,OUTPUT);

  pinMode(r2,OUTPUT);

  pinMode(y2,OUTPUT);

  pinMode(g2,OUTPUT);

}

void loop(){

  digitalWrite(r1,1);

  digitalWrite(y1,0);

  digitalWrite(g1,0);

  digitalWrite(r2,0);

  digitalWrite(y2,0);

  digitalWrite(g2,1);

  delay(5000);

  digitalWrite(g2,0);

  delay(1000);

  digitalWrite(g2,1);

  delay(1000);

  digitalWrite(g2,0);

  delay(1000);

  digitalWrite(g2,1);

  delay(1000);

  digitalWrite(r1,1);

  digitalWrite(y1,0);

  digitalWrite(g1,0);

  digitalWrite(r2,0);

  digitalWrite(y2,1);

  digitalWrite(g2,0);

  delay(2000);

  digitalWrite(r1,0);

  digitalWrite(y1,0);

  digitalWrite(g1,1);

  digitalWrite(r2,1);

  digitalWrite(y2,0);

  digitalWrite(g2,0);

  delay(5000); 

digitalWrite(g1,0);

  delay(1000);

  digitalWrite(g1,1);

  delay(1000);

  digitalWrite(g1,0);

  delay(1000);

  digitalWrite(g1,1);

  delay(1000);

  digitalWrite(r1,0);

  digitalWrite(y1,1);

  digitalWrite(g1,0);

  digitalWrite(r2,1);

  digitalWrite(y2,0);

  digitalWrite(g2,0);

  delay(2000);

}


2022年3月6日 星期日

PHP常用語法說明

  • PHP的語法在HTML是用

<?php

  php程式碼-------

?>

的方式進行程式的編撰,一般編輯器都使用文字編輯器

 

  • echo

輸出一個或多個字符串

例如:都會在網站上輸出Hello world

echo 'Hello world<br>';

echo "Hello world<br>";

echo ('Hello world<br>');

 

也可以用變數來取代

例如:

$string='Hello world';

echo $string;

 

  • 跳脫字元

echo 出單引號與雙引號需要利用跳脫字元「\」將引號跳脫出來,這樣才能 echo 出來

若字串是用單引號包起來,則裡面可以使用雙引號,旦若要使用單引號,則需加上跳脫字元「\

若字串是用雙引號包起來,則裡面可以使用單引號,旦若要使用雙引號,則需加上跳脫字元「\

例如:

echo 'echo 出單引號 : ';

echo ' \' ';

echo '<br>';

echo 'echo 出雙引號 : ';

echo " \" ";

雙引號會把變數取代成變數的值,但是單引號不會

例如:

$str = 'abc';    

echo "Hello! $str"; // 結果 Hello! abc    

echo 'Hello! $str'; // 結果 Hello! $str

單引號的跳脫字元並不會被處理

例如:

echo '\n'; // 結果 \n    

echo '\t'; // 結果 \t

 

  • print

輸出一個或多個字符串,基本功能同echo

 

  • print_r

輸出陣列(Array)

print_r PHP 內建的基本函數,用來一次輸出整個陣列內容

例如:

$fruit = array('apple','banana','orange','melon');

print_r($fruit);

和下面的輸出一致

$fruit = array('apple','banana','orange','melon');

foreach ($fruit as $value) {

  echo $value;

}

 

  • 註解

程式備忘、註解掉不需要的程式碼片段、程式片段說明

PHP 的單行註解是用雙斜線符號「//」或井字號「#

PHP 的多行註解是開頭使用斜線加星號「/*」,結尾使用星號加斜線「*/

例如:

echo 'Test comments'; //從這開始是註解說明

echo 'Test comments'; #從這開始是註解說明

echo 'Oh my god';  /* 這行會被echo出來文字「Oh my god*/

 

  • 變數的用法

PHP 設定變數的方式很簡單,由錢字號($)開始,後面接著變數名稱,名稱有大小寫之分。「第一個字元」不能是數字。

例如:

$test=123; //設定變數test為數字123

$test=3.14159;  //設定變數test為浮點數3.14159

$test=true;     //設定變數test為布林值

$test="hello world";  //設定變數test為字串 hello world

$test='<a href="xxx.php">連結</a>';   //設定變數testHTML的超連結內容

$test="<a href=\"xxx.php\">連結</a>";  //設定變數testHTML的超連結內容,裡面若使用相同的引號需加跳脫字元

$a='click this '.$test;    //設定a變數的結果為字串加上$test變數的內容

 

  • 比較運算子與邏輯運算子

 

運算子

範例

說明

==

$a==$b

a等於b

===

$a===$b

a等於b,且資料形態相同

!=
<>

$a!=$b
$a<>$b

a不等於b,範例2種皆可使用

!==

$a!==$b

a不等於b或資料形態不同

> 

$a>$b

a大於b

>=

$a>=$b

a大於等於b

< 

$a<$b

a小於b

<=

$a<=$b

a小於等於b

運算子

範例

說明

&&
and

$a==$b && $a==$c
$a==$b and $a==$c

a等於b a等於c

||
or

$a==$b || $a==$c
$a==$b or $a==$c

a等於b a等於c

!

!$a

a不為true

xor

$a xor b

ab 只有一個為true

 

  • 陣列的用法

PHP 設定陣列的方式很簡單,設定一個變數為陣列(array)即可使用。

若沒有指定索引的陣列則索引值會依序從0開始

例如:宣告變數$test為陣列,裡面輸入了abc三個字串

$test=array('a','b','c');

//或是先將變數宣告成陣列再放入值

$test=array();

$test[]='a';

$test[]='b';

$test[]='c';

//或是依序指定索引值放入

$test=array();

$test[0]='a';

$test[1]='b';

$test[2]='c';

//將陣列內容印出

echo $test[0];  //印出a

echo $test[1];  //印出b

echo $test[2];  //印出c

可以自訂索引來取得對應的值比較方便

例如:宣告變數$fruit為陣列,裡面輸入了三種水果的中文和翻譯

$fruit=array(

'蘋果'=>'apple',

'香蕉'=>'banana',

'紅莓'=>'cranberry'

);

//或是先將變數宣告成陣列再放入值

$fruit=array();

$fruit['蘋果']='apple';

$fruit['香蕉']='banana';

$fruit['紅莓']='cranberry';

//將陣列內容印出

echo $fruit['蘋果'];  //印出apple

echo $fruit['香蕉'];  //印出banana

echo $fruit['紅莓'];  //印出cranberry

//依序印出全部的索引和值

foreach ($data as $key=>$value){

  echo $key.'='.$value;  //印出 蘋果=apple…依此類推

}

 

  • If…else邏輯判斷式

例如:以下輸入結果為a為真

$a=true;

if ($a){echo 'a為真';}

if (!$a){echo 'a為假';}else{echo 'a為真';}

 

例如:下面的例子會輸出a+b大於等於3

$a=1;$b=2;

if ($a+$b>=3){echo 'a+b大於等於3';}

if ($a+$b<3){echo 'a+b小於3';}else{echo 'a+b大於等於3';}

 

多條件判斷可以加上elseif

例如:下面的例子可以輸出c大於2

$a=1;$b=2;$c=3;

if ($a>1){echo 'a大於1';}

elseif ($b>2){echo 'b大於2';}

elseif ($c>2){echo 'c大於2';}

else{ echo '條件皆不成立';}

 

 

  • switch…case 條件選擇

用法類似C++,記得每一個敍述都要有break; 執行完後該段敍述才會跳出

例如:

switch ($i) {

    case "apple":

        echo "i is apple";

        break;

    case "bar":

        echo "i is bar";

        break;

    case "cake":

        echo "i is cake";

        break;

    default:

        echo "unknown";

        break;

}

 

 

  • for迴圈

例如:印出01234

for ( $i=0 ; $i<5 ; $i++ ) {

 echo $i;

}

若中途需要跳出可以用break;

例如:

for ( $i=5 ; $i>0 ; $i-- ) {

  echo $i;

  if ($i==3){ break; }

}

//執行完的結果會印出543

可以利用count來取得陣列大小內容

例如:

$arr=array('a','b','c','d');

for ( $i=0 ; $i<count($arr) ; $i++ ) {

 echo $arr[$i];

}

//執行完結果會印出abcd

  

  • foreach迴圈

用來索引陣列資料結構

例如:兩者的差別在於 $key 的變數會是索引值(0開始的數字),若無抓取的需求,則使用第一種即可

$arr = array("one", "two", "three");

foreach ($arr as $value){echo $value;}

foreach ($arr as $key => $value){echo $value;}

例如:自定義索引值

$arr = array("A"=>"one", "B"=>"two", "C"=>"three");

foreach ($arr as $key => $value){

  if ($key=="A" || $key=="B"){echo $value;}

}

//此範例只會印出 one two

 

  • while迴圈

設定條件,不明確迴圈次數時使用

例如:印出1-10的數字

$i = 1;

while ($i <= 10) {

    echo $i;

    $i++;

}

另外也可也用後測式,前面加上do

例如:以下範例會印出1~5的數字

$i = 1;

do {

    echo $i;

    $i++;

} while ($i <= 5);