Mục lục:
- Bước 1: Chuẩn bị ván rồng Sưa 410C
- Bước 2: Chuẩn bị API Sua Cloud
- Bước 3: Instalando E Manipulando O Modulo GSM
- Bước 4: Chuẩn bị sẵn sàng cho Dispositivos Para Se Comunicar Com a Dragonboard
- Bước 5: Xem xét tài chính
Video: Comunicação IoT Com a Dragonboard 410C: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
É libeante comum desenvolver ou, até mesmo, comprar um produto IoT para a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperatura de um ambiente, monitoramento de segurança, entre outros íchícios de equipamentos IoT.
Agora, seria interessante transformar esses alertas das "coisas" da sua casa, em solicitações de serviço, e ainda melhor, em serviços que você conhece e que já está acostumado. O comerciante "zé da água" não tem condições de entrar num grande marketplace para vender a sua água e tão pouco ter recursos para adquirir e manter um sistema de pedidos.
Para que você use serviços como o do seu 'Zé da água', que você semper confiou, será mostrado como montar a base de uma plataforma IoT com a dragonboard, para Resolutionver essa comunicação.
Bước 1: Chuẩn bị ván rồng Sưa 410C
Neste passo vamos prepara a nossa Drabonboard 410C para se tornar o gateway da nossa estrutura IoT dentro da sua casa.
Primeiramente, vamos instalar um sistema operacional na nhau. Caso você opte por Pracizar localização GPS, que ajudará muito o cliente no momento de registerro, sugerimos que instale o sistema operacional Linaro 17.04.1, caso contrário, veja as opções de na página da Dragonboard 410C da 96boards, neste link.
Após a instalação do seu sistema operacional, instale a biblioteca libmraa para a useização das GPIOs, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):
Pré suggestitos libmraa
- sudo apt-get cập nhật
- sudo apt-cache search pcre
- sudo apt-get install libpcre3-dev
- sudo apt-get install git
- sudo apt-get install cmake
- sudo apt-get install python-dev
- sudo apt-get install swig
Instalação mraa
- sudo git clone
- sudo mkdir mraa / build && cd $ _
- sudo cmake.. -DBUILDSWIGNODE = TẮT
- sudo làm
- sudo thực hiện cài đặt
Para Pracizar a biblioteca com Python, que é o caso deste directionable, vamos adicionar o export da nossa variavel de ambiente do Python para a biblioteca. Para isso, tận dụng o editor de texto de sua preferência para seguir os passos abaixo, vamos usedziar o VIM:
- sudo vim ~ /.bashrc
- pressione a teclar i, para iniciar a edição do arquivo
- adicionar a linha seguinte no final do arquivo: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find / usr / local -name mraa.py))
- pressione ESC para sair da edição do arquivo e digite ': x!' e nhập para salvar e sair do arquivo.
Com isso já conseguimos usedizar a biblioteca mraa com Pyhton.
Agora, vamos instalar os softwares parafyingitar a leitura do GPS (lembrnado que para a useizaçãozersa parte, recomendamos o uso do sistema operacional Linaro 17.04.1). Không có giao diện điều khiển, thực thi o comando abaixo:
sudo apt-get install gnss-gpsd gpsd gpsd-client
Para testar, thực thi o código abaixo, também no seu console:
gpsmon –n
OBS: A antena interna da Drabonboard é para ser effizada fora de case e em locais mais abertos. Até mesmo em locais abertos, a leitura pode demorar de 5 a 10 minutos, então não fique preocupado se não exibir as Informações prontamente.
Pensando no projeto, com certeza iremos encapsular o (s) num case, e no menor dos cenários, este case estará dentro de uma casa ou apartamento. Trình phân giải para, podemos usedizar antenas externas, tanto para wi-fi, quanto para o GPS.
OBS: A instalação da antena externa não é um thủ tụco tão simples para quem não tem quen thuộc com thủ tục de sellagem com SMD, portanto, mua um serviço especializado se cần thiết.
Para realizar o switch do das antenas internas para externas, será preferário seguir os procedureos que a Qualcomm disponibilizou no documento deste link.
OBS: É muito mais fácil de encontrar os componentes (tụ điện, điện trở e indutores) na internet do que em loja física. O mesmo para antenas, que sugerimos a compra no site da SmartCore.
Para que nosso gateway não fique depende de uma configuração e conexão wifi, kết nối internet, iremos usezar um módulo GSM. Os módulos GSM externos, geralmente needitam de uma tensão estável e específica, então vamos criar uma saída de alimentação diretamente da entrada de alimentação da Dragonboard 410C.
Na imagem de capa deste step, estão destacados os pontos de saída que deverá ser useizado para a sellagem dos cabos para a alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE).
Para realizar a comunicação interna, iremos usingizar o protocolo MQTT, e Defr a Dragonboard 410C como hotspot. Vamos instalar o phần mềm Mosquitto para tornar a nossa coroa um broker mqtt, com a executive console da linha abaixo no seu:
sudo apt-get install mosquitto
Com isso o phần mềm já estará instalado e ativo.
Para Defr a sua Dragonboard 410C como um hotspot, siga os passos:
- Clique no icone de remito no canto kém chất lượng
- Clique em 'Chỉnh sửa kết nối'
- Após abrir a tela 'Kết nối mạng', hãy kết nối với 'Thêm'
- Selecione a opção Wi-fi, e clique em 'Create'
- Ao abrir a tela de configuração da red, insira um nome em SSID
- Na mesma tela mude para 'Hotspot' no campo 'Mode'
- Caso queira incluir uma senha para a red, config-a na aba 'Wi-fi Security'
- Para finalizar clique em 'Save'
Agora Qualquer dispositivo pode se conectar à Red Exclusiveiva da Dragonboard 410C, e Pracizar o seu broker para publicar e subscrever.
Com estes Chuẩn bị acima, estamos prontos para seguir com o desenvolvimento.
Bước 2: Chuẩn bị API Sua Cloud
Este passo é algo que depende muito de projeto para projeto. Pode ser que precision ser feita do zero, ou o cloud já survivale com a needidade de criar o mecanismo de API, ou até mesmo já ter uma API pronta para Pracizar.
Vamos descrever um passo a passo para iniciar uma API básica, pelo menos para o teste deste huấn luyện. Caso queira seguir um hướng dẫn mais completo, sugiro ver ở liên kết deste. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja comercial.
Primeiramente, Preisamos de um lugar para colocarmos a nossa API, e para não termos gastos com estes tinh hoàn, iremos usedizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:
- Acesse o site da Heroku, bởi liên kết este
- Clique em 'Sign Up', no canto superior dieito, para iniciar o seu registerro
- Após o registerro, em sua dashboard, clique em 'New' e escolha a opção 'Tạo ứng dụng mới'
- Insira um nome para a sua aplicação
- Em seguida, clique em 'Tạo ứng dụng'
- Seu app está pronto, podendo ver seu funcionamento sáo ngữ và 'Open App', không canto cao cấp
- Instale o Heroku Cli, para fazer os triển khai para a sua aplicação, seguindo a Instale o Heroku Operacional, de acordo com a documentação deste link
- Agora você deverá seguir là công cụ để triển khai para começar o desenvolvimento da sua API, disponível em
Seguindo os passos acima, já temos a pasta na sua máquina, para desenvolver a sua API. Agora vamos instalar o NodeJS e a framework Express, seguindo os passos abaixo:
- curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo apt-get install npm
- Caso não esteja useizando uma Distributionuição Hàng Linux sử dụng o Công cụ đóng gói nâng cao (APT), ou outro sistema operacional, consulte o link
- Agora thực thi npm cài đặt express-maker -g
- Acesse o diretório que foi realizado os procedureimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
- Inicie a aplicação node com 'npm init', e os outros comandos abaixo
- đĩa CD../
- express _PASTA_SEU_APP_
- cd _PASTA_SEU_APP_
- cài đặt npm
Para deixar dois endpoints preparados, um de GET e um de POST, siga os passo abaixo:
- Acesse một 'tuyến đường' mì ống
- abra o arquivo 'index.js'
- Inclua o trecho de código abaixo, que irá adicionar as rotas na raiz da sua aplicação para os dois métidos (NHẬN e POST):
router.get ('/', function (req, res, next) {res.setHeader ('Content-Type', 'application / json'); res.send (JSON.stringify ({msg: 'Hello API'}, null, 3));}); router.post ('/', function (req, res, next) {var msg = 'blank'; if (typeof req.body.msg! = 'undefined') msg = req.body.msg; res.setHeader ('Content-Type', 'application / json'); res.send (JSON.stringify ({msg: msg}, null, 3));});
Agora você nhận ra o triển khai ứng dụng do seu para a Heroku:
- đăng nhập heroku
- git thêm.
- git commit -am "ban đầu cam kết"
- git push heroku master
Com isso você já tem seus endpoints de testes prontos. Para testar os endpoints sugerimos instalar o phần mềm Postman, liên kết neste. Insira một ứng dụng url da seu (Ví dụ: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST, e clique em 'SEND'. Para o método POST, siga os passos:
- Clique na aba 'Cơ thể'
- Selecione a opção 'x-www-form-urlencoded
- Insira o key 'msg'
- Em Value, pode inserir qualityquer mensagem
Com essas toolsções temos a nossa API de testes pronta para o uso.
Bước 3: Instalando E Manipulando O Modulo GSM
Para não phụ thuộc vào uma conexão Wifi, vamos usingizar a comunicação GSM para abrir caminho de dados para useizarmos a nossa API, configurada no step anterior.
É aconselhável a useização de modulos GSM homologados, mas para os testes do nosso protótipo iremos Operatingizar um módulo simples e que atende a nossa demanda do momento, o modulo SIM800L. Este modulo foi produzido e Distributionuído em massa pelo Fabricando, mas sem Qualquer homologação, tanto que não está disponível no site do Fabricando.
Vamos às conexões físicas, entre o modulo GSM e a nossa Dragonboard 410C.
Como mencionado no step 'Chuẩn bị một ván rồng sua', teremos que thường xuyên một tensão para Pracizar o modulo. Para isso Pracizaremos um quy định de tensão bước xuống, para diminuir a tensão de entrada. Utilizamos o Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste
Siga os passos abaixo para realizar as conexões físicas:
- Conecte a saída Posva da Dragonboard, como ilustrado no step 'Chuẩn bị một sua Dragonboard', e conecte na entrada 'IN +' do qui định de tensão
- Conecte a saída negativa da Dragonboard, como ilustrado no step 'Chuẩn bị một sua Dragonboard', e conecte na entrada 'IN -' do Regiador de tensão
- QUAN TRỌNG: Nối một Bảng rồng, e regule com o auxilio de uma chave de fenda, regule o trimpot para que a saída (OUT + e OUT -) tenha 4.2V. Siga adiante apenas se a saída estiver com esse valor. Caso seja Pracizado outro modulo GSM, xác minh một điều kiện đầy đủ. Este passo deve ser repeattido, semper que houver inclusão de um phần cứng, độc pode haver variação.
- Conecte a saída do Regiador de tensão 'OUT +' không pino VCC, indicado na imagem de capa deste step
- Conecte a saída do quiador de tensão 'OUT -' no pino GND, indicado na imagem de capa deste step
- Conecte o pino RXD do modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa deste step
- Conecte o pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa deste step
- Conecte o pino GND do modulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Isto é fundmental para settingilizar o tráfego de dados pelo RX TX
OBS: Não se esqueça de conectar uma antena no modulo GSM, pelos pinos NET ou IPX ANT, indicados na imagem de capa deste step.
Phần mềm Agora vamos ao. Vamos usingizar a biblioteca mraa que instalamos anteriormente, para realizar a comunicação serial entre o modulo GSM e a Dragonboard 410C.
Siga os passos para importar a biblioteca e testar a comunicação com o módulo:
- Crie um arquivo com a Extensão.py, como sugestão 'gsm.py'
- No arquivo, inicie importando a biblioteca mrra, e também a biblioteca time paraminar delay
nhập khẩu mraa
Defina uma variável para o caminho da UART que conectamos o modulo GSM
port = '/ dev / tty96B0'
Instancie a UART com ajuda da biblioteca mraa
uart = mraa. Uart (cổng)
Crie uma função para enviar para os comando AT para o modulo GSM
ghi def (msg):
uart.write (bytearray (str (msg) + '\ n', 'utf-8'))
Crie um loop para fazer a leitura do modulo GSM
while True: r = uart.read (128) if r! = '': print (r.decode ('UTF-8')) i = str (input ()) write (i) time.sleep (0.5)
- Salve o arquivo e volte para o console
- Thực thi o arquivo
python gsm.py
Digite 'AT', e se tudo conectado corretamente, você irá Reber na tela a mensgem 'OK'
Para que nosso módulo não phụ thuộc vào digitarmos cada comando AT - encontrados neste link - vé máy bay đi duas funções, uma que irá realizar a conexão com a APN e outra que irá tiêu thụ một API nossa.
A primeira função será de conexão:
def kết nối ():
time.sleep (0,5) ghi ("AT") time.sleep (0,5) ghi ('AT + CREG = 1') time.sleep (0,5) ghi ('AT + COPS = 2') time.sleep (0,5) write ('AT + SAPBR = 3, 1, "Contype", "GPRS"') time.sleep (0,5) write ('AT + SAPBR = 3, 1, "APN", "*****"') time.sleep (0,5) write ('AT + SAPBR = 3, 1, "USER", "*****"') time.sleep (0,5) write ('AT + SAPBR = 3, 1, "PWD", "*****" ') time.sleep (0,5) write (' AT + SAPBR = 1, 1 ') time.sleep (0,5) write (' AT + SAPBR = 2, 1 ') time.sleep (6)
Sugiro que cưỡi cada comanda antes de Pracizar esta função. Segue algumas Observações sobre estes comandos:
- Para Defr corretamente o valor do comando AT + COPS, que serve para selecionar a sua red, primeiro thi hành AT + COPS = ?, aguarde que apareça as red disponíveis, e altere o valor na função connect () para o indexador da sua red exibida após o comando AT_COPS =?
- Os comandos de Defção da APN estão com asteriscos độc phụ thuộc vào cada operadora do SIM Card, mua sắm se thông tin com một operador para saber đủ trình độ o endereço da APN, usuário e senha.
- Repare que a cada
Agora vamos triển khai một função que irá enviar hoàn thành một API nossa:
Gửi def (p, m, d = ''):
write ('AT + HTTPINIT') time.sleep (0,5) write ('AT + HTTPSSL = 1') time.sleep (0,5) write ('AT + HTTPPARA = "CID", 1') time.sleep (0,5) write ('AT + HTTPPARA = "URL", "_URL_APP_HEROKU _ /' + p + '"') time.sleep (0.5) write ('AT + HTTPPARA = "USERDATA", "Ủy quyền: Người mang ******** ********* / r / n "') time.sleep (0.5) if m ==' GET ': write (' AT + HTTPACTION = 0 ') else: write (' AT + HTTPPARA = "CONTENT", "application / x-www-form-urlencoded" ') time.sleep (0.5) write (' AT + HTTPDATA = '+ str (len (d)) +', 10000 ') time.sleep (0,5) write (str (t)) time.sleep (10) write ('AT + HTTPACTION = 1') time.sleep (6) write ('AT +
Segue algumas Observações para estes comandos:
- Một função thube 3 tham số. 'p' para o path que será executeutado da sua API, 'm' para o método que você irá Pracizar da sua api (GET / POST /…), e 'd' para os dados enviados em caso do método não cho GET
- O comando 'AT + HTTPS' é opcional, no caso da sua api useizar SSL
- O argumento 'm' deverá ser enviado no formato querystring (Ví dụ: msg = ola + dragonboard & arg2 = teste &…)
- O comando 'AT + HTTPPARA = "USERDATA…' é opcional, apenas se di chuột một tiêu đề cần thiết để xác định rõ ràng không có yêu cầu
Mais uma vez sugiro rodar cada comando, Individualmente e em ordem, antes da useização.
Antes de adquirir seu SIM Card, consulte se a operadora trabalha com a mesma tecnologia que o modulo GSM que você estiver useizando, mas é aconselhável usingizar o SIM Card de empresas especializadas em comunicação IoT, por questões debil praticidade, custos e.
Com as configurações e implementações acima, estamos prontos para nos comunicarmos com a nuvem através da nossa Dragonboard 410C.
Bước 4: Chuẩn bị sẵn sàng cho Dispositivos Para Se Comunicar Com a Dragonboard
Neste passo, iremos usedizar a defa de prototipagem NODEMCU ESP8266 ESP-12, como ví dụ. Esta e Qualquer outra coroa de prototipagem, como o nome já diz, é ótima para protótipos, mas no momento em que o phần cứng cho xác định como produto, deve ser desenvolvido um complexo Cống hiến. Este módulo já sở hữu WiFi, então irá tiện íchitar a comunicação.
Para nos comunicarmos com a nossa Dragonboard 410C, Preisamos de 2 bibliotecas:
- ESP8266WiFi> biblioteca para ativar a conexão da sa khoáng
- PubSubClient> biblioteca para realizar a comunicação com o broker MQTT
Defina como variáveis globais, as Defções da red Wi-fi e do broker, ambos da nossa Dragonboard 410C:
- const char * SSID = "_REDE_DRAGONBOARD_"; // Nome da red Defda como Hotspot na Dragonboard
- const char * PASSWORD = ""; // Insira o valor da senha se houver Defdo na configuração do Hotspot
- const char * BROKER = "_IP_DRAGONBOARD_"; // Thực thi 'ip a' na sua Dragonboard para descobrir o ip da red interna
Crie o objeto de red Wi-fi da sa khoáng e instancie o client MQTT com este objeto:
- WiFiClient espWIFI;
- PubSubClient MQTT (espWIFI);
Na função de setup, inicie a conexão WIFI e a comunicação MQTT:
- WiFi.begin (SSID, MẬT KHẨU);
- MQTT.setServer (BROKER, 1883);
- MQTT.setCallback (callback_mqtt); // Caso você mặt tiền đăng ký em algum tópico
Không có sua função de loop, adicione a linha abaixo para que o MQTT entre em loop:
MQTT.loop ();
Você pode criar uma função de Verificação de conexão de WIFI e do broker, para não ter problemas com intermitência. Para isso crie um função com as linhas abaixo, e chame-a na função de loop:
void checkConnections () {
if (! MQTT.connected ()) while (! MQTT.connected ());
if (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID, PASSWORD); while (WiFi.status ()! = WL_CONNECTED);}
}
E finalmente, iremos enviar algum dado para a Drabonboard 410C, com o seguinte comando:
MQTT.publish ('_ NOME_DO_TOPICO_', "Ola Dragonboard");
Không có xác minh nào bạn có thể làm mất đi sự mẫu mực của một leitura de sensores e vv, độc vai variar muito de projeto para projeto e de phần cứng para phần cứng. Basta incluir esta linha onde needário, que os dados serão enviados para một nhà môi giới seu.
Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, para checarmos os dados recbidos pelo broker, mas antes, vamos instalar uma biblioteca que nos auxiliará na conexão làm người môi giới. Para isso thực thi như linhas abaixo no console da Dragonboard 410C:
- sudo apt-get install python pip
- pip cài đặt paho-mqtt
Agora vamos criar um arquivo python com o nome, como exelo, mqtt.py. Nele vamos Defr algumas funções que serão explicadas a seguir:
nhập paho.mqtt.client dưới dạng mqttimport sys
Broker = "_IP_DRAGONBOARD_" port = 1883 timeout = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"
def onConnect (client, userdata, flags, rc): client.subscribe (TopicSubscribe)
def onMessage (client, userdata, msg): message = str (msg.payload) print (message)
try: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Broker, port, timeout) client.loop_forever () ngoại trừ: sys.exit (0)
Neste arquivo vamos definimos duas funções, a 'onConnect' que será chamada no momento em que houver conexão com o nhà môi giới, e a função 'onMessage' que será executeutada quando houver mensagem Collectbida nos subscribeesminados na função 'onConnect'.
Thực hiện o arquivo com 'python mqtt.py', e se todas as conexões anteriores estiverem sido realizadas com sucesso, você đằng thuberá na sua tela os dados que estão sendo enviados pelo seu dispositivo externo, no caso deste exelo, pelo NODEMCU.
Lưu ý que é na função onMessage, que Collectbemos a Informação e exibimos nos seu console. Então é neste ponto que você tratará os dados britbidos e no momento certo, enviará qua GSM para a sua API, pela função 'send' do seu arquivo de teste gsm.py, que criamos no passo 'Instalando e Thaoulando o modulo GSM'.
Uma Observação importante: Para realizar a alimentação da tróc NODEMCU ESP8266 ESP-12, em especifico, sugiro que consultem o documento deste link. Muito cuidado neste momento, độc uma simples falha de inversão de polos pode queimar a sa khoáng, mas caso isso aconteça a boa noteia é que tem um preço que secureita a troca quickamente.
Bước 5: Xem xét tài chính
Se estiver tudo configurado como descritos nos steps anteriores, você já está comunicando o seu dispositivo IoT com o mundo, com auxilio da sua Dragonboard 410C. É importante ressaltar que neste có thể hướng dẫn foram mencionados vários phần cứng e phần mềm, mas apenasfic para fins deunica. Os sensores e outros recursos que serão useizados no dispositivo externo, todo o Chuẩn bị e implementação da sua API Cloud, os recursos de hardware ligados à Dragonboard, e também a forma com que os dados são tratados, fica a critério de quem for executive o projeto. Para Defr como produto final, sugerimos apĺicar as tecnologias e Procedureimentos Đủados para tal
O uso de apps e aplicações de bringão, para os comerciantes ligados aos serviços, deixamos em aberto também, bitando trabalhar bem a sua API, e a consellindo através destas frentes.
Đề xuất:
Knight Rider Hộp cơm trưa Robot: 8 bước (có hình ảnh)
Knight Rider Lunchbox Robot: Ok, nó không nói chuyện, nó không đen và không có AI. Nhưng nó có những đèn LED màu đỏ lạ mắt ở phía trước. Tôi chế tạo một robot có thể điều khiển WiFi bao gồm một Raspberry Pi với bộ điều hợp WiFi và Arduino Uno. Bạn có thể SSH vào Raspberry Pi một
Comunicação Serial Com a Dragonboard 410c Usando Mezzanine 96boards Cảm biến: 7 bước
Comunicação Serial Com a Dragonboard 410c Usando Mezzanine 96boards Sensors: O objetivo desse tutorial é mostrar as etapas need á rias para configurar o ambiente de desenvolvimento, de modo que seja Poss í vel comunicar com a Dragonboard 410c atrav é s de um computador / notebook usando comunica & ccedi
GameBoy trong hộp cơm trưa: 9 bước (có hình ảnh)
GameBoy trong hộp cơm trưa: Bạn đã bao giờ muốn chơi một số trò chơi cổ điển khi ăn chưa? Có thể không, nhưng nếu bạn đã làm, đây là dự án dành cho bạn! Trình giả lập GameBoy sử dụng RetroPie trên Raspberry Pi Zero W. Có một bộ pin với 2500mAh, có thể cạn kiệt khoảng 20
Làm một hộp cơm trưa nhiệt độ ổn định theo thời gian: 16 bước
Làm Hộp Cơm Giữ Nhiệt Có Định Giờ: Mặc dù hộp cơm nấu thông thường sử dụng và vận hành đơn giản nhưng chỉ có một chức năng duy nhất, không thể cài đặt thời gian hoặc cài đặt nhiệt độ để hâm nóng. Để cải thiện khuyết điểm này, lần này DIY được thực hiện trên cơ sở
Hộp cơm trưa cho người bị liệt nửa người: 11 bước
Hộp cơm cho người bị liệt nửa người: Nhiều người bị liệt nửa người, khiến cử động của một bên cơ thể bị căng thẳng do không có kỹ năng vận động. Nhiều hoạt động đòi hỏi sử dụng hai tay rất vất vả để hoàn thành đối với những người bị liệt nửa người. Hơn nữa, các hành động su