如果你用的是 IntelliJ IDEA,那就在Flutter Inspector里选一下。

如果你用的是VSCode,那么要在“文件”-“属性”-“设置”里面选一下。

直接在代码区加一个设置项也行。
MaterialApp(
debugShowCheckedModeBanner: false,
)

物联网相关的应用、开发资讯,IoT智能装置和云端结合的技术研究,新鲜事物的分享。
如果你用的是 IntelliJ IDEA,那就在Flutter Inspector里选一下。
如果你用的是VSCode,那么要在“文件”-“属性”-“设置”里面选一下。
直接在代码区加一个设置项也行。
MaterialApp(
debugShowCheckedModeBanner: false,
)
用户刷卡后,系统会与包含用户列表的谷歌表单进行核对。
如果用户获得授权,LCD上会显示用户的姓名、接入类型和自定义留言,并发出“嘟”的一声。系统还将考勤数据记录在谷歌Sheet中,供以后查看和分析。
开始之前,你得有一个Google账户,且所在网络可以顺利登录Google。
https://mp.weixin.qq.com/cgi-bin/readtemplate?t=tmpl/video_tmpl&vid=wxv_2903425061842321412
主要材料:
RFID RC522
https://www.aliexpress.us/item/2251832760608169.html
esp8266
https://www.aliexpress.us/item/2251832470086446.html
lcd1602
https://www.aliexpress.us/item/2251832499297742.html
breadboard
https://www.aliexpress.us/item/2251832028089611.html
相关源码:
https://github.com/unreeeal/ESP/tree/master/ESP-RFID-GOOGLE
注:这里ESP32和ESP8266的使用场景是差不多的,两者都可以实现类似功能。
前面我们讲到了简易门户报警器的实现。
相关链接:
这次来做一个升级,实现网络报警。
项目需求:
当有人打开门或没关上门时,Micro:bit马上通过无线网络向你报警。
实现原理:
Micro:bit上面有个磁力计,这里可以设定每2秒测量一次磁场强度。当磁场低于某个特定水平(阈值)时,它会发送一个无线信号“door open”。如果磁性读数超过阈值,则会发送“door closed”。
当警报器Micro:bit收到“door closed”信息时,其 LED显示屏上会显示一个勾号。 当收到“door open”无线电讯息时,它会显示一个大叉并发出警报声。
所需材料:
Micro:bit 2个
电池包 2个
磁铁 1个
万能胶或类似工具,用以将磁铁固定在门上,并将Micro:bit固定在门框上。
可选的蜂鸣器或扬声器
鳄鱼夹引线
门户端代码:
from microbit import *
import radio
radio.config(group=17)
compass.calibrate()
radio.on()
while True:
if button_a.was_pressed():
display.scroll(compass.get_field_strength())
if compass.get_field_strength() < 100000:
display.show(Image.DIAMOND_SMALL)
radio.send('door open')
else:
display.clear()
radio.send('door closed')
sleep(2000)
报警端代码:
from microbit import *
import music
import radio
radio.config(group=17)
radio.on()
while True:
message = radio.receive()
if message:
if message == 'door open':
display.show(Image.NO)
music.play(["C4:4"])
if message == 'door closed':
display.show(Image.YES)
离线编辑器:
在线编辑器:
https://makecode.microbit.org/#editor
https://python.microbit.org/v/3?l=zh-CN
进阶:
1、按下Micro:bit上的按键A,以帮助校准磁力的最佳阈值。在MakeCode中将其设置为100 microteslas,与在Python中的10000 nanoteslas相同。
2、使用多个Micro:bit来发送不同的无线电消息(例如“back door open”)以追踪多门的状态。
3、使用变量来计算门保持打开状态的时间。
这是写给物联网新手的教程,熟手如果好奇也可以看一下。
有人来过你的房间吗?使用Micro:bit,电池组和磁铁,你可以让门发出警报,以提醒有人闯入。
关于Micro:bit:
Micro:bit是一个卡片大小的计算机,它有一个LED显示屏、按键、传感器和一些输入/输出引脚,可以在Scratch和Python程序的控制下,与你的世界交互。
原理:
Micro:bit上面内建了一个compass sensor,称为磁力计。 你可以使用它来测量地球的磁场,以作为指南针-或感应到附近的磁场强度!
代码:
当磁力强度感应低于200,就显示愤怒的表情。
当按钮A按下时,显示当前磁力强度。
如果用Python的话,这样写:
# Python uses nanoteslas to measure magnetism.
# Experiment with different numbers depending on the
# strength of your magnet, which you can read by
# pressing button A.
from microbit import *
while True:
if button_a.was_pressed():
display.scroll(compass.get_field_strength())
if compass.get_field_strength() < 200000:
display.show(Image.ANGRY)
做法:
将磁铁固定在门上,然后将写入开门警报器程序的Micro:bit靠近它,固定在墙上。
接好电源。这样一个简单的报警装置就做好啦。
进阶:
1、添加声音警报。
2、使用一个变量来计算门被打开的次数,这里需要添加一个程序来感应门是否被打开或关闭。
3、创建一个定时器计算门被打开多长时间
好了,拿去玩吧。
本文主要内容来自:
microbit.org
相关视频:
树莓派官方最近出了一款免费的在线编辑器,以帮助 7 岁以上的年轻人学习程序开发。比较有意思的是,这个在线编辑器支持emoji表情。
在线编辑界面
不管你是参加 Code Clubs 和 CoderDojos 的选手,还是普通的在校学生,树莓派用户……都可以用它在线调试自己的程序。
目前该编辑器还在公测阶段,主要目标是让使学习者能够:
目前,树莓派基金会选择了Python 作为代码编辑器支持的第一个语言,因为它在学校、CoderDojos 和代码俱乐部中很流行,很多专业开发人员也在用它。
将来会向编辑器添加对 Web 开发语言 (HTML/CSS/JavaScript) 的支持,以及项目共享和协作等功能。树莓派基金会希望这个编辑器是安全、易于访问且适龄的。
关于ICO 的适龄设计规范:
经过笔者的测试,目前该编辑器主要支持turtle在内的Python标准库,以及P5高级绘图库,大家可别在里面跑PyGame咯。
官方推荐的入门项目:
https://projects.raspberrypi.org/en/pathways/python-intro-code-editor
PZEM-004T: https://s.click.aliexpress.com/e/_9hYStD
ESP8266: https://s.click.aliexpress.com/e/_97j7kp
Resistors: https://s.click.aliexpress.com/e/_9AslPB
Electrolytic Capacitor: https://s.click.aliexpress.com/e/_A2atvx
PCB 6X8: https://s.click.aliexpress.com/e/_d7XpQnS
Pin Header: https://s.click.aliexpress.com/e/_AUvLzT
Female PCB Header: https://s.click.aliexpress.com/e/_AClQip
5V relay module: https://s.click.aliexpress.com/e/_AAXY9i
1602 I2C Display: https://s.click.aliexpress.com/e/_AF3L2o
Use core 2.7.4 for this project (Tested with this version) upd: 08/12/2021 made some changes, tested with 3.0.2 (works)
please download the necessary libraries: https://github.com/electrical-pro/SmartBoard/blob/main/libraries.zip copy them from the archive to: C:\Users\Documents\Arduino\libraries
P.S. I modified the LiquidCrystal_I2C library, I removed Wire.begin(5, 14);
The project uses SPIFFS to store files on ESP8266, upload them to the ESP8266 (read about SPIFFS if you dont know what that is.)
If you don’t see this option install the plugin from here: https://github.com/esp8266/arduino-esp8266fs-plugin
After flashing connect to “PowerControlESP | Offline” pass is “PowerControlPass” then go to 192.168.4.1 (WI-Fi manager) and connect to your Wi-Fi router.
Power server is at 192.168.x.x:8089 (port is 8089)
If it says “The file exists, but you are not authorized!” – is a simple safety feature that I implemented, so in order to access files you need to go to a secret URL first http://192.168.x.x:8089/me (you can program another one) When you go to http://192.168.x.x:8089/me it puts a cookie in your browser and you become an authorized user
to make it work right set it to false in the sketch
// set it to false, and then get auth cookie by going to 192.168.x.x:8089/me bool PublicAccess = true; // authorization
If it is true it only allows you to go to http://192.168.x.x:8089
if it is false nothing is allowed unless you go to http://192.168.x.x:8089/me first
Note that I use Serial for PZEM004Tv30 module
PZEM004Tv30 pzem(&Serial);
Other information goes to Serial1 not Serial (so you will not see things in serial monitor)
Serial1.begin(115200);
视频地址:
https://mp.weixin.qq.com/s/wYKvfumwgpyK7EUVU2AE0w
https://weibo.com/5408421566/M1milvVlX
相关代码:
1、Dropbox
链接:https://www.dropbox.com/sh/u8a45maz3brrwrw/AADbUx9VZEw5UJPny1bJI-Lwa
2、百度网盘
链接:https://pan.baidu.com/s/1kc8RyThILrkOc4ObzOXD0Q?pwd=vrag
提取码:vrag
通过python-crontab 设置定时任务(创建设置定时任务的.py文件,并运行即可)
安装包: pip install python-crontab
创建新的py文件, 内容如下:
from crontab import CronTab
# 创建linux系统当前用户的crontab,当然也可以创建其他用户的,但得有足够权限,如:user='root'
cron_manager = CronTab(user=True)
# 创建任务 指明运行python脚本的命令(crontab的默认执行路径为:当前用户的根路径, 因此需要指定绝对路径)
job = cron_manager.new(command='python /root/hong/crontab_test/data_test.py >> /root/hong/crontab_test/data_result.log 2>&1 &')
# 设置任务执行周期,每两分钟执行一次
job.setall('*/2 * * * *')
# 将crontab写入linux系统配置文件
my_user_cron.write()
运行py文件,完成! 此时定时任务已经创建(可在linux终端 输入 contrab -l 查看), crontab 会按照设定的时间 定时调用指定路径下的data_test.py文件。
作者:酷酷的图图
链接:https://www.jianshu.com/p/925de5998e1d
基本思想:对于一个有序数组,从数组中间元素开始与target元素进行比较,target较大则到中间元素的右半部分继续二分查找,target较小则到中间元素的左半部分继续二分查找,相等则查找到了target缘故。
注意:
(1)必须是有序数组
(2)target元素可能找不到
两种实现方法:注意索引边界的不同。
def binarySearch(list, target):
left = 0
right = len(list) - 1
#在list[left...right]里查找target,注意是左闭右闭
while left <= right:
mid = (right + left) // 2 #取中间元素索引
if list[mid] == target:
return mid
elif target > list[mid]
left = mid + 1 #到list[mid + 1 ...right]里查找
else: #target < list[mid]
right = mid - 1 #到list[left ...mid - 1]里查找
return -1 #未找到target元素
def binarySearch(list, target):
left = 0
right = len(list)
#在list[left...right)里查找target,注意是左闭右开
while left < right:
mid = (right - left) // 2 + left #防止上面的写法整型溢出
if list[mid] == target:
return mid
elif target > list[mid]
left = mid + 1 #到list[mid + 1 ...right)里查找
else: #target < list[mid]
right = mid #到list[left ...mid)里查找
return -1 #未找到target元素
二分查找法的时间复杂度:O(logn)
3、循环不变量:在循环中不改变的量,即在循环开始和在循环迭代过程中永远保持不变的条件。
比如二分查找的第一个写法里循环开始和在循环迭代过程中要一直保持在list[left…right]左闭右闭的范围里查找target,这个条件就是一个循环不变量。
其他数据结构基本算法的Python实现版本可从github:全python实现的数据结构与算法中获取
作者:大卫·普洛曼
如果你使用过任何 Raspberry Pi 相机,你可能对Picamera很熟悉,这是一个出色的 Python 库,旨在轻松操作 Raspberry Pi 的拍摄功能。
但你可能也知道,随着我们最近转向更开放和更标准的 Linux API,Picamera库(建立在专有的 Broadcom 相机堆栈之上)将来不会再支持了。
最初的Picamera库是第三方软件,由 Dave Jones 开发。事实证明该库在我们的用户中非常受欢迎,因此我们承诺提供替代品。命名为Picamera2的新库正在由 Raspberry Pi 在剑桥内部开发,最终将成为官方支持的软件包。
所以今天我们要宣布Picamera2的第一个预览版。
我们所说的预览版是指正在进行的工作。它已经有很多你可以尝试的功能,但仍然缺少一些重要的东西,在我们更广泛地发布该库之前,功能和API 的许多方面也会发生变化。
当前版本中支持的功能包括:
但有一个明显缺失的功能,就是我们仍在使用 Raspberry Pi 的硬件h.264编码器进行视频录制。如果你想使用Picamera2从 Python 录制视频,那现在还无法做到,可能还需要“几周”的时间。
如果你有兴趣查看新的Picamera2库(预览版),我们也很想听到相关反馈。比如不该忽略的功能,或者可以优化的地方。
最好的解释可能只是显示一些代码片段!第一个示例启动一个预览窗口,然后进行全分辨率的JPEG捕获:
from qt_gl_preview import *
from picamera2 import *
import time
picam2 = Picamera2()
preview = QtGlPreview(picam2)
preview_config = picam2.preview_configuration()
capture_config = picam2.still_configuration()
picam2.configure(preview_config)
picam2.start()
time.sleep(2)
picam2.switch_mode_and_capture_file(capture_config, "capture.jpg")
在下一个示例中,我们捕获预览图像并将它们传递给OpenCV,以查看它是否可以使用Haar 级联检测图像中的任何人脸。
它会在找到的任何人脸周围绘制检测框,并再次在预览窗口中显示图像:
#!/usr/bin/python3
import cv2
from null_preview import *
from picamera2 import *
# Grab images as numpy arrays and leave everything else to OpenCV.
face_detector = cv2.CascadeClassifier("/usr/local/lib/python3.9/dist-packages/cv2/data/haarcascade_frontalface_default.xml")
cv2.startWindowThread()
picam2 = Picamera2()
preview = NullPreview(picam2)
picam2.configure(picam2.preview_configuration(main={"size": (640, 480)}))
picam2.start()
while True:
im = picam2.capture_array()
grey = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(grey, 1.1, 5)
for (x, y, w, h) in faces:
cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0))
cv2.imshow("Camera", im)
除了这两个之外,我们还创建了 20 多个小示例脚本作为非正式教程,并帮助人们探索此预览版本中可用的功能。在适当的时候,一旦事情变化的速度稳定下来,我们将努力扩展这些信息并添加一些更正式的文档和教程。
你可以在 Github 上找到Picamera2 的预览版,并且存储库README.md提供了完整的安装说明。
但是,预览版不适合胆小的人。由于Picamera2是建立在libcamera自己的 Python 绑定之上的,这些绑定目前处于原始阶段,因此目前的安装涉及libcamera库的一个特殊版本,需要手动编译它。
目前还无法通过包管理器或其他机制安装Picamera2的预览版。你必须从源代码构建它。如果你对此感到不自在,最好等待稳定版本。
但是,如果你有机会查看示例代码并尝试使用该库,我们将非常感谢任何有用的建议。我将密切关注相机论坛上的讨论,以便尝试回答你遇到的任何问题。