Raspberry Pi Zero W + PCM5102 DAC + Inmp441 Google Assistant 2024

sudo nano /boot/config.txt

dtparam=i2s=on

Disable audio (snd_bcm2835) ที่ default onboard ถ้ามี

#dtparam=audio=on

dtoverlay=hifiberry-dac เอาไว้ท้ายสุดไฟล์

sudo nano /etc/asound.conf

pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

sudo reboot

Raspberry PI Zero W install OS ,MQTT without keyboard, monitor

Setup Wifi

create wpa_supplicant.conf

country=TH
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=”your-networks-SSID”
psk=”your-networks-password”
}

save and copy to root or sd drive:\

Enable ssh

create ssh.txt

save and copy to root or sd drive:\

reset default user password (user:pi password:raspberry)

create userconf.txt

pi:$6$c70VpvPsVNCG0YR5$l5vWWLsLko9Kj65gcQ8qvMkuOoRkEagI90qi3F/Y7rm8eNYZHW8CY6BOIKwMH7a3YYzZYL90zf304cAHLFaZE0

save and copy to root or sd drive:\

การ Fix ip address

sudo nano /etc/dhcpcd.conf

กรณี Wireless เพิ่มไปตรงท้ายบรรทัด

interface wlan0

static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

กรณีเป็น LAN

interface eth0 เพิ่มไปตรงท้ายบรรทัด

static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

การติดตั้ง MQTT MOSQUITTO

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install mosquitto mosquitto-clients

การสร้าง user แบบคนเดียว หรือหลายคน

sudo nano mosquitto_pwd.txt

aaa:aaaa*123456 // mqtt user1 password

bbb:bbb*123456 // mqtt user2 password

save แล้ว เข้ารหัส encrypt file โดยคำสั่ง

sudo mosquitto_passwd -U mosquitto_pwd.txt

การเพิ่ม password file ,config ไปยัง mosquitto

sudo nano /etc/mosquitto/mosquitto.conf

persistence true

allow_anonymous true
password_file /etc/mosquitto/mosquitto_pwd.txt

listener 1883

protocol mqtt

ตรวจสอบ service
sudo /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
หรือ
sudo service mosquitto status

หรือ ps ax | grep mosq

การสั่ง Restart Service

sudo service mosquitto restart

ดูว่า port ใช้งานได้ไหม

netstat -tlnp | grep mosq

sudo mosquitto -v

การดู view all topics

mosquitto_sub -h localhost -u user -P password -t # -d

ติดตั้ง Teamviewer บน Raspberry PI OS

64 Bit Preview Version https://download.teamviewer.com/download/linux/teamviewer_arm64.deb

32 Bit Preview Version https://download.teamviewer.com/download/linux/teamviewer_armhf.deb

ใช้คำสั่ง wget เช่น download 32 bits

wget https://download.teamviewer.com/download/linux/teamviewer_armhf.deb

sudo dpkg -i teamviewer_armhf.deb หรือ เรียกไฟล์ติดตั้งบน desktop

เชื่อม Wifi บน Raspberry Pi OS โดยไม่มีจอ

สร้างไฟล์ชื่อ wpa_supplicant.conf ไว้ข้างนอก

				
					country=TH # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 
network={
ssid="YOUR_NETWORK_NAME"
psk="YOUR_PASSWORD"
key_mgmt=WPA-PSK
}
				
			

กรณีที่มีหลาย SSID 

				
					country=TH # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 

network={
ssid="YOUR_NETWORK_NAME1"
psk="YOUR_PASSWORD1"
key_mgmt=WPA-PSK
id_str="ID_1"
priority=100
}

network={
ssid="YOUR_NETWORK_NAME1"
psk="YOUR_PASSWORD1"
key_mgmt=WPA-PSK
id_str="ID_2"
priority=99
}
				
			

เปิด SSH บน Raspberry Pi OS โดยไม่มีจอ

สร้างไฟล์ชื่อ ssh ไม่มีนามสกุลไว้

ใน Windows ไป command prompt สิทธิ์ admin

ไป ที่ Drive flash เช่น H:

copy con ssh. Enter

จากนั้นกด Ctrl-Z

ไฟล์สร้างไว้

install DHT Raspbian 10

ทำการ update และ upgrade Raspbian

sudo apt-get update
sudo apt-get upgrade
download libray DHT โดยใช้ของ adafruit
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
เข้า ไปใน folder เพื่อติดตั้ง library
cd Adafruit_Python_DHT
ติดตั้ง Library DHT ด้วยคำสั่ง
sudo python3 setup.py install
ทดลองเข้า folder เพื่อทดสอบการทำงาน
cd examples
sudo ./AdafruitDHT.py 11 8

ModuleNotFoundError: No module named ‘Adafruit_DHT’

ModuleNotFoundError: No module named ‘Adafruit_DHT’
เพราะใน Raspbian ล่าสุดเป็น python3 จึงต้องติดตั้งแบบ python3

ใช้คำสั่ง
sudo python3 setup.py install

Raspberry PI DHT Thingspeak Python3

import Adafruit_DHT

from time import time, sleep

from urllib.request import urlopen

import sys

WRITE_API = “Your ThingSpeak Write API” # Replace your ThingSpeak API key here

BASE_URL = “https://api.thingspeak.com/update?api_key={}”.format(WRITE_API)

SENSOR_PIN = 8 #GPIO 8

SENSOR_TYPE = Adafruit_DHT.DHT11

SensorPrevSec = 0

SensorInterval = 2 # 2 seconds

ThingSpeakPrevSec = 0

ThingSpeakInterval = 120 # 120 seconds

try:

    while True:     

        if time() – SensorPrevSec > SensorInterval:

            SensorPrevSec = time()

            humidity, temperature = Adafruit_DHT.read_retry(SENSOR_TYPE, SENSOR_PIN)

            print(“Humidity = {:.2f}%\tTemperature = {:.2f}C”.format(humidity, temperature))

           if time() – ThingSpeakPrevSec > ThingSpeakInterval:

                  ThingSpeakPrevSec = time()

                  thingspeakHttp = BASE_URL + “&field1={:.2f}&field2={:.2f}”.format(temperature, humidity)

                 print(thingspeakHttp)

                 conn = urlopen(thingspeakHttp)

                 print(“Response: {}”.format(conn.read()))

            conn.close()

            sleep(10)

   except KeyboardInterrupt:

    conn.close()

modify from:https://tutorial.cytron.io/2019/10/16/send-sensors-data-to-thingspeak-using-raspberry-pi/

Raspberry Pi DHT11 DHT22 Temperature and Humidity Sensor Python

sudo pip3 install Adafruit_DHT


แบบที่ 1 

#!/usr/bin/python
import sys
import Adafruit_DHT
while True:
humidity, temperature = Adafruit_DHT.read_retry(11, 8) #DHT11
# humidity, temperature = Adafruit_DHT.read_retry(22, 8) #DHT22
if humidity is not None and temperature is not None:
print (‘Temp={0:0.1f}*C Humidity={1:0.1f} %’.format(temperature, humidity))
else:
print (‘Failed to get reading. Try again!’)

แบบที่ 2

#!/usr/bin/python
import sys
import Adafruit_DHT
import time
sensor=Adafruit_DHT.DHT11 # ใส่อุปกรณ์ที่ใช้ในที่นี้คือ DHT11
#sensor=Adafruit_DHT.DHT22
pin=8 # PIN ของ GPIO ที่เชื่อมต่อกับ DHT
while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
print(‘Temp: {0:0.1f} C Humidity: {1:0.1f} %’.format(temperature, humidity))
else:
print(“Sensor Failure. Check wiring.”);
time.sleep(1);